2
// DynCommon.cpp,v 1.35 2003/11/19 20:04:20 parsons Exp
5
#include "DynAnyFactory.h"
7
#include "DynArray_i.h"
9
#include "DynSequence_i.h"
10
#include "DynStruct_i.h"
11
#include "DynUnion_i.h"
12
#include "tao/Any_Unknown_IDL_Type.h"
13
#include "ace/OS_NS_wchar.h"
15
ACE_RCSID (DynamicAny,
17
"DynCommon.cpp,v 1.35 2003/11/19 20:04:20 parsons Exp")
20
TAO_DynCommon::TAO_DynCommon (void)
24
TAO_DynCommon::~TAO_DynCommon (void)
28
// *****************************************************************
31
TAO_DynCommon::type (ACE_ENV_SINGLE_ARG_DECL)
33
CORBA::SystemException
38
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
39
CORBA::TypeCode::_nil ());
42
return CORBA::TypeCode::_duplicate (this->type_.in ());
46
TAO_DynCommon::assign (DynamicAny::DynAny_ptr dyn_any
49
CORBA::SystemException,
50
DynamicAny::DynAny::TypeMismatch
55
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
58
CORBA::TypeCode_var tc = dyn_any->type (ACE_ENV_SINGLE_ARG_PARAMETER);
61
CORBA::Boolean equivalent =
62
this->type_.in ()->equivalent (tc.in ()
63
ACE_ENV_ARG_PARAMETER);
68
CORBA::Any_var any = dyn_any->to_any (ACE_ENV_SINGLE_ARG_PARAMETER);
71
this->from_any (any.in ()
72
ACE_ENV_ARG_PARAMETER);
77
ACE_THROW (DynamicAny::DynAny::TypeMismatch ());
82
TAO_DynCommon::insert_boolean (CORBA::Boolean value
85
CORBA::SystemException,
86
DynamicAny::DynAny::TypeMismatch,
87
DynamicAny::DynAny::InvalidValue
92
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
95
if (this->has_components_)
97
DynamicAny::DynAny_var cc =
98
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
101
cc->insert_boolean (value
102
ACE_ENV_ARG_PARAMETER);
107
this->check_type (CORBA::_tc_boolean
108
ACE_ENV_ARG_PARAMETER);
111
this->any_ <<= CORBA::Any::from_boolean (value);
116
TAO_DynCommon::insert_octet (CORBA::Octet value
119
CORBA::SystemException,
120
DynamicAny::DynAny::TypeMismatch,
121
DynamicAny::DynAny::InvalidValue
124
if (this->destroyed_)
126
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
129
if (this->has_components_)
131
DynamicAny::DynAny_var cc =
132
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
135
cc->insert_octet (value
136
ACE_ENV_ARG_PARAMETER);
141
this->check_type (CORBA::_tc_octet
142
ACE_ENV_ARG_PARAMETER);
145
this->any_ <<= CORBA::Any::from_octet (value);
150
TAO_DynCommon::insert_char (CORBA::Char value
153
CORBA::SystemException,
154
DynamicAny::DynAny::TypeMismatch,
155
DynamicAny::DynAny::InvalidValue
158
if (this->destroyed_)
160
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
163
if (this->has_components_)
165
DynamicAny::DynAny_var cc =
166
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
169
cc->insert_char (value
170
ACE_ENV_ARG_PARAMETER);
175
this->check_type (CORBA::_tc_char
176
ACE_ENV_ARG_PARAMETER);
179
this->any_ <<= CORBA::Any::from_char (value);
184
TAO_DynCommon::insert_short (CORBA::Short value
187
CORBA::SystemException,
188
DynamicAny::DynAny::TypeMismatch,
189
DynamicAny::DynAny::InvalidValue
192
if (this->destroyed_)
194
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
197
if (this->has_components_)
199
DynamicAny::DynAny_var cc =
200
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
203
cc->insert_short (value
204
ACE_ENV_ARG_PARAMETER);
209
this->check_type (CORBA::_tc_short
210
ACE_ENV_ARG_PARAMETER);
213
this->any_ <<= value;
218
TAO_DynCommon::insert_ushort (CORBA::UShort value
221
CORBA::SystemException,
222
DynamicAny::DynAny::TypeMismatch,
223
DynamicAny::DynAny::InvalidValue
226
if (this->destroyed_)
228
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
231
if (this->has_components_)
233
DynamicAny::DynAny_var cc =
234
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
237
cc->insert_ushort (value
238
ACE_ENV_ARG_PARAMETER);
243
this->check_type (CORBA::_tc_ushort
244
ACE_ENV_ARG_PARAMETER);
247
this->any_ <<= value;
252
TAO_DynCommon::insert_long (CORBA::Long value
255
CORBA::SystemException,
256
DynamicAny::DynAny::TypeMismatch,
257
DynamicAny::DynAny::InvalidValue
260
if (this->destroyed_)
262
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
265
if (this->has_components_)
267
DynamicAny::DynAny_var cc =
268
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
271
cc->insert_long (value
272
ACE_ENV_ARG_PARAMETER);
277
this->check_type (CORBA::_tc_long
278
ACE_ENV_ARG_PARAMETER);
281
this->any_ <<= value;
286
TAO_DynCommon::insert_ulong (CORBA::ULong value
289
CORBA::SystemException,
290
DynamicAny::DynAny::TypeMismatch,
291
DynamicAny::DynAny::InvalidValue
294
if (this->destroyed_)
296
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
299
if (this->has_components_)
301
DynamicAny::DynAny_var cc =
302
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
305
cc->insert_ulong (value
306
ACE_ENV_ARG_PARAMETER);
311
this->check_type (CORBA::_tc_ulong
312
ACE_ENV_ARG_PARAMETER);
315
this->any_ <<= value;
320
TAO_DynCommon::insert_float (CORBA::Float value
323
CORBA::SystemException,
324
DynamicAny::DynAny::TypeMismatch,
325
DynamicAny::DynAny::InvalidValue
328
if (this->destroyed_)
330
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
333
if (this->has_components_)
335
DynamicAny::DynAny_var cc =
336
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
339
cc->insert_float (value
340
ACE_ENV_ARG_PARAMETER);
345
this->check_type (CORBA::_tc_float
346
ACE_ENV_ARG_PARAMETER);
349
this->any_ <<= value;
354
TAO_DynCommon::insert_double (CORBA::Double value
357
CORBA::SystemException,
358
DynamicAny::DynAny::TypeMismatch,
359
DynamicAny::DynAny::InvalidValue
362
if (this->destroyed_)
364
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
367
if (this->has_components_)
369
DynamicAny::DynAny_var cc =
370
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
373
cc->insert_double (value
374
ACE_ENV_ARG_PARAMETER);
379
this->check_type (CORBA::_tc_double
380
ACE_ENV_ARG_PARAMETER);
383
this->any_ <<= value;
388
TAO_DynCommon::insert_string (const char * value
391
CORBA::SystemException,
392
DynamicAny::DynAny::TypeMismatch,
393
DynamicAny::DynAny::InvalidValue
396
if (this->destroyed_)
398
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
401
if (this->has_components_)
403
DynamicAny::DynAny_var cc =
404
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
407
cc->insert_string (value
408
ACE_ENV_ARG_PARAMETER);
413
CORBA::TypeCode_var unaliased_tc =
414
TAO_DynAnyFactory::strip_alias (this->type_.in ()
415
ACE_ENV_ARG_PARAMETER);
419
unaliased_tc->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
422
if (kind != CORBA::tk_string)
424
ACE_THROW (DynamicAny::DynAny::TypeMismatch ());
428
unaliased_tc->length (ACE_ENV_SINGLE_ARG_PARAMETER);
431
if (bound > 0 && bound < ACE_OS::strlen (value))
433
ACE_THROW (DynamicAny::DynAny::InvalidValue ());
436
this->any_ <<= CORBA::Any::from_string (ACE_const_cast (char *,
443
TAO_DynCommon::insert_reference (CORBA::Object_ptr value
446
CORBA::SystemException,
447
DynamicAny::DynAny::TypeMismatch,
448
DynamicAny::DynAny::InvalidValue
451
if (this->destroyed_)
453
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
456
if (this->has_components_)
458
DynamicAny::DynAny_var cc =
459
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
462
cc->insert_reference (value
463
ACE_ENV_ARG_PARAMETER);
468
CORBA::Boolean good_type = 1;
470
TAO_DynAnyFactory::unalias (this->type_.in ()
471
ACE_ENV_ARG_PARAMETER);
474
if (kind != CORBA::tk_objref)
478
else if (!CORBA::is_nil (value))
480
const char *value_id = value->_interface_repository_id ();
482
if (ACE_OS::strcmp (value_id, "IDL:omg.org/CORBA/Object:1.0") != 0)
485
this->type_->id (ACE_ENV_SINGLE_ARG_PARAMETER);
488
if (ACE_OS::strcmp (value_id, my_id) != 0)
490
good_type = value->_is_a (my_id
491
ACE_ENV_ARG_PARAMETER);
501
if (CORBA::is_nil (value))
503
// Empty type hint, no profile.
505
cdr.write_char ('\0');
510
value->marshal (cdr);
513
TAO::Unknown_IDL_Type *unk = 0;
515
TAO::Unknown_IDL_Type (this->type_.in (),
517
TAO_ENCAP_BYTE_ORDER));
518
this->any_.replace (unk);
522
ACE_THROW (DynamicAny::DynAny::TypeMismatch ());
528
TAO_DynCommon::insert_typecode (CORBA::TypeCode_ptr value
531
CORBA::SystemException,
532
DynamicAny::DynAny::TypeMismatch,
533
DynamicAny::DynAny::InvalidValue
536
if (this->destroyed_)
538
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
541
if (this->has_components_)
543
DynamicAny::DynAny_var cc =
544
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
547
cc->insert_typecode (value
548
ACE_ENV_ARG_PARAMETER);
553
this->check_type (CORBA::_tc_TypeCode
554
ACE_ENV_ARG_PARAMETER);
557
this->any_ <<= value;
562
TAO_DynCommon::insert_longlong (CORBA::LongLong value
565
CORBA::SystemException,
566
DynamicAny::DynAny::TypeMismatch,
567
DynamicAny::DynAny::InvalidValue
570
if (this->destroyed_)
572
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
575
if (this->has_components_)
577
DynamicAny::DynAny_var cc =
578
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
581
cc->insert_longlong (value
582
ACE_ENV_ARG_PARAMETER);
587
this->check_type (CORBA::_tc_longlong
588
ACE_ENV_ARG_PARAMETER);
591
this->any_ <<= value;
596
TAO_DynCommon::insert_ulonglong (CORBA::ULongLong value
599
CORBA::SystemException,
600
DynamicAny::DynAny::TypeMismatch,
601
DynamicAny::DynAny::InvalidValue
604
if (this->destroyed_)
606
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
609
if (this->has_components_)
611
DynamicAny::DynAny_var cc =
612
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
615
cc->insert_ulonglong (value
616
ACE_ENV_ARG_PARAMETER);
621
this->check_type (CORBA::_tc_ulonglong
622
ACE_ENV_ARG_PARAMETER);
625
this->any_ <<= value;
630
TAO_DynCommon::insert_longdouble (CORBA::LongDouble value
633
CORBA::SystemException,
634
DynamicAny::DynAny::TypeMismatch,
635
DynamicAny::DynAny::InvalidValue
638
if (this->destroyed_)
640
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
643
if (this->has_components_)
645
DynamicAny::DynAny_var cc =
646
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
649
cc->insert_longdouble (value
650
ACE_ENV_ARG_PARAMETER);
655
this->check_type (CORBA::_tc_longdouble
656
ACE_ENV_ARG_PARAMETER);
659
this->any_ <<= value;
664
TAO_DynCommon::insert_wchar (CORBA::WChar value
667
CORBA::SystemException,
668
DynamicAny::DynAny::TypeMismatch,
669
DynamicAny::DynAny::InvalidValue
672
if (this->destroyed_)
674
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
677
if (this->has_components_)
679
DynamicAny::DynAny_var cc =
680
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
683
cc->insert_wchar (value
684
ACE_ENV_ARG_PARAMETER);
689
this->check_type (CORBA::_tc_wchar
690
ACE_ENV_ARG_PARAMETER);
693
this->any_ <<= CORBA::Any::from_wchar (value);
698
TAO_DynCommon::insert_wstring (const CORBA::WChar * value
701
CORBA::SystemException,
702
DynamicAny::DynAny::TypeMismatch,
703
DynamicAny::DynAny::InvalidValue
706
if (this->destroyed_)
708
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
711
if (this->has_components_)
713
DynamicAny::DynAny_var cc =
714
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
717
cc->insert_wstring (value
718
ACE_ENV_ARG_PARAMETER);
723
CORBA::TypeCode_var unaliased_tc =
724
this->check_type_and_unalias (CORBA::_tc_wstring
725
ACE_ENV_ARG_PARAMETER);
728
CORBA::ULong bound = unaliased_tc->length (ACE_ENV_SINGLE_ARG_PARAMETER);
731
if (bound > 0 && bound < ACE_OS::wslen (value))
733
ACE_THROW (DynamicAny::DynAny::InvalidValue ());
736
this->any_ <<= CORBA::Any::from_wstring (ACE_const_cast (CORBA::WChar *,
743
TAO_DynCommon::insert_any (const CORBA::Any &value
746
CORBA::SystemException,
747
DynamicAny::DynAny::TypeMismatch,
748
DynamicAny::DynAny::InvalidValue
751
if (this->destroyed_)
753
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
756
if (this->has_components_)
758
DynamicAny::DynAny_var cc =
759
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
762
cc->insert_any (value
763
ACE_ENV_ARG_PARAMETER);
768
this->check_type (CORBA::_tc_any
769
ACE_ENV_ARG_PARAMETER);
772
this->any_ <<= value;
776
// @@@ (JP) TODO - optimize - this version was intended by the OMG to
777
// have fewer Any/DynAny conversions than insert_any, not more.
779
TAO_DynCommon::insert_dyn_any (DynamicAny::DynAny_ptr value
782
CORBA::SystemException,
783
DynamicAny::DynAny::TypeMismatch,
784
DynamicAny::DynAny::InvalidValue
787
if (this->destroyed_)
789
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
792
CORBA::Any_var any = value->to_any (ACE_ENV_SINGLE_ARG_PARAMETER);
795
this->insert_any (any.in ()
796
ACE_ENV_ARG_PARAMETER);
801
TAO_DynCommon::insert_val (CORBA::ValueBase *
804
CORBA::SystemException,
805
DynamicAny::DynAny::TypeMismatch,
806
DynamicAny::DynAny::InvalidValue
809
ACE_THROW (CORBA::NO_IMPLEMENT ());
812
// ****************************************************************
815
TAO_DynCommon::get_boolean (ACE_ENV_SINGLE_ARG_DECL)
817
CORBA::SystemException,
818
DynamicAny::DynAny::TypeMismatch,
819
DynamicAny::DynAny::InvalidValue
822
if (this->destroyed_)
824
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
828
if (this->has_components_)
830
DynamicAny::DynAny_var cc =
831
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
832
ACE_CHECK_RETURN (0);
834
return cc->get_boolean (ACE_ENV_SINGLE_ARG_PARAMETER);
838
CORBA::Boolean retval;
840
if ((this->any_ >>= CORBA::Any::to_boolean (retval)) == 0)
842
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
851
TAO_DynCommon::get_octet (ACE_ENV_SINGLE_ARG_DECL)
853
CORBA::SystemException,
854
DynamicAny::DynAny::TypeMismatch,
855
DynamicAny::DynAny::InvalidValue
858
if (this->destroyed_)
860
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
864
if (this->has_components_)
866
DynamicAny::DynAny_var cc =
867
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
868
ACE_CHECK_RETURN (0);
870
return cc->get_octet (ACE_ENV_SINGLE_ARG_PARAMETER);
876
if ((this->any_ >>= CORBA::Any::to_octet (retval)) == 0)
878
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
887
TAO_DynCommon::get_char (ACE_ENV_SINGLE_ARG_DECL)
889
CORBA::SystemException,
890
DynamicAny::DynAny::TypeMismatch,
891
DynamicAny::DynAny::InvalidValue
894
if (this->destroyed_)
896
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
900
if (this->has_components_)
902
DynamicAny::DynAny_var cc =
903
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
904
ACE_CHECK_RETURN (0);
906
return cc->get_char (ACE_ENV_SINGLE_ARG_PARAMETER);
912
if ((this->any_ >>= CORBA::Any::to_char (retval)) == 0)
914
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
923
TAO_DynCommon::get_short (ACE_ENV_SINGLE_ARG_DECL)
925
CORBA::SystemException,
926
DynamicAny::DynAny::TypeMismatch,
927
DynamicAny::DynAny::InvalidValue
930
if (this->destroyed_)
932
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
936
if (this->has_components_)
938
DynamicAny::DynAny_var cc =
939
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
940
ACE_CHECK_RETURN (0);
942
return cc->get_short (ACE_ENV_SINGLE_ARG_PARAMETER);
948
if ((this->any_ >>= retval) == 0)
950
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
959
TAO_DynCommon::get_ushort (ACE_ENV_SINGLE_ARG_DECL)
961
CORBA::SystemException,
962
DynamicAny::DynAny::TypeMismatch,
963
DynamicAny::DynAny::InvalidValue
966
if (this->destroyed_)
968
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
972
if (this->has_components_)
974
DynamicAny::DynAny_var cc =
975
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
976
ACE_CHECK_RETURN (0);
978
return cc->get_ushort (ACE_ENV_SINGLE_ARG_PARAMETER);
982
CORBA::UShort retval;
984
if ((this->any_ >>= retval) == 0)
986
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
995
TAO_DynCommon::get_long (ACE_ENV_SINGLE_ARG_DECL)
997
CORBA::SystemException,
998
DynamicAny::DynAny::TypeMismatch,
999
DynamicAny::DynAny::InvalidValue
1002
if (this->destroyed_)
1004
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1008
if (this->has_components_)
1010
DynamicAny::DynAny_var cc =
1011
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1012
ACE_CHECK_RETURN (0);
1014
return cc->get_long (ACE_ENV_SINGLE_ARG_PARAMETER);
1020
if ((this->any_ >>= retval) == 0)
1022
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1031
TAO_DynCommon::get_ulong (ACE_ENV_SINGLE_ARG_DECL)
1033
CORBA::SystemException,
1034
DynamicAny::DynAny::TypeMismatch,
1035
DynamicAny::DynAny::InvalidValue
1038
if (this->destroyed_)
1040
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1044
if (this->has_components_)
1046
DynamicAny::DynAny_var cc =
1047
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1048
ACE_CHECK_RETURN (0);
1050
return cc->get_ulong (ACE_ENV_SINGLE_ARG_PARAMETER);
1054
CORBA::ULong retval;
1056
if ((this->any_ >>= retval) == 0)
1058
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1067
TAO_DynCommon::get_float (ACE_ENV_SINGLE_ARG_DECL)
1069
CORBA::SystemException,
1070
DynamicAny::DynAny::TypeMismatch,
1071
DynamicAny::DynAny::InvalidValue
1074
if (this->destroyed_)
1076
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1080
if (this->has_components_)
1082
DynamicAny::DynAny_var cc =
1083
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1084
ACE_CHECK_RETURN (0);
1086
return cc->get_float (ACE_ENV_SINGLE_ARG_PARAMETER);
1090
CORBA::Float retval;
1092
if ((this->any_ >>= retval) == 0)
1094
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1103
TAO_DynCommon::get_double (ACE_ENV_SINGLE_ARG_DECL)
1105
CORBA::SystemException,
1106
DynamicAny::DynAny::TypeMismatch,
1107
DynamicAny::DynAny::InvalidValue
1110
if (this->destroyed_)
1112
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1116
if (this->has_components_)
1118
DynamicAny::DynAny_var cc =
1119
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1120
ACE_CHECK_RETURN (0);
1122
return cc->get_double (ACE_ENV_SINGLE_ARG_PARAMETER);
1126
CORBA::Double retval;
1128
if ((this->any_ >>= retval) == 0)
1130
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1139
TAO_DynCommon::get_string (ACE_ENV_SINGLE_ARG_DECL)
1141
CORBA::SystemException,
1142
DynamicAny::DynAny::TypeMismatch,
1143
DynamicAny::DynAny::InvalidValue
1146
if (this->destroyed_)
1148
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1152
if (this->has_components_)
1154
DynamicAny::DynAny_var cc =
1155
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1156
ACE_CHECK_RETURN (0);
1158
return cc->get_string (ACE_ENV_SINGLE_ARG_PARAMETER);
1162
CORBA::TypeCode_var unaliased_tc =
1163
TAO_DynAnyFactory::strip_alias (this->type_.in ()
1164
ACE_ENV_ARG_PARAMETER);
1165
ACE_CHECK_RETURN (0);
1167
CORBA::TCKind kind =
1168
unaliased_tc->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
1169
ACE_CHECK_RETURN (0);
1171
if (kind != CORBA::tk_string)
1173
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1179
CORBA::ULong bound =
1180
unaliased_tc->length (ACE_ENV_SINGLE_ARG_PARAMETER);
1181
ACE_CHECK_RETURN (0);
1183
// We will have caught a type mismatch above, so if this fails,
1184
// it must be for some other reason.
1185
if ((this->any_ >>= CORBA::Any::to_string (retval, bound)) == 0)
1187
ACE_THROW_RETURN (DynamicAny::DynAny::InvalidValue (),
1191
return CORBA::string_dup (retval);
1196
TAO_DynCommon::get_reference (ACE_ENV_SINGLE_ARG_DECL)
1198
CORBA::SystemException,
1199
DynamicAny::DynAny::TypeMismatch,
1200
DynamicAny::DynAny::InvalidValue
1203
if (this->destroyed_)
1205
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1206
CORBA::Object::_nil ());
1209
if (this->has_components_)
1211
DynamicAny::DynAny_var cc =
1212
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1213
ACE_CHECK_RETURN (CORBA::Object::_nil ());
1215
return cc->get_reference (ACE_ENV_SINGLE_ARG_PARAMETER);
1219
CORBA::Object_var retval;
1221
if ((this->any_ >>= CORBA::Any::to_object (retval.inout ())) == 0)
1223
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1224
CORBA::Object::_nil ());
1227
return retval._retn ();
1232
TAO_DynCommon::get_typecode (ACE_ENV_SINGLE_ARG_DECL)
1234
CORBA::SystemException,
1235
DynamicAny::DynAny::TypeMismatch,
1236
DynamicAny::DynAny::InvalidValue
1239
if (this->destroyed_)
1241
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1242
CORBA::TypeCode::_nil ());
1245
if (this->has_components_)
1247
DynamicAny::DynAny_var cc =
1248
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1249
ACE_CHECK_RETURN (0);
1251
return cc->get_typecode (ACE_ENV_SINGLE_ARG_PARAMETER);
1255
CORBA::TypeCode_ptr retval;
1257
if ((this->any_ >>= retval) == 0)
1259
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1260
CORBA::TypeCode::_nil ());
1263
return CORBA::TypeCode::_duplicate (retval);
1268
TAO_DynCommon::get_longlong (ACE_ENV_SINGLE_ARG_DECL)
1270
CORBA::SystemException,
1271
DynamicAny::DynAny::TypeMismatch,
1272
DynamicAny::DynAny::InvalidValue
1275
CORBA::LongLong retval = ACE_CDR_LONGLONG_INITIALIZER;
1277
if (this->destroyed_)
1279
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1283
if (this->has_components_)
1285
DynamicAny::DynAny_var cc =
1286
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1287
ACE_CHECK_RETURN (retval);
1289
return cc->get_longlong (ACE_ENV_SINGLE_ARG_PARAMETER);
1293
if ((this->any_ >>= retval) == 0)
1295
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1304
TAO_DynCommon::get_ulonglong (ACE_ENV_SINGLE_ARG_DECL)
1306
CORBA::SystemException,
1307
DynamicAny::DynAny::TypeMismatch,
1308
DynamicAny::DynAny::InvalidValue
1311
CORBA::ULongLong retval = 0;
1313
if (this->destroyed_)
1315
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1319
if (this->has_components_)
1321
DynamicAny::DynAny_var cc =
1322
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1323
ACE_CHECK_RETURN (retval);
1325
return cc->get_ulonglong (ACE_ENV_SINGLE_ARG_PARAMETER);
1329
if ((this->any_ >>= retval) == 0)
1331
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1340
TAO_DynCommon::get_longdouble (ACE_ENV_SINGLE_ARG_DECL)
1342
CORBA::SystemException,
1343
DynamicAny::DynAny::TypeMismatch,
1344
DynamicAny::DynAny::InvalidValue
1347
CORBA::LongDouble retval = ACE_CDR_LONG_DOUBLE_INITIALIZER;
1349
if (this->destroyed_)
1351
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1355
if (this->has_components_)
1357
DynamicAny::DynAny_var cc =
1358
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1359
ACE_CHECK_RETURN (retval);
1361
return cc->get_longdouble (ACE_ENV_SINGLE_ARG_PARAMETER);
1365
if ((this->any_ >>= retval) == 0)
1367
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1376
TAO_DynCommon::get_wchar (ACE_ENV_SINGLE_ARG_DECL)
1378
CORBA::SystemException,
1379
DynamicAny::DynAny::TypeMismatch,
1380
DynamicAny::DynAny::InvalidValue
1383
if (this->destroyed_)
1385
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1389
if (this->has_components_)
1391
DynamicAny::DynAny_var cc =
1392
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1393
ACE_CHECK_RETURN (0);
1395
return cc->get_wchar (ACE_ENV_SINGLE_ARG_PARAMETER);
1399
CORBA::WChar retval;
1401
if ((this->any_ >>= CORBA::Any::to_wchar (retval)) == 0)
1403
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1412
TAO_DynCommon::get_wstring (ACE_ENV_SINGLE_ARG_DECL)
1414
CORBA::SystemException,
1415
DynamicAny::DynAny::TypeMismatch,
1416
DynamicAny::DynAny::InvalidValue
1419
if (this->destroyed_)
1421
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1425
if (this->has_components_)
1427
DynamicAny::DynAny_var cc =
1428
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1429
ACE_CHECK_RETURN (0);
1431
return cc->get_wstring (ACE_ENV_SINGLE_ARG_PARAMETER);
1435
// @@@ (JP) Someday try to find a way to avoid checking for
1436
// type code equivalence twice without risking a throw of
1438
CORBA::TypeCode_var unaliased_tc =
1439
this->check_type_and_unalias (CORBA::_tc_wstring
1440
ACE_ENV_ARG_PARAMETER);
1441
ACE_CHECK_RETURN (0);
1443
CORBA::WChar *retval = 0;
1445
CORBA::ULong bound =
1446
unaliased_tc->length (ACE_ENV_SINGLE_ARG_PARAMETER);
1447
ACE_CHECK_RETURN (0);
1449
(void) (this->any_ >>= CORBA::Any::to_wstring (retval,
1452
return CORBA::wstring_dup (retval);
1457
TAO_DynCommon::get_any (ACE_ENV_SINGLE_ARG_DECL)
1459
CORBA::SystemException,
1460
DynamicAny::DynAny::TypeMismatch,
1461
DynamicAny::DynAny::InvalidValue
1464
if (this->destroyed_)
1466
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1470
if (this->has_components_)
1472
DynamicAny::DynAny_var cc =
1473
this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1474
ACE_CHECK_RETURN (0);
1476
return cc->get_any (ACE_ENV_SINGLE_ARG_PARAMETER);
1480
const CORBA::Any *tmp = 0;
1482
if ((this->any_ >>= tmp) == 0)
1484
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1488
CORBA::Any *retval = 0;
1489
ACE_NEW_RETURN (retval,
1496
// @@@ (JP) TODO - optimize - this version was intended by the OMG to
1497
// have fewer Any/DynAny conversions than get_any, not more.
1498
DynamicAny::DynAny_ptr
1499
TAO_DynCommon::get_dyn_any (ACE_ENV_SINGLE_ARG_DECL)
1501
CORBA::SystemException,
1502
DynamicAny::DynAny::TypeMismatch,
1503
DynamicAny::DynAny::InvalidValue
1506
if (this->destroyed_)
1508
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1512
CORBA::Any_var any = this->get_any (ACE_ENV_SINGLE_ARG_PARAMETER);
1513
ACE_CHECK_RETURN (0);
1515
return TAO_DynAnyFactory::make_dyn_any (any.in ()
1516
ACE_ENV_ARG_PARAMETER);
1520
TAO_DynCommon::get_val (ACE_ENV_SINGLE_ARG_DECL)
1522
CORBA::SystemException,
1523
DynamicAny::DynAny::TypeMismatch,
1524
DynamicAny::DynAny::InvalidValue
1527
ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
1531
// ****************************************************************
1534
TAO_DynCommon::seek (CORBA::Long slot
1537
CORBA::SystemException
1540
if (this->destroyed_)
1542
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1546
if (this->has_components_ == 0)
1548
ACE_UNUSED_ARG (slot);
1549
this->current_position_ = -1;
1552
else if (slot < 0 || slot >= ACE_static_cast (CORBA::Long,
1553
this->component_count_))
1555
this->current_position_ = -1;
1560
this->current_position_ = slot;
1566
TAO_DynCommon::rewind (ACE_ENV_SINGLE_ARG_DECL)
1568
CORBA::SystemException
1571
if (this->destroyed_)
1573
ACE_THROW (CORBA::OBJECT_NOT_EXIST ());
1576
(void) this->seek (0
1577
ACE_ENV_ARG_PARAMETER);
1582
TAO_DynCommon::next (ACE_ENV_SINGLE_ARG_DECL)
1584
CORBA::SystemException
1587
if (this->destroyed_)
1589
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1593
if (this->has_components_ == 0
1594
|| this->current_position_ + 1 >= ACE_static_cast (
1596
this->component_count_
1599
this->current_position_ = -1;
1604
++this->current_position_;
1609
DynamicAny::DynAny_ptr
1610
TAO_DynCommon::copy (ACE_ENV_SINGLE_ARG_DECL)
1612
CORBA::SystemException
1615
if (this->destroyed_)
1617
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1618
DynamicAny::DynAny::_nil ());
1621
CORBA::Any_var any = this->to_any (ACE_ENV_SINGLE_ARG_PARAMETER);
1622
ACE_CHECK_RETURN (DynamicAny::DynAny::_nil ());
1624
DynamicAny::DynAny_ptr retval =
1625
TAO_DynAnyFactory::make_dyn_any (any.in ()
1626
ACE_ENV_ARG_PARAMETER);
1627
ACE_CHECK_RETURN (DynamicAny::DynAny::_nil ());
1633
TAO_DynCommon::component_count (ACE_ENV_SINGLE_ARG_DECL)
1635
CORBA::SystemException
1638
if (this->destroyed_)
1640
ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
1644
return this->component_count_;
1648
TAO_DynCommon::set_flag (DynamicAny::DynAny_ptr component,
1649
CORBA::Boolean destroying
1652
CORBA::SystemException
1655
CORBA::TypeCode_var tc = component->type (ACE_ENV_SINGLE_ARG_PARAMETER);
1658
CORBA::TCKind tk = TAO_DynAnyFactory::unalias (tc.in ()
1659
ACE_ENV_ARG_PARAMETER);
1664
case CORBA::tk_array:
1666
TAO_DynArray_i *tmp =
1667
TAO_DynArray_i::_narrow (component
1668
ACE_ENV_ARG_PARAMETER);
1673
tmp->container_is_destroying_ = 1;
1677
tmp->ref_to_component_ = 1;
1682
case CORBA::tk_enum:
1684
TAO_DynEnum_i *tmp = TAO_DynEnum_i::_narrow (component
1685
ACE_ENV_ARG_PARAMETER);
1690
tmp->container_is_destroying_ = 1;
1694
tmp->ref_to_component_ = 1;
1699
case CORBA::tk_sequence:
1701
TAO_DynSequence_i *tmp =
1702
TAO_DynSequence_i::_narrow (component
1703
ACE_ENV_ARG_PARAMETER);
1708
tmp->container_is_destroying_ = 1;
1712
tmp->ref_to_component_ = 1;
1717
case CORBA::tk_struct:
1719
TAO_DynStruct_i *tmp =
1720
TAO_DynStruct_i::_narrow (component
1721
ACE_ENV_ARG_PARAMETER);
1726
tmp->container_is_destroying_ = 1;
1730
tmp->ref_to_component_ = 1;
1735
case CORBA::tk_union:
1737
TAO_DynUnion_i *tmp =
1738
TAO_DynUnion_i::_narrow (component
1739
ACE_ENV_ARG_PARAMETER);
1744
tmp->container_is_destroying_ = 1;
1748
tmp->ref_to_component_ = 1;
1753
case CORBA::tk_fixed:
1754
case CORBA::tk_value:
1755
case CORBA::tk_value_box:
1756
ACE_THROW (CORBA::NO_IMPLEMENT ());
1759
TAO_DynAny_i *tmp = TAO_DynAny_i::_narrow (component
1760
ACE_ENV_ARG_PARAMETER);
1765
tmp->container_is_destroying_ = 1;
1769
tmp->ref_to_component_ = 1;
1777
DynamicAny::DynAny_ptr
1778
TAO_DynCommon::check_component (ACE_ENV_SINGLE_ARG_DECL)
1780
CORBA::SystemException,
1781
DynamicAny::DynAny::TypeMismatch,
1782
DynamicAny::DynAny::InvalidValue
1785
if (this->current_position_ == -1)
1787
ACE_THROW_RETURN (DynamicAny::DynAny::InvalidValue (),
1788
DynamicAny::DynAny::_nil ());
1791
DynamicAny::DynAny_var cc =
1792
this->current_component (ACE_ENV_SINGLE_ARG_PARAMETER);
1793
ACE_CHECK_RETURN (DynamicAny::DynAny::_nil ());
1795
CORBA::TypeCode_var tc = cc->type (ACE_ENV_SINGLE_ARG_PARAMETER);
1796
ACE_CHECK_RETURN (DynamicAny::DynAny::_nil ());
1798
CORBA::TCKind kind = TAO_DynAnyFactory::unalias (tc.in ()
1799
ACE_ENV_ARG_PARAMETER);
1800
ACE_CHECK_RETURN (DynamicAny::DynAny::_nil ());
1802
// We are here because we are a component that is the target of
1803
// an insert_*() call on our container. It is
1804
// illegal to insert anything into a component that itself has
1808
case CORBA::tk_array:
1809
case CORBA::tk_except:
1810
case CORBA::tk_sequence:
1811
case CORBA::tk_struct:
1812
case CORBA::tk_union:
1813
ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (),
1814
DynamicAny::DynAny::_nil ());
1821
TAO_DynCommon::check_type (CORBA::TypeCode_ptr tc
1824
CORBA::SystemException,
1825
DynamicAny::DynAny::TypeMismatch
1828
CORBA::Boolean equivalent =
1829
this->type_->equivalent (tc
1830
ACE_ENV_ARG_PARAMETER);
1835
ACE_THROW (DynamicAny::DynAny::TypeMismatch ());
1840
TAO_DynCommon::check_type_and_unalias (CORBA::TypeCode_ptr tc
1843
CORBA::SystemException,
1844
DynamicAny::DynAny::TypeMismatch
1847
this->check_type (tc
1848
ACE_ENV_ARG_PARAMETER);
1849
ACE_CHECK_RETURN (CORBA::TypeCode::_nil ());
1851
return TAO_DynAnyFactory::strip_alias (tc
1852
ACE_ENV_ARG_PARAMETER);