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