r2corba 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGES +159 -0
- data/LICENSE +59 -0
- data/README +62 -0
- data/THANKS +52 -0
- data/bin/r2corba +8 -0
- data/bin/ridlc +11 -0
- data/bin/rins +7 -0
- data/ext/ext.mwc +6 -0
- data/ext/extload/extload.c +60 -0
- data/ext/libr2tao/any.cpp +1543 -0
- data/ext/libr2tao/exception.cpp +202 -0
- data/ext/libr2tao/exception.h +104 -0
- data/ext/libr2tao/longdouble.cpp +173 -0
- data/ext/libr2tao/longdouble.h +31 -0
- data/ext/libr2tao/object.cpp +1150 -0
- data/ext/libr2tao/object.h +38 -0
- data/ext/libr2tao/orb.cpp +1029 -0
- data/ext/libr2tao/orb.h +36 -0
- data/ext/libr2tao/r2tao_export.h +45 -0
- data/ext/libr2tao/r2tao_ext.h +38 -0
- data/ext/libr2tao/required.cpp +463 -0
- data/ext/libr2tao/required.h +187 -0
- data/ext/libr2tao/typecode.cpp +888 -0
- data/ext/libr2tao/typecode.h +45 -0
- data/ext/libr2tao/values.cpp +2938 -0
- data/ext/libr2tao/values.h +396 -0
- data/ext/librpoa/iortable.cpp +250 -0
- data/ext/librpoa/poa.cpp +1076 -0
- data/ext/librpoa/poa.h +24 -0
- data/ext/librpoa/rpoa_export.h +44 -0
- data/ext/librpoa/servant.cpp +1338 -0
- data/ext/librpoa/servant.h +116 -0
- data/ext/librpoa/srvreq_fix.cpp +283 -0
- data/ext/librpoa/srvreq_fix.h +149 -0
- data/ext/librpol/policies.cpp +763 -0
- data/ext/librpol/policies.h +15 -0
- data/ext/librpol/rpol_export.h +44 -0
- data/lib/corba/cbase/IORMap.rb +33 -0
- data/lib/corba/cbase/ORB.rb +231 -0
- data/lib/corba/cbase/Request.rb +134 -0
- data/lib/corba/cbase/Streams.rb +129 -0
- data/lib/corba/cbase/Stub.rb +19 -0
- data/lib/corba/cbase/Typecode.rb +441 -0
- data/lib/corba/cbase/Values.rb +129 -0
- data/lib/corba/cbase/exception.rb +66 -0
- data/lib/corba/cbase/poa.rb +23 -0
- data/lib/corba/cbase/policies.rb +78 -0
- data/lib/corba/cbase/post_require.rb +14 -0
- data/lib/corba/cbase/require.rb +28 -0
- data/lib/corba/cmds/base.rb +85 -0
- data/lib/corba/cmds/test.rb +30 -0
- data/lib/corba/common/Any.rb +91 -0
- data/lib/corba/common/IDL.rb +104 -0
- data/lib/corba/common/ORB.rb +368 -0
- data/lib/corba/common/Object.rb +208 -0
- data/lib/corba/common/Request.rb +20 -0
- data/lib/corba/common/Servant.rb +108 -0
- data/lib/corba/common/Struct.rb +22 -0
- data/lib/corba/common/Stub.rb +79 -0
- data/lib/corba/common/Typecode.rb +1121 -0
- data/lib/corba/common/Union.rb +56 -0
- data/lib/corba/common/Values.rb +92 -0
- data/lib/corba/common/const.rb +22 -0
- data/lib/corba/common/exception.rb +68 -0
- data/lib/corba/common/require.rb +27 -0
- data/lib/corba/common/version.rb +22 -0
- data/lib/corba/idl/IDL.rb +21 -0
- data/lib/corba/idl/IORTable.pidl +62 -0
- data/lib/corba/idl/TAO_Ext.pidl +46 -0
- data/lib/corba/idl/require.rb +20 -0
- data/lib/corba/jbase/Any.rb +273 -0
- data/lib/corba/jbase/IORMap.rb +36 -0
- data/lib/corba/jbase/ORB.rb +99 -0
- data/lib/corba/jbase/Object.rb +98 -0
- data/lib/corba/jbase/Request.rb +226 -0
- data/lib/corba/jbase/Servant.rb +247 -0
- data/lib/corba/jbase/ServerRequest.rb +128 -0
- data/lib/corba/jbase/Streams.rb +671 -0
- data/lib/corba/jbase/Stub.rb +38 -0
- data/lib/corba/jbase/Typecode.rb +520 -0
- data/lib/corba/jbase/Values.rb +173 -0
- data/lib/corba/jbase/exception.rb +106 -0
- data/lib/corba/jbase/poa.rb +229 -0
- data/lib/corba/jbase/policies.rb +300 -0
- data/lib/corba/jbase/post_require.rb +14 -0
- data/lib/corba/jbase/require.rb +86 -0
- data/lib/corba/naming.rb +14 -0
- data/lib/corba/naming_service.rb +15 -0
- data/lib/corba/poa.rb +15 -0
- data/lib/corba/policies.rb +18 -0
- data/lib/corba/require.rb +17 -0
- data/lib/corba/svcs/ins/cos_naming.rb +426 -0
- data/lib/corba/svcs/ins/ins.rb +526 -0
- data/lib/corba/svcs/ins/naming_service.rb +119 -0
- data/lib/corba.rb +16 -0
- data/lib/ridlbe/ruby/config.rb +336 -0
- data/lib/ridlbe/ruby/require.rb +16 -0
- data/lib/ridlbe/ruby/walker.rb +1582 -0
- data/mkrf_conf_srcgem.rb +186 -0
- data/rakelib/bin.rake +80 -0
- data/rakelib/bin.rb +146 -0
- data/rakelib/build.rake +87 -0
- data/rakelib/config.rake +52 -0
- data/rakelib/config.rb +450 -0
- data/rakelib/ext.rake +242 -0
- data/rakelib/ext.rb +308 -0
- data/rakelib/ext_r2tao.rb +232 -0
- data/rakelib/gem.rake +212 -0
- data/rakelib/gem.rb +146 -0
- data/rakelib/package.rake +26 -0
- data/rakelib/test.rake +23 -0
- data/test/BiDirectional/Test.idl +34 -0
- data/test/BiDirectional/client.rb +132 -0
- data/test/BiDirectional/run_test.rb +68 -0
- data/test/BiDirectional/server.rb +169 -0
- data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
- data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
- data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
- data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
- data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
- data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
- data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
- data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
- data/test/Collocation/Diamond.idl +39 -0
- data/test/Collocation/run_test.rb +52 -0
- data/test/Collocation/test.rb +195 -0
- data/test/Connect_Timeout/Test.idl +27 -0
- data/test/Connect_Timeout/client.rb +111 -0
- data/test/Connect_Timeout/run_test.rb +52 -0
- data/test/DII/Test.idl +27 -0
- data/test/DII/client.rb +115 -0
- data/test/DII/run_test.rb +69 -0
- data/test/DII/server.rb +95 -0
- data/test/DSI/Test.idl +27 -0
- data/test/DSI/client.rb +66 -0
- data/test/DSI/run_test.rb +69 -0
- data/test/DSI/server.rb +106 -0
- data/test/Exceptions/Test.idl +48 -0
- data/test/Exceptions/client.rb +118 -0
- data/test/Exceptions/run_test.rb +69 -0
- data/test/Exceptions/server.rb +131 -0
- data/test/Hello/Test.idl +27 -0
- data/test/Hello/client.rb +78 -0
- data/test/Hello/run_test.rb +71 -0
- data/test/Hello/server.rb +95 -0
- data/test/IDL_Test/Test.idl +113 -0
- data/test/IDL_Test/Test_inc.idl +17 -0
- data/test/IDL_Test/client.rb +102 -0
- data/test/IDL_Test/run_test.rb +69 -0
- data/test/IDL_Test/server.rb +99 -0
- data/test/IORMap/Test.idl +27 -0
- data/test/IORMap/client.rb +73 -0
- data/test/IORMap/run_test.rb +69 -0
- data/test/IORMap/server.rb +114 -0
- data/test/IORTable/Test.idl +27 -0
- data/test/IORTable/client.rb +75 -0
- data/test/IORTable/run_test.rb +69 -0
- data/test/IORTable/server.rb +130 -0
- data/test/Implicit_Conversion/Test.idl +31 -0
- data/test/Implicit_Conversion/client.rb +110 -0
- data/test/Implicit_Conversion/run_test.rb +69 -0
- data/test/Implicit_Conversion/server.rb +99 -0
- data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
- data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
- data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
- data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
- data/test/Multi_Threading/Simple/Test.idl +27 -0
- data/test/Multi_Threading/Simple/client.rb +88 -0
- data/test/Multi_Threading/Simple/run_test.rb +69 -0
- data/test/Multi_Threading/Simple/server.rb +118 -0
- data/test/Multi_Threading/Threads/Test.idl +31 -0
- data/test/Multi_Threading/Threads/client.rb +80 -0
- data/test/Multi_Threading/Threads/run_test.rb +76 -0
- data/test/Multi_Threading/Threads/server.rb +119 -0
- data/test/Multi_Threading/Threads/watchdog.rb +87 -0
- data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
- data/test/Multiple_Servant_Interfaces/client.rb +70 -0
- data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
- data/test/Multiple_Servant_Interfaces/server.rb +102 -0
- data/test/Nil/Test.idl +27 -0
- data/test/Nil/run_test.rb +52 -0
- data/test/Nil/test.rb +78 -0
- data/test/OBV/AbstractInterface/client.rb +179 -0
- data/test/OBV/AbstractInterface/run_test.rb +69 -0
- data/test/OBV/AbstractInterface/server.rb +149 -0
- data/test/OBV/AbstractInterface/test.idl +53 -0
- data/test/OBV/Custom/OBV.idl +18 -0
- data/test/OBV/Custom/OBV_impl.rb +40 -0
- data/test/OBV/Custom/client.rb +86 -0
- data/test/OBV/Custom/run_test.rb +69 -0
- data/test/OBV/Custom/server.rb +100 -0
- data/test/OBV/Simple/OBV.idl +15 -0
- data/test/OBV/Simple/OBV_impl.rb +26 -0
- data/test/OBV/Simple/client.rb +86 -0
- data/test/OBV/Simple/run_test.rb +69 -0
- data/test/OBV/Simple/server.rb +100 -0
- data/test/OBV/Simple_Event/Event.idl +15 -0
- data/test/OBV/Simple_Event/Event_impl.rb +26 -0
- data/test/OBV/Simple_Event/client.rb +86 -0
- data/test/OBV/Simple_Event/run_test.rb +69 -0
- data/test/OBV/Simple_Event/server.rb +100 -0
- data/test/OBV/Supports/client.rb +116 -0
- data/test/OBV/Supports/run_test.rb +69 -0
- data/test/OBV/Supports/server.rb +103 -0
- data/test/OBV/Supports/supports.idl +33 -0
- data/test/OBV/Supports/supports_impl.rb +57 -0
- data/test/OBV/Tree/client.rb +116 -0
- data/test/OBV/Tree/run_test.rb +69 -0
- data/test/OBV/Tree/server.rb +117 -0
- data/test/OBV/Tree/test.idl +32 -0
- data/test/OBV/Truncatable/Extra.idl +27 -0
- data/test/OBV/Truncatable/Truncatable.idl +105 -0
- data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
- data/test/OBV/Truncatable/client.rb +279 -0
- data/test/OBV/Truncatable/run_test.rb +69 -0
- data/test/OBV/Truncatable/server.rb +89 -0
- data/test/OBV/ValueBox/client.rb +497 -0
- data/test/OBV/ValueBox/run_test.rb +69 -0
- data/test/OBV/ValueBox/server.rb +271 -0
- data/test/OBV/ValueBox/valuebox.idl +101 -0
- data/test/OBV/ValueBox/vb_basic.idl +75 -0
- data/test/OBV/ValueBox/vb_struct.idl +68 -0
- data/test/OBV/ValueBox/vb_union.idl +21 -0
- data/test/Object/Test.idl +27 -0
- data/test/Object/client.rb +103 -0
- data/test/Object/run_test.rb +69 -0
- data/test/Object/server.rb +126 -0
- data/test/POA/Test.idl +27 -0
- data/test/POA/run_test.rb +52 -0
- data/test/POA/test.rb +112 -0
- data/test/Param_Test/Test.idl +182 -0
- data/test/Param_Test/client.rb +277 -0
- data/test/Param_Test/run_test.rb +69 -0
- data/test/Param_Test/server.rb +296 -0
- data/test/Performance/Simple/Test.idl +27 -0
- data/test/Performance/Simple/client.rb +90 -0
- data/test/Performance/Simple/run_test.rb +69 -0
- data/test/Performance/Simple/server.rb +95 -0
- data/test/Policies/Test.idl +27 -0
- data/test/Policies/run_test.rb +52 -0
- data/test/Policies/test.rb +144 -0
- data/test/Timeout/client.rb +207 -0
- data/test/Timeout/run_test.rb +69 -0
- data/test/Timeout/server.rb +109 -0
- data/test/Timeout/test.idl +19 -0
- data/test/lib/assert.rb +43 -0
- data/test/lib/test.rb +542 -0
- data/test/test_runner.rb +193 -0
- metadata +334 -0
|
@@ -0,0 +1,888 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
# typecode.cpp - R2TAO CORBA TypeCode support
|
|
3
|
+
#
|
|
4
|
+
# Author: Martin Corino
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can redistribute it and/or
|
|
7
|
+
# modify it under the terms of the R2CORBA LICENSE which is
|
|
8
|
+
# included with this program.
|
|
9
|
+
#
|
|
10
|
+
# Copyright (c) Remedy IT Expertise BV
|
|
11
|
+
# Chamber of commerce Rotterdam nr.276339, The Netherlands
|
|
12
|
+
#------------------------------------------------------------------*/
|
|
13
|
+
|
|
14
|
+
#include "required.h"
|
|
15
|
+
#include "typecode.h"
|
|
16
|
+
#include "exception.h"
|
|
17
|
+
#include "object.h"
|
|
18
|
+
#include "tao/IFR_Client/IFR_BaseC.h"
|
|
19
|
+
#include "tao/TypeCodeFactory/TypeCodeFactory_Loader.h"
|
|
20
|
+
#include "tao/TypeCodeFactory_Adapter.h"
|
|
21
|
+
#include "tao/ORB_Core.h"
|
|
22
|
+
#include "ace/Dynamic_Service.h"
|
|
23
|
+
|
|
24
|
+
VALUE R2TAO_EXPORT r2corba_cTypeCode = 0;
|
|
25
|
+
VALUE R2TAO_EXPORT r2tao_cTypeCode = 0;
|
|
26
|
+
|
|
27
|
+
// CORBA TypeCode instance methods
|
|
28
|
+
static VALUE r2tao_TypeCode_kind(VALUE self);
|
|
29
|
+
static VALUE r2tao_TypeCode_compact_typecode(VALUE self);
|
|
30
|
+
static VALUE r2tao_TypeCode_equal(VALUE self, VALUE tc);
|
|
31
|
+
static VALUE r2tao_TypeCode_equivalent(VALUE self, VALUE tc);
|
|
32
|
+
static VALUE r2tao_TypeCode_id(VALUE self);
|
|
33
|
+
static VALUE r2tao_TypeCode_name(VALUE self);
|
|
34
|
+
static VALUE r2tao_TypeCode_member_count(VALUE self);
|
|
35
|
+
static VALUE r2tao_TypeCode_member_name(VALUE self, VALUE index);
|
|
36
|
+
static VALUE r2tao_TypeCode_member_type(VALUE self, VALUE index);
|
|
37
|
+
static VALUE r2tao_TypeCode_member_label(VALUE self, VALUE index);
|
|
38
|
+
static VALUE r2tao_TypeCode_member_visibility(VALUE self, VALUE index);
|
|
39
|
+
static VALUE r2tao_TypeCode_discriminator_type(VALUE self);
|
|
40
|
+
static VALUE r2tao_TypeCode_default_index(VALUE self);
|
|
41
|
+
static VALUE r2tao_TypeCode_length(VALUE self);
|
|
42
|
+
static VALUE r2tao_TypeCode_content_type(VALUE self);
|
|
43
|
+
static VALUE r2tao_TypeCode_fixed_digits(VALUE self);
|
|
44
|
+
static VALUE r2tao_TypeCode_fixed_scale(VALUE self);
|
|
45
|
+
static VALUE r2tao_TypeCode_type_modifier(VALUE self);
|
|
46
|
+
static VALUE r2tao_TypeCode_concrete_basetype(VALUE self);
|
|
47
|
+
|
|
48
|
+
// CORBA TypeCode class method
|
|
49
|
+
static VALUE r2tao_TypeCode_create_recursive_tc(VALUE klass, VALUE id);
|
|
50
|
+
static VALUE r2tao_TypeCode_create_tc(int _argc, VALUE *_argv0, VALUE klass);
|
|
51
|
+
static VALUE r2tao_TypeCode_get_primitive_tc(VALUE klass, VALUE kind);
|
|
52
|
+
|
|
53
|
+
static VALUE r2tao_sym_default;
|
|
54
|
+
|
|
55
|
+
void r2tao_init_Any(); // in any.cpp
|
|
56
|
+
|
|
57
|
+
void r2tao_init_LongDouble(); // in longdouble.cpp
|
|
58
|
+
|
|
59
|
+
void r2tao_Init_Typecode()
|
|
60
|
+
{
|
|
61
|
+
VALUE k;
|
|
62
|
+
|
|
63
|
+
if (r2tao_cTypeCode) return;
|
|
64
|
+
|
|
65
|
+
//rb_eval_string("puts 'r2tao_Init_Typecode start' if $VERBOSE");
|
|
66
|
+
|
|
67
|
+
r2corba_cTypeCode = rb_eval_string ("::R2CORBA::CORBA::TypeCode");
|
|
68
|
+
k = r2tao_cTypeCode =
|
|
69
|
+
rb_define_class_under (r2tao_nsCORBA_Native, "TypeCode", rb_cObject);
|
|
70
|
+
|
|
71
|
+
//rb_eval_string("puts 'r2tao_Init_Typecode 2' if $VERBOSE");
|
|
72
|
+
|
|
73
|
+
// define TypeCode methods
|
|
74
|
+
rb_define_method(k, "kind", RUBY_METHOD_FUNC(r2tao_TypeCode_kind), 0);
|
|
75
|
+
rb_define_method(k, "get_compact_typecode", RUBY_METHOD_FUNC(r2tao_TypeCode_compact_typecode), 0);
|
|
76
|
+
rb_define_method(k, "equal", RUBY_METHOD_FUNC(r2tao_TypeCode_equal), 1);
|
|
77
|
+
rb_define_method(k, "equivalent", RUBY_METHOD_FUNC(r2tao_TypeCode_equivalent), 1);
|
|
78
|
+
rb_define_method(k, "id", RUBY_METHOD_FUNC(r2tao_TypeCode_id), 0);
|
|
79
|
+
rb_define_method(k, "name", RUBY_METHOD_FUNC(r2tao_TypeCode_name), 0);
|
|
80
|
+
rb_define_method(k, "member_count", RUBY_METHOD_FUNC(r2tao_TypeCode_member_count), 0);
|
|
81
|
+
rb_define_method(k, "member_name", RUBY_METHOD_FUNC(r2tao_TypeCode_member_name), 1);
|
|
82
|
+
rb_define_method(k, "member_type", RUBY_METHOD_FUNC(r2tao_TypeCode_member_type), 1);
|
|
83
|
+
rb_define_method(k, "member_label", RUBY_METHOD_FUNC(r2tao_TypeCode_member_label), 1);
|
|
84
|
+
rb_define_method(k, "member_visibility", RUBY_METHOD_FUNC(r2tao_TypeCode_member_visibility), 1);
|
|
85
|
+
rb_define_method(k, "discriminator_type", RUBY_METHOD_FUNC(r2tao_TypeCode_discriminator_type), 0);
|
|
86
|
+
rb_define_method(k, "default_index", RUBY_METHOD_FUNC(r2tao_TypeCode_default_index), 0);
|
|
87
|
+
rb_define_method(k, "length", RUBY_METHOD_FUNC(r2tao_TypeCode_length), 0);
|
|
88
|
+
rb_define_method(k, "content_type", RUBY_METHOD_FUNC(r2tao_TypeCode_content_type), 0);
|
|
89
|
+
rb_define_method(k, "fixed_digits", RUBY_METHOD_FUNC(r2tao_TypeCode_fixed_digits), 0);
|
|
90
|
+
rb_define_method(k, "fixed_scale", RUBY_METHOD_FUNC(r2tao_TypeCode_fixed_scale), 0);
|
|
91
|
+
rb_define_method(k, "type_modifier", RUBY_METHOD_FUNC(r2tao_TypeCode_type_modifier), 0);
|
|
92
|
+
rb_define_method(k, "concrete_basetype", RUBY_METHOD_FUNC(r2tao_TypeCode_concrete_basetype), 0);
|
|
93
|
+
|
|
94
|
+
rb_define_singleton_method(k, "create_recursive_tc", RUBY_METHOD_FUNC(r2tao_TypeCode_create_recursive_tc), 1);
|
|
95
|
+
rb_define_singleton_method(k, "create_tc", RUBY_METHOD_FUNC(r2tao_TypeCode_create_tc), -1);
|
|
96
|
+
rb_define_singleton_method(k, "get_primitive_tc", RUBY_METHOD_FUNC(r2tao_TypeCode_get_primitive_tc), 1);
|
|
97
|
+
|
|
98
|
+
// define TypeCode-kind constants
|
|
99
|
+
rb_define_const (r2tao_nsCORBA, "TK_NULL", INT2NUM (CORBA::tk_null));
|
|
100
|
+
rb_define_const (r2tao_nsCORBA, "TK_VOID", INT2NUM (CORBA::tk_void));
|
|
101
|
+
rb_define_const (r2tao_nsCORBA, "TK_SHORT", INT2NUM (CORBA::tk_short));
|
|
102
|
+
rb_define_const (r2tao_nsCORBA, "TK_LONG", INT2NUM (CORBA::tk_long));
|
|
103
|
+
rb_define_const (r2tao_nsCORBA, "TK_USHORT", INT2NUM (CORBA::tk_ushort));
|
|
104
|
+
rb_define_const (r2tao_nsCORBA, "TK_ULONG", INT2NUM (CORBA::tk_ulong));
|
|
105
|
+
rb_define_const (r2tao_nsCORBA, "TK_FLOAT", INT2NUM (CORBA::tk_float));
|
|
106
|
+
rb_define_const (r2tao_nsCORBA, "TK_DOUBLE", INT2NUM (CORBA::tk_double));
|
|
107
|
+
rb_define_const (r2tao_nsCORBA, "TK_BOOLEAN", INT2NUM (CORBA::tk_boolean));
|
|
108
|
+
rb_define_const (r2tao_nsCORBA, "TK_CHAR", INT2NUM (CORBA::tk_char));
|
|
109
|
+
rb_define_const (r2tao_nsCORBA, "TK_OCTET", INT2NUM (CORBA::tk_octet));
|
|
110
|
+
rb_define_const (r2tao_nsCORBA, "TK_ANY", INT2NUM (CORBA::tk_any));
|
|
111
|
+
rb_define_const (r2tao_nsCORBA, "TK_TYPECODE", INT2NUM (CORBA::tk_TypeCode));
|
|
112
|
+
rb_define_const (r2tao_nsCORBA, "TK_PRINCIPAL", INT2NUM (CORBA::tk_Principal));
|
|
113
|
+
rb_define_const (r2tao_nsCORBA, "TK_OBJREF", INT2NUM (CORBA::tk_objref));
|
|
114
|
+
rb_define_const (r2tao_nsCORBA, "TK_STRUCT", INT2NUM (CORBA::tk_struct));
|
|
115
|
+
rb_define_const (r2tao_nsCORBA, "TK_UNION", INT2NUM (CORBA::tk_union));
|
|
116
|
+
rb_define_const (r2tao_nsCORBA, "TK_ENUM", INT2NUM (CORBA::tk_enum));
|
|
117
|
+
rb_define_const (r2tao_nsCORBA, "TK_STRING", INT2NUM (CORBA::tk_string));
|
|
118
|
+
rb_define_const (r2tao_nsCORBA, "TK_SEQUENCE", INT2NUM (CORBA::tk_sequence));
|
|
119
|
+
rb_define_const (r2tao_nsCORBA, "TK_ARRAY", INT2NUM (CORBA::tk_array));
|
|
120
|
+
rb_define_const (r2tao_nsCORBA, "TK_ALIAS", INT2NUM (CORBA::tk_alias));
|
|
121
|
+
rb_define_const (r2tao_nsCORBA, "TK_EXCEPT", INT2NUM (CORBA::tk_except));
|
|
122
|
+
rb_define_const (r2tao_nsCORBA, "TK_LONGLONG", INT2NUM (CORBA::tk_longlong));
|
|
123
|
+
rb_define_const (r2tao_nsCORBA, "TK_ULONGLONG", INT2NUM (CORBA::tk_ulonglong));
|
|
124
|
+
rb_define_const (r2tao_nsCORBA, "TK_LONGDOUBLE", INT2NUM (CORBA::tk_longdouble));
|
|
125
|
+
rb_define_const (r2tao_nsCORBA, "TK_WCHAR", INT2NUM (CORBA::tk_wchar));
|
|
126
|
+
rb_define_const (r2tao_nsCORBA, "TK_WSTRING", INT2NUM (CORBA::tk_wstring));
|
|
127
|
+
rb_define_const (r2tao_nsCORBA, "TK_FIXED", INT2NUM (CORBA::tk_fixed));
|
|
128
|
+
rb_define_const (r2tao_nsCORBA, "TK_VALUE", INT2NUM (CORBA::tk_value));
|
|
129
|
+
rb_define_const (r2tao_nsCORBA, "TK_VALUE_BOX", INT2NUM (CORBA::tk_value_box));
|
|
130
|
+
rb_define_const (r2tao_nsCORBA, "TK_NATIVE", INT2NUM (CORBA::tk_native));
|
|
131
|
+
rb_define_const (r2tao_nsCORBA, "TK_ABSTRACT_INTERFACE", INT2NUM (CORBA::tk_abstract_interface));
|
|
132
|
+
rb_define_const (r2tao_nsCORBA, "TK_LOCAL_INTERFACE", INT2NUM (CORBA::tk_local_interface));
|
|
133
|
+
rb_define_const (r2tao_nsCORBA, "TK_COMPONENT", INT2NUM (CORBA::tk_component));
|
|
134
|
+
rb_define_const (r2tao_nsCORBA, "TK_HOME", INT2NUM (CORBA::tk_home));
|
|
135
|
+
rb_define_const (r2tao_nsCORBA, "TK_EVENT", INT2NUM (CORBA::tk_event));
|
|
136
|
+
|
|
137
|
+
r2tao_sym_default = rb_eval_string(":default");
|
|
138
|
+
|
|
139
|
+
r2tao_init_Any(); // initialize CORBA::Any support
|
|
140
|
+
|
|
141
|
+
r2tao_init_LongDouble(); // initialize CORBA::LongDouble class
|
|
142
|
+
|
|
143
|
+
//rb_eval_string("puts 'r2tao_Init_Typecode end' if $VERBOSE");
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
//-------------------------------------------------------------------
|
|
147
|
+
// CORBA TypeCode methods
|
|
148
|
+
//
|
|
149
|
+
//===================================================================
|
|
150
|
+
|
|
151
|
+
static void _tc_free(void* ptr)
|
|
152
|
+
{
|
|
153
|
+
if (ptr)
|
|
154
|
+
{
|
|
155
|
+
if (TAO_debug_level > 10)
|
|
156
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - _tc_free:: dereferencing typecode %@\n", ptr));
|
|
157
|
+
|
|
158
|
+
CORBA::release ((CORBA::TypeCode_ptr)ptr);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
R2TAO_EXPORT VALUE
|
|
163
|
+
r2tao_TypeCode_t2r(CORBA::TypeCode_ptr obj)
|
|
164
|
+
{
|
|
165
|
+
VALUE ret;
|
|
166
|
+
CORBA::TypeCode_ptr _tc;
|
|
167
|
+
|
|
168
|
+
if (TAO_debug_level > 10)
|
|
169
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - r2tao_TypeCode_t2r:: referencing typecode %@\n", obj));
|
|
170
|
+
|
|
171
|
+
_tc = CORBA::TypeCode::_duplicate(obj);
|
|
172
|
+
ret = Data_Wrap_Struct(r2tao_cTypeCode, 0, _tc_free, _tc);
|
|
173
|
+
|
|
174
|
+
return ret;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
R2TAO_EXPORT CORBA::TypeCode_ptr
|
|
178
|
+
r2tao_TypeCode_r2t(VALUE obj)
|
|
179
|
+
{
|
|
180
|
+
CORBA::TypeCode_ptr ret;
|
|
181
|
+
|
|
182
|
+
r2tao_check_type(obj, r2tao_cTypeCode);
|
|
183
|
+
Data_Get_Struct(obj, CORBA::TypeCode, ret);
|
|
184
|
+
return ret;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
R2TAO_EXPORT VALUE
|
|
188
|
+
r2corba_TypeCode_t2r(CORBA::TypeCode_ptr obj)
|
|
189
|
+
{
|
|
190
|
+
static ID from_native_ID = rb_intern ("from_native");
|
|
191
|
+
|
|
192
|
+
return rb_funcall (r2corba_cTypeCode, from_native_ID, 1, r2tao_TypeCode_t2r (obj));
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
R2TAO_EXPORT CORBA::TypeCode_ptr
|
|
196
|
+
r2corba_TypeCode_r2t(VALUE obj)
|
|
197
|
+
{
|
|
198
|
+
static ID tc_ID = rb_intern ("tc_");
|
|
199
|
+
|
|
200
|
+
return r2tao_TypeCode_r2t (rb_funcall (obj, tc_ID, 0));
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/*
|
|
204
|
+
* Class methods
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
VALUE r2tao_TypeCode_get_primitive_tc(VALUE /*self*/, VALUE rkind)
|
|
208
|
+
{
|
|
209
|
+
CORBA::TypeCode_ptr tc = CORBA::TypeCode::_nil ();
|
|
210
|
+
CORBA::TCKind kind = (CORBA::TCKind)NUM2INT (rkind);
|
|
211
|
+
switch (kind)
|
|
212
|
+
{
|
|
213
|
+
case CORBA::tk_null:
|
|
214
|
+
tc = CORBA::_tc_null;
|
|
215
|
+
break;
|
|
216
|
+
case CORBA::tk_void:
|
|
217
|
+
tc = CORBA::_tc_void;
|
|
218
|
+
break;
|
|
219
|
+
case CORBA::tk_short:
|
|
220
|
+
tc = CORBA::_tc_short;
|
|
221
|
+
break;
|
|
222
|
+
case CORBA::tk_long:
|
|
223
|
+
tc = CORBA::_tc_long;
|
|
224
|
+
break;
|
|
225
|
+
case CORBA::tk_ushort:
|
|
226
|
+
tc = CORBA::_tc_ushort;
|
|
227
|
+
break;
|
|
228
|
+
case CORBA::tk_ulong:
|
|
229
|
+
tc = CORBA::_tc_ulong;
|
|
230
|
+
break;
|
|
231
|
+
case CORBA::tk_longlong:
|
|
232
|
+
tc = CORBA::_tc_longlong;
|
|
233
|
+
break;
|
|
234
|
+
case CORBA::tk_ulonglong:
|
|
235
|
+
tc = CORBA::_tc_ulonglong;
|
|
236
|
+
break;
|
|
237
|
+
case CORBA::tk_float:
|
|
238
|
+
tc = CORBA::_tc_float;
|
|
239
|
+
break;
|
|
240
|
+
case CORBA::tk_double:
|
|
241
|
+
tc = CORBA::_tc_double;
|
|
242
|
+
break;
|
|
243
|
+
case CORBA::tk_longdouble:
|
|
244
|
+
tc = CORBA::_tc_longdouble;
|
|
245
|
+
break;
|
|
246
|
+
case CORBA::tk_boolean:
|
|
247
|
+
tc = CORBA::_tc_boolean;
|
|
248
|
+
break;
|
|
249
|
+
case CORBA::tk_char:
|
|
250
|
+
tc = CORBA::_tc_char;
|
|
251
|
+
break;
|
|
252
|
+
case CORBA::tk_octet:
|
|
253
|
+
tc = CORBA::_tc_octet;
|
|
254
|
+
break;
|
|
255
|
+
case CORBA::tk_wchar:
|
|
256
|
+
tc = CORBA::_tc_wchar;
|
|
257
|
+
break;
|
|
258
|
+
case CORBA::tk_any:
|
|
259
|
+
tc = CORBA::_tc_any;
|
|
260
|
+
break;
|
|
261
|
+
case CORBA::tk_TypeCode:
|
|
262
|
+
tc = CORBA::_tc_TypeCode;
|
|
263
|
+
break;
|
|
264
|
+
case CORBA::tk_Principal:
|
|
265
|
+
tc = CORBA::_tc_Principal;
|
|
266
|
+
break;
|
|
267
|
+
case CORBA::tk_objref:
|
|
268
|
+
tc = CORBA::_tc_Object;
|
|
269
|
+
break;
|
|
270
|
+
default:
|
|
271
|
+
return Qnil;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (TAO_debug_level > 9)
|
|
275
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - TypeCode::get_primitive_tc:: "
|
|
276
|
+
"referencing primitive typecode %d\n",
|
|
277
|
+
kind));
|
|
278
|
+
return r2tao_TypeCode_t2r (tc);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/*
|
|
282
|
+
* TypeCode creation
|
|
283
|
+
*/
|
|
284
|
+
|
|
285
|
+
VALUE r2tao_TypeCode_create_recursive_tc(VALUE /*klass*/, VALUE id)
|
|
286
|
+
{
|
|
287
|
+
TAO_TypeCodeFactory_Adapter *adapter =
|
|
288
|
+
ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
|
|
289
|
+
TAO_ORB_Core::typecodefactory_adapter_name ());
|
|
290
|
+
|
|
291
|
+
if (adapter == 0)
|
|
292
|
+
{
|
|
293
|
+
X_CORBA(INTERNAL);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
CORBA::TypeCode_var _tc = CORBA::TypeCode::_nil ();
|
|
297
|
+
|
|
298
|
+
R2TAO_TRY
|
|
299
|
+
{
|
|
300
|
+
CHECK_RTYPE(id, T_STRING);
|
|
301
|
+
|
|
302
|
+
if (TAO_debug_level > 9)
|
|
303
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - TypeCode::create_recursive_tc:: "
|
|
304
|
+
"creating recursive typecode %s\n",
|
|
305
|
+
RSTRING_PTR (id)));
|
|
306
|
+
|
|
307
|
+
_tc = adapter->create_recursive_tc(RSTRING_PTR (id));
|
|
308
|
+
}
|
|
309
|
+
R2TAO_CATCH;
|
|
310
|
+
|
|
311
|
+
return r2tao_TypeCode_t2r (_tc);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
VALUE r2tao_TypeCode_create_tc(int _argc, VALUE *_argv0, VALUE /*klass*/)
|
|
315
|
+
{
|
|
316
|
+
TAO_TypeCodeFactory_Adapter *adapter =
|
|
317
|
+
ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance (
|
|
318
|
+
TAO_ORB_Core::typecodefactory_adapter_name ());
|
|
319
|
+
|
|
320
|
+
if (adapter == 0)
|
|
321
|
+
{
|
|
322
|
+
X_CORBA(INTERNAL);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
VALUE rkind;
|
|
326
|
+
VALUE args;
|
|
327
|
+
rb_scan_args(_argc, _argv0, "1*", &rkind, &args);
|
|
328
|
+
|
|
329
|
+
CORBA::TypeCode_ptr _tc = CORBA::TypeCode::_nil ();
|
|
330
|
+
|
|
331
|
+
R2TAO_TRY
|
|
332
|
+
{
|
|
333
|
+
CORBA::TCKind _kind = (CORBA::TCKind)NUM2INT (rkind);
|
|
334
|
+
|
|
335
|
+
if (TAO_debug_level > 9)
|
|
336
|
+
ACE_DEBUG ((LM_INFO, "R2TAO (%P|%t) - TypeCode::create_tc:: "
|
|
337
|
+
"creating typecode of kind %d\n",
|
|
338
|
+
_kind));
|
|
339
|
+
|
|
340
|
+
switch (_kind)
|
|
341
|
+
{
|
|
342
|
+
case CORBA::tk_abstract_interface:
|
|
343
|
+
{
|
|
344
|
+
VALUE rid = rb_ary_shift (args);
|
|
345
|
+
VALUE rname = rb_ary_shift (args);
|
|
346
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
347
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
348
|
+
_tc = adapter->create_abstract_interface_tc (RSTRING_PTR (rid), RSTRING_PTR (rname));
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
|
|
352
|
+
case CORBA::tk_objref:
|
|
353
|
+
{
|
|
354
|
+
VALUE rid = rb_ary_shift (args);
|
|
355
|
+
VALUE rname = rb_ary_shift (args);
|
|
356
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
357
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
358
|
+
_tc = adapter->create_interface_tc (RSTRING_PTR (rid), RSTRING_PTR (rname));
|
|
359
|
+
}
|
|
360
|
+
break;
|
|
361
|
+
|
|
362
|
+
case CORBA::tk_home:
|
|
363
|
+
{
|
|
364
|
+
VALUE rid = rb_ary_shift (args);
|
|
365
|
+
VALUE rname = rb_ary_shift (args);
|
|
366
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
367
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
368
|
+
_tc = adapter->create_home_tc (RSTRING_PTR (rid), RSTRING_PTR (rname));
|
|
369
|
+
}
|
|
370
|
+
break;
|
|
371
|
+
|
|
372
|
+
case CORBA::tk_component:
|
|
373
|
+
{
|
|
374
|
+
VALUE rid = rb_ary_shift (args);
|
|
375
|
+
VALUE rname = rb_ary_shift (args);
|
|
376
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
377
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
378
|
+
_tc = adapter->create_component_tc (RSTRING_PTR (rid), RSTRING_PTR (rname));
|
|
379
|
+
}
|
|
380
|
+
break;
|
|
381
|
+
|
|
382
|
+
case CORBA::tk_value_box:
|
|
383
|
+
case CORBA::tk_alias:
|
|
384
|
+
{
|
|
385
|
+
VALUE rid = rb_ary_shift (args);
|
|
386
|
+
VALUE rname = rb_ary_shift (args);
|
|
387
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
388
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
389
|
+
VALUE raliased_tc = rb_ary_shift (args);
|
|
390
|
+
CORBA::TypeCode_ptr _aliased_tc = r2tao_TypeCode_r2t (raliased_tc);
|
|
391
|
+
if (CORBA::tk_alias == _kind)
|
|
392
|
+
_tc = adapter->create_alias_tc (RSTRING_PTR (rid), RSTRING_PTR (rname),
|
|
393
|
+
_aliased_tc);
|
|
394
|
+
else
|
|
395
|
+
_tc = adapter->create_value_box_tc (RSTRING_PTR (rid), RSTRING_PTR (rname),
|
|
396
|
+
_aliased_tc);
|
|
397
|
+
}
|
|
398
|
+
break;
|
|
399
|
+
|
|
400
|
+
case CORBA::tk_value:
|
|
401
|
+
case CORBA::tk_event:
|
|
402
|
+
{
|
|
403
|
+
VALUE rid = rb_ary_shift (args);
|
|
404
|
+
VALUE rname = rb_ary_shift (args);
|
|
405
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
406
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
407
|
+
VALUE rmodifier = rb_ary_shift (args);
|
|
408
|
+
CORBA::ValueModifier modifier =
|
|
409
|
+
static_cast <CORBA::ValueModifier> (NUM2INT (rmodifier));
|
|
410
|
+
VALUE rbase_tc = rb_ary_shift (args);
|
|
411
|
+
CORBA::TypeCode_ptr base_tc = CORBA::TypeCode::_nil ();
|
|
412
|
+
if (! NIL_P(rbase_tc))
|
|
413
|
+
{
|
|
414
|
+
base_tc = r2tao_TypeCode_r2t (rbase_tc);
|
|
415
|
+
}
|
|
416
|
+
VALUE rmembers = rb_ary_shift (args);
|
|
417
|
+
CHECK_RTYPE(rmembers, T_ARRAY);
|
|
418
|
+
CORBA::ULong count = static_cast<unsigned long> (RARRAY_LEN (rmembers));
|
|
419
|
+
CORBA::ValueMemberSeq members (count);
|
|
420
|
+
members.length (count);
|
|
421
|
+
for (unsigned long m=0; m<count ;++m)
|
|
422
|
+
{
|
|
423
|
+
VALUE mset = rb_ary_entry (rmembers, m);
|
|
424
|
+
CHECK_RTYPE(mset, T_ARRAY);
|
|
425
|
+
VALUE mname = rb_ary_entry (mset, 0);
|
|
426
|
+
CHECK_RTYPE(mname, T_STRING);
|
|
427
|
+
VALUE rmtc = rb_ary_entry (mset, 1);
|
|
428
|
+
CORBA::TypeCode_ptr mtc = r2tao_TypeCode_r2t (rmtc);
|
|
429
|
+
VALUE raccess = rb_ary_entry (mset, 2);
|
|
430
|
+
CORBA::Visibility access = static_cast<CORBA::Visibility> (NUM2INT (raccess));
|
|
431
|
+
members[m].name = CORBA::string_dup (RSTRING_PTR (mname));
|
|
432
|
+
members[m].type = CORBA::TypeCode::_duplicate (mtc);
|
|
433
|
+
members[m].access = access;
|
|
434
|
+
}
|
|
435
|
+
if (CORBA::tk_value == _kind)
|
|
436
|
+
_tc = adapter->create_value_tc(RSTRING_PTR (rid),
|
|
437
|
+
RSTRING_PTR (rname),
|
|
438
|
+
modifier,
|
|
439
|
+
base_tc,
|
|
440
|
+
members);
|
|
441
|
+
else
|
|
442
|
+
_tc = adapter->create_event_tc(RSTRING_PTR (rid),
|
|
443
|
+
RSTRING_PTR (rname),
|
|
444
|
+
modifier,
|
|
445
|
+
base_tc,
|
|
446
|
+
members);
|
|
447
|
+
}
|
|
448
|
+
break;
|
|
449
|
+
|
|
450
|
+
case CORBA::tk_sequence:
|
|
451
|
+
case CORBA::tk_array:
|
|
452
|
+
{
|
|
453
|
+
VALUE rcont_bound = rb_ary_shift (args);
|
|
454
|
+
CHECK_RTYPE(rcont_bound, T_FIXNUM);
|
|
455
|
+
VALUE rcontent_tc = rb_ary_shift (args);
|
|
456
|
+
CORBA::TypeCode_ptr _content_tc = r2tao_TypeCode_r2t (rcontent_tc);
|
|
457
|
+
CORBA::ULong _bound = NUM2ULONG (rcont_bound);
|
|
458
|
+
if (CORBA::tk_sequence == _kind)
|
|
459
|
+
_tc = adapter->create_sequence_tc (_bound, _content_tc);
|
|
460
|
+
else
|
|
461
|
+
_tc = adapter->create_array_tc (_bound, _content_tc);
|
|
462
|
+
}
|
|
463
|
+
break;
|
|
464
|
+
|
|
465
|
+
case CORBA::tk_string:
|
|
466
|
+
{
|
|
467
|
+
VALUE rlength = rb_ary_shift (args);
|
|
468
|
+
CHECK_RTYPE(rlength, T_FIXNUM);
|
|
469
|
+
CORBA::ULong _length = NUM2ULONG (rlength);
|
|
470
|
+
if (_length)
|
|
471
|
+
{
|
|
472
|
+
_tc = adapter->create_string_tc (_length);
|
|
473
|
+
}
|
|
474
|
+
else
|
|
475
|
+
{
|
|
476
|
+
_tc = CORBA::_tc_string;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
break;
|
|
480
|
+
|
|
481
|
+
case CORBA::tk_wstring:
|
|
482
|
+
{
|
|
483
|
+
VALUE rlength = rb_ary_shift (args);
|
|
484
|
+
CHECK_RTYPE(rlength, T_FIXNUM);
|
|
485
|
+
CORBA::ULong _length = NUM2ULONG (rlength);
|
|
486
|
+
if (_length)
|
|
487
|
+
{
|
|
488
|
+
_tc = adapter->create_wstring_tc (_length);
|
|
489
|
+
}
|
|
490
|
+
else
|
|
491
|
+
{
|
|
492
|
+
_tc = CORBA::_tc_wstring;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
break;
|
|
496
|
+
|
|
497
|
+
case CORBA::tk_except:
|
|
498
|
+
case CORBA::tk_struct:
|
|
499
|
+
{
|
|
500
|
+
VALUE rid = rb_ary_shift (args);
|
|
501
|
+
VALUE rname = rb_ary_shift (args);
|
|
502
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
503
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
504
|
+
VALUE rmembers = rb_ary_shift (args);
|
|
505
|
+
CHECK_RTYPE(rmembers, T_ARRAY);
|
|
506
|
+
CORBA::ULong count = static_cast<unsigned long> (RARRAY_LEN (rmembers));
|
|
507
|
+
CORBA::StructMemberSeq members (count);
|
|
508
|
+
members.length (count);
|
|
509
|
+
for (unsigned long m=0; m<count ;++m)
|
|
510
|
+
{
|
|
511
|
+
VALUE mset = rb_ary_entry (rmembers, m);
|
|
512
|
+
CHECK_RTYPE(mset, T_ARRAY);
|
|
513
|
+
VALUE mname = rb_ary_entry (mset, 0);
|
|
514
|
+
CHECK_RTYPE(mname, T_STRING);
|
|
515
|
+
VALUE rmtc = rb_ary_entry (mset, 1);
|
|
516
|
+
CORBA::TypeCode_ptr mtc = r2tao_TypeCode_r2t (rmtc);
|
|
517
|
+
members[m].name = CORBA::string_dup (RSTRING_PTR (mname));
|
|
518
|
+
members[m].type = CORBA::TypeCode::_duplicate (mtc);
|
|
519
|
+
}
|
|
520
|
+
if (CORBA::tk_struct == _kind)
|
|
521
|
+
_tc = adapter->create_struct_tc (RSTRING_PTR (rid),
|
|
522
|
+
RSTRING_PTR (rname),
|
|
523
|
+
members);
|
|
524
|
+
else
|
|
525
|
+
_tc = adapter->create_exception_tc (RSTRING_PTR (rid),
|
|
526
|
+
RSTRING_PTR (rname),
|
|
527
|
+
members);
|
|
528
|
+
}
|
|
529
|
+
break;
|
|
530
|
+
|
|
531
|
+
case CORBA::tk_enum:
|
|
532
|
+
{
|
|
533
|
+
VALUE rid = rb_ary_shift (args);
|
|
534
|
+
VALUE rname = rb_ary_shift (args);
|
|
535
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
536
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
537
|
+
VALUE rmembers = rb_ary_shift (args);
|
|
538
|
+
CHECK_RTYPE(rmembers, T_ARRAY);
|
|
539
|
+
CORBA::ULong count = static_cast<unsigned long> (RARRAY_LEN (rmembers));
|
|
540
|
+
CORBA::EnumMemberSeq members (count);
|
|
541
|
+
members.length (count);
|
|
542
|
+
for (unsigned long m=0; m<count ;++m)
|
|
543
|
+
{
|
|
544
|
+
VALUE el = rb_ary_entry (rmembers, m);
|
|
545
|
+
CHECK_RTYPE(el, T_STRING);
|
|
546
|
+
members[m] = CORBA::string_dup (RSTRING_PTR (el));
|
|
547
|
+
}
|
|
548
|
+
_tc = adapter->create_enum_tc (RSTRING_PTR (rid),
|
|
549
|
+
RSTRING_PTR (rname),
|
|
550
|
+
members);
|
|
551
|
+
}
|
|
552
|
+
break;
|
|
553
|
+
|
|
554
|
+
case CORBA::tk_union:
|
|
555
|
+
{
|
|
556
|
+
static ID _eq_id = rb_intern ("==");
|
|
557
|
+
|
|
558
|
+
VALUE rid = rb_ary_shift (args);
|
|
559
|
+
VALUE rname = rb_ary_shift (args);
|
|
560
|
+
CHECK_RTYPE(rid, T_STRING);
|
|
561
|
+
CHECK_RTYPE(rname, T_STRING);
|
|
562
|
+
VALUE rswtc = rb_ary_shift (args);
|
|
563
|
+
CORBA::TypeCode_ptr swtc = r2tao_TypeCode_r2t (rswtc);
|
|
564
|
+
VALUE rmembers = rb_ary_shift (args);
|
|
565
|
+
CHECK_RTYPE(rmembers, T_ARRAY);
|
|
566
|
+
CORBA::ULong count = static_cast<unsigned long> (RARRAY_LEN (rmembers));
|
|
567
|
+
CORBA::UnionMemberSeq members (count);
|
|
568
|
+
members.length (count);
|
|
569
|
+
for (unsigned long m=0; m<count ;++m)
|
|
570
|
+
{
|
|
571
|
+
VALUE mset = rb_ary_entry (rmembers, m);
|
|
572
|
+
CHECK_RTYPE(mset, T_ARRAY);
|
|
573
|
+
VALUE mlabel = rb_ary_shift (mset);
|
|
574
|
+
VALUE mname = rb_ary_shift (mset);
|
|
575
|
+
CHECK_RTYPE(mname, T_STRING);
|
|
576
|
+
VALUE rmtc = rb_ary_shift (mset);
|
|
577
|
+
CORBA::TypeCode_ptr mtc = r2tao_TypeCode_r2t (rmtc);
|
|
578
|
+
if (Qtrue == rb_funcall (mlabel, _eq_id, 1, r2tao_sym_default))
|
|
579
|
+
{
|
|
580
|
+
CORBA::Octet defval = 0;
|
|
581
|
+
members[m].label <<= CORBA::Any::from_octet(defval);
|
|
582
|
+
}
|
|
583
|
+
else
|
|
584
|
+
{
|
|
585
|
+
r2tao_Ruby2Any(members[m].label, swtc, mlabel);
|
|
586
|
+
}
|
|
587
|
+
members[m].name = CORBA::string_dup (RSTRING_PTR (mname));
|
|
588
|
+
members[m].type = CORBA::TypeCode::_duplicate (mtc);
|
|
589
|
+
}
|
|
590
|
+
_tc = adapter->create_union_tc (RSTRING_PTR (rid),
|
|
591
|
+
RSTRING_PTR (rname),
|
|
592
|
+
swtc,
|
|
593
|
+
members);
|
|
594
|
+
}
|
|
595
|
+
break;
|
|
596
|
+
|
|
597
|
+
default:
|
|
598
|
+
{
|
|
599
|
+
return Qnil;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
R2TAO_CATCH;
|
|
604
|
+
|
|
605
|
+
return r2tao_TypeCode_t2r (_tc);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/*
|
|
609
|
+
* Instance methods
|
|
610
|
+
*/
|
|
611
|
+
VALUE r2tao_TypeCode_kind(VALUE self)
|
|
612
|
+
{
|
|
613
|
+
VALUE ret = Qnil;
|
|
614
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
615
|
+
|
|
616
|
+
R2TAO_TRY
|
|
617
|
+
{
|
|
618
|
+
ret = INT2NUM ((int)tc->kind ());
|
|
619
|
+
}
|
|
620
|
+
R2TAO_CATCH;
|
|
621
|
+
|
|
622
|
+
return ret;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
VALUE r2tao_TypeCode_compact_typecode(VALUE self)
|
|
626
|
+
{
|
|
627
|
+
VALUE ret = Qnil;
|
|
628
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
629
|
+
|
|
630
|
+
R2TAO_TRY
|
|
631
|
+
{
|
|
632
|
+
ret = r2tao_TypeCode_t2r (tc->get_compact_typecode ());
|
|
633
|
+
}
|
|
634
|
+
R2TAO_CATCH;
|
|
635
|
+
|
|
636
|
+
return ret;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
VALUE r2tao_TypeCode_equal(VALUE self, VALUE rtc)
|
|
640
|
+
{
|
|
641
|
+
VALUE ret = Qnil;
|
|
642
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
643
|
+
CORBA::TypeCode_ptr other_tc = r2tao_TypeCode_r2t (rtc);
|
|
644
|
+
|
|
645
|
+
R2TAO_TRY
|
|
646
|
+
{
|
|
647
|
+
ret = tc->equal (other_tc) ? Qtrue : Qfalse;
|
|
648
|
+
}
|
|
649
|
+
R2TAO_CATCH;
|
|
650
|
+
|
|
651
|
+
return ret;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
VALUE r2tao_TypeCode_equivalent(VALUE self, VALUE rtc)
|
|
655
|
+
{
|
|
656
|
+
VALUE ret = Qnil;
|
|
657
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
658
|
+
CORBA::TypeCode_ptr other_tc = r2tao_TypeCode_r2t (rtc);
|
|
659
|
+
|
|
660
|
+
R2TAO_TRY
|
|
661
|
+
{
|
|
662
|
+
ret = tc->equivalent (other_tc) ? Qtrue : Qfalse;
|
|
663
|
+
}
|
|
664
|
+
R2TAO_CATCH;
|
|
665
|
+
|
|
666
|
+
return ret;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
VALUE r2tao_TypeCode_id(VALUE self)
|
|
670
|
+
{
|
|
671
|
+
VALUE ret = Qnil;
|
|
672
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
673
|
+
|
|
674
|
+
R2TAO_TRY
|
|
675
|
+
{
|
|
676
|
+
ret = rb_str_new2 (tc->id ());
|
|
677
|
+
}
|
|
678
|
+
R2TAO_CATCH;
|
|
679
|
+
|
|
680
|
+
return ret;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
VALUE r2tao_TypeCode_name(VALUE self)
|
|
684
|
+
{
|
|
685
|
+
VALUE ret = Qnil;
|
|
686
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
687
|
+
|
|
688
|
+
R2TAO_TRY
|
|
689
|
+
{
|
|
690
|
+
ret = rb_str_new2 (tc->name ());
|
|
691
|
+
}
|
|
692
|
+
R2TAO_CATCH;
|
|
693
|
+
|
|
694
|
+
return ret;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
VALUE r2tao_TypeCode_member_count(VALUE self)
|
|
698
|
+
{
|
|
699
|
+
VALUE ret = Qnil;
|
|
700
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
701
|
+
|
|
702
|
+
R2TAO_TRY
|
|
703
|
+
{
|
|
704
|
+
ret = ULONG2NUM (tc->member_count ());
|
|
705
|
+
}
|
|
706
|
+
R2TAO_CATCH;
|
|
707
|
+
|
|
708
|
+
return ret;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
VALUE r2tao_TypeCode_member_name(VALUE self, VALUE index)
|
|
712
|
+
{
|
|
713
|
+
VALUE ret = Qnil;
|
|
714
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
715
|
+
|
|
716
|
+
R2TAO_TRY
|
|
717
|
+
{
|
|
718
|
+
CHECK_RTYPE (index, T_FIXNUM);
|
|
719
|
+
ret = rb_str_new2 (tc->member_name (NUM2ULONG (index)));
|
|
720
|
+
}
|
|
721
|
+
R2TAO_CATCH;
|
|
722
|
+
|
|
723
|
+
return ret;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
VALUE r2tao_TypeCode_member_type(VALUE self, VALUE index)
|
|
727
|
+
{
|
|
728
|
+
VALUE ret = Qnil;
|
|
729
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
730
|
+
|
|
731
|
+
R2TAO_TRY
|
|
732
|
+
{
|
|
733
|
+
CHECK_RTYPE (index, T_FIXNUM);
|
|
734
|
+
CORBA::TypeCode_var mtc = tc->member_type (NUM2ULONG (index));
|
|
735
|
+
ret = r2tao_TypeCode_t2r (mtc.in ());
|
|
736
|
+
}
|
|
737
|
+
R2TAO_CATCH;
|
|
738
|
+
|
|
739
|
+
return ret;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
VALUE r2tao_TypeCode_member_label(VALUE self, VALUE index)
|
|
743
|
+
{
|
|
744
|
+
VALUE ret = Qnil;
|
|
745
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
746
|
+
|
|
747
|
+
R2TAO_TRY
|
|
748
|
+
{
|
|
749
|
+
CHECK_RTYPE (index, T_FIXNUM);
|
|
750
|
+
CORBA::Any* ml = tc->member_label (NUM2ULONG (index));
|
|
751
|
+
CORBA::TypeCode_var mt = tc->member_type (NUM2ULONG (index));
|
|
752
|
+
VALUE rtc = r2corba_TypeCode_t2r (mt.in ());
|
|
753
|
+
ret = r2tao_Any2Ruby (*ml, mt.in (), rtc, rtc);
|
|
754
|
+
}
|
|
755
|
+
R2TAO_CATCH;
|
|
756
|
+
|
|
757
|
+
return ret;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
VALUE r2tao_TypeCode_member_visibility(VALUE self, VALUE index)
|
|
761
|
+
{
|
|
762
|
+
VALUE ret = Qnil;
|
|
763
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
764
|
+
|
|
765
|
+
R2TAO_TRY
|
|
766
|
+
{
|
|
767
|
+
CHECK_RTYPE (index, T_FIXNUM);
|
|
768
|
+
ret = INT2NUM ((int)tc->member_visibility (NUM2ULONG (index)));
|
|
769
|
+
}
|
|
770
|
+
R2TAO_CATCH;
|
|
771
|
+
|
|
772
|
+
return ret;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
VALUE r2tao_TypeCode_discriminator_type(VALUE self)
|
|
776
|
+
{
|
|
777
|
+
VALUE ret = Qnil;
|
|
778
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
779
|
+
|
|
780
|
+
R2TAO_TRY
|
|
781
|
+
{
|
|
782
|
+
CORBA::TypeCode_var dtc = tc->discriminator_type ();
|
|
783
|
+
ret = r2tao_TypeCode_t2r (dtc.in ());
|
|
784
|
+
}
|
|
785
|
+
R2TAO_CATCH;
|
|
786
|
+
|
|
787
|
+
return ret;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
VALUE r2tao_TypeCode_default_index(VALUE self)
|
|
791
|
+
{
|
|
792
|
+
VALUE ret = Qnil;
|
|
793
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
794
|
+
|
|
795
|
+
R2TAO_TRY
|
|
796
|
+
{
|
|
797
|
+
ret = LONG2NUM (tc->default_index ());
|
|
798
|
+
}
|
|
799
|
+
R2TAO_CATCH;
|
|
800
|
+
|
|
801
|
+
return ret;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
VALUE r2tao_TypeCode_length(VALUE self)
|
|
805
|
+
{
|
|
806
|
+
VALUE ret = Qnil;
|
|
807
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
808
|
+
|
|
809
|
+
R2TAO_TRY
|
|
810
|
+
{
|
|
811
|
+
ret = ULONG2NUM (tc->length ());
|
|
812
|
+
}
|
|
813
|
+
R2TAO_CATCH;
|
|
814
|
+
|
|
815
|
+
return ret;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
VALUE r2tao_TypeCode_content_type(VALUE self)
|
|
819
|
+
{
|
|
820
|
+
VALUE ret = Qnil;
|
|
821
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
822
|
+
|
|
823
|
+
R2TAO_TRY
|
|
824
|
+
{
|
|
825
|
+
CORBA::TypeCode_var ctc = tc->content_type ();
|
|
826
|
+
ret = r2tao_TypeCode_t2r (ctc.in ());
|
|
827
|
+
}
|
|
828
|
+
R2TAO_CATCH;
|
|
829
|
+
|
|
830
|
+
return ret;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
VALUE r2tao_TypeCode_fixed_digits(VALUE self)
|
|
834
|
+
{
|
|
835
|
+
VALUE ret = Qnil;
|
|
836
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
837
|
+
|
|
838
|
+
R2TAO_TRY
|
|
839
|
+
{
|
|
840
|
+
ret = UINT2NUM (tc->fixed_digits ());
|
|
841
|
+
}
|
|
842
|
+
R2TAO_CATCH;
|
|
843
|
+
|
|
844
|
+
return ret;
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
VALUE r2tao_TypeCode_fixed_scale(VALUE self)
|
|
848
|
+
{
|
|
849
|
+
VALUE ret = Qnil;
|
|
850
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
851
|
+
|
|
852
|
+
R2TAO_TRY
|
|
853
|
+
{
|
|
854
|
+
ret = UINT2NUM (tc->fixed_scale ());
|
|
855
|
+
}
|
|
856
|
+
R2TAO_CATCH;
|
|
857
|
+
|
|
858
|
+
return ret;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
VALUE r2tao_TypeCode_type_modifier(VALUE self)
|
|
862
|
+
{
|
|
863
|
+
VALUE ret = Qnil;
|
|
864
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
865
|
+
|
|
866
|
+
R2TAO_TRY
|
|
867
|
+
{
|
|
868
|
+
ret = INT2NUM (tc->type_modifier ());
|
|
869
|
+
}
|
|
870
|
+
R2TAO_CATCH;
|
|
871
|
+
|
|
872
|
+
return ret;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
VALUE r2tao_TypeCode_concrete_basetype(VALUE self)
|
|
876
|
+
{
|
|
877
|
+
VALUE ret = Qnil;
|
|
878
|
+
CORBA::TypeCode_ptr tc = r2tao_TypeCode_r2t (self);
|
|
879
|
+
|
|
880
|
+
R2TAO_TRY
|
|
881
|
+
{
|
|
882
|
+
CORBA::TypeCode_var ctc = tc->concrete_base_type ();
|
|
883
|
+
ret = r2tao_TypeCode_t2r (ctc.in ());
|
|
884
|
+
}
|
|
885
|
+
R2TAO_CATCH;
|
|
886
|
+
|
|
887
|
+
return ret;
|
|
888
|
+
}
|