TIVI-153: Add as dependency for iputils
[profile/ivi/opensp.git] / include / MessageArg.h
1 // Copyright (c) 1994 James Clark, 1999 Matthias Clasen
2 // See the file COPYING for copying permission.
3
4 #ifndef MessageArg_INCLUDED
5 #define MessageArg_INCLUDED 1
6 #ifdef __GNUG__
7 #pragma interface
8 #endif
9
10 #include "StringC.h"
11 #include "Vector.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 class SP_API StringVectorMessageArg : public MessageArg {
63 public:
64   StringVectorMessageArg(const Vector<StringC> &);
65   MessageArg *copy() const;
66   void append(MessageBuilder &) const;
67 private:
68   Vector<StringC> v_;
69 };
70
71
72 #ifdef SP_NAMESPACE
73 }
74 #endif
75
76 #endif /* not MessageArg_INCLUDED */