1 // Copyright (c) 1994 James Clark 2 // See the file COPYING for copying permission. 3 #pragma ident "%Z%%M% %I% %E% SMI" 4 5 #ifndef MessageArg_INCLUDED 6 #define MessageArg_INCLUDED 1 7 #ifdef __GNUG__ 8 #pragma interface 9 #endif 10 11 #include "StringC.h" 12 #include "rtti.h" 13 14 #ifdef SP_NAMESPACE 15 namespace SP_NAMESPACE { 16 #endif 17 18 class MessageBuilder; 19 20 class SP_API MessageArg { 21 public: 22 MessageArg(); 23 virtual ~MessageArg(); 24 virtual MessageArg *copy() const = 0; 25 virtual void append(MessageBuilder &) const = 0; 26 }; 27 28 class SP_API StringMessageArg : public MessageArg { 29 public: 30 StringMessageArg(const StringC &); 31 MessageArg *copy() const; 32 void append(MessageBuilder &) const; 33 private: 34 StringC s_; 35 }; 36 37 class SP_API NumberMessageArg : public MessageArg { 38 public: 39 NumberMessageArg(unsigned long); 40 MessageArg *copy() const; 41 void append(MessageBuilder &) const; 42 private: 43 unsigned long n_; 44 }; 45 46 class SP_API OrdinalMessageArg : public MessageArg { 47 public: 48 OrdinalMessageArg(unsigned long); 49 MessageArg *copy() const; 50 void append(MessageBuilder &) const; 51 private: 52 unsigned long n_; 53 }; 54 55 class SP_API OtherMessageArg : public MessageArg { 56 RTTI_CLASS 57 public: 58 OtherMessageArg(); 59 void append(MessageBuilder &) const; 60 }; 61 62 #ifdef SP_NAMESPACE 63 } 64 #endif 65 66 #endif /* not MessageArg_INCLUDED */ 67