summaryrefslogtreecommitdiff
path: root/TAO/tao/DynAny_i.h
blob: 84cfe08f7702ddb61ac545ec908894880dc045b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/* -*- C++ -*- */
// $Id$
// =========================================================================
//
// = LIBRARY
//    TAO
//
// = FILENAME
//    DynAny_i.h
//
// = AUTHOR
//    Jeff Parsons <jp4@cs.wustl.edu>
//
// =========================================================================

#if !defined (TAO_DYNANY_I_H)
#define	TAO_DYNANY_I_H

#include "tao/corba.h"

class TAO_DynAny_i : public POA_CORBA::DynAny
{
public:
                      TAO_DynAny_i      (CORBA_TypeCode_ptr tc);

                      TAO_DynAny_i      (const CORBA_Any& any);

                      ~TAO_DynAny_i     (void);

  // Common fuctions

  void                assign            (CORBA_DynAny_ptr dyn_any,
                                         CORBA::Environment &env);

  CORBA_DynAny_ptr    copy              (CORBA::Environment &env);

  void                destroy           (CORBA::Environment &env);

  void                from_any          (const CORBA::Any& any,
                                         CORBA::Environment &env);

  CORBA::Any_ptr      to_any            (CORBA::Environment &env);

  CORBA::TypeCode_ptr type              (CORBA::Environment &);

  CORBA_DynAny_ptr    current_component (CORBA::Environment &env);

  CORBA::Boolean      next              (CORBA::Environment &);

  CORBA::Boolean      seek              (CORBA::Long index, 
                                         CORBA::Environment &);

  void                rewind            (CORBA::Environment &);

  // Insert and get functions

  void                insert_boolean    (CORBA::Boolean value,
                                         CORBA::Environment &env);

  void                insert_octet      (CORBA::Octet value,
                                         CORBA::Environment &env);

  void                insert_char       (CORBA::Char value,
                                         CORBA::Environment &env);

  void                insert_short      (CORBA::Short value,
                                         CORBA::Environment &env);

  void                insert_ushort     (CORBA::UShort value,
                                         CORBA::Environment &env);

  void                insert_long       (CORBA::Long value,
                                         CORBA::Environment &env);

  void                insert_ulong      (CORBA::ULong value,
                                         CORBA::Environment &env);
  void                insert_float      (CORBA::Float value,
                                         CORBA::Environment &env);

  void                insert_double     (CORBA::Double value,
                                         CORBA::Environment &env);

  void                insert_string     (const char * value,
                                         CORBA::Environment &env);

  void                insert_reference  (CORBA::Object_ptr value,
                                         CORBA::Environment &env);

  void                insert_typecode   (CORBA::TypeCode_ptr value,
                                         CORBA::Environment &env);

  void                insert_longlong   (CORBA::LongLong value,
                                         CORBA::Environment &env);

  void                insert_ulonglong  (CORBA::ULongLong value,
                                         CORBA::Environment &env);

  void                insert_wchar      (CORBA::WChar value,
                                         CORBA::Environment &env);

  void                insert_any        (const CORBA::Any& value,
                                         CORBA::Environment &env);

  CORBA::Boolean      get_boolean       (CORBA::Environment &env);

  CORBA::Octet        get_octet         (CORBA::Environment &env);

  CORBA::Char         get_char          (CORBA::Environment &env);

  CORBA::Short        get_short         (CORBA::Environment &env);

  CORBA::UShort       get_ushort        (CORBA::Environment &env);

  CORBA::Long         get_long          (CORBA::Environment &env);

  CORBA::ULong        get_ulong         (CORBA::Environment &env);

  CORBA::Float        get_float         (CORBA::Environment &env);

  CORBA::Double       get_double        (CORBA::Environment &env);

  char *              get_string        (CORBA::Environment &env);

  CORBA::Object_ptr   get_reference     (CORBA::Environment &env);

  CORBA::TypeCode_ptr get_typecode      (CORBA::Environment &env);

  CORBA::LongLong     get_longlong      (CORBA::Environment &env);

  CORBA::ULongLong    get_ulonglong     (CORBA::Environment &env);

  CORBA::WChar        get_wchar         (CORBA::Environment &env);

  CORBA::Any_ptr      get_any           (CORBA::Environment &env);

/////////////////////////////////////////////////////////////////////////////
// The ORB DynAny-factory functions will call these so we don't need to
// keep an orb pointer in each DynAny object.

  static CORBA_DynAny_ptr       create_dyn_any       (const CORBA_Any& any,
                                                      CORBA::Environment& env);

  static CORBA_DynAny_ptr       create_basic_dyn_any (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  static CORBA_DynStruct_ptr    create_dyn_struct    (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  static CORBA_DynSequence_ptr  create_dyn_sequence  (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  static CORBA_DynArray_ptr     create_dyn_array     (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  static CORBA_DynUnion_ptr     create_dyn_union     (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  static CORBA_DynEnum_ptr      create_dyn_enum      (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

  // An extra generic one that calls one of the above passing a typecode.
  // Comes in handy in implementing some versions of current_component().
  static CORBA_DynAny_ptr       create_dyn_any       (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

////////////////////////////////////////////////////////////////////////////

  // In case we have tk_alias.
  static CORBA::TCKind          unalias              (CORBA_TypeCode_ptr tc,
                                                      CORBA::Environment& env);

private:
  CORBA_Any                     value_;

  // Must be instantiated with at least a typecode
                                TAO_DynAny_i         (void);

  // Use copy() or assign()
                                TAO_DynAny_i         (const TAO_DynAny_i &src);
  TAO_DynAny_i &                operator=            (const TAO_DynAny_i &src);
};

#endif /* TAO_DYNANY_I_H */