actual/packages/node-libofx/OpenSP-1.5.2/include/MessageFormatter.h
2022-04-28 22:44:38 -04:00

60 lines
1.7 KiB
C++

// Copyright (c) 1994, 1997 James Clark
// See the file COPYING for copying permission.
#ifndef MessageFormatter_INCLUDED
#define MessageFormatter_INCLUDED 1
#ifdef __GNUG__
#pragma interface
#endif
#include "types.h"
#include "MessageBuilder.h"
#include "Boolean.h"
#include "Message.h"
#include "Location.h"
#include "StringC.h"
#include "OutputCharStream.h"
#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif
class SP_API MessageFormatter {
public:
MessageFormatter();
virtual ~MessageFormatter();
virtual void formatMessage(const MessageFragment &,
const Vector<CopyOwner<MessageArg> > &args,
OutputCharStream &, bool noquote = 0);
virtual void formatOpenElements(const Vector<OpenElementInfo> &openElementInfo,
OutputCharStream &os);
virtual Boolean getMessageText(const MessageFragment &, StringC &) = 0;
virtual Boolean formatFragment(const MessageFragment &, OutputCharStream &);
private:
MessageFormatter(const MessageFormatter &); // undefined
void operator=(const MessageFormatter &); // undefined
protected:
class Builder : public MessageBuilder {
public:
Builder(MessageFormatter *formatter, OutputCharStream &os, bool b)
: os_(&os), formatter_(formatter), argIsCompleteMessage_(b) { }
virtual ~Builder();
void appendNumber(unsigned long);
void appendOrdinal(unsigned long);
void appendChars(const Char *, size_t);
void appendOther(const OtherMessageArg *);
void appendFragment(const MessageFragment &);
private:
OutputCharStream &os() { return *os_; }
OutputCharStream *os_;
MessageFormatter *formatter_;
bool argIsCompleteMessage_;
};
};
#ifdef SP_NAMESPACE
}
#endif
#endif /* not MessageFormatter_INCLUDED */