00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef _DYNAMIC_ANY_IDL_
00051 #define _DYNAMIC_ANY_IDL_
00052
00053 #pragma prefix "omg.org"
00054
00055 #include "tao/Typecode_types.pidl"
00056
00057 module DynamicAny {
00058
00059 local interface DynAny {
00060 exception InvalidValue {};
00061 exception TypeMismatch {};
00062
00063 CORBA::TypeCode type();
00064
00065 void assign( in DynAny dyn_any) raises(TypeMismatch);
00066 void from_any( in any value) raises(TypeMismatch, InvalidValue);
00067 any to_any();
00068
00069 boolean equal( in DynAny dyn_any);
00070
00071 void destroy();
00072 DynAny copy();
00073 void insert_boolean(in boolean value) raises(TypeMismatch, InvalidValue);
00074 void insert_octet( in octet value) raises(TypeMismatch, InvalidValue);
00075 void insert_char( in char value) raises(TypeMismatch, InvalidValue);
00076 void insert_short( in short value) raises(TypeMismatch, InvalidValue);
00077 void insert_ushort( in unsigned short
00078 value) raises(TypeMismatch, InvalidValue);
00079 void insert_long( in long value) raises(TypeMismatch, InvalidValue);
00080 void insert_ulong( in unsigned long
00081 value) raises(TypeMismatch, InvalidValue);
00082 void insert_float( in float value) raises(TypeMismatch, InvalidValue);
00083 void insert_double( in double value) raises(TypeMismatch, InvalidValue);
00084 void insert_string( in string value) raises(TypeMismatch, InvalidValue);
00085 void insert_reference(in Object value) raises(TypeMismatch, InvalidValue);
00086 void insert_typecode(in CORBA::TypeCode
00087 value) raises(TypeMismatch, InvalidValue);
00088 void insert_longlong(in long long value) raises(TypeMismatch, InvalidValue);
00089 void insert_ulonglong(in unsigned long long
00090 value) raises(TypeMismatch, InvalidValue);
00091 void insert_longdouble(in long double
00092 value) raises(TypeMismatch, InvalidValue);
00093 void insert_wchar( in wchar value) raises(TypeMismatch, InvalidValue);
00094 void insert_wstring(in wstring value) raises(TypeMismatch, InvalidValue);
00095 void insert_any( in any value) raises(TypeMismatch, InvalidValue);
00096 void insert_dyn_any(in DynAny value) raises(TypeMismatch, InvalidValue);
00097 void insert_val( in ValueBase value) raises(TypeMismatch, InvalidValue);
00098
00099 boolean get_boolean() raises(TypeMismatch, InvalidValue);
00100 octet get_octet() raises(TypeMismatch, InvalidValue);
00101 char get_char() raises(TypeMismatch, InvalidValue);
00102 short get_short() raises(TypeMismatch, InvalidValue);
00103 unsigned short get_ushort() raises(TypeMismatch, InvalidValue);
00104 long get_long() raises(TypeMismatch, InvalidValue);
00105 unsigned long get_ulong() raises(TypeMismatch, InvalidValue);
00106 float get_float() raises(TypeMismatch, InvalidValue);
00107 double get_double() raises(TypeMismatch, InvalidValue);
00108 string get_string() raises(TypeMismatch, InvalidValue);
00109 Object get_reference() raises(TypeMismatch, InvalidValue);
00110 CORBA::TypeCode get_typecode() raises(TypeMismatch, InvalidValue);
00111 long long get_longlong() raises(TypeMismatch, InvalidValue);
00112 unsigned long long get_ulonglong() raises(TypeMismatch, InvalidValue);
00113 long double get_longdouble() raises(TypeMismatch, InvalidValue);
00114 wchar get_wchar() raises(TypeMismatch, InvalidValue);
00115 wstring get_wstring() raises(TypeMismatch, InvalidValue);
00116 any get_any() raises(TypeMismatch, InvalidValue);
00117 DynAny get_dyn_any() raises(TypeMismatch, InvalidValue);
00118 ValueBase get_val() raises(TypeMismatch, InvalidValue);
00119
00120 boolean seek(in long index);
00121 void rewind();
00122 boolean next();
00123 unsigned long component_count();
00124 DynAny current_component() raises(TypeMismatch);
00125 };
00126
00127 local interface DynFixed : DynAny {
00128 string get_value();
00129 boolean set_value(in string val) raises(TypeMismatch, InvalidValue);
00130 };
00131
00132 local interface DynEnum : DynAny {
00133 string get_as_string();
00134 void set_as_string(in string value)
00135 raises(InvalidValue);
00136 unsigned long get_as_ulong();
00137 void set_as_ulong( in unsigned long value)
00138 raises(InvalidValue);
00139 };
00140 typedef string FieldName;
00141 struct NameValuePair {
00142 FieldName id;
00143 any value;
00144 };
00145
00146 typedef sequence<NameValuePair> NameValuePairSeq;
00147 struct NameDynAnyPair {
00148 FieldName id;
00149 DynAny value;
00150 };
00151
00152 typedef sequence<NameDynAnyPair> NameDynAnyPairSeq;
00153 local interface DynStruct : DynAny {
00154 FieldName current_member_name() raises(TypeMismatch, InvalidValue);
00155 CORBA::TCKind current_member_kind() raises(TypeMismatch, InvalidValue);
00156 NameValuePairSeq get_members();
00157 void set_members(in NameValuePairSeq value)
00158 raises(TypeMismatch, InvalidValue);
00159 NameDynAnyPairSeq get_members_as_dyn_any();
00160 void set_members_as_dyn_any(in NameDynAnyPairSeq value)
00161 raises(TypeMismatch, InvalidValue);
00162 };
00163
00164 local interface DynUnion : DynAny {
00165 DynAny get_discriminator();
00166 void set_discriminator(in DynAny d)
00167 raises(TypeMismatch);
00168 void set_to_default_member() raises(TypeMismatch);
00169 void set_to_no_active_member() raises(TypeMismatch);
00170 boolean has_no_active_member();
00171 CORBA::TCKind discriminator_kind();
00172 DynAny member() raises(InvalidValue);
00173 FieldName member_name() raises(InvalidValue);
00174 CORBA::TCKind member_kind() raises(InvalidValue);
00175 };
00176
00177 typedef sequence<any> AnySeq;
00178 typedef sequence<DynAny> DynAnySeq;
00179 local interface DynSequence : DynAny {
00180 unsigned long get_length();
00181 void set_length(in unsigned long len)
00182 raises(InvalidValue);
00183 AnySeq get_elements();
00184 void set_elements(in AnySeq value)
00185 raises(TypeMismatch, InvalidValue);
00186 DynAnySeq get_elements_as_dyn_any();
00187 void set_elements_as_dyn_any(in DynAnySeq value)
00188 raises(TypeMismatch, InvalidValue);
00189 };
00190
00191 local interface DynArray : DynAny {
00192 AnySeq get_elements();
00193 void set_elements(in AnySeq value)
00194 raises(TypeMismatch, InvalidValue);
00195 DynAnySeq get_elements_as_dyn_any();
00196 void set_elements_as_dyn_any(in DynAnySeq value)
00197 raises(TypeMismatch, InvalidValue);
00198 };
00199
00200 local interface DynValue : DynAny {
00201 FieldName current_member_name() raises(TypeMismatch, InvalidValue);
00202 CORBA::TCKind current_member_kind() raises(TypeMismatch, InvalidValue);
00203 NameValuePairSeq get_members();
00204 void set_members(in NameValuePairSeq value)
00205 raises(TypeMismatch, InvalidValue);
00206 NameDynAnyPairSeq get_members_as_dyn_any();
00207 void set_members_as_dyn_any(in NameDynAnyPairSeq value)
00208 raises(TypeMismatch, InvalidValue);
00209 };
00210
00211 local interface DynAnyFactory {
00212 exception InconsistentTypeCode {};
00213 DynAny create_dyn_any(in any value)
00214 raises(InconsistentTypeCode);
00215 DynAny create_dyn_any_from_type_code(in CORBA::TypeCode type)
00216 raises(InconsistentTypeCode);
00217 };
00218
00219 };
00220
00221 #endif // _DYNAMIC_ANY_IDL_