summaryrefslogtreecommitdiff
path: root/TAO/tests/DynAny_Test/DynAny_i.h
blob: 94b25f721cd422e1f2c8409b70d34424ca7dbfa2 (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
// $Id$

// ============================================================================
//
// = LIBRARY
//    TAO/tests/DynAny_Test
//
// = FILENAME
//    DynAny_i.h
//
// = AUTHOR
//    Jeff Parsons <jp4@cs.wustl.edu>
//
// ============================================================================

#if !defined (DYNANY_I_H)
#define	DYNANY_I_H

#include "DynAnyS.h"

class DynAny_i : public POA_DynAny
{
public:
                      DynAny_i          (CORBA_TypeCode_ptr tc);
                      DynAny_i          (const CORBA_Any& any);
                      ~DynAny_i         (void);

  void                assign            (DynAny_ptr dyn_any,
                                         CORBA::Environment &env);
  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 &);
  DynAny_ptr          current_component (CORBA::Environment &env);
  CORBA::Boolean      next              (CORBA::Environment &);
  CORBA::Boolean      seek              (CORBA::Long index, 
                                         CORBA::Environment &);
  void                rewind            (CORBA::Environment &);


  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     (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        (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);

//**************************** "ORB" *********************************

// Exception thrown by the ORB "create" functions.

#if !defined (_DYNANY_INCONSISTENTTYPECODE_CH_)
#define _DYNANY_INCONSISTENTTYPECODE_CH_

  class  InconsistentTypeCode : public CORBA::UserException
  {
  public:
                                 InconsistentTypeCode  (void); 
                                 // default ctor
                                 InconsistentTypeCode  (const InconsistentTypeCode &); 
                                 // copy ctor
                                 ~InconsistentTypeCode (void); 
                                 // dtor

    InconsistentTypeCode&        operator=             (const InconsistentTypeCode &);
 

    virtual void                 _raise                (void);

    static InconsistentTypeCode* _narrow               (CORBA::Exception *);

 
    // = TAO extension
    static CORBA::Exception*     _alloc                (void);

  }; // exception DynAny::InconsistentTypeCode

  static CORBA::TypeCode_ptr     _tc_InconsistentTypeCode;
  typedef                        InconsistentTypeCode* InconsistentTypeCode_ptr;


#endif /* end #if !defined */

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

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

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

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

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

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

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

  static 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.
  static 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_;
};

#endif /* DYNANY_I_H */