summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/ChangeLog379
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation.cpp40
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp46
-rw-r--r--TAO/tao/Any.cpp82
-rw-r--r--TAO/tao/Any.h10
-rw-r--r--TAO/tao/CDR.cpp113
-rw-r--r--TAO/tao/CDR.h21
-rw-r--r--TAO/tao/CDR.i9
-rw-r--r--TAO/tao/Codeset_Manager.cpp267
-rw-r--r--TAO/tao/Codeset_Manager.h81
-rw-r--r--TAO/tao/Codeset_Translator_Factory.cpp63
-rw-r--r--TAO/tao/Codeset_Translator_Factory.h53
-rw-r--r--TAO/tao/Codeset_Translator_Factory_T.cpp100
-rw-r--r--TAO/tao/Codeset_Translator_Factory_T.h56
-rw-r--r--TAO/tao/GIOP_Message_Base.cpp9
-rw-r--r--TAO/tao/GIOP_Message_Generator_Parser_10.cpp53
-rw-r--r--TAO/tao/GIOP_Message_Generator_Parser_12.cpp44
-rw-r--r--TAO/tao/GIOP_Message_Lite.cpp16
-rw-r--r--TAO/tao/IIOP_Acceptor.cpp21
-rw-r--r--TAO/tao/IIOP_Profile.cpp9
-rw-r--r--TAO/tao/IIOP_Transport.cpp2
-rw-r--r--TAO/tao/Invocation.cpp10
-rw-r--r--TAO/tao/Invocation.h2
-rw-r--r--TAO/tao/Invocation.i1
-rw-r--r--TAO/tao/Makefile.tao7
-rw-r--r--TAO/tao/ORB.cpp11
-rw-r--r--TAO/tao/ORB_Core.cpp34
-rw-r--r--TAO/tao/ORB_Core.h19
-rw-r--r--TAO/tao/ORB_Core.i26
-rw-r--r--TAO/tao/Resource_Factory.cpp68
-rw-r--r--TAO/tao/Resource_Factory.h64
-rw-r--r--TAO/tao/Strategies/DIOP_Acceptor.cpp18
-rw-r--r--TAO/tao/Strategies/DIOP_Profile.cpp9
-rw-r--r--TAO/tao/Strategies/DIOP_Transport.cpp1
-rw-r--r--TAO/tao/Strategies/SHMIOP_Acceptor.cpp10
-rw-r--r--TAO/tao/Strategies/SHMIOP_Profile.cpp8
-rw-r--r--TAO/tao/Strategies/SHMIOP_Transport.cpp1
-rw-r--r--TAO/tao/Strategies/UIOP_Acceptor.cpp11
-rw-r--r--TAO/tao/Strategies/UIOP_Profile.cpp8
-rw-r--r--TAO/tao/Strategies/UIOP_Transport.cpp1
-rw-r--r--TAO/tao/TAO_Server_Request.cpp9
-rw-r--r--TAO/tao/Transport.cpp36
-rw-r--r--TAO/tao/Transport.h57
-rw-r--r--TAO/tao/Transport.inl53
-rw-r--r--TAO/tao/default_resource.cpp265
-rw-r--r--TAO/tao/default_resource.h43
-rw-r--r--TAO/tao/tao.mpc2
-rw-r--r--TAO/tests/CodeSets/README8
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.cpp41
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.h39
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.cpp190
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.h75
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.dsp125
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.vcp874
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.dsp102
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.vcp1448
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_export.h40
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Makefile60
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.cpp42
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.h40
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.cpp74
-rw-r--r--TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.h75
-rw-r--r--TAO/tests/CodeSets/simple/Makefile61
-rw-r--r--TAO/tests/CodeSets/simple/README29
-rw-r--r--TAO/tests/CodeSets/simple/client.cpp85
-rw-r--r--TAO/tests/CodeSets/simple/cs_test.conf4
-rw-r--r--TAO/tests/CodeSets/simple/server.cpp122
-rw-r--r--TAO/tests/CodeSets/simple/simple.idl6
-rw-r--r--TAO/utils/catior/catior.cpp95
69 files changed, 5422 insertions, 461 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 76d67201e8b..e3b68d6d9ee 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,69 @@
+Tue Mar 4 13:44:06 2003 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * TAO/TAO_IDL/be/be_visitor_operation/operation.cpp:
+ * TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp:
+
+ Wrap the marshal / unmarshal code to check for errors and call the
+ appropriate static function to raise the related exception.
+
+ * TAO/tao/Any.cpp:
+ * TAO/tao/Any.h:
+ * TAO/tao/CDR.cpp:
+ * TAO/tao/CDR.h:
+ * TAO/tao/CDR.i:
+ * TAO/tao/GIOP_Message_Base.cpp:
+ * TAO/tao/GIOP_Message_Generator_Parser_10.cpp:
+ * TAO/tao/GIOP_Message_Generator_Parser_12.cpp:
+ * TAO/tao/GIOP_Message_Lite.cpp:
+ * TAO/tao/IIOP_Acceptor.cpp:
+ * TAO/tao/IIOP_Profile.cpp:
+ * TAO/tao/IIOP_Transport.cpp:
+ * TAO/tao/Invocation.cpp:
+ * TAO/tao/Invocation.h:
+ * TAO/tao/Invocation.i:
+ * TAO/tao/Makefile.tao:
+ * TAO/tao/ORB.cpp:
+ * tao/ORB_Core.cpp:
+ * tao/ORB_Core.h:
+ * tao/ORB_Core.i:
+ * tao/Resource_Factory.cpp:
+ * tao/Resource_Factory.h:
+ * tao/TAO_Server_Request.cpp:
+ * tao/Transport.cpp:
+ * tao/Transport.h:
+ * tao/Transport.inl:
+ * tao/default_resource.cpp:
+ * tao/default_resource.h:
+ * tao/Strategies/DIOP_Acceptor.cpp:
+ * tao/Strategies/DIOP_Profile.cpp:
+ * tao/Strategies/DIOP_Transport.cpp:
+ * tao/Strategies/SHMIOP_Acceptor.cpp:
+ * tao/Strategies/SHMIOP_Profile.cpp:
+ * tao/Strategies/SHMIOP_Transport.cpp:
+ * tao/Strategies/UIOP_Acceptor.cpp:
+ * tao/Strategies/UIOP_Profile.cpp:
+ * tao/Strategies/UIOP_Transport.cpp:
+ * utils/catior/catior.cpp:
+
+ These files modified to support the codeset negotiation feature. This
+ feature replaces the ACE_Char_Codeset_Translators owned by the ORB with
+ A codset manager framework and dynamically loadable translators.
+
+ The functionality conforms with CORBA 3.0 section 13.10.
+
+ * TAO/tao/Codeset_Manager.cpp:
+ * TAO/tao/Codeset_Manager.h:
+ * TAO/tao/Codeset_Translator_Factory.cpp:
+ * TAO/tao/Codeset_Translator_Factory.h:
+ * TAO/tao/Codeset_Translator_Factory_T.cpp:
+ * TAO/tao/Codeset_Translator_Factory_T.h:
+
+ New files added to to support the codeset framework
+
+ * TAO/tests/CodeSets:
+
+ A new test, including a sample translator library.
+
Tue Mar 4 08:57:20 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/util/utl_global.cpp:
@@ -5,43 +71,44 @@ Tue Mar 4 08:57:20 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Misunderstood the error message that led to the checkin
below, actually had to retain the 'const' qualifier.
+
Mon Mar 3 22:38:03 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/util/utl_global.cpp:
- Changed char* arg argument to retain the const qualifier.
+ Changed char* arg argument to retain the const qualifier.
Mon Mar 3 17:23:55 2003 Ossama Othman <ossama@uci.edu>
- * orbsvcs/tests/Bug_1395_Regression/Test_i.cpp:
+ * orbsvcs/tests/Bug_1395_Regression/Test_i.cpp:
- Fixed existing and added missing emulated exception support.
+ Fixed existing and added missing emulated exception support.
Mon Mar 3 14:36:53 2003 Ossama Othman <ossama@uci.edu>
- * tao/Exception.h:
- * tao/Exception.cpp:
+ * tao/Exception.h:
+ * tao/Exception.cpp:
- Uninlined SystemException subclass constructors. There was no
- real advantage to inlining them. Inlining them only served to
- increase footprint.
+ Uninlined SystemException subclass constructors. There was no
+ real advantage to inlining them. Inlining them only served to
+ increase footprint.
- (operator<<=, operator>>=):
+ (operator<<=, operator>>=):
- Placed the definitions of these Any insertion and extraction
- operators in the CORBA namespace. Fixes "unresolved symbol"
- link-time errors when using these operators.
+ Placed the definitions of these Any insertion and extraction
+ operators in the CORBA namespace. Fixes "unresolved symbol"
+ link-time errors when using these operators.
- (_info, _tao_get_omg_exception_description):
+ (_info, _tao_get_omg_exception_description):
- Improved const-correctness. Variables that are really constants
- are now marked as such.
+ Improved const-correctness. Variables that are really constants
+ are now marked as such.
- (make_standard_typecode):
+ (make_standard_typecode):
- Improved exception-safety. Manage memory using a
- CORBA::String_var instead of the raw
- CORBA::string_{alloc,release} functions.
+ Improved exception-safety. Manage memory using a
+ CORBA::String_var instead of the raw
+ CORBA::string_{alloc,release} functions.
Mon Mar 3 15:42:35 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
@@ -68,11 +135,11 @@ Mon Mar 3 15:12:32 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Mon Mar 3 11:43:01 2003 Ossama Othman <ossama@uci.edu>
- * tao/DynamicAny/DynStruct_i.cpp (current_member_kind):
+ * tao/DynamicAny/DynStruct_i.cpp (current_member_kind):
- Corrected return value in emulated exception case.
- "CORBA::tk_null", not "0". Fixes build problems related to
- invalid conversions from "int" to "CORBA::TCKind".
+ Corrected return value in emulated exception case.
+ "CORBA::tk_null", not "0". Fixes build problems related to
+ invalid conversions from "int" to "CORBA::TCKind".
Mon Mar 3 13:27:01 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
@@ -97,179 +164,179 @@ Mon Mar 3 13:02:16 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Sun Mar 2 15:10:02 3003 Pradeep Gore <pradeep@oomworks.com>
- * orbsvcs/orbsvcs/Notify/Admin.h:
- Removed extra ";" on line 85 that is foxing the BCB compiler.
- Thanks to Johnny Willemsen <jwillemsen@remedy.nl> for spotting this.
+ * orbsvcs/orbsvcs/Notify/Admin.h:
+ Removed extra ";" on line 85 that is foxing the BCB compiler.
+ Thanks to Johnny Willemsen <jwillemsen@remedy.nl> for spotting this.
Sun Mar 2 10:04:54 2003 Ossama Othman <ossama@uci.edu>
- * tao/DynamicAny/DynStruct_i.cpp (current_member_kind):
- (get_members_as_dyn_any):
+ * tao/DynamicAny/DynStruct_i.cpp (current_member_kind):
+ (get_members_as_dyn_any):
- Fixed emulated exception macro usage. "ACE_CHECK_RETURN", not
- "ACE_CHECK".
+ Fixed emulated exception macro usage. "ACE_CHECK_RETURN", not
+ "ACE_CHECK".
- * tests/DynAny_Test/test_dynstruct.cpp (run_test):
- * tests/DynAny_Test/test_dynunion.cpp (run_test):
+ * tests/DynAny_Test/test_dynstruct.cpp (run_test):
+ * tests/DynAny_Test/test_dynunion.cpp (run_test):
- Fixed emulated exception macro usage. "ACE_TRY_{CHECK_}EX", not
- "ACE_TRY{_CHECK}".
+ Fixed emulated exception macro usage. "ACE_TRY_{CHECK_}EX", not
+ "ACE_TRY{_CHECK}".
- Added missing "ACE_TRY_CHECK" after inner ACE_TRY_EX block's
- ACE_ENDTRY.
+ Added missing "ACE_TRY_CHECK" after inner ACE_TRY_EX block's
+ ACE_ENDTRY.
Sun Mar 2 09:23:18 2003 Ossama Othman <ossama@uci.edu>
- * tests/DynAny_Test/test_dynstruct.cpp (run_test):
- * tests/DynAny_Test/test_dynunion.cpp (run_test):
+ * tests/DynAny_Test/test_dynstruct.cpp (run_test):
+ * tests/DynAny_Test/test_dynunion.cpp (run_test):
- "CORBA_" -> "CORBA::".
+ "CORBA_" -> "CORBA::".
Sat Mar 1 13:47:14 CST 2003 Pradeep Gore <pradeep@oomworks.com>
- * orbsvcs/orbsvcs/Notify/Builder.cpp:
- Commented out unused parameter.
+ * orbsvcs/orbsvcs/Notify/Builder.cpp:
+ Commented out unused parameter.
- * orbsvcs/orbsvcs/Notify/Container_T.inl:
- * orbsvcs/orbsvcs/Notify/Seq_Worker_T.cpp:
- Added missing ACE_TYPENAME keyword.
+ * orbsvcs/orbsvcs/Notify/Container_T.inl:
+ * orbsvcs/orbsvcs/Notify/Seq_Worker_T.cpp:
+ Added missing ACE_TYPENAME keyword.
- * orbsvcs/tests/Notify/performance-tests/Throughput/Throughput.cpp:
- * orbsvcs/Logging_Service/Notify_Logging_Service/Notify_Logging_Service.cpp:
- * orbsvcs/Logging_Service/Notify_Logging_Service/Notify_Logging_Service.h:
- Replaced Service name to "TAO_Notify_Service"
+ * orbsvcs/tests/Notify/performance-tests/Throughput/Throughput.cpp:
+ * orbsvcs/Logging_Service/Notify_Logging_Service/Notify_Logging_Service.cpp:
+ * orbsvcs/Logging_Service/Notify_Logging_Service/Notify_Logging_Service.h:
+ Replaced Service name to "TAO_Notify_Service"
Sat Mar 1 10:27:55 2003 Ossama Othman <ossama@uci.edu>
- * orbsvcs/IFR_Service/ifr_adding_visitor_exception.h
- (ifr_adding_visitor_exception):
+ * orbsvcs/IFR_Service/ifr_adding_visitor_exception.h
+ (ifr_adding_visitor_exception):
- Fixed typo. "CORBAL" -> "CORBA".
+ Fixed typo. "CORBAL" -> "CORBA".
Sat Mar 1 09:30:47 2003 Ossama Othman <ossama@uci.edu>
- * orbsvcs/tests/Security/MT_IIOP_SSL/Server_Worker.h:
- * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.h:
+ * orbsvcs/tests/Security/MT_IIOP_SSL/Server_Worker.h:
+ * orbsvcs/tests/Security/MT_SSLIOP/Server_Worker.h:
- "CORBA_" -> "CORBA::".
+ "CORBA_" -> "CORBA::".
Sat Mar 1 04:15:39 2003 Ossama Othman <ossama@uci.edu>
- * orbsvcs/IFR_Service/be_global.cpp:
- * orbsvcs/IFR_Service/be_global.h:
- * orbsvcs/IFR_Service/be_produce.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor.h:
- * orbsvcs/IFR_Service/ifr_adding_visitor_exception.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor_exception.h:
- * orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor_operation.h:
- * orbsvcs/IFR_Service/ifr_adding_visitor_structure.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor_structure.h:
- * orbsvcs/IFR_Service/ifr_adding_visitor_union.cpp:
- * orbsvcs/IFR_Service/ifr_adding_visitor_union.h:
- * orbsvcs/IFR_Service/ifr_removing_visitor.cpp:
- * orbsvcs/IFR_Service/ifr_visitor_macro.h:
- * orbsvcs/examples/ORT/Gateway_ObjRef_Factory.h:
-
- "CORBA_" -> "CORBA::".
-
- * tests/RTCORBA/Server_Protocol/server.cpp
- (check_default_server_protocol):
-
- Added missing CORBA::Environment argument. Fixes a compile-time
- error.
+ * orbsvcs/IFR_Service/be_global.cpp:
+ * orbsvcs/IFR_Service/be_global.h:
+ * orbsvcs/IFR_Service/be_produce.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor.h:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_exception.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_exception.h:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_operation.h:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_structure.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_structure.h:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_union.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_union.h:
+ * orbsvcs/IFR_Service/ifr_removing_visitor.cpp:
+ * orbsvcs/IFR_Service/ifr_visitor_macro.h:
+ * orbsvcs/examples/ORT/Gateway_ObjRef_Factory.h:
+
+ "CORBA_" -> "CORBA::".
+
+ * tests/RTCORBA/Server_Protocol/server.cpp
+ (check_default_server_protocol):
+
+ Added missing CORBA::Environment argument. Fixes a compile-time
+ error.
Sat Mar 1 03:41:30 2003 Ossama Othman <ossama@uci.edu>
- * orbsvcs/orbsvcs/IFRService/AbstractInterfaceDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/AliasDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ArrayDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ArrayDef_i.h:
- * orbsvcs/orbsvcs/IFRService/AttributeDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/AttributeDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ComponentDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ComponentDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ComponentRepository_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ComponentRepository_i.h:
- * orbsvcs/orbsvcs/IFRService/ConstantDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ConstantDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ConsumesDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ConsumesDef_i.h:
- * orbsvcs/orbsvcs/IFRService/Contained_i.cpp:
- * orbsvcs/orbsvcs/IFRService/Contained_i.h:
- * orbsvcs/orbsvcs/IFRService/Container_i.cpp:
- * orbsvcs/orbsvcs/IFRService/Container_i.h:
- * orbsvcs/orbsvcs/IFRService/EmitsDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/EmitsDef_i.h:
- * orbsvcs/orbsvcs/IFRService/EnumDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/EnumDef_i.h:
- * orbsvcs/orbsvcs/IFRService/EventDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/EventDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ExceptionDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ExceptionDef_i.h:
- * orbsvcs/orbsvcs/IFRService/FactoryDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/FactoryDef_i.h:
- * orbsvcs/orbsvcs/IFRService/FinderDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/FinderDef_i.h:
- * orbsvcs/orbsvcs/IFRService/HomeDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/HomeDef_i.h:
- * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp:
- * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.h:
- * orbsvcs/orbsvcs/IFRService/IFR_macro.h:
- * orbsvcs/orbsvcs/IFRService/IRObject_i.h:
- * orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/InterfaceDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ModuleDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ModuleDef_i.h:
- * orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/OperationDef_i.h:
- * orbsvcs/orbsvcs/IFRService/PrimaryKeyDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/PrimaryKeyDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ProvidesDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ProvidesDef_i.h:
- * orbsvcs/orbsvcs/IFRService/PublishesDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/PublishesDef_i.h:
- * orbsvcs/orbsvcs/IFRService/Repository_i.cpp:
- * orbsvcs/orbsvcs/IFRService/Repository_i.h:
- * orbsvcs/orbsvcs/IFRService/SequenceDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/SequenceDef_i.h:
- * orbsvcs/orbsvcs/IFRService/Servant_Factory.cpp:
- * orbsvcs/orbsvcs/IFRService/StructDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/StructDef_i.h:
- * orbsvcs/orbsvcs/IFRService/TypedefDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/TypedefDef_i.h:
- * orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/UnionDef_i.h:
- * orbsvcs/orbsvcs/IFRService/UsesDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/UsesDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ValueBoxDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ValueBoxDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ValueDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ValueDef_i.h:
- * orbsvcs/orbsvcs/IFRService/ValueMemberDef_i.cpp:
- * orbsvcs/orbsvcs/IFRService/ValueMemberDef_i.h:
-
- "CORBA_" -> "CORBA::".
+ * orbsvcs/orbsvcs/IFRService/AbstractInterfaceDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/AliasDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/AliasDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ArrayDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ArrayDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/AttributeDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/AttributeDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ComponentDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ComponentDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ComponentRepository_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ComponentRepository_i.h:
+ * orbsvcs/orbsvcs/IFRService/ConstantDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ConstantDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ConsumesDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ConsumesDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/Contained_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/Contained_i.h:
+ * orbsvcs/orbsvcs/IFRService/Container_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/Container_i.h:
+ * orbsvcs/orbsvcs/IFRService/EmitsDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/EmitsDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/EnumDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/EnumDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/EventDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/EventDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ExceptionDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ExceptionDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/FactoryDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/FactoryDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/FinderDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/FinderDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/HomeDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/HomeDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp:
+ * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.h:
+ * orbsvcs/orbsvcs/IFRService/IFR_macro.h:
+ * orbsvcs/orbsvcs/IFRService/IRObject_i.h:
+ * orbsvcs/orbsvcs/IFRService/InterfaceDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/InterfaceDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ModuleDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ModuleDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/OperationDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/OperationDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/PrimaryKeyDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/PrimaryKeyDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ProvidesDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ProvidesDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/PublishesDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/PublishesDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/Repository_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/Repository_i.h:
+ * orbsvcs/orbsvcs/IFRService/SequenceDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/SequenceDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/Servant_Factory.cpp:
+ * orbsvcs/orbsvcs/IFRService/StructDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/StructDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/TypedefDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/TypedefDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/UnionDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/UnionDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/UsesDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/UsesDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ValueBoxDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ValueBoxDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ValueDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ValueDef_i.h:
+ * orbsvcs/orbsvcs/IFRService/ValueMemberDef_i.cpp:
+ * orbsvcs/orbsvcs/IFRService/ValueMemberDef_i.h:
+
+ "CORBA_" -> "CORBA::".
Fri Feb 28 18:17:28 CST 2003 <pradeep@cs.wustl.edu>
- * orbsvcs/orbsvcs/Notify/Makefile.CosNotification:
- * orbsvcs/orbsvcs/Notify/Makefile:
- Updated.
+ * orbsvcs/orbsvcs/Notify/Makefile.CosNotification:
+ * orbsvcs/orbsvcs/Notify/Makefile:
+ Updated.
Fri Feb 28 14:20:57 2003 Ossama Othman <ossama@uci.edu>
- * tao/Environment.h:
+ * tao/Environment.h:
- Removed another TAO_ORB_Core friend declaration that may be
- responsible for namespace related build problems on Solaris.
+ Removed another TAO_ORB_Core friend declaration that may be
+ responsible for namespace related build problems on Solaris.
Thu Feb 27, 2003 15:14:58 Pradeep Gore <pradeep@oomworks.com>
- * orbsvcs/orbsvcs/CosNotification_Static.dsp:
- Updated.
+ * orbsvcs/orbsvcs/CosNotification_Static.dsp:
+ Updated.
Thu Feb 27 11:27:24 2003 Chad Elliott <elliott_c@ociweb.com>
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation.cpp
index 5767d648d01..412415dc4d6 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation.cpp
@@ -845,16 +845,13 @@ be_visitor_operation::gen_marshal_and_invoke (
<< "))" << be_uidt_nl
<< "{" << be_idt_nl;
- // If marshaling fails, raise exception.
- if (this->gen_raise_interceptor_exception (bt, "CORBA::MARSHAL", "")
- == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_cs::"
- "gen_marshal_and invoke - "
- "codegen for return var failed\n"),
- -1);
- }
+ // If marshaling fails, raise exception (codesetting has various minors)
+ *os << be_nl << be_nl
+ << "TAO_InputCDR::throw_stub_exception (errno "
+ << "ACE_ENV_ARG_PARAMETER); "
+ << be_nl << be_nl
+ << "TAO_INTERCEPTOR_CHECK_RETURN (_tao_retval);"
+ << be_nl << be_nl;
*os << be_uidt_nl;
*os << "}" << be_uidt_nl << be_nl;
@@ -995,8 +992,14 @@ be_visitor_operation::gen_marshal_and_invoke (
// the response message.
*os << be_nl << be_nl
<< "TAO_InputCDR &_tao_in = _tao_call.inp_stream ();"
- << be_nl << be_nl
- << "if (!(" << be_idt << be_idt;
+ << be_nl ;
+
+ // Added so codeset translators may be used to decode reply
+ *os << "_tao_call.transport()->assign_translators (&_tao_in,0);"
+ << be_nl << be_nl;
+
+ // reply
+ *os << "if (!(" << be_idt << be_idt;
if (!this->void_return_type (bt))
{
@@ -1044,12 +1047,13 @@ be_visitor_operation::gen_marshal_and_invoke (
<< "))" << be_uidt_nl
<< "{" << be_idt_nl;
- // If marshaling fails, raise exception.
- int status = this->gen_raise_interceptor_exception (
- bt,
- "CORBA::MARSHAL",
- "TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES"
- );
+ // If marshaling fails, raise exception (codesetting has various minors)
+ *os << be_nl << be_nl
+ << "TAO_InputCDR::throw_stub_exception (errno "
+ << "ACE_ENV_ARG_PARAMETER); "
+ << be_nl << be_nl
+ << "TAO_INTERCEPTOR_CHECK_RETURN (_tao_retval);"
+ << be_nl << be_nl;
if (status == -1)
{
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
index a4df3e3a546..b8c9e084a6c 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_ss.cpp
@@ -612,23 +612,15 @@ be_visitor_operation_ss::gen_demarshal_params (be_operation *node,
-1);
}
- *os << be_uidt_nl << "))" << be_nl;
+ *os << be_nl << "))" << be_nl;
- // If marshaling fails, raise exception.
- int status = this->gen_raise_exception (0,
- "CORBA::MARSHAL",
- "");
+ // If marshaling fails, raise exception (codesetting has minor codes)
+ *os << "{" << be_idt_nl << be_nl
+ << "TAO_InputCDR::throw_skel_exception (errno ACE_ENV_ARG_PARAMETER);" << be_nl
+ << "ACE_CHECK;" << be_uidt_nl
+ << "}" << be_nl;
- if (status == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_ss::"
- "gen_marshal_and invoke - "
- "codegen for return var failed\n"),
- -1);
- }
-
- *os << be_uidt;
+ *os << be_uidt << be_uidt;
};
return 0;
@@ -688,7 +680,7 @@ be_visitor_operation_ss::gen_marshal_params (be_operation *node,
-1);
}
- *os << be_nl << be_nl
+ *os << be_nl << be_nl
<< "TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();"
<< be_nl << be_nl;
*os << "if (!(" << be_idt << be_idt;
@@ -737,23 +729,15 @@ be_visitor_operation_ss::gen_marshal_params (be_operation *node,
}
}
- *os << be_uidt_nl << "))" << be_nl;
+ *os << be_nl << "))" << be_nl;
- // If marshaling fails, raise exception.
- int status = this->gen_raise_exception (0,
- "CORBA::MARSHAL",
- "");
-
- if (status == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_ss::"
- "gen_marshal_params - "
- "codegen for raising exception failed\n"),
- -1);
- }
+ // If marshaling fails, raise exception (codesetting has minor codes)
+ *os << "{" << be_idt_nl << be_nl
+ << "TAO_InputCDR::throw_skel_exception (errno ACE_ENV_ARG_PARAMETER);" << be_nl
+ << "ACE_CHECK;" << be_uidt_nl
+ << "}" << be_nl;
- *os << be_uidt;
+ *os << be_uidt << be_uidt;
return 0;
}
diff --git a/TAO/tao/Any.cpp b/TAO/tao/Any.cpp
index d52980b7664..966aab39b9b 100644
--- a/TAO/tao/Any.cpp
+++ b/TAO/tao/Any.cpp
@@ -9,6 +9,7 @@
#include "tao/ORB_Core.h"
#include "tao/AbstractBase.h"
#include "tao/debug.h"
+#include "tao/Codeset_Translator_Factory.h"
#if !defined (__ACE_INLINE__)
# include "tao/Any.i"
@@ -77,7 +78,9 @@ CORBA::Any::Any (void)
any_owns_data_ (0),
contains_local_ (0),
value_ (0),
- destructor_ (0)
+ destructor_ (0),
+ char_translator_ (0),
+ wchar_translator_ (0)
{
}
@@ -88,7 +91,9 @@ CORBA::Any::Any (CORBA::TypeCode_ptr tc)
any_owns_data_ (0),
contains_local_ (0),
value_ (0),
- destructor_ (0)
+ destructor_ (0),
+ char_translator_ (0),
+ wchar_translator_ (0)
{
}
@@ -102,7 +107,9 @@ CORBA::Any::Any (CORBA::TypeCode_ptr type,
any_owns_data_ (0),
contains_local_ (0),
value_ (0),
- destructor_ (0)
+ destructor_ (0),
+ char_translator_ (0),
+ wchar_translator_ (0)
{
ACE_NEW (this->cdr_,
ACE_Message_Block);
@@ -116,7 +123,10 @@ CORBA::Any::Any (const CORBA::Any &src)
any_owns_data_ (0),
contains_local_ (src.contains_local_),
value_ (0),
- destructor_ (0)
+ destructor_ (0),
+ char_translator_ (0),
+ wchar_translator_ (0)
+
{
if (!CORBA::is_nil (src.type_.in ()))
{
@@ -139,6 +149,9 @@ CORBA::Any::Any (const CORBA::Any &src)
src.cdr_);
}
+ this->char_translator_ = src.char_translator_;
+ this->wchar_translator_ = src.wchar_translator_;
+
// No need to copy src's value_. We can always get that from cdr.
}
@@ -208,7 +221,9 @@ CORBA::Any::~Any (void)
void
CORBA::Any::_tao_replace (CORBA::TypeCode_ptr tc,
int byte_order,
- const ACE_Message_Block *mb)
+ const ACE_Message_Block *mb,
+ TAO_Codeset_Translator_Factory *ctrans,
+ TAO_Codeset_Translator_Factory *wtrans)
{
// Decrement the refcount on the Message_Block we hold, it does not
// matter if we own the data or not, because we always own the
@@ -229,6 +244,10 @@ CORBA::Any::_tao_replace (CORBA::TypeCode_ptr tc,
mb);
// We can save the decode operation if there's no need to extract
// the object.
+
+ // assign the char and wchar translator factories
+ this->char_translator_ = ctrans;
+ this->wchar_translator_ = wtrans;
}
void
@@ -357,10 +376,25 @@ CORBA::Any::_tao_decode (TAO_InputCDR &cdr
begin,
size);
+ // get character translator, if necessary.
+ TAO_Codeset_Translator_Factory *ctrans = 0;
+ if (cdr.char_translator() != 0)
+ ctrans = cdr.orb_core()->resource_factory()->
+ get_char_translator(cdr.char_translator()->ncs(),
+ cdr.char_translator()->tcs());
+
+ TAO_Codeset_Translator_Factory *wtrans = 0;
+ if (cdr.wchar_translator() != 0)
+ wtrans = cdr.orb_core()->resource_factory()->
+ get_wchar_translator(cdr.wchar_translator()->ncs(),
+ cdr.wchar_translator()->tcs());
+
// Stick it into the Any. It gets duplicated there.
this->_tao_replace (this->type_.in (),
cdr.byte_order (),
- &mb);
+ &mb,
+ ctrans,
+ wtrans);
}
// Insertion operators.
@@ -1175,6 +1209,10 @@ CORBA::Any::operator>>= (const char *&s) const
TAO_InputCDR stream (this->cdr_,
this->byte_order_);
+
+ if (this->char_translator_)
+ this->char_translator_->assign(&stream);
+
CORBA::String_var tmp;
if (!stream.read_string (tmp.out ()))
@@ -1241,6 +1279,10 @@ CORBA::Any::operator>>= (const CORBA::WChar *&s) const
TAO_InputCDR stream (this->cdr_,
this->byte_order_);
+
+ if (this->wchar_translator_)
+ this->wchar_translator_->assign(&stream);
+
CORBA::WString_var tmp;
if (!stream.read_wstring (tmp.out ()))
@@ -1418,6 +1460,8 @@ CORBA::Any::operator>>= (to_char c) const
TAO_InputCDR stream ((ACE_Message_Block *) this->cdr_,
this->byte_order_);
+ if (this->char_translator_)
+ this->char_translator_->assign (&stream);
return stream.read_char (c.ref_);
}
@@ -1452,6 +1496,8 @@ CORBA::Any::operator>>= (to_wchar wc) const
TAO_InputCDR stream ((ACE_Message_Block *) this->cdr_,
this->byte_order_);
+ if (this->wchar_translator_)
+ this->wchar_translator_->assign (&stream);
return stream.read_wchar (wc.ref_);
}
@@ -1511,6 +1557,9 @@ CORBA::Any::operator>>= (to_string s) const
TAO_InputCDR stream ((ACE_Message_Block *) this->cdr_,
this->byte_order_);
+ if (this->char_translator_)
+ this->char_translator_->assign (&stream);
+
CORBA::String_var tmp;
if (!stream.read_string (tmp.out ()))
@@ -1584,6 +1633,10 @@ CORBA::Any::operator>>= (to_wstring ws) const
TAO_InputCDR stream ((ACE_Message_Block *) this->cdr_,
this->byte_order_);
+
+ if (this->char_translator_)
+ this->char_translator_->assign (&stream);
+
CORBA::WString_var tmp;
if (!stream.read_wstring (tmp.out ()))
@@ -1905,10 +1958,25 @@ operator>> (TAO_InputCDR &cdr, CORBA::Any &x)
mb.wr_ptr (offset + size);
ACE_OS::memcpy (mb.rd_ptr (), begin, size);
+ // get character translator, if necessary.
+ TAO_Codeset_Translator_Factory *ctrans = 0;
+ if (cdr.char_translator() != 0)
+ ctrans = cdr.orb_core()->resource_factory()->
+ get_char_translator(cdr.char_translator()->ncs(),
+ cdr.char_translator()->tcs());
+
+ TAO_Codeset_Translator_Factory *wtrans = 0;
+ if (cdr.wchar_translator() != 0)
+ wtrans = cdr.orb_core()->resource_factory()->
+ get_wchar_translator(cdr.wchar_translator()->ncs(),
+ cdr.wchar_translator()->tcs());
+
// Stick it into the Any. It gets duplicated there.
x._tao_replace (tc.in (),
cdr.byte_order (),
- &mb);
+ &mb,
+ ctrans,
+ wtrans);
}
ACE_CATCH (CORBA::Exception, ex)
{
diff --git a/TAO/tao/Any.h b/TAO/tao/Any.h
index 74c43bf7d24..ac3dcef0733 100644
--- a/TAO/tao/Any.h
+++ b/TAO/tao/Any.h
@@ -26,6 +26,7 @@
#include "tao/Object.h"
#include "tao/Typecode.h"
+class TAO_Codeset_Translator_Factory;
namespace CORBA
{
@@ -353,7 +354,9 @@ namespace CORBA
/// Replace via message block instead of <value_>.
void _tao_replace (CORBA::TypeCode_ptr,
int byte_order,
- const ACE_Message_Block *mb);
+ const ACE_Message_Block *mb,
+ TAO_Codeset_Translator_Factory *ctrans = 0,
+ TAO_Codeset_Translator_Factory *wtrans = 0);
/// Replace all the contents of the any, used in the <<= operators.
void _tao_replace (CORBA::TypeCode_ptr type,
@@ -420,6 +423,11 @@ namespace CORBA
/// If not zero this is the function used to destroy objects.
CORBA::Any::_tao_destructor destructor_;
+ /// Codeset translator factories obtained from the decoding CDR, used to
+ /// translate strings when actually needed.
+ TAO_Codeset_Translator_Factory *char_translator_;
+ TAO_Codeset_Translator_Factory *wchar_translator_;
+
// 94-9-14 hides unsigned char insert/extract
void operator<<= (unsigned char);
CORBA::Boolean operator>>= (unsigned char&) const;
diff --git a/TAO/tao/CDR.cpp b/TAO/tao/CDR.cpp
index d0c0fb66cc0..6e085e1b447 100644
--- a/TAO/tao/CDR.cpp
+++ b/TAO/tao/CDR.cpp
@@ -81,9 +81,7 @@ TAO_OutputCDR::TAO_OutputCDR (size_t size,
ACE_Allocator* message_block_allocator,
size_t memcpy_tradeoff,
ACE_CDR::Octet major_version,
- ACE_CDR::Octet minor_version,
- ACE_Char_Codeset_Translator *char_translator,
- ACE_WChar_Codeset_Translator *wchar_translator)
+ ACE_CDR::Octet minor_version)
: ACE_OutputCDR (size,
byte_order,
buffer_allocator,
@@ -94,8 +92,6 @@ TAO_OutputCDR::TAO_OutputCDR (size_t size,
minor_version)
{
ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR1_ENTER);
- this->char_translator_ = char_translator;
- this->wchar_translator_ = wchar_translator;
}
TAO_OutputCDR::TAO_OutputCDR (char *data,
@@ -106,9 +102,7 @@ TAO_OutputCDR::TAO_OutputCDR (char *data,
ACE_Allocator* message_block_allocator,
size_t memcpy_tradeoff,
ACE_CDR::Octet major_version,
- ACE_CDR::Octet minor_version,
- ACE_Char_Codeset_Translator *char_translator,
- ACE_WChar_Codeset_Translator *wchar_translator)
+ ACE_CDR::Octet minor_version)
: ACE_OutputCDR (data,
size,
byte_order,
@@ -120,17 +114,13 @@ TAO_OutputCDR::TAO_OutputCDR (char *data,
minor_version)
{
ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR2_ENTER);
- this->char_translator_ = char_translator;
- this->wchar_translator_ = wchar_translator;
}
TAO_OutputCDR::TAO_OutputCDR (ACE_Message_Block *data,
int byte_order,
size_t memcpy_tradeoff,
ACE_CDR::Octet major_version,
- ACE_CDR::Octet minor_version,
- ACE_Char_Codeset_Translator *char_translator,
- ACE_WChar_Codeset_Translator *wchar_translator)
+ ACE_CDR::Octet minor_version)
: ACE_OutputCDR (data,
byte_order,
memcpy_tradeoff,
@@ -138,10 +128,57 @@ TAO_OutputCDR::TAO_OutputCDR (ACE_Message_Block *data,
minor_version)
{
ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR3_ENTER);
- this->char_translator_ = char_translator;
- this->wchar_translator_ = wchar_translator;
}
+
+void
+TAO_OutputCDR::throw_stub_exception (int error_num ACE_ENV_ARG_DECL)
+{
+ switch (error_num)
+ {
+ case 0 :
+ break;
+ case EINVAL : // wchar from a GIOP 1.0
+ ACE_THROW (CORBA::MARSHAL (CORBA::OMGVMCID | 5, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+ case ERANGE : // untranslatable character
+ ACE_THROW (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+ case EACCES : // wchar but no codeset
+ ACE_THROW(CORBA::INV_OBJREF (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+ default :
+ ACE_THROW (CORBA::MARSHAL ());
+ }
+}
+
+void
+TAO_OutputCDR::throw_skel_exception (int error_num ACE_ENV_ARG_DECL)
+{
+ switch (error_num)
+ {
+ case 0 :
+ break;
+ case EINVAL : // wchar from a GIOP 1.0
+ ACE_THROW (CORBA::MARSHAL(CORBA::OMGVMCID | 5, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+
+ case EACCES : // wchar but no codeset
+ ACE_THROW (CORBA::BAD_PARAM(CORBA::OMGVMCID | 23, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+
+ case ERANGE : // untranslatable character
+ ACE_THROW (CORBA::DATA_CONVERSION(CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+
+ default :
+ ACE_THROW (CORBA::MARSHAL(TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));
+
+ }
+}
+
+
+
// ****************************************************************
TAO_InputCDR::TAO_InputCDR (const TAO_OutputCDR& rhs,
@@ -163,15 +200,51 @@ TAO_InputCDR::TAO_InputCDR (const TAO_OutputCDR& rhs,
orb_core->output_cdr_msgblock_allocator () : 0)),
orb_core_ (orb_core)
{
- this->init_translators ();
}
+
void
-TAO_InputCDR::init_translators (void)
+TAO_InputCDR::throw_stub_exception (int error_num ACE_ENV_ARG_DECL)
{
- if (this->orb_core_ != 0)
+ switch (error_num)
{
- this->char_translator_ = this->orb_core_->from_iso8859 ();
- this->wchar_translator_ = this->orb_core_->from_unicode ();
+ case 0 :
+ break;
+ case EINVAL : // wchar from a GIOP 1.0
+ ACE_THROW (CORBA::MARSHAL (CORBA::OMGVMCID | 6, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+ case ERANGE : // untranslatable character
+ ACE_THROW (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+ case EACCES : // wchar but no codeset
+ ACE_THROW (CORBA::INV_OBJREF (CORBA::OMGVMCID | 2, CORBA::COMPLETED_YES));
+ ACE_NOTREACHED(break);
+ default :
+ ACE_THROW (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));
+ }
+}
+
+void
+TAO_InputCDR::throw_skel_exception (int error_num ACE_ENV_ARG_DECL)
+{
+ switch (error_num)
+ {
+ case 0 :
+ break;
+ case EINVAL : // wchar from a GIOP 1.0
+ ACE_THROW (CORBA::MARSHAL(CORBA::OMGVMCID | 5, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+
+ case EACCES : // wchar but no codeset
+ ACE_THROW (CORBA::BAD_PARAM(CORBA::OMGVMCID | 23, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+
+ case ERANGE : // untranslatable character
+ ACE_THROW (CORBA::DATA_CONVERSION(CORBA::OMGVMCID | 1, CORBA::COMPLETED_NO));
+ ACE_NOTREACHED(break);
+
+ default :
+ ACE_THROW (CORBA::MARSHAL());
+
}
}
diff --git a/TAO/tao/CDR.h b/TAO/tao/CDR.h
index 65fb354eafe..f25943e7bce 100644
--- a/TAO/tao/CDR.h
+++ b/TAO/tao/CDR.h
@@ -49,6 +49,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "ace/CORBA_macros.h"
#include "ace/CDR_Stream.h"
class TAO_ORB_Core;
@@ -93,9 +94,7 @@ public:
ACE_CDR::Octet major_version =
TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet minor_version =
- TAO_DEF_GIOP_MINOR,
- ACE_Char_Codeset_Translator *char_translator = 0,
- ACE_WChar_Codeset_Translator *wchar_translator = 0);
+ TAO_DEF_GIOP_MINOR);
/// Build a CDR stream with an initial buffer, it will *not* remove
/// <data>, since it did not allocated it.
@@ -109,9 +108,7 @@ public:
ACE_CDR::Octet major_version =
TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet minor_version =
- TAO_DEF_GIOP_MINOR,
- ACE_Char_Codeset_Translator *char_translator = 0,
- ACE_WChar_Codeset_Translator *wchar_translator = 0);
+ TAO_DEF_GIOP_MINOR);
/// Build a CDR stream with an initial Message_Block chain, it will *not*
/// remove <data>, since it did not allocate it.
@@ -121,9 +118,7 @@ public:
ACE_CDR::Octet major_version =
TAO_DEF_GIOP_MAJOR,
ACE_CDR::Octet minor_version =
- TAO_DEF_GIOP_MINOR,
- ACE_Char_Codeset_Translator *char_translator = 0,
- ACE_WChar_Codeset_Translator *wchar_translator = 0);
+ TAO_DEF_GIOP_MINOR);
/// Destructor.
~TAO_OutputCDR (void);
@@ -132,6 +127,8 @@ public:
// strings and wstrings?
// = TAO specific methods.
+ static void throw_stub_exception (int error_num ACE_ENV_ARG_DECL);
+ static void throw_skel_exception (int error_num ACE_ENV_ARG_DECL);
private:
/// disallow copying...
@@ -260,8 +257,10 @@ public:
/// Accessor
TAO_ORB_Core *orb_core (void) const;
-private:
- void init_translators (void);
+
+ // = TAO specific methods.
+ static void throw_stub_exception (int error_num ACE_ENV_ARG_DECL);
+ static void throw_skel_exception (int error_num ACE_ENV_ARG_DECL);
private:
/// The ORB_Core, required to extract object references.
diff --git a/TAO/tao/CDR.i b/TAO/tao/CDR.i
index 5e405156437..b660e714ded 100644
--- a/TAO/tao/CDR.i
+++ b/TAO/tao/CDR.i
@@ -20,7 +20,6 @@ TAO_InputCDR::TAO_InputCDR (const char *buf,
minor_version),
orb_core_ (orb_core)
{
- this->init_translators ();
}
ACE_INLINE
@@ -35,7 +34,6 @@ TAO_InputCDR::TAO_InputCDR (size_t bufsiz,
minor_version),
orb_core_ (orb_core)
{
- this->init_translators ();
}
ACE_INLINE
@@ -50,7 +48,6 @@ TAO_InputCDR::TAO_InputCDR (const ACE_Message_Block *data,
minor_version),
orb_core_ (orb_core)
{
- this->init_translators ();
}
ACE_INLINE
@@ -67,7 +64,6 @@ TAO_InputCDR::TAO_InputCDR (ACE_Data_Block *data,
minor_version),
orb_core_ (orb_core)
{
- this->init_translators ();
}
@@ -89,7 +85,6 @@ TAO_InputCDR::TAO_InputCDR (ACE_Data_Block *data,
minor_version),
orb_core_ (orb_core)
{
- this->init_translators ();
}
@@ -102,7 +97,6 @@ TAO_InputCDR::TAO_InputCDR (const TAO_InputCDR& rhs,
offset),
orb_core_ (rhs.orb_core_)
{
- this->init_translators ();
}
ACE_INLINE
@@ -112,7 +106,6 @@ TAO_InputCDR::TAO_InputCDR (const TAO_InputCDR& rhs,
size),
orb_core_ (rhs.orb_core_)
{
- this->init_translators ();
}
ACE_INLINE
@@ -120,7 +113,6 @@ TAO_InputCDR::TAO_InputCDR (const TAO_InputCDR& rhs)
: ACE_InputCDR (rhs),
orb_core_ (rhs.orb_core_)
{
- this->init_translators ();
}
ACE_INLINE
@@ -129,7 +121,6 @@ TAO_InputCDR::TAO_InputCDR (ACE_InputCDR::Transfer_Contents rhs,
: ACE_InputCDR (rhs),
orb_core_ (orb_core)
{
- this->init_translators ();
}
ACE_INLINE
diff --git a/TAO/tao/Codeset_Manager.cpp b/TAO/tao/Codeset_Manager.cpp
new file mode 100644
index 00000000000..32acc10f008
--- /dev/null
+++ b/TAO/tao/Codeset_Manager.cpp
@@ -0,0 +1,267 @@
+// $Id$
+#include "tao/Codeset_Manager.h"
+#include "tao/debug.h"
+#include "tao/CDR.h"
+#include "tao/TAO_Server_Request.h"
+#include "tao/operation_details.h"
+#include "tao/ORB_Core.h"
+#include "tao/Exception.h"
+#include "tao/corbafwd.h"
+#include "tao/Codeset_Translator_Factory.h"
+#include "tao/TAO_Server_Request.h"
+#include "tao/Tagged_Components.h"
+
+#include "ace/Codeset_Registry.h"
+
+ACE_RCSID(tao, Codeset_Manager, "$Id$")
+
+/// NCS for char is defaulted to ISO 8859-1:1987; Latin Alphabet No. 1
+CONV_FRAME::CodeSetId TAO_Codeset_Manager::default_char_codeset = 0x00010001;
+/// NCS for wchar is not defaulted by the CORBA specification, but a default
+/// may be set here if desired
+CONV_FRAME::CodeSetId TAO_Codeset_Manager::default_wchar_codeset = 0;
+
+
+TAO_Codeset_Manager::TAO_Codeset_Manager(CONV_FRAME::CodeSetComponentInfo *csi)
+ :codeset_info_ (csi)
+{
+}
+
+TAO_Codeset_Manager::~TAO_Codeset_Manager()
+{
+ delete codeset_info_;
+}
+
+void
+TAO_Codeset_Manager::set_codeset (TAO_Tagged_Components& tc) const
+{
+ tc.set_code_sets (*this->codeset_info_);
+}
+
+
+void
+TAO_Codeset_Manager::set_tcs(TAO_Profile &theProfile,
+ TAO_Transport &trans)
+{
+ /// If tcs is already set on the transport then donot process,
+ /// use existing transport as CDR have translators set.
+ if (trans.is_tcs_set())
+ {
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "set_tcs skipping, cuz transport already bin set!\n"));
+ return;
+ }
+
+ TAO_Tagged_Components& theTaggedComp = theProfile.tagged_components();
+
+ CONV_FRAME::CodeSetComponentInfo remote;
+ /// Get the codeset component
+ if (theTaggedComp.get_code_sets(remote) == 0 )
+ {
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "[TAO_Codeset_Manager::set_client_tcs] No CodeSet Component present in the Profile, assuming defaults \n"));
+ remote.ForCharData.native_code_set =
+ TAO_Codeset_Manager::default_char_codeset;
+ remote.ForWcharData.native_code_set = 0;
+ }
+
+ CONV_FRAME::CodeSetId ncs =
+ this->codeset_info_->ForCharData.native_code_set;
+ CONV_FRAME::CodeSetId tcs = computeTCS (remote.ForCharData,
+ this->codeset_info_->ForCharData);
+ TAO_Resource_Factory *rf = trans.orb_core()->resource_factory();
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "setting transport char translator(%08x, %08x)\n",
+ ncs,tcs));
+ trans.char_translator(rf->get_char_translator (ncs,tcs));
+
+ ncs = this->codeset_info_->ForWcharData.native_code_set;
+ tcs = computeTCS (remote.ForWcharData,
+ this->codeset_info_->ForWcharData);
+
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "setting transport wchar translator(%08x, %08x)\n",
+ ncs,tcs));
+ trans.wchar_translator(rf->get_wchar_translator (ncs,tcs));
+ trans.wchar_allowed (ncs != 0 || tcs != 0);
+}
+
+void
+TAO_Codeset_Manager::process_service_context (TAO_ServerRequest &request)
+{
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "IN CSM->process_service_context\n"));
+ /// Donot process if tcs is already set on the transport
+ if( request.transport()->is_tcs_set())
+ {
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "process_service_context skipping, cuz transport already bin set\n"));
+ return;
+ }
+
+ // Get the service Context from an object of TAO_ServerRequest
+ // and set the TCS values on the Transport
+ TAO_Service_Context &service_cntx = request.request_service_context ();
+ IOP::ServiceContext context;
+ context.context_id = IOP::CodeSets;
+ CONV_FRAME::CodeSetId tcs_c = TAO_Codeset_Manager::default_char_codeset;
+ CONV_FRAME::CodeSetId tcs_w = 0;
+
+ const IOP::ServiceContextList& scl = service_cntx.service_info();
+ if (TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG,"PSC, scl.len = %d\n",scl.length()));
+
+ // Codeset Context is not available, no need to process service context
+ if (service_cntx.get_context(context))
+ {
+ // Convert the Service Context to Codeset Context
+ const char *buffer =
+ ACE_reinterpret_cast(const char*,context.context_data.get_buffer ());
+
+ TAO_InputCDR cdr (buffer,context.context_data.length (),
+ request.incoming().byte_order());
+ cdr >> tcs_c;
+ cdr >> tcs_w;
+ }
+
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "process_service_context using tcsc = %08x, tcsw = %08x\n",tcs_c,tcs_w));
+
+ CONV_FRAME::CodeSetId ncs =
+ this->codeset_info_->ForCharData.native_code_set;
+
+ TAO_Resource_Factory *rf =
+ request.transport()->orb_core()->resource_factory();
+ request.transport()->char_translator(rf->get_char_translator (ncs,tcs_c));
+
+ ncs = this->codeset_info_->ForWcharData.native_code_set;
+ request.transport()->wchar_translator(rf->get_wchar_translator (ncs,tcs_w));
+ request.transport()->wchar_allowed (ncs != 0 || tcs_w != 0);
+}
+
+void
+TAO_Codeset_Manager::generate_service_context (TAO_Operation_Details &opd,
+ TAO_Transport &trans)
+{
+ // Take a reference to service context
+ IOP::ServiceContextList &serv_cntxs = opd.request_service_info();
+
+ CONV_FRAME::CodeSetContext codeset_cntx;
+
+ // Generating codeset context
+ // Assuming the TCS values from Transport will be defaulted
+ TAO_Codeset_Translator_Factory *tf = trans.char_translator();
+ codeset_cntx.char_data = tf ? tf->tcs() :
+ this->codeset_info_->ForCharData.native_code_set;
+ tf = trans.wchar_translator();
+ codeset_cntx.wchar_data = tf ? tf->tcs() :
+ this->codeset_info_->ForWcharData.native_code_set;
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "generate_service_context using tcs_c = %08x, tcs_w = %08x\n",codeset_cntx.char_data, codeset_cntx.wchar_data));
+
+ TAO_OutputCDR codeset_cdr;
+ codeset_cdr << codeset_cntx;
+
+ // Convert the codeset_cntx to servicecontext and insert into the List
+ IOP::ServiceContext cntx;
+ cntx.context_id = IOP::CodeSets;
+
+ CORBA::ULong length = codeset_cdr.total_length ();
+ cntx.context_data.length (length);
+ CORBA::Octet *buf = cntx.context_data.get_buffer ();
+
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "GSC, encapsulated buffer length = %d\n", length));
+
+ for (const ACE_Message_Block *i = codeset_cdr.begin ();
+ i != 0;
+ i = i->cont ())
+ {
+ ACE_OS::memcpy (buf, i->rd_ptr (), i->length ());
+ buf += i->length ();
+ }
+
+ /// Append it to IIOP::ServiceContextList
+ length = serv_cntxs.length ();
+ serv_cntxs.length (length + 1);
+
+ if(TAO_debug_level > 0)
+ ACE_DEBUG((LM_DEBUG, "GSC, num contexts was %d\n",length));
+
+ CORBA::ULong max = cntx.context_data.maximum ();
+ CORBA::ULong len = cntx.context_data.length ();
+ buf = cntx.context_data.get_buffer (1);
+
+ serv_cntxs[length].context_id = cntx.context_id;
+ serv_cntxs[length].context_data.replace (max, len, buf, 1);
+}
+
+/// Checks whether the NCS is a part of CCS
+CORBA::Boolean
+TAO_Codeset_Manager::isElementOf (CONV_FRAME::CodeSetId id,
+ CONV_FRAME::CodeSetComponent &cs_comp)
+{
+ for (CORBA::ULong i=0L;
+ i < cs_comp.conversion_code_sets.length();
+ ++i )
+ {
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,"isElementOf comparing id = %x, ccsid[%d] = %x\n",
+ id, i, cs_comp.conversion_code_sets[i]));
+ if (id == cs_comp.conversion_code_sets[i])
+ return true;
+ }
+ return false;
+}
+
+/// Find the Intersection of Client and Server CCS's
+CONV_FRAME::CodeSetId
+TAO_Codeset_Manager::intersectionOf (CONV_FRAME::CodeSetComponent &cs_comp1,
+ CONV_FRAME::CodeSetComponent &cs_comp2)
+{
+ for( CORBA::ULong index=0L;
+ index < cs_comp1.conversion_code_sets.length();
+ ++index )
+ if(this->isElementOf(cs_comp1.conversion_code_sets[index], cs_comp2))
+ return cs_comp1.conversion_code_sets[index];
+ return 0;
+}
+
+CORBA::Boolean
+TAO_Codeset_Manager::isCompatible(CONV_FRAME::CodeSetId cs1,
+ CONV_FRAME::CodeSetId cs2 )
+{
+ // Call the is_compatible method of ACE_Codeset_Registry
+ return ACE_Codeset_Registry::is_compatible(cs1,cs2);
+}
+
+/// returns the TCS for Char / Wchar
+CONV_FRAME::CodeSetId
+TAO_Codeset_Manager::computeTCS (CONV_FRAME::CodeSetComponent &remote,
+ CONV_FRAME::CodeSetComponent &local )
+{
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,"compute TCS = rncs = %x, lncs = %x\n",
+ remote.native_code_set, local.native_code_set));
+ if (remote.native_code_set == local.native_code_set)
+ return local.native_code_set;
+
+ if (this->isElementOf (remote.native_code_set, local))
+ return remote.native_code_set;
+
+ if (this->isElementOf (local.native_code_set, remote))
+ return local.native_code_set;
+
+ CONV_FRAME::CodeSetId tcs;
+ if ((tcs = this->intersectionOf (remote, local)) == 0)
+ if (isCompatible (local.native_code_set, remote.native_code_set))
+ return remote.native_code_set;
+ else
+ {
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_THROW_RETURN(CORBA::CODESET_INCOMPATIBLE(),0);
+ }
+ return tcs;
+}
diff --git a/TAO/tao/Codeset_Manager.h b/TAO/tao/Codeset_Manager.h
new file mode 100644
index 00000000000..fae88b77578
--- /dev/null
+++ b/TAO/tao/Codeset_Manager.h
@@ -0,0 +1,81 @@
+// This may look like C, but it's really -*- C++ -*-
+
+//=============================================================================
+/*
+ * @file TAO_Codeset_Manager.h
+ *
+ * $Id$
+ *
+ * Interface for the TAO CodeSet Manager.
+ *
+ * @author Mahesh Vedantam <mahesh#ociweb.com>
+ */
+//=============================================================================
+
+#ifndef TAO_CODESET_MANAGER_H
+#define TAO_CODESET_MANAGER_H
+
+#include "tao/CONV_FRAMEC.h"
+#include "tao/Profile.h"
+#include "tao/Transport.h"
+
+class TAO_ServerRequest;
+class TAO_Tagged_Components;
+
+class TAO_Export TAO_Codeset_Manager
+{
+
+public:
+ /// NCS for char is defaulted to ISO 8859-1:1987; Latin Alphabet No. 1
+ static CONV_FRAME::CodeSetId default_char_codeset;
+ static CONV_FRAME::CodeSetId default_wchar_codeset;
+
+ TAO_Codeset_Manager (CONV_FRAME::CodeSetComponentInfo* );
+
+ ~TAO_Codeset_Manager();
+
+ /// Called by an object of TAO_Acceptor to set NCS and CCS values for
+ /// Char/Wchar in to the Object Reference.
+ void set_codeset (TAO_Tagged_Components& ) const;
+ ///
+ /// Called from an object of "TAO_GIOP_Invocation" to set TCS on the
+ /// Transport
+ void set_tcs (TAO_Profile &theProfile, TAO_Transport &);
+
+ /// Called from an Object of TAO_Messaging for every request at server side
+ /// to process service context and set TCS for Char/WChar
+ void process_service_context ( TAO_ServerRequest &);
+
+ /// Called by a client object to generate service context
+ /// at this time Transport has the TCS for Char and WChar
+ void generate_service_context ( TAO_Operation_Details&, TAO_Transport & );
+
+private:
+ ACE_UNIMPLEMENTED_FUNC ( TAO_Codeset_Manager() )
+
+ // initialize the Codeset data members for characters and wide characters
+ // int init (const CONV_FRAME::CodeSetComponentInfo &);
+
+ // Compute the TCS for Char/WChar asper the CORBA Specification
+ CONV_FRAME::CodeSetId computeTCS (CONV_FRAME::CodeSetComponent &,
+ CONV_FRAME::CodeSetComponent & );
+
+ // Find CodesetId in the codeset component
+ CORBA::Boolean isElementOf ( CONV_FRAME::CodeSetId,
+ CONV_FRAME::CodeSetComponent & );
+
+ // find the intersection of CodesetIds between Client and Server CCS
+ CONV_FRAME::CodeSetId intersectionOf (CONV_FRAME::CodeSetComponent &,
+ CONV_FRAME::CodeSetComponent &);
+
+ CORBA::Boolean isCompatible(CONV_FRAME::CodeSetId,
+ CONV_FRAME::CodeSetId);
+
+
+ CONV_FRAME::CodeSetComponentInfo* codeset_info_;
+
+protected:
+
+};
+
+#endif /* TAO_CODESET_MANAGER_H */
diff --git a/TAO/tao/Codeset_Translator_Factory.cpp b/TAO/tao/Codeset_Translator_Factory.cpp
new file mode 100644
index 00000000000..d1cda814ad2
--- /dev/null
+++ b/TAO/tao/Codeset_Translator_Factory.cpp
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tao
+//
+// = FILENAME
+// Codeset_Translator_Factory.cpp
+//
+// = DESCRIPTION
+// The base for all the translator factories. Translator factories are
+// responsible for supplying the proper translator on demand.
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+
+#include "Codeset_Translator_Factory.h"
+#include <ace/CDR_Stream.h>
+
+TAO_Codeset_Translator_Factory::TAO_Codeset_Translator_Factory ()
+{
+
+}
+
+TAO_Codeset_Translator_Factory::~TAO_Codeset_Translator_Factory ()
+{
+
+}
+
+int
+TAO_Codeset_Translator_Factory::init (int , ACE_TCHAR ** )
+{
+ return 0;
+}
+
+void
+TAO_Codeset_Translator_Factory::assign_i (TAO_InputCDR *cdr, ACE_Char_Codeset_Translator *trans) const
+{
+ cdr->char_translator(trans);
+}
+
+void
+TAO_Codeset_Translator_Factory::assign_i (TAO_OutputCDR *cdr, ACE_Char_Codeset_Translator *trans) const
+{
+ cdr->char_translator(trans);
+}
+
+void
+TAO_Codeset_Translator_Factory::assign_i (TAO_InputCDR *cdr, ACE_WChar_Codeset_Translator *trans) const
+{
+ cdr->wchar_translator(trans);
+}
+
+void
+TAO_Codeset_Translator_Factory::assign_i (TAO_OutputCDR *cdr, ACE_WChar_Codeset_Translator *trans) const
+{
+ cdr->wchar_translator(trans);
+}
diff --git a/TAO/tao/Codeset_Translator_Factory.h b/TAO/tao/Codeset_Translator_Factory.h
new file mode 100644
index 00000000000..469ca6f6508
--- /dev/null
+++ b/TAO/tao/Codeset_Translator_Factory.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+
+// ===================================================================
+/**
+ * @file TAO_Codeset_Translator_Factory.h
+ *
+ * $Id$
+ *
+ * @author OCIWeb at St. Louis
+ */
+// =========================
+#ifndef TAO_CODESET_TRANSLATOR_FACTORY_H
+#define TAO_CODESET_TRANSLATOR_FACTORY_H
+
+#include "ace/pre.h"
+#include "ace/Service_Object.h"
+
+#include "tao/corbafwd.h"
+#include "tao/CONV_FRAMEC.h"
+
+class TAO_InputCDR;
+class TAO_OutputCDR;
+
+class ACE_Char_Codeset_Translator;
+class ACE_WChar_Codeset_Translator;
+
+class TAO_Export TAO_Codeset_Translator_Factory :
+ public ACE_Service_Object
+{
+public:
+ TAO_Codeset_Translator_Factory ();
+ virtual ~TAO_Codeset_Translator_Factory ();
+ virtual int init (int argc, ACE_TCHAR *argv[]);
+ // ncs & tcs values set at compile time as a result of instantiating the
+ // template.
+ virtual CONV_FRAME::CodeSetId ncs () const = 0;
+ virtual CONV_FRAME::CodeSetId tcs () const = 0;
+
+ virtual void assign(TAO_InputCDR *) const = 0;
+ virtual void assign (TAO_OutputCDR *) const = 0;
+
+protected:
+ void assign_i (TAO_InputCDR *, ACE_Char_Codeset_Translator* ) const;
+ void assign_i (TAO_InputCDR *, ACE_WChar_Codeset_Translator* ) const;
+ void assign_i (TAO_OutputCDR *, ACE_Char_Codeset_Translator* ) const;
+ void assign_i (TAO_OutputCDR *, ACE_WChar_Codeset_Translator* ) const;
+};
+
+// Get the template includes last
+#include "tao/Codeset_Translator_Factory_T.h"
+
+#include "ace/post.h"
+#endif /* TAO_Codeset_Translator_Factory */
diff --git a/TAO/tao/Codeset_Translator_Factory_T.cpp b/TAO/tao/Codeset_Translator_Factory_T.cpp
new file mode 100644
index 00000000000..8dcd9262635
--- /dev/null
+++ b/TAO/tao/Codeset_Translator_Factory_T.cpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tao
+//
+// = FILENAME
+// Codeset_Translator_Factory_T.cpp
+//
+// = DESCRIPTION
+// The template for creating a particular instance of a codeset translator
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+#ifndef TAO_CODESET_TRANSLATOR_FACTORY_T_CPP
+#define TAO_CODESET_TRANSLATOR_FACTORY_T_CPP
+
+#include "tao/Codeset_Translator_Factory_T.h"
+#include "tao/debug.h"
+#include "tao/CDR.h"
+
+template<class NCS_TO_TCS>
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::TAO_Codeset_Translator_Factory_T () :
+ translator_(0)
+{
+}
+
+template<class NCS_TO_TCS>
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::~TAO_Codeset_Translator_Factory_T ()
+{
+ delete translator_;
+}
+
+template<class NCS_TO_TCS>
+int
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::init (int argc, ACE_TCHAR* argv[])
+{
+ this->TAO_Codeset_Translator_Factory::init (argc,argv);
+ ACE_NEW_RETURN (translator_,NCS_TO_TCS,-1);
+ if( TAO_debug_level > 0 )
+ ACE_DEBUG((LM_DEBUG, "TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::init() entered\n"));
+ return 0;
+}
+
+// ncs & tcs values set at compile time as a result of instantiating the
+// template.
+template<class NCS_TO_TCS>
+CONV_FRAME::CodeSetId
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::ncs () const
+{
+ return this->translator_->ncs();
+}
+
+template<class NCS_TO_TCS>
+CONV_FRAME::CodeSetId
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::tcs () const
+{
+ return this->translator_->tcs();
+}
+
+// Assign either a reference to teh existing translator or a new translator
+// for input CDR streams
+template<class NCS_TO_TCS>
+void
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::assign (TAO_InputCDR *cdr) const
+{
+ if (cdr)
+ {
+ this->assign_i(cdr,this->translator_);
+ }
+}
+
+// Assign either a reference to teh existing translator or a new translator
+// for input CDR streams
+template<class NCS_TO_TCS>
+void
+TAO_Codeset_Translator_Factory_T<NCS_TO_TCS>::assign (TAO_OutputCDR *cdr) const
+{
+ if (cdr)
+ {
+ this->assign_i(cdr,this->translator_);
+ }
+}
+
+#endif /* TAO_CODESET_TRANSLATOR_FACTORY_T_CPP */
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TAO/tao/Codeset_Translator_Factory_T.h b/TAO/tao/Codeset_Translator_Factory_T.h
new file mode 100644
index 00000000000..47caa8f83d8
--- /dev/null
+++ b/TAO/tao/Codeset_Translator_Factory_T.h
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+
+// ===================================================================
+/**
+ * @file TAO_Codeset_Translator_Factory_T.h
+ *
+ * $Id$
+ *
+ * @author OCIWeb at St. Louis
+ */
+// =========================
+#ifndef TAO_CODESET_TRANSLATOR_FACTORY_T_H
+#define TAO_CODESET_TRANSLATOR_FACTORY_T_H
+
+#include "ace/pre.h"
+#include "tao/Codeset_Translator_Factory.h"
+
+template<class NCS_TO_TCS>
+class TAO_Export TAO_Codeset_Translator_Factory_T
+: public TAO_Codeset_Translator_Factory
+{
+public:
+
+ TAO_Codeset_Translator_Factory_T ();
+ ~TAO_Codeset_Translator_Factory_T ();
+
+ // initialize
+ int init( int argc, ACE_TCHAR* argv[]);
+
+ // ncs & tcs values set at compile time as a result of instantiating the
+ // template.
+ CONV_FRAME::CodeSetId ncs () const;
+ CONV_FRAME::CodeSetId tcs () const;
+
+ // set the apropriate translator (from_ for input to_ for output) to the CDR
+ virtual void assign (TAO_InputCDR *) const;
+ virtual void assign (TAO_OutputCDR *) const;
+
+private:
+ NCS_TO_TCS *translator_;
+};
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "tao/Codeset_Translator_Factory_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Codeset_Translator_Factory_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include "ace/post.h"
+#endif /* TAO_Codeset_Translator_Factory_T */
diff --git a/TAO/tao/GIOP_Message_Base.cpp b/TAO/tao/GIOP_Message_Base.cpp
index b46f1b971ba..3c4837e6fab 100644
--- a/TAO/tao/GIOP_Message_Base.cpp
+++ b/TAO/tao/GIOP_Message_Base.cpp
@@ -11,6 +11,7 @@
#include "Transport.h"
#include "LF_Strategy.h"
#include "Request_Dispatcher.h"
+#include "Codeset_Manager.h"
#if !defined (__ACE_INLINE__)
# include "GIOP_Message_Base.i"
@@ -610,9 +611,7 @@ TAO_GIOP_Message_Base::process_request_message (TAO_Transport *transport,
this->orb_core_->input_cdr_msgblock_allocator (),
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
qd->major_version_,
- qd->minor_version_,
- this->orb_core_->to_iso8859 (),
- this->orb_core_->to_unicode ());
+ qd->minor_version_);
// Get the read and write positions before we steal data.
size_t rd_pos = qd->msg_block_->rd_ptr () - qd->msg_block_->base ();
@@ -665,6 +664,7 @@ TAO_GIOP_Message_Base::process_request_message (TAO_Transport *transport,
qd->minor_version_,
this->orb_core_);
+ transport->assign_translators(&input_cdr,&output);
// We know we have some request message. Check whether it is a
// GIOP_REQUEST or GIOP_LOCATE_REQUEST to take action.
@@ -858,6 +858,9 @@ TAO_GIOP_Message_Base::process_request (TAO_Transport *transport,
parse_error =
parser->parse_request_header (request);
+ request.orb_core()->codeset_manager()->process_service_context(request);
+ transport->assign_translators(&cdr,&output);
+
// Throw an exception if the
if (parse_error != 0)
ACE_TRY_THROW (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE,
diff --git a/TAO/tao/GIOP_Message_Generator_Parser_10.cpp b/TAO/tao/GIOP_Message_Generator_Parser_10.cpp
index 69cda910596..180e143c6e3 100644
--- a/TAO/tao/GIOP_Message_Generator_Parser_10.cpp
+++ b/TAO/tao/GIOP_Message_Generator_Parser_10.cpp
@@ -14,7 +14,7 @@
#include "TAO_Server_Request.h"
#include "GIOP_Message_State.h"
#include "CORBA_String.h"
-
+#include "ORB_Core.h"
#if !defined (__ACE_INLINE__)
# include "GIOP_Message_Generator_Parser_10.inl"
@@ -280,7 +280,6 @@ TAO_GIOP_Message_Generator_Parser_10::write_locate_reply_mesg (
return 1;
}
-
int
TAO_GIOP_Message_Generator_Parser_10::parse_request_header (
TAO_ServerRequest &request)
@@ -326,38 +325,28 @@ TAO_GIOP_Message_Generator_Parser_10::parse_request_header (
hdr_status =
hdr_status && request.profile ().unmarshall_object_key (input);
- if (input.char_translator () == 0)
- {
- CORBA::ULong length = 0;
- hdr_status = hdr_status && input.read_ulong (length);
+ // According to the CORBA 2.6.1 (and older) specification, the operation
+ // name is an IDL Identifier. Identifiers must be composed of ASCII letters,
+ // numbers, and underscores, starting with a letter. Based on this, and
+ // the fact that I could find no text explicitly requiring operation name
+ // translation, nor could others in the CORBA community, the operation name
+ // will not be translated regardless of the translation of other strings.
+ //
+ CORBA::ULong length = 0;
+ hdr_status = hdr_status && input.read_ulong (length);
- if (hdr_status)
- {
- // Do not include NULL character at the end.
- // @@ This is not getting demarshaled using the codeset
- // translators!
-
- // Notice that there are no memory allocations involved
- // here!
- request.operation (input.rd_ptr (),
- length - 1,
- 0 /* TAO_ServerRequest does NOT own string */);
- hdr_status = input.skip_bytes (length);
- }
- }
- else
+ if (hdr_status)
{
- // @@ We could optimize for this case too, i.e. do in-place
- // demarshaling of the string... But there is an issue
- // pending on the OMG as to whether the operation should be
- // sent in the connection negotiated codeset or always in
- // ISO8859-1.
- CORBA::String_var tmp;
- hdr_status = hdr_status && input.read_string (tmp.inout ());
-
- request.operation (tmp._retn (),
- 0,
- 1 /* TAO_ServerRequest owns string */);
+ // Do not include NULL character at the end.
+ // @@ This is not getting demarshaled using the codeset
+ // translators!
+
+ // Notice that there are no memory allocations involved
+ // here!
+ request.operation (input.rd_ptr (),
+ length - 1,
+ 0 /* TAO_ServerRequest does NOT own string */);
+ hdr_status = input.skip_bytes (length);
}
if (hdr_status)
diff --git a/TAO/tao/GIOP_Message_Generator_Parser_12.cpp b/TAO/tao/GIOP_Message_Generator_Parser_12.cpp
index 9ea95da50fc..6e22db33b79 100644
--- a/TAO/tao/GIOP_Message_Generator_Parser_12.cpp
+++ b/TAO/tao/GIOP_Message_Generator_Parser_12.cpp
@@ -258,7 +258,6 @@ TAO_GIOP_Message_Generator_Parser_12::parse_request_header (
TAO_ServerRequest &request
)
{
-
// Get the input CDR in the request class
TAO_InputCDR& input = request.incoming ();
@@ -286,39 +285,22 @@ TAO_GIOP_Message_Generator_Parser_12::parse_request_header (
hdr_status =
hdr_status && request.profile ().unmarshall_target_address(input);
- if (input.char_translator () == 0)
- {
- CORBA::ULong length = 0;
- hdr_status = hdr_status && input.read_ulong (length);
+ CORBA::ULong length = 0;
+ hdr_status = hdr_status && input.read_ulong (length);
- if (hdr_status)
- {
- // Do not include NULL character at the end.
- // @@ This is not getting demarshaled using the codeset
- // translators!
+ if (hdr_status)
+ {
+ // Do not include NULL character at the end.
+ // @@ This is not getting demarshaled using the codeset
+ // translators!
- // Notice that there are no memory allocations involved
- // here!
+ // Notice that there are no memory allocations involved
+ // here!
- request.operation (input.rd_ptr (),
- length - 1,
- 0 /* TAO_ServerRequest does NOT own string */);
- hdr_status = input.skip_bytes (length);
- }
- }
- else
- {
- // @@ We could optimize for this case too, i.e. do in-place
- // demarshaling of the string... But there is an issue
- // pending on the OMG as to whether the operation should be
- // sent in the connection negotiated codeset or always in
- // ISO8859-1.
- CORBA::String_var tmp;
- hdr_status = hdr_status && input.read_string (tmp.inout ());
-
- request.operation (tmp._retn (),
- 0,
- 1 /* TAO_ServerRequest owns string */);
+ request.operation (input.rd_ptr (),
+ length - 1,
+ 0 /* TAO_ServerRequest does NOT own string */);
+ hdr_status = input.skip_bytes (length);
}
// Tear out the service context ... we currently ignore it, but it
diff --git a/TAO/tao/GIOP_Message_Lite.cpp b/TAO/tao/GIOP_Message_Lite.cpp
index b45949e5ac8..49d7f732cfb 100644
--- a/TAO/tao/GIOP_Message_Lite.cpp
+++ b/TAO/tao/GIOP_Message_Lite.cpp
@@ -14,6 +14,7 @@
#include "tao/Leader_Follower.h"
#include "tao/LF_Strategy.h"
#include "tao/Transport.h"
+#include "tao/Codeset_Manager.h"
#if !defined (__ACE_INLINE__)
# include "tao/GIOP_Message_Lite.i"
@@ -512,9 +513,9 @@ TAO_GIOP_Message_Lite::process_request_message (TAO_Transport *transport,
this->orb_core_->output_cdr_msgblock_allocator (),
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
qd->major_version_,
- qd->minor_version_,
- this->orb_core_->to_iso8859 (),
- this->orb_core_->to_unicode ());
+ qd->minor_version_);
+
+ transport->assign_translators(0,&output);
// Get the read and write positions before we steal data.
size_t rd_pos = qd->msg_block_->rd_ptr () - qd->msg_block_->base ();
@@ -712,6 +713,9 @@ TAO_GIOP_Message_Lite::process_request (TAO_Transport *transport,
parse_error =
this->parse_request_header (request);
+ request.orb_core()->codeset_manager()->process_service_context(request);
+ transport->assign_translators(&cdr,&output);
+
// Throw an exception if the
if (parse_error != 0)
ACE_TRY_THROW (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE,
@@ -1397,9 +1401,9 @@ TAO_GIOP_Message_Lite::send_reply_exception (
orb_core->output_cdr_msgblock_allocator (),
orb_core->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- orb_core->to_iso8859 (),
- orb_core->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
+
+ transport->assign_translators(0,&output);
// Make the GIOP & reply header. They are version specific.
TAO_Pluggable_Reply_Params reply_params (orb_core);
diff --git a/TAO/tao/IIOP_Acceptor.cpp b/TAO/tao/IIOP_Acceptor.cpp
index 6ee802ec065..87758d9c7b4 100644
--- a/TAO/tao/IIOP_Acceptor.cpp
+++ b/TAO/tao/IIOP_Acceptor.cpp
@@ -1,4 +1,3 @@
-
// This may look like C, but it's really -*- C++ -*-
// $Id$
@@ -9,6 +8,7 @@
#include "tao/Server_Strategy_Factory.h"
#include "tao/debug.h"
#include "tao/Protocols_Hooks.h"
+#include "tao/Codeset_Manager.h"
#include "ace/Auto_Ptr.h"
@@ -147,12 +147,8 @@ TAO_IIOP_Acceptor::create_new_profile (const TAO_ObjectKey &object_key,
pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set =
- TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set =
- TAO_DEFAULT_WCHAR_CODESET_ID;
- pfile->tagged_components ().set_code_sets (code_set_info);
+ this->orb_core_->codeset_manager()->
+ set_codeset(pfile->tagged_components());
}
return 0;
@@ -207,13 +203,8 @@ TAO_IIOP_Acceptor::create_shared_profile (const TAO_ObjectKey &object_key,
&& (this->version_.major >= 1 && this->version_.minor >= 1))
{
iiop_profile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
-
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set =
- TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set =
- TAO_DEFAULT_WCHAR_CODESET_ID;
- iiop_profile->tagged_components ().set_code_sets (code_set_info);
+ this->orb_core_->codeset_manager()->
+ set_codeset(iiop_profile->tagged_components());
}
index = 1;
@@ -967,7 +958,7 @@ TAO_IIOP_Acceptor::init_tcp_properties (void)
tph->call_server_protocols_hook (send_buffer_size,
recv_buffer_size,
no_delay,
- enable_network_priority,
+ enable_network_priority,
protocol_type);
if (hook_return == -1)
diff --git a/TAO/tao/IIOP_Profile.cpp b/TAO/tao/IIOP_Profile.cpp
index 9f2385ee76c..bab1a8cb940 100644
--- a/TAO/tao/IIOP_Profile.cpp
+++ b/TAO/tao/IIOP_Profile.cpp
@@ -433,10 +433,7 @@ TAO_IIOP_Profile::encode (TAO_OutputCDR &stream) const
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
-
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
@@ -467,9 +464,7 @@ TAO_IIOP_Profile::create_tagged_profile (void)
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index 7b42e6c0828..c392e3808ba 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -221,6 +221,8 @@ TAO_IIOP_Transport::send_request (TAO_Stub *stub,
max_wait_time) == -1)
return -1;
+ this->first_request_sent();
+
return this->idle_after_send ();
}
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index f1c3531f4c2..a24fa3e9ddf 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -22,6 +22,7 @@
#include "Endpoint_Selector_Factory.h"
#include "Invocation_Endpoint_Selectors.h"
#include "TAOC.h"
+#include "Codeset_Manager.h"
#include "ace/Auto_Ptr.h"
@@ -122,9 +123,7 @@ TAO_GIOP_Invocation::TAO_GIOP_Invocation (TAO_Stub *stub,
orb_core->output_cdr_msgblock_allocator (),
orb_core->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- orb_core->to_iso8859 (),
- orb_core->to_unicode ()),
+ TAO_DEF_GIOP_MINOR),
orb_core_ (orb_core),
transport_ (0),
endpoint_selector_ (0),
@@ -309,6 +308,9 @@ TAO_GIOP_Invocation::perform_call (TAO_Transport_Descriptor_Interface &desc
// Set the giop version of the out stream
this->out_stream_.set_version (version.major, version.minor);
+ this->orb_core_->codeset_manager()->
+ set_tcs(*this->profile_,*this->transport_);
+
if (result == -1)
{
if (TAO_debug_level > 0)
@@ -398,6 +400,8 @@ TAO_GIOP_Invocation::prepare_header (CORBA::Octet response_flags
{
ACE_THROW (CORBA::MARSHAL ());
}
+
+ this->transport_->assign_translators (0, &this->out_stream_);
}
// Send request.
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 332b6cc8add..ac897443eee 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -35,9 +35,9 @@
#include "Messaging_SyncScopeC.h"
#include "operation_details.h"
#include "target_specification.h"
+#include "Transport.h"
struct TAO_Exception_Data;
-class TAO_Transport;
class TAO_Stub;
class TAO_Transport_Descriptor_Interface;
class TAO_Endpoint;
diff --git a/TAO/tao/Invocation.i b/TAO/tao/Invocation.i
index 65b603408b0..487ba949d35 100644
--- a/TAO/tao/Invocation.i
+++ b/TAO/tao/Invocation.i
@@ -158,6 +158,7 @@ TAO_GIOP_Synch_Invocation::TAO_GIOP_Synch_Invocation (
ACE_INLINE TAO_InputCDR &
TAO_GIOP_Synch_Invocation::inp_stream (void)
{
+ this->transport_->assign_translators(&this->rd_.reply_cdr(),0);
return this->rd_.reply_cdr ();
}
diff --git a/TAO/tao/Makefile.tao b/TAO/tao/Makefile.tao
index d38c624ae56..2a0b1efa0ad 100644
--- a/TAO/tao/Makefile.tao
+++ b/TAO/tao/Makefile.tao
@@ -198,6 +198,8 @@ ORB_CORE_FILES = \
DynamicC \
OctetSeqC \
StringSeqC \
+ Codeset_Manager \
+ Codeset_Translator_Factory \
ORB_Core \
ORB_Core_Auto_Ptr \
Collocation_Resolver \
@@ -349,6 +351,7 @@ ifndef TAO_COMPONENTS
Default_Resources \
Interpretive_Marshaling \
IDL_Compiler \
+ Codeset_Manager \
ORB_Core \
Dynamic_Any \
Ft_Corba \
@@ -374,6 +377,10 @@ ifneq (,$(findstring IDL_Compiler,$(TAO_COMPONENTS)))
FILES += $(IDL_COMPILER_FILES)
endif # IDL_Compiler
+ifneq (,$(findstring Codeset_Manager,$(TAO_COMPONENTS)))
+ FILES += $(Codeset_Manager)
+endif # CODE_SET_MANAGER
+
ifneq (,$(findstring ORB_Core,$(TAO_COMPONENTS)))
FILES += $(ORB_CORE_FILES)
endif # ORB_Core
diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp
index 4e3c7b67f6b..893fd4f9d64 100644
--- a/TAO/tao/ORB.cpp
+++ b/TAO/tao/ORB.cpp
@@ -1625,17 +1625,18 @@ CORBA::ORB::object_to_string (CORBA::Object_ptr obj
char buf [ACE_CDR::DEFAULT_BUFSIZE];
#endif /* ACE_HAS_PURIFY */
- TAO_OutputCDR cdr (buf,
- sizeof buf,
+ TAO_OutputCDR cdr (buf, sizeof buf,
TAO_ENCAP_BYTE_ORDER,
this->orb_core_->output_cdr_buffer_allocator (),
this->orb_core_->output_cdr_dblock_allocator (),
this->orb_core_->output_cdr_msgblock_allocator (),
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core_->to_iso8859 (),
- this->orb_core_->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
+
+ // There is no translator currently available for stringifying an object
+ // reference, since there is no transport with which to choose an NCS/TCS
+ // pair.
// support limited oref ACE_OS::strcmp.
(void) ACE_OS::memset (buf, 0, sizeof (buf));
diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp
index b2231907996..fe71e8837eb 100644
--- a/TAO/tao/ORB_Core.cpp
+++ b/TAO/tao/ORB_Core.cpp
@@ -52,9 +52,7 @@
#include "ace/Arg_Shifter.h"
#include "ace/Argv_Type_Converter.h"
-#if defined(ACE_MVS)
-#include "ace/Codeset_IBM1047.h"
-#endif /* ACE_MVS */
+#include "Codeset_Manager.h"
#if !defined (__ACE_INLINE__)
# include "ORB_Core.i"
@@ -169,10 +167,6 @@ TAO_ORB_Core::TAO_ORB_Core (const char *orbid)
adapter_registry_ (this),
poa_adapter_ (0),
tm_ (),
- from_iso8859_ (0),
- to_iso8859_ (0),
- from_unicode_ (0),
- to_unicode_ (0),
tss_cleanup_funcs_ (),
tss_resources_ (),
orb_resources_ (),
@@ -199,13 +193,9 @@ TAO_ORB_Core::TAO_ORB_Core (const char *orbid)
parser_registry_ (),
bidir_adapter_ (0),
bidir_giop_policy_ (0),
- flushing_strategy_ (0)
+ flushing_strategy_ (0),
+ codeset_manager_ (0)
{
-#if defined(ACE_MVS)
- ACE_NEW (this->from_iso8859_, ACE_IBM1047_ISO8859);
- ACE_NEW (this->to_iso8859_, ACE_IBM1047_ISO8859);
-#endif /* ACE_MVS */
-
#if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
ACE_NEW (this->eager_buffering_sync_strategy_,
@@ -245,9 +235,6 @@ TAO_ORB_Core::~TAO_ORB_Core (void)
ACE_OS::free (this->orbid_);
- delete this->from_iso8859_;
- delete this->to_iso8859_;
-
#if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
delete this->eager_buffering_sync_strategy_;
@@ -878,6 +865,21 @@ TAO_ORB_Core::init (int &argc, char *argv[] ACE_ENV_ARG_DECL)
-1);
}
+
+ this->codeset_manager_ = trf->get_codeset_manager();
+ if (this->codeset_manager_ == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) %p\n"),
+ ACE_TEXT ("ORB Core unable to initialize codeset_manager")));
+ ACE_THROW_RETURN (CORBA::INITIALIZE (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_ORB_CORE_INIT_LOCATION_CODE,
+ 0),
+ CORBA::COMPLETED_NO),
+ -1);
+ }
+
// @@ ????
// Make sure the reactor is initialized...
ACE_Reactor *reactor = this->reactor ();
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index db54a0caf3c..71b78d222f2 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -80,6 +80,9 @@ class TAO_Service_Context;
class TAO_POA_PortableGroup_Hooks;
class TAO_Request_Dispatcher;
+class TAO_Codeset_Manager;
+
+
#if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
class TAO_Buffering_Constraint_Policy;
@@ -919,6 +922,9 @@ public:
*/
TAO_Flushing_Strategy *flushing_strategy (void);
+ /// Get Code Set Manager
+ TAO_Codeset_Manager *codeset_manager (void);
+
typedef ACE_Hash_Map_Manager_Ex<ACE_CString, ACE_CString, ACE_Hash<ACE_CString>, ACE_Equal_To<ACE_CString>, ACE_Null_Mutex> InitRefMap;
/// Return a pointer to the -ORBInitRef map.
@@ -1154,15 +1160,6 @@ protected:
/// The data block reference counts are locked using this mutex
ACE_Lock_Adapter<TAO_SYNCH_MUTEX> data_block_lock_;
-
- /// Codeset translators for simple implementations.
- //@{
- ACE_Char_Codeset_Translator *from_iso8859_;
- ACE_Char_Codeset_Translator *to_iso8859_;
- ACE_WChar_Codeset_Translator *from_unicode_;
- ACE_WChar_Codeset_Translator *to_unicode_;
- //@}
-
/// TSS Object cleanup functions. These correspond to the TSS
/// objects stored in TAO's TSS resources.
TAO_Cleanup_Func_Registry tss_cleanup_funcs_;
@@ -1241,6 +1238,10 @@ protected:
/// Hold the flushing strategy
TAO_Flushing_Strategy *flushing_strategy_;
+
+ /// Code Set Manager
+ TAO_Codeset_Manager *codeset_manager_;
+
};
// ****************************************************************
diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i
index ce46ef7f0bb..0bc65fe7e2b 100644
--- a/TAO/tao/ORB_Core.i
+++ b/TAO/tao/ORB_Core.i
@@ -236,31 +236,13 @@ TAO_ORB_Core::policy_factory_registry (void)
}
-#undef TAO_OC_RETRIEVE
-
-ACE_INLINE ACE_Char_Codeset_Translator *
-TAO_ORB_Core::from_iso8859 (void) const
-{
- return this->from_iso8859_;
-}
-
-ACE_INLINE ACE_Char_Codeset_Translator *
-TAO_ORB_Core::to_iso8859 (void) const
+ACE_INLINE TAO_Codeset_Manager *
+TAO_ORB_Core::codeset_manager()
{
- return this->to_iso8859_;
+ return this->codeset_manager_;
}
-ACE_INLINE ACE_WChar_Codeset_Translator *
-TAO_ORB_Core::from_unicode (void) const
-{
- return this->from_unicode_;
-}
-
-ACE_INLINE ACE_WChar_Codeset_Translator *
-TAO_ORB_Core::to_unicode (void) const
-{
- return this->to_unicode_;
-}
+#undef TAO_OC_RETRIEVE
#if (TAO_HAS_CORBA_MESSAGING == 1)
diff --git a/TAO/tao/Resource_Factory.cpp b/TAO/tao/Resource_Factory.cpp
index 22e921674a8..2334a75605e 100644
--- a/TAO/tao/Resource_Factory.cpp
+++ b/TAO/tao/Resource_Factory.cpp
@@ -8,6 +8,7 @@
#include "tao/Protocol_Factory.h"
#include "tao/ORB_Core.h"
#include "tao/Client_Strategy_Factory.h"
+#include "tao/Codeset_Translator_Factory.h"
ACE_RCSID (tao,
Resource_Factory,
@@ -48,6 +49,42 @@ TAO_Protocol_Item::factory (TAO_Protocol_Factory *factory,
this->factory_owner_ = owner;
}
+// Codeset Item
+TAO_Codeset_Item::TAO_Codeset_Item (const ACE_CString &name)
+ : name_ (name),
+ factory_ (0),
+ factory_owner_ (0)
+{
+}
+
+TAO_Codeset_Item::~TAO_Codeset_Item (void)
+{
+ if (this->factory_owner_ == 1)
+ delete this->factory_;
+}
+
+const ACE_CString &
+TAO_Codeset_Item::codeset_name (void)
+{
+ return this->name_;
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Codeset_Item::factory (void)
+{
+ return this->factory_;
+}
+
+void
+TAO_Codeset_Item::factory (TAO_Codeset_Translator_Factory *factory,
+ int owner)
+{
+ this->factory_ = factory;
+ this->factory_owner_ = owner;
+}
+
+// End of Codeset Item Class
+
TAO_Resource_Factory::TAO_Resource_Factory (void)
{
@@ -144,6 +181,26 @@ TAO_Resource_Factory::get_protocol_factories (void)
return 0;
}
+TAO_Codeset_Manager *
+TAO_Resource_Factory::get_codeset_manager (void)
+{
+ return 0;
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Resource_Factory::get_char_translator (CONV_FRAME::CodeSetId ,
+ CONV_FRAME::CodeSetId )
+{
+ return 0;
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Resource_Factory::get_wchar_translator (CONV_FRAME::CodeSetId ,
+ CONV_FRAME::CodeSetId )
+{
+ return 0;
+}
+
int
TAO_Resource_Factory::init_protocol_factories (void)
{
@@ -199,14 +256,25 @@ TAO_Resource_Factory::load_default_protocols (void)
template class ACE_Dynamic_Service<TAO_Resource_Factory>;
template class ACE_Node<TAO_Protocol_Item*>;
+///
+template class ACE_Node<TAO_Codeset_Item*>;
+///
template class ACE_Unbounded_Set<TAO_Protocol_Item*>;
template class ACE_Unbounded_Set_Iterator<TAO_Protocol_Item*>;
+///
+template class ACE_Unbounded_Set<TAO_Codeset_Item*>;
+template class ACE_Unbounded_Set_Iterator<TAO_Codeset_Item*>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Dynamic_Service<TAO_Resource_Factory>
#pragma instantiate ACE_Node<TAO_Protocol_Item*>
+///
+#pragma instantiate ACE_Node<TAO_Codeset_Item*>
+///
#pragma instantiate ACE_Unbounded_Set<TAO_Protocol_Item*>
#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_Protocol_Item*>
+#pragma instantiate ACE_Unbounded_Set<TAO_Codeset_Item*>
+#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_Codeset_Item*>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/Resource_Factory.h b/TAO/tao/Resource_Factory.h
index 3cf5e3d286e..9b0f2fa8de5 100644
--- a/TAO/tao/Resource_Factory.h
+++ b/TAO/tao/Resource_Factory.h
@@ -25,6 +25,7 @@
#include "tao/TAO_Export.h"
#include "ace/Unbounded_Set.h"
+#include "CONV_FRAMEC.h"
#include "ace/SString.h"
class TAO_Protocol_Factory;
@@ -35,8 +36,11 @@ class TAO_Flushing_Strategy;
class TAO_Connection_Purging_Strategy;
class TAO_LF_Strategy;
+class TAO_Codeset_Manager;
class ACE_Lock;
+class TAO_Codeset_Translator_Factory;
+
// ****************************************************************
class TAO_Export TAO_Protocol_Item
@@ -76,6 +80,47 @@ private:
int factory_owner_;
};
+// ****************************************************************
+
+class TAO_Export TAO_Codeset_Item
+{
+public:
+ /// creator method, the codeset name can only be set when the
+ /// object is created.
+ TAO_Codeset_Item (const ACE_CString &name);
+
+ /// destructor that deallocates the factory object if the
+ /// CodeSet_Item retains ownership.
+ ~TAO_Codeset_Item (void);
+
+ /// return a reference to the character representation of the codeset
+ /// factories name.
+ const ACE_CString &codeset_name (void);
+
+ /// return a pointer to the codeset factory.
+ TAO_Codeset_Translator_Factory *factory (void);
+
+ /// set the factory pointer's value.
+ void factory (TAO_Codeset_Translator_Factory *factory, int owner = 0);
+
+private:
+ // Prohibited
+ ACE_UNIMPLEMENTED_FUNC (TAO_Codeset_Item (const TAO_Codeset_Item&))
+ ACE_UNIMPLEMENTED_FUNC (void operator= (const TAO_Codeset_Item&))
+
+private:
+ /// protocol factory name.
+ ACE_CString name_;
+
+ /// pointer to factory object.
+ TAO_Codeset_Translator_Factory *factory_;
+
+ /// whether we own (and therefore have to delete) the factory object.
+ int factory_owner_;
+};
+
+// typedefs for containers containing the list of loaded protocol
+
// typedefs for containers containing the list of loaded protocol
// factories.
typedef ACE_Unbounded_Set<TAO_Protocol_Item*>
@@ -84,6 +129,16 @@ typedef ACE_Unbounded_Set<TAO_Protocol_Item*>
typedef ACE_Unbounded_Set_Iterator<TAO_Protocol_Item*>
TAO_ProtocolFactorySetItor;
+// Added by Mahesh
+// typedefs for containers containing the list of codesets
+// factories for character and wide character.
+typedef ACE_Unbounded_Set<TAO_Codeset_Item*>
+ TAO_CodesetFactorySet;
+
+// Iterators
+typedef ACE_Unbounded_Set_Iterator<TAO_Codeset_Item*>
+ TAO_CodesetFactorySetItor;
+
// ****************************************************************
/**
@@ -163,6 +218,15 @@ public:
*/
virtual TAO_ProtocolFactorySet *get_protocol_factories (void);
+ virtual TAO_Codeset_Manager *get_codeset_manager(void);
+
+ // Get the translators for Char/Wchar Codesets
+ virtual TAO_Codeset_Translator_Factory *get_char_translator (CONV_FRAME::CodeSetId theNcs,
+ CONV_FRAME::CodeSetId theTcs);
+
+ virtual TAO_Codeset_Translator_Factory *get_wchar_translator (CONV_FRAME::CodeSetId theNcs,
+ CONV_FRAME::CodeSetId theTcs);
+
/**
* this method will loop through the protocol list and
* using the protocol name field this method will
diff --git a/TAO/tao/Strategies/DIOP_Acceptor.cpp b/TAO/tao/Strategies/DIOP_Acceptor.cpp
index 4052ad5ce34..feef167fcb2 100644
--- a/TAO/tao/Strategies/DIOP_Acceptor.cpp
+++ b/TAO/tao/Strategies/DIOP_Acceptor.cpp
@@ -10,6 +10,7 @@
#include "tao/ORB_Core.h"
#include "tao/debug.h"
#include "tao/Protocols_Hooks.h"
+#include "tao/Codeset_Manager.h"
#include "ace/Auto_Ptr.h"
@@ -111,12 +112,8 @@ TAO_DIOP_Acceptor::create_new_profile (const TAO_ObjectKey &object_key,
pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set =
- TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set =
- TAO_DEFAULT_WCHAR_CODESET_ID;
- pfile->tagged_components ().set_code_sets (code_set_info);
+ this->orb_core_->codeset_manager()->
+ set_codeset(pfile->tagged_components());
}
return 0;
@@ -168,13 +165,8 @@ TAO_DIOP_Acceptor::create_shared_profile (const TAO_ObjectKey &object_key,
&& (this->version_.major >= 1 && this->version_.minor >= 1))
{
iiop_profile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
-
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set =
- TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set =
- TAO_DEFAULT_WCHAR_CODESET_ID;
- iiop_profile->tagged_components ().set_code_sets (code_set_info);
+ this->orb_core_->codeset_manager()->
+ set_codeset(iiop_profile->tagged_components());
}
index = 1;
diff --git a/TAO/tao/Strategies/DIOP_Profile.cpp b/TAO/tao/Strategies/DIOP_Profile.cpp
index 27c3457526f..c015bbb1512 100644
--- a/TAO/tao/Strategies/DIOP_Profile.cpp
+++ b/TAO/tao/Strategies/DIOP_Profile.cpp
@@ -431,10 +431,7 @@ TAO_DIOP_Profile::encode (TAO_OutputCDR &stream) const
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
-
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
@@ -465,9 +462,7 @@ TAO_DIOP_Profile::create_tagged_profile (void)
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
diff --git a/TAO/tao/Strategies/DIOP_Transport.cpp b/TAO/tao/Strategies/DIOP_Transport.cpp
index 82274b7cec7..ea03fd05281 100644
--- a/TAO/tao/Strategies/DIOP_Transport.cpp
+++ b/TAO/tao/Strategies/DIOP_Transport.cpp
@@ -268,6 +268,7 @@ TAO_DIOP_Transport::send_request (TAO_Stub *stub,
max_wait_time) == -1)
return -1;
+ this->first_request_sent();
return 0;
}
diff --git a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
index 2072e61a650..b8995dcf2d0 100644
--- a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
@@ -10,6 +10,7 @@
#include "tao/ORB_Core.h"
#include "tao/Server_Strategy_Factory.h"
#include "tao/debug.h"
+#include "tao/Codeset_Manager.h"
#if !defined(__ACE_INLINE__)
#include "SHMIOP_Acceptor.i"
@@ -128,13 +129,8 @@ TAO_SHMIOP_Acceptor::create_new_profile (const TAO_ObjectKey &object_key,
return 0;
pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
-
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set =
- TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set =
- TAO_DEFAULT_WCHAR_CODESET_ID;
- pfile->tagged_components ().set_code_sets (code_set_info);
+ this->orb_core_->codeset_manager()->
+ set_codeset(pfile->tagged_components());
return 0;
}
diff --git a/TAO/tao/Strategies/SHMIOP_Profile.cpp b/TAO/tao/Strategies/SHMIOP_Profile.cpp
index dd0cca3adec..73953e5ec1b 100644
--- a/TAO/tao/Strategies/SHMIOP_Profile.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Profile.cpp
@@ -445,9 +445,7 @@ TAO_SHMIOP_Profile::encode (TAO_OutputCDR &stream) const
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
this->create_profile_body (encap);
@@ -475,9 +473,7 @@ TAO_SHMIOP_Profile::create_tagged_profile (void)
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
diff --git a/TAO/tao/Strategies/SHMIOP_Transport.cpp b/TAO/tao/Strategies/SHMIOP_Transport.cpp
index 2e48ec4e8e7..4151467e50f 100644
--- a/TAO/tao/Strategies/SHMIOP_Transport.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Transport.cpp
@@ -243,6 +243,7 @@ TAO_SHMIOP_Transport::send_request (TAO_Stub *stub,
max_wait_time) == -1)
return -1;
+ this->first_request_sent();
return this->idle_after_send ();
}
diff --git a/TAO/tao/Strategies/UIOP_Acceptor.cpp b/TAO/tao/Strategies/UIOP_Acceptor.cpp
index 3cb769777e0..b86a92d8e55 100644
--- a/TAO/tao/Strategies/UIOP_Acceptor.cpp
+++ b/TAO/tao/Strategies/UIOP_Acceptor.cpp
@@ -26,6 +26,7 @@
#include "tao/Server_Strategy_Factory.h"
#include "tao/debug.h"
#include "tao/Protocols_Hooks.h"
+#include "tao/Codeset_Manager.h"
ACE_RCSID(Strategies, UIOP_Acceptor, "$Id$")
@@ -138,12 +139,8 @@ TAO_UIOP_Acceptor::create_new_profile (const TAO_ObjectKey &object_key,
return 0;
pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
-
- CONV_FRAME::CodeSetComponentInfo code_set_info;
- code_set_info.ForCharData.native_code_set = TAO_DEFAULT_CHAR_CODESET_ID;
- code_set_info.ForWcharData.native_code_set = TAO_DEFAULT_WCHAR_CODESET_ID;
- pfile->tagged_components ().set_code_sets (code_set_info);
-
+ this->orb_core_->codeset_manager()->
+ set_codeset (pfile->tagged_components());
return 0;
}
@@ -564,7 +561,7 @@ TAO_UIOP_Acceptor::init_uiop_properties (void)
tph->call_server_protocols_hook (send_buffer_size,
recv_buffer_size,
no_delay,
- enable_network_priority,
+ enable_network_priority,
protocol_type);
if(hook_result == -1)
diff --git a/TAO/tao/Strategies/UIOP_Profile.cpp b/TAO/tao/Strategies/UIOP_Profile.cpp
index 21ebcdf9639..1ed25209681 100644
--- a/TAO/tao/Strategies/UIOP_Profile.cpp
+++ b/TAO/tao/Strategies/UIOP_Profile.cpp
@@ -386,9 +386,7 @@ TAO_UIOP_Profile::encode (TAO_OutputCDR &stream) const
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
@@ -417,9 +415,7 @@ TAO_UIOP_Profile::create_tagged_profile (void)
this->orb_core ()->output_cdr_msgblock_allocator (),
this->orb_core ()->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core ()->to_iso8859 (),
- this->orb_core ()->to_unicode ());
+ TAO_DEF_GIOP_MINOR);
// Create the profile body
this->create_profile_body (encap);
diff --git a/TAO/tao/Strategies/UIOP_Transport.cpp b/TAO/tao/Strategies/UIOP_Transport.cpp
index 14823585184..3270f94f012 100644
--- a/TAO/tao/Strategies/UIOP_Transport.cpp
+++ b/TAO/tao/Strategies/UIOP_Transport.cpp
@@ -171,6 +171,7 @@ TAO_UIOP_Transport::send_request (TAO_Stub *stub,
max_wait_time) == -1)
return -1;
+ this->first_request_sent();
return this->idle_after_send ();
}
diff --git a/TAO/tao/TAO_Server_Request.cpp b/TAO/tao/TAO_Server_Request.cpp
index 91fb8546c6a..3e7fd522490 100644
--- a/TAO/tao/TAO_Server_Request.cpp
+++ b/TAO/tao/TAO_Server_Request.cpp
@@ -185,6 +185,7 @@ TAO_ServerRequest::init_reply (void)
ACE_TEXT ("encoding forwarded objref failed\n")));
}
}
+ this->transport_->assign_translators (0,this->outgoing_);
}
void
@@ -280,8 +281,6 @@ TAO_ServerRequest::tao_send_reply_exception (CORBA::Exception &ex)
}
// Create a new output CDR stream
-
-#if 0
#if defined(ACE_HAS_PURIFY)
// Only inititialize the buffer if we're compiling with Purify.
// Otherwise, there is no real need to do so, especially since
@@ -299,11 +298,9 @@ TAO_ServerRequest::tao_send_reply_exception (CORBA::Exception &ex)
this->orb_core_->output_cdr_msgblock_allocator (),
this->orb_core_->orb_params ()->cdr_memcpy_tradeoff (),
TAO_DEF_GIOP_MAJOR,
- TAO_DEF_GIOP_MINOR,
- this->orb_core_->to_iso8859 (),
- this->orb_core_->to_unicode ());*/
-#endif /* 0 */
+ TAO_DEF_GIOP_MINOR);
+ this->transport_->assign_translators(0,&output);
// Make the reply message
if (this->mesg_base_->generate_exception_reply (*this->outgoing_,
reply_params,
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index 36b7dc96799..6074fa466eb 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -24,6 +24,8 @@
#include "ace/Message_Block.h"
#include "ace/Reactor.h"
+#include "Codeset_Manager.h"
+
#if !defined (__ACE_INLINE__)
# include "Transport.inl"
#endif /* __ACE_INLINE__ */
@@ -111,6 +113,11 @@ TAO_Transport::TAO_Transport (CORBA::ULong tag,
, handler_lock_ (orb_core->resource_factory ()->create_cached_connection_lock ())
, id_ ((long) this)
, purging_order_ (0)
+ , char_translator_ (0)
+ , wchar_translator_ (0)
+ , tcs_set_ (0)
+ , first_request_ (1)
+ , wchar_allowed_ (0)
{
TAO_Client_Strategy_Factory *cf =
this->orb_core_->client_factory ();
@@ -304,6 +311,12 @@ TAO_Transport::generate_request_header (
TAO_Target_Specification &spec,
TAO_OutputCDR &output)
{
+ // codeset service context is only supposed to be sent in the first request
+ // on a particular connection.
+ if (this->first_request_)
+ this->orb_core()->codeset_manager()->
+ generate_service_context( opdetails, *this );
+
if (this->messaging_object ()->generate_request_header (opdetails,
spec,
output) == -1)
@@ -2195,6 +2208,29 @@ TAO_Transport::transport_cache_manager (void)
return this->orb_core_->lane_resources ().transport_cache ();
}
+
+ACE_INLINE void
+TAO_Transport::assign_translators (TAO_InputCDR *inp, TAO_OutputCDR *outp)
+{
+ if (this->char_translator_)
+ {
+ this->char_translator_->assign (inp);
+ this->char_translator_->assign (outp);
+ }
+ if (this->wchar_translator_)
+ {
+ this->wchar_translator_->assign (inp);
+ this->wchar_translator_->assign (outp);
+ }
+ else
+ {
+ if (inp) inp->wchar_allowed(this->wchar_allowed_);
+ if (outp) outp->wchar_allowed(this->wchar_allowed_);
+ }
+}
+
+
+
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Reverse_Lock<ACE_Lock>;
diff --git a/TAO/tao/Transport.h b/TAO/tao/Transport.h
index 601ae068fed..d7a2e2231f3 100644
--- a/TAO/tao/Transport.h
+++ b/TAO/tao/Transport.h
@@ -29,6 +29,9 @@
#include "Incoming_Message_Queue.h"
#include "Synch_Refcountable.h"
+#include "CONV_FRAMEC.h"
+#include "Codeset_Translator_Factory.h"
+
class TAO_ORB_Core;
class TAO_Target_Specification;
class TAO_Operation_Details;
@@ -371,8 +374,6 @@ public:
size_t len,
const ACE_Time_Value *timeout = 0);
-
-
/**
* @name Control connection lifecycle
*
@@ -767,6 +768,38 @@ public:
int handle_timeout (const ACE_Time_Value &current_time,
const void* act);
+ /// CodeSet Negotiation - Get the char codeset translator factory
+ ///
+ TAO_Codeset_Translator_Factory *char_translator (void) const;
+
+ /// CodeSet Negotiation - Get the wchar codeset translator factory
+ ///
+ TAO_Codeset_Translator_Factory *wchar_translator (void) const;
+
+ /// CodeSet negotiation - Set the char codeset translator factory
+ ///
+ void char_translator (TAO_Codeset_Translator_Factory *);
+
+ /// CodeSet negotiation - Set the wchar codeset translator factory
+ ///
+ void wchar_translator (TAO_Codeset_Translator_Factory *);
+
+ /// Inform the transport that wchar marshalling is allowed even if there is
+ /// no tranlator. It could be true that no translator is used because the
+ /// NCS-W for both sides match. But it is also true that no translator is
+ /// available because the other side did not define a codeset for wchars.
+ void wchar_allowed (CORBA::Boolean );
+
+ /// Use the Transport's codeset factories to set the translator for input
+ /// and output CDRs.
+ void assign_translators (TAO_InputCDR *, TAO_OutputCDR *);
+
+ /// Return true if the tcs has been set
+ ///
+ CORBA::Boolean is_tcs_set() const;
+
+ /// Set the state of the first_request_ flag to 0
+ void first_request_sent();
private:
/// Helper method that returns the Transport Cache Manager.
@@ -979,6 +1012,26 @@ protected:
/// Used by the LRU, LFU and FIFO Connection Purging Strategies.
unsigned long purging_order_;
+
+private:
+ /// Additional member values required to support codeset translation
+ TAO_Codeset_Translator_Factory *char_translator_;
+ TAO_Codeset_Translator_Factory *wchar_translator_;
+
+ /// The tcs_set_ flag indicates that negotiation has occured and so the
+ /// translators are correct, since a null translator is valid if both ends
+ /// are using the same codeset, whatever that codeset might be.
+ CORBA::Boolean tcs_set_;
+ /// First_request_ is true until the first request is sent or received. This
+ /// is necessary since codeset context information is necessary only on the
+ /// first request. After that, the translators are fixed for the life of the
+ /// connection.
+ CORBA::Boolean first_request_;
+ /// Wchar data is only permitted when both sides explicitly declare a wchar
+ /// codeset and a translator exists on one side or the other to convert
+ /// between them. Again, this is necessary since a null wchar_translator is
+ /// perfectly valid.
+ CORBA::Boolean wchar_allowed_;
};
/**
diff --git a/TAO/tao/Transport.inl b/TAO/tao/Transport.inl
index 354ae85641a..7b914649c67 100644
--- a/TAO/tao/Transport.inl
+++ b/TAO/tao/Transport.inl
@@ -119,6 +119,59 @@ TAO_Transport::check_event_handler_i (const char *caller)
return 0;
}
+//********************************************************************
+// codeset related methods
+
+
+ACE_INLINE TAO_Codeset_Translator_Factory *
+TAO_Transport::char_translator (void) const
+{
+ return this->char_translator_;
+}
+
+ACE_INLINE TAO_Codeset_Translator_Factory *
+TAO_Transport::wchar_translator (void) const
+{
+ return this->wchar_translator_;
+}
+
+ACE_INLINE void
+TAO_Transport::char_translator (TAO_Codeset_Translator_Factory *tf)
+{
+ this->char_translator_ = tf;
+ this->tcs_set_ = 1;
+}
+
+ACE_INLINE void
+TAO_Transport::wchar_translator (TAO_Codeset_Translator_Factory *tf)
+{
+ this->wchar_translator_ = tf;
+ if (tf)
+ this->wchar_allowed_ = 1;
+ this->tcs_set_ = 1;
+}
+
+ACE_INLINE void
+TAO_Transport::wchar_allowed (CORBA::Boolean allowed)
+{
+ this->wchar_allowed_ = allowed;
+}
+
+/// CodeSet negotiation
+ACE_INLINE CORBA::Boolean
+TAO_Transport::is_tcs_set(void) const
+{
+ return tcs_set_;
+}
+
+ACE_INLINE void
+TAO_Transport::first_request_sent (void)
+{
+ this->first_request_ = 0;
+}
+
+
+
/*****************************************************/
ACE_INLINE
TAO_Transport_Refcount_Guard::TAO_Transport_Refcount_Guard (TAO_Transport *t)
diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp
index 24c7cccf5a6..96ac941fc26 100644
--- a/TAO/tao/default_resource.cpp
+++ b/TAO/tao/default_resource.cpp
@@ -18,6 +18,8 @@
#include "tao/LRU_Connection_Purging_Strategy.h"
#include "tao/LF_Strategy_Complete.h"
+#include "tao/Codeset_Translator_Factory.h"
+#include "tao/Codeset_Manager.h"
#include "ace/TP_Reactor.h"
#include "ace/Dynamic_Service.h"
@@ -25,6 +27,7 @@
#include "ace/Auto_Ptr.h"
#include "ace/Memory_Pool.h"
#include "ace/Malloc.h"
+#include "ace/Codeset_Registry.h"
#if !defined (__ACE_INLINE__)
# include "tao/default_resource.i"
@@ -48,7 +51,12 @@ TAO_Default_Resource_Factory::TAO_Default_Resource_Factory (void)
options_processed_ (0),
factory_disabled_ (0),
cached_connection_lock_type_ (TAO_THREAD_LOCK),
- flushing_strategy_type_ (TAO_LEADER_FOLLOWER_FLUSHING)
+ flushing_strategy_type_ (TAO_LEADER_FOLLOWER_FLUSHING),
+ ncs_c_ (TAO_Codeset_Manager::default_char_codeset),
+ ncs_w_ (TAO_Codeset_Manager::default_wchar_codeset),
+ charcodeset_factories_ (),
+ wcharcodeset_factories_ (),
+ codeset_manager_ (0)
{
}
@@ -64,12 +72,30 @@ TAO_Default_Resource_Factory::~TAO_Default_Resource_Factory (void)
this->protocol_factories_.reset ();
+ // Cleanup the character map
+ TAO_CodesetFactorySetItor cf_end = this->charcodeset_factories_.end ();
+ TAO_CodesetFactorySetItor cf_iter = this->charcodeset_factories_.begin ();
+ for (;cf_iter != cf_end; ++cf_iter)
+ delete *cf_iter;
+
+ this->charcodeset_factories_.reset ();
+
+ // Cleanup the wide character map
+ cf_end = this->wcharcodeset_factories_.end ();
+ cf_iter = this->wcharcodeset_factories_.begin ();
+ for (;cf_iter != cf_end; ++cf_iter)
+ delete *cf_iter;
+
+ this->wcharcodeset_factories_.reset ();
+
for (int i = 0;
i < this->parser_names_count_;
++i)
CORBA::string_free (this->parser_names_[i]);
delete [] this->parser_names_;
+
+ delete this->codeset_manager_;
}
int
@@ -162,6 +188,106 @@ TAO_Default_Resource_Factory::init (int argc, ACE_TCHAR *argv[])
}
}
+ /// CodeSet Translators
+ else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBNativeCharCodeSet")) == 0)
+ {
+ curarg++;
+
+ ACE_CDR::ULong ncs;
+ if (ACE_Codeset_Registry::locale_to_registry(argv[curarg],ncs))
+ this->ncs_c_ = ncs;
+ else
+ {
+ char **endPtr =0;
+ ncs = ACE_OS_String::strtoul(ACE_TEXT_ALWAYS_CHAR(argv[curarg]), endPtr, 0);
+ // Validate the CodesetId
+ if (ACE_Codeset_Registry::get_max_bytes(ncs) == 0)
+ {
+ if (TAO_debug_level > 0)
+ ACE_ERROR((LM_ERROR," [TAO_Default_Resource_Factory::init] Invalid Char NativeCodeSet, %x \n", ncs));
+ ACE_DECLARE_NEW_CORBA_ENV;
+ // thrown an exception
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_ORB_CORE_INIT_LOCATION_CODE,
+ EINVAL),
+ CORBA::COMPLETED_NO),
+ -1);
+
+ }
+ this->ncs_c_ = ncs;
+ }
+ }
+
+ /// CodeSet Translators
+ else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBNativeWCharCodeSet")) == 0)
+ {
+ curarg++;
+ ACE_CDR::ULong ncs;
+ if (ACE_Codeset_Registry::locale_to_registry( argv[curarg], ncs))
+ this->ncs_w_ = ncs;
+ else
+ {
+ char **endPtr = 0;
+ ncs = ACE_OS_String::strtoul( ACE_TEXT_ALWAYS_CHAR(argv[curarg]), endPtr, 0);
+ // Validate the CodesetId
+ if (ACE_Codeset_Registry::get_max_bytes(ncs) == 0)
+ {
+ if (TAO_debug_level > 0)
+ ACE_ERROR((LM_ERROR," [TAO_Default_Resource_Factory::init] Invalid WChar NativeCodeSet, %x \n", ncs));
+ ACE_DECLARE_NEW_CORBA_ENV;
+ // thrown an exception
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_ORB_CORE_INIT_LOCATION_CODE,
+ EINVAL),
+ CORBA::COMPLETED_NO),
+ -1);
+ }
+ this->ncs_w_ = ncs;
+ }
+ }
+
+ /// CodeSet Translators
+ else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBCharCodesetTranslator")) == 0)
+ {
+ // TAO_CodesetFactorySet *pset = this->get_char_codeset_factories ();
+ curarg++;
+ if (curarg < argc)
+ {
+ TAO_Codeset_Item *item = 0;
+ ACE_NEW_RETURN (item,
+ TAO_Codeset_Item (argv[curarg]),
+ -1);
+ if (this->charcodeset_factories_.insert (item) == -1)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) Unable to add Codeset factories for %s: %p\n"),
+ argv[curarg]));
+ }
+ }
+
+ /// CodeSet Translators
+ else if (ACE_OS::strcasecmp (argv[curarg],
+ ACE_LIB_TEXT("-ORBWCharCodesetTranslator")) == 0)
+ {
+ // TAO_CodesetFactorySet *pset = this->get_wchar_codeset_factories ();
+ curarg++;
+ if (curarg < argc)
+ {
+ TAO_Codeset_Item *item = 0;
+ ACE_NEW_RETURN (item,
+ TAO_Codeset_Item (argv[curarg]),
+ -1);
+ if (this->wcharcodeset_factories_.insert (item) == -1)
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) Unable to add Codeset factories for %s: %p\n"),
+ argv[curarg]));
+ }
+ }
+
else if (ACE_OS::strcasecmp (argv[curarg],
ACE_LIB_TEXT("-ORBConnectionCachingStrategy")) == 0)
{
@@ -807,11 +933,142 @@ TAO_Default_Resource_Factory::disable_factory (void)
if (this->options_processed_)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_LIB_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ignored\n")
- ACE_LIB_TEXT ("Default Resource Factory is disabled\n")));
+ ACE_TEXT ("TAO (%P|%t) Warning: Resource_Factory options ignored\n")
+ ACE_TEXT ("Default Resource Factory is disabled\n")));
}
}
+
+TAO_Codeset_Manager *
+TAO_Default_Resource_Factory::get_codeset_manager()
+{
+ if (this->codeset_manager_ == 0)
+ {
+ CONV_FRAME::CodeSetComponentInfo *csi;
+ ACE_NEW_RETURN (csi,CONV_FRAME::CodeSetComponentInfo,0);
+ if (init_codeset_factories_i (charcodeset_factories_) == -1)
+ {
+ delete csi;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) default resource factory failed to init char codeset factories\n")),0);
+ }
+ // Initialize the wide character codeset factories
+ if (init_codeset_factories_i (wcharcodeset_factories_) == -1)
+ {
+ delete csi;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) default resource factory failed to init wchar codeset factories\n")),0);
+ }
+ //need autopointer for csi here...
+ this->get_codeset_ids_i (this->ncs_c_,
+ this->charcodeset_factories_,
+ &csi->ForCharData );
+ this->get_codeset_ids_i (this->ncs_w_,
+ this->wcharcodeset_factories_,
+ &csi->ForWcharData );
+
+ ACE_NEW_RETURN (this->codeset_manager_, TAO_Codeset_Manager(csi), 0);
+ }
+ return this->codeset_manager_;
+}
+
+/// Initialise the specific type codeset factories
+int
+TAO_Default_Resource_Factory::init_codeset_factories_i (TAO_CodesetFactorySet& factset )
+{
+ TAO_CodesetFactorySetItor end = factset.end ();
+ TAO_CodesetFactorySetItor iter = factset.begin ();
+
+ for (; iter != end; iter++)
+ {
+ const ACE_CString &name = (*iter)->codeset_name ();
+ (*iter)->factory (ACE_Dynamic_Service<TAO_Codeset_Translator_Factory>::instance (name.c_str ()));
+ if ((*iter)->factory () == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) Unable to load ")
+ ACE_TEXT ("CodeSet <%s>, %p\n"),
+ ACE_TEXT_CHAR_TO_TCHAR(name.c_str ()), ""),
+ -1);
+ }
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("TAO (%P|%t) Loaded CodeSet <%s>, ncs = %08x tcs = %08x\n"),
+ ACE_TEXT_CHAR_TO_TCHAR(name.c_str ()),
+ (*iter)->factory()->ncs(),(*iter)->factory()->tcs()));
+ }
+ }
+ return 0;
+}
+
+void
+TAO_Default_Resource_Factory::get_codeset_ids_i (CONV_FRAME::CodeSetId ncs,
+ TAO_CodesetFactorySet& factset,
+ CONV_FRAME::CodeSetComponent* cs_comp)
+{
+ TAO_CodesetFactorySetItor end = factset.end ();
+ TAO_CodesetFactorySetItor iter = factset.begin ();
+
+ cs_comp->native_code_set = ncs;
+ cs_comp->conversion_code_sets.length(factset.size());
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,"get_codeset_ids_i, ncs = %08x ccs len = %d\n",
+ ncs,factset.size()));
+
+
+ CORBA::ULong index;
+ for (index=0; iter != end; iter++)
+ {
+ TAO_Codeset_Translator_Factory *trans = (*iter)->factory ();
+ if (trans->ncs() == ncs)
+ {
+ cs_comp->conversion_code_sets[index++] = trans->tcs();
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG," adding %08x, index = %d\n",
+ trans->tcs(),index));
+ } else
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG," skipping trans ncs = %08x, tcs = %08x\n",
+ trans->ncs(), trans->tcs()));
+
+ }
+ cs_comp->conversion_code_sets.length(index);
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Default_Resource_Factory::get_char_translator (CONV_FRAME::CodeSetId ncs,
+ CONV_FRAME::CodeSetId tcs)
+{
+ return this->get_translator_i (this->charcodeset_factories_,ncs,tcs);
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Default_Resource_Factory::get_wchar_translator (CONV_FRAME::CodeSetId ncs,
+ CONV_FRAME::CodeSetId tcs)
+{
+ return this->get_translator_i (this->wcharcodeset_factories_,ncs,tcs);
+}
+
+TAO_Codeset_Translator_Factory *
+TAO_Default_Resource_Factory::get_translator_i (TAO_CodesetFactorySet& factset,
+ CONV_FRAME::CodeSetId ncs,
+ CONV_FRAME::CodeSetId tcs)
+{
+ TAO_CodesetFactorySetItor end = factset.end ();
+ TAO_CodesetFactorySetItor iter = factset.begin ();
+
+ for (; iter != end; iter++)
+ {
+ TAO_Codeset_Translator_Factory *fact = (*iter)->factory ();
+ if( ncs == fact->ncs() && tcs == fact->tcs())
+ return fact;
+ }
+
+ return 0;
+}
+
+
// ****************************************************************
ACE_STATIC_SVC_DEFINE (TAO_Default_Resource_Factory,
@@ -827,6 +1084,7 @@ ACE_FACTORY_DEFINE (TAO, TAO_Default_Resource_Factory)
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+template class ACE_Dynamic_Service<TAO_Codeset_Translator_Factory>;
template class auto_ptr<TAO_Protocol_Factory>;
# if defined (ACE_LACKS_AUTO_PTR) \
|| !(defined (ACE_HAS_STANDARD_CPP_LIBRARY) \
@@ -836,6 +1094,7 @@ template class ACE_Auto_Basic_Ptr<TAO_Protocol_Factory>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#pragma instantiate ACE_Dynamic_Service<TAO_Codeset_Translator_Factory>
#pragma instantiate auto_ptr<TAO_Protocol_Factory>
# if defined (ACE_LACKS_AUTO_PTR) \
|| !(defined (ACE_HAS_STANDARD_CPP_LIBRARY) \
diff --git a/TAO/tao/default_resource.h b/TAO/tao/default_resource.h
index 8500447bc79..d0e047f0eaa 100644
--- a/TAO/tao/default_resource.h
+++ b/TAO/tao/default_resource.h
@@ -23,6 +23,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "ace/Service_Config.h"
+#include "tao/CONV_FRAMEC.h"
class TAO_Object_Adapter;
class TAO_IOR_Parser;
@@ -92,6 +93,13 @@ public:
TAO_ALLOCATOR_THREAD_LOCK
};
+ // Translator type
+ enum TRANSLATOR_TYPE
+ {
+ CHAR_TRANSLATOR,
+ WCHAR_TRANSLATOR
+ };
+
/// Modify and get the source for the CDR allocators
int cdr_allocator_source (void);
@@ -114,6 +122,15 @@ public:
virtual ACE_Allocator* output_cdr_msgblock_allocator (void);
virtual TAO_ProtocolFactorySet *get_protocol_factories (void);
+ virtual TAO_Codeset_Manager *get_codeset_manager ();
+
+// Get the translators for Char/Wchar Codesets
+ virtual TAO_Codeset_Translator_Factory *get_char_translator (CONV_FRAME::CodeSetId ncs,
+ CONV_FRAME::CodeSetId theTcs);
+
+ virtual TAO_Codeset_Translator_Factory *get_wchar_translator (CONV_FRAME::CodeSetId theNcs,
+ CONV_FRAME::CodeSetId theTcs);
+
virtual int init_protocol_factories (void);
virtual int cache_maximum (void) const;
@@ -127,6 +144,9 @@ public:
virtual void disable_factory (void);
+ CONV_FRAME::CodeSetId get_ncs_char (void);
+
+ CONV_FRAME::CodeSetId get_ncs_wchar (void);
//@}
protected:
@@ -221,6 +241,29 @@ private:
/// Type of flushing strategy configured
int flushing_strategy_type_;
+
+ /// NCS for character and wide character
+ CONV_FRAME::CodeSetId ncs_c_;
+
+ CONV_FRAME::CodeSetId ncs_w_;
+
+ /// List of Character codeset factories
+ TAO_CodesetFactorySet charcodeset_factories_;
+
+ /// List of Character codeset factories
+ TAO_CodesetFactorySet wcharcodeset_factories_;
+
+ TAO_Codeset_Manager *codeset_manager_;
+
+ // Function to initialize a list of char or wchar codeset factories
+ virtual int init_codeset_factories_i (TAO_CodesetFactorySet& );
+ void get_codeset_ids_i (CONV_FRAME::CodeSetId,
+ TAO_CodesetFactorySet&,
+ CONV_FRAME::CodeSetComponent *);
+ TAO_Codeset_Translator_Factory * get_translator_i (TAO_CodesetFactorySet&,
+ CONV_FRAME::CodeSetId ,
+ CONV_FRAME::CodeSetId);
+
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/tao.mpc b/TAO/tao/tao.mpc
index efd65a42772..8e16109eaa4 100644
--- a/TAO/tao/tao.mpc
+++ b/TAO/tao/tao.mpc
@@ -124,6 +124,8 @@ project : acelib, taoversion, core {
DynamicC.cpp
OctetSeqC.cpp
StringSeqC.cpp
+ Codeset_Manager.cpp
+ Codeset_Translator_Factory.cpp
ORB_Core.cpp
ORB_Core_Auto_Ptr.cpp
Collocation_Resolver.cpp
diff --git a/TAO/tests/CodeSets/README b/TAO/tests/CodeSets/README
new file mode 100644
index 00000000000..a9c106baceb
--- /dev/null
+++ b/TAO/tests/CodeSets/README
@@ -0,0 +1,8 @@
+Codeset translation test.
+
+First build the IBM1047 - ISO8859 translator library. Then build and run the
+"simple" test.
+
+The translator library may also serve as a reference for building other custom
+translators.
+
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.cpp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.cpp
new file mode 100644
index 00000000000..9ef933f5a76
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.cpp
@@ -0,0 +1,41 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/libs/IBM1047_ISO8859
+//
+// = FILENAME
+// Char_IBM1047_ISO8859_Factory.cpp
+//
+// = DESCRIPTION
+// A tempate instantiation of the codeset translator factory from TAO. This
+// one loads a modified version of ACE's IBM1047 (EBCDIC) to ISO8859 (ASCII)
+// translator.
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+#include "Char_IBM1047_ISO8859_Factory.h"
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+
+template class TAO_Codeset_Translator_Factory_T<IBM1047_ISO8859>;
+
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+
+#pragma instantiate TAO_Codeset_Translator_Factory_T<IBM1047_ISO8859>
+
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
+ACE_STATIC_SVC_DEFINE (Char_IBM1047_ISO8859_Factory,
+ ACE_TEXT ("Char_IBM1047_ISO8859_Factory"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (Char_IBM1047_ISO8859_Factory),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0)
+ACE_FACTORY_DEFINE (IBM1047_ISO8859, Char_IBM1047_ISO8859_Factory)
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.h b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.h
new file mode 100644
index 00000000000..dce9d7fb5d2
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Factory.h
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/libs/IBM1047_ISO8859
+//
+// = FILENAME
+// Char_IBM1047_ISO8859_Factory.h
+//
+// = DESCRIPTION
+// A tempate instantiation of the codeset translator factory from TAO. This
+// one loads a modified version of ACE's IBM1047 (EBCDIC) to ISO8859 (ASCII)
+// translator.
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+#ifndef CHAR_IBM1047_ISO8859_FACTORY_H
+#define CHAR_IBM1047_ISO8859_FACTORY_H
+
+#include <ace/pre.h>
+#include <ace/Service_Config.h>
+#include <tao/Codeset_Translator_Factory.h>
+
+#include "IBM1047_ISO8859_export.h"
+#include "Char_IBM1047_ISO8859_Translator.h"
+
+typedef IBM1047_ISO8859_Export TAO_Codeset_Translator_Factory_T<IBM1047_ISO8859> Char_IBM1047_ISO8859_Factory;
+
+ACE_STATIC_SVC_DECLARE_EXPORT (IBM1047_ISO8859, Char_IBM1047_ISO8859_Factory)
+ACE_FACTORY_DECLARE (IBM1047_ISO8859, Char_IBM1047_ISO8859_Factory)
+
+#include <ace/post.h>
+#endif /* TAO_CHAR_IBM1047_ISO8859_FACTORY_H */
+
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.cpp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.cpp
new file mode 100644
index 00000000000..84429e99ab3
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.cpp
@@ -0,0 +1,190 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// ace
+//
+// = FILENAME
+// Char_IBM1047_ISO8859_Translator.cpp
+//
+// = DESCRIPTION
+// Defines the arrays required to convert between ISO8859 (aka
+// Latin/1) and IBM1047 (aka EBCDIC).
+//
+// = AUTHOR
+// Jim Rogers (jrogers@viasoft.com)
+//
+// ============================================================================
+
+#include "Char_IBM1047_ISO8859_Translator.h"
+
+ACE_RCSID(IBM1047_ISO8859, Char_IBM1047_ISO8859_Translator, "$Id$")
+
+// ****************************************************************
+
+IBM1047_ISO8859::IBM1047_ISO8859 (void)
+{
+}
+
+IBM1047_ISO8859::~IBM1047_ISO8859 (void)
+{
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::read_char (ACE_InputCDR &in,
+ ACE_CDR::Char &x)
+{
+ if (this->read_1 (in, ACE_reinterpret_cast (ACE_CDR::Octet*, &x)))
+ {
+ x = to_IBM1047[x];
+ return 1;
+ }
+ return 0;
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::read_string (ACE_InputCDR& in,
+ ACE_CDR::Char *& x)
+{
+ ACE_CDR::ULong len;
+
+ in.read_ulong (len);
+
+ if (len > 0)
+ {
+ // ACE_DEBUG ((LM_DEBUG,"read_string: len = %u\n",len));
+ ACE_NEW_RETURN (x,
+ ACE_CDR::Char[len],
+ 0);
+
+ if (this->read_char_array (in, x, len))
+ return 1;
+
+ delete [] x;
+ }
+
+ x = 0;
+ return 0;
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::read_char_array (ACE_InputCDR& in,
+ ACE_CDR::Char* x,
+ ACE_CDR::ULong len)
+{
+ if (this->read_array (in,
+ x,
+ ACE_CDR::OCTET_SIZE,
+ ACE_CDR::OCTET_ALIGN,
+ len))
+ {
+ for (ACE_CDR::ULong i = 0; i != len; ++i) {
+#if 0
+ ACE_DEBUG ((LM_DEBUG,"%x -> ",(unsigned char)x[i]));
+#endif
+ x[i] = (unsigned char)to_IBM1047[(unsigned char)x[i]];
+#if 0
+ if (i == len-1)
+ ACE_DEBUG ((LM_DEBUG,"%x\n",(unsigned char)x[i]));
+ else
+ ACE_DEBUG ((LM_DEBUG,"%x, ",(unsigned char)x[i]));
+#endif
+ }
+ return 1;
+ }
+
+ return 0;
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::write_char (ACE_OutputCDR& out,
+ ACE_CDR::Char x)
+{
+ return this->write_1 (out,
+ ACE_reinterpret_cast (const ACE_CDR::Octet*,
+ &from_IBM1047[x]));
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::write_string (ACE_OutputCDR& out,
+ ACE_CDR::ULong len,
+ const ACE_CDR::Char* x)
+{
+ if (out.write_ulong (len + 1))
+ return this->write_char_array (out, x, len + 1);
+ return 0;
+}
+
+ACE_CDR::Boolean
+IBM1047_ISO8859::write_char_array (ACE_OutputCDR& out,
+ const ACE_CDR::Char* x,
+ ACE_CDR::ULong len)
+{
+ char *buf;
+ if (this->adjust (out, len, 1, buf) == 0)
+ {
+ ACE_OS::memcpy (buf, x, len);
+
+ for (ACE_CDR::ULong i = 0; i != len; ++i) {
+#if 0
+ ACE_DEBUG ((LM_DEBUG,"%x -> ",(unsigned char)buf[i]));
+#endif
+ buf[i] = (unsigned char)from_IBM1047[(unsigned char)buf[i]];
+#if 0
+ if (i == len-1)
+ ACE_DEBUG ((LM_DEBUG,"%x\n",(unsigned char)buf[i]));
+ else
+ ACE_DEBUG ((LM_DEBUG,"%x, ",(unsigned char)buf[i]));
+#endif
+ }
+
+ return 1;
+ }
+
+ this->good_bit(out, 0);
+ return 0;
+}
+
+// ****************************************************************
+
+char to_IBM1047[257] =
+{
+ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x25\x0B\x0C\x0D\x0E\x0F" // 00-0F
+ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x22\x1D\x35\x1F" // 10-1F
+ "\x40\x5A\x7F\x7B\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" // 20-2F
+ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" // 30-3F
+ "\x7C\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" // 40-4F
+ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xAD\xE0\xBD\x5F\x6D" // 50-5F
+ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" // 60-6F
+ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xC0\x4F\xD0\xA1\x07" // 70-7F
+ "\x43\x20\x21\x1C\x23\xEB\x24\x9B\x71\x28\x38\x49\x90\xBA\xEC\xDF" // 80-8F
+ "\x45\x29\x2A\x9D\x72\x2B\x8A\x9A\x67\x56\x64\x4A\x53\x68\x59\x46" // 90-9F
+ "\xEA\xDA\x2C\xDE\x8B\x55\x41\xFE\x58\x51\x52\x48\x69\xDB\x8E\x8D" // A0-AF
+ "\x73\x74\x75\xFA\x15\xB0\xB1\xB3\xB4\xB5\x6A\xB7\xB8\xB9\xCC\xBC" // B0-BF
+ "\xAB\x3E\x3B\x0A\xBF\x8F\x3A\x14\xA0\x17\xCB\xCA\x1A\x1B\x9C\x04" // C0-CF
+ "\x34\xEF\x1E\x06\x08\x09\x77\x70\xBE\xBB\xAC\x54\x63\x65\x66\x62" // D0-DF
+ "\x30\x42\x47\x57\xEE\x33\xB6\xE1\xCD\xED\x36\x44\xCE\xCF\x31\xAA" // E0-EF
+ "\xFC\x9E\xAE\x8C\xDD\xDC\x39\xFB\x80\xAF\xFD\x78\x76\xB2\x9F\xFF" // F0-FF
+};
+
+char from_IBM1047[257] =
+{
+ "\x00\x01\x02\x03\xCF\x09\xD3\x7F\xD4\xD5\xC3\x0B\x0C\x0D\x0E\x0F" // 00-0F
+ "\x10\x11\x12\x13\xC7\xB4\x08\xC9\x18\x19\xCC\xCD\x83\x1D\xD2\x1F" // 10-1F
+ "\x81\x82\x1C\x84\x86\x0A\x17\x1B\x89\x91\x92\x95\xA2\x05\x06\x07" // 20-2F
+ "\xE0\xEE\x16\xE5\xD0\x1E\xEA\x04\x8A\xF6\x20\x20\x20\x20\xC1\x1A" // 30-3F
+ "\x20\xA6\xE1\x80\xEB\x90\x9F\xE2\xAB\x8B\x9B\x2E\x3C\x28\x2B\x7C" // 40-4F
+ "\x26\xA9\xAA\x9C\xDB\xA5\x99\xE3\xA8\x9E\x21\x24\x2A\x29\x3B\x5E" // 50-5F
+ "\x2D\x2F\xDF\xDC\x9A\xDD\xDE\x98\x9D\xAC\xBA\x2C\x25\x5F\x3E\x3F" // 60-6F
+ "\xD7\x88\x94\xB0\xB1\xB2\xFC\xD6\xFB\x60\x3A\x23\x40\x27\x3D\x22" // 70-7F
+ "\xF8\x61\x62\x63\x64\x65\x66\x67\x68\x69\x96\xA4\xF3\xAF\xAE\xC5" // 80-8F
+ "\x8C\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x97\x87\xCE\x93\xF1\xFE" // 90-9F
+ "\xC8\x7E\x73\x74\x75\x76\x77\x78\x79\x7A\xEF\xC0\xDA\x5B\xF2\xF9" // A0-AF
+ "\xB5\xB6\xFD\xB7\xB8\xB9\xE6\xBB\xBC\xBD\x8D\xD9\xBF\x5D\xD8\xC4" // B0-BF
+ "\x7B\x41\x42\x43\x44\x45\x46\x47\x48\x49\xCB\xCA\xBE\xE8\xEC\xED" // C0-CF
+ "\x7D\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xA1\xAD\xF5\xF4\xA3\x8F" // D0-DF
+ "\x5C\xE7\x53\x54\x55\x56\x57\x58\x59\x5A\xA0\x85\x8E\xE9\xE4\xD1" // E0-EF
+ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xF7\xF0\xFA\xA7\xFF" // F0-FF
+};
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.h b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.h
new file mode 100644
index 00000000000..f97d01a5ed5
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Char_IBM1047_ISO8859_Translator.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Char_IBM1047_ISO8859_Translator.h
+ *
+ * $Id$
+ *
+ * Declares the arrays required to convert between ISO8859 (aka
+ * Latin/1) and IBM1047 (aka EBCDIC).
+ *
+ *
+ * @author Jim Rogers (jrogers@viasoft.com)
+ */
+//=============================================================================
+
+
+#ifndef TAO_CHAR_IBM1047_ISO8859_TRANSLATOR_H
+#define TAO_CHAR_IBM1047_ISO8859_TRANSLATOR_H
+#include "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/CDR_Stream.h"
+#include "IBM1047_ISO8859_export.h"
+
+extern IBM1047_ISO8859_Export char to_IBM1047[257];
+extern IBM1047_ISO8859_Export char from_IBM1047[257];
+
+// ****************************************************************
+
+/**
+ * @class ACE_Char_IBM1047_ISO8859
+ *
+ * @brief Codeset translation specialization.
+ *
+ * This class performs the codeset translation:
+ * - Native: IBM_1047 (i.e. EBCDIC)
+ * - Stream: ISO-8859 (i.e. Latin/1)
+ */
+class IBM1047_ISO8859_Export IBM1047_ISO8859 : public ACE_Char_Codeset_Translator
+{
+public:
+ /// A do nothing constructor.
+ IBM1047_ISO8859 (void);
+
+ /// Virtual destruction
+ virtual ~IBM1047_ISO8859 (void);
+
+ // = Documented in $ACE_ROOT/ace/CDR_Stream.h
+ virtual ACE_CDR::Boolean read_char (ACE_InputCDR &,
+ ACE_CDR::Char &);
+ virtual ACE_CDR::Boolean read_string (ACE_InputCDR &,
+ ACE_CDR::Char *&);
+ virtual ACE_CDR::Boolean read_char_array (ACE_InputCDR &,
+ ACE_CDR::Char *,
+ ACE_CDR::ULong);
+ virtual ACE_CDR::Boolean write_char (ACE_OutputCDR &,
+ ACE_CDR::Char);
+ virtual ACE_CDR::Boolean write_string (ACE_OutputCDR &,
+ ACE_CDR::ULong,
+ const ACE_CDR::Char *);
+ virtual ACE_CDR::Boolean write_char_array (ACE_OutputCDR &,
+ const ACE_CDR::Char *,
+ ACE_CDR::ULong);
+ virtual ACE_CDR::ULong ncs () {return 0x10020417;}
+ virtual ACE_CDR::ULong tcs () {return 0x00010001;}
+};
+
+#include "ace/post.h"
+#endif /* TAO_CHAR_IBM1047_ISO8859_TRANSLATOR_H */
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.dsp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.dsp
new file mode 100644
index 00000000000..e7ddf3cf00e
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.dsp
@@ -0,0 +1,125 @@
+# Microsoft Developer Studio Project File - Name="IBM1047_ISO8859" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=IBM1047_ISO8859 - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚ł͂ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859.mak".
+!MESSAGE
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859.mak" CFG="IBM1047_ISO8859 - Win32 Debug"
+!MESSAGE
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE
+!MESSAGE "IBM1047_ISO8859 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE "IBM1047_ISO8859 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "IBM1047_ISO8859 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "DLL\Release\IBM1047_ISO8859"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../" /I "../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /D "TAO_IBM1047_ISO8859_BUILD_DLL" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 TAO.lib ace.lib /nologo /dll /map /debug /machine:I386 /out:"..\..\..\bin\TAO_IBM1047_ISO8859.dll" /libpath:"..\..\tao" /libpath:"..\..\..\ace"
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "IBM1047_ISO8859___Win32_Debug"
+# PROP BASE Intermediate_Dir "IBM1047_ISO8859___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "DLL\Debug\IBM1047_ISO8859"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /D "TAO_IBM1047_ISO8859_BUILD_DLL" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 TAOd.lib aced.lib /nologo /dll /debug /machine:I386 /out:"..\..\..\bin\TAO_IBM1047_ISO8859d.dll" /pdbtype:sept /libpath:"..\..\tao" /libpath:"..\..\..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "IBM1047_ISO8859 - Win32 Release"
+# Name "IBM1047_ISO8859 - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Factory.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Translator.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Factory.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Translator.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\codeset_export.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.vcp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.vcp
new file mode 100644
index 00000000000..90d95072cb9
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859.vcp
@@ -0,0 +1,874 @@
+# Microsoft eMbedded Visual Tools Project File - Name="IBM1047_ISO8859" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE x86) Dynamic-Link Library" 0x8302
+# TARGTYPE "Win32 (WCE ARM) Dynamic-Link Library" 0x8502
+
+CFG=IBM1047_ISO8859 - Win32 (WCE ARM) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859.vcn" CFG="IBM1047_ISO8859 - Win32 (WCE ARM) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "IBM1047_ISO8859 - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Dynamic-Link Library")
+!MESSAGE "IBM1047_ISO8859 - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Dynamic-Link Library")
+!MESSAGE "IBM1047_ISO8859 - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Dynamic-Link Library")
+!MESSAGE "IBM1047_ISO8859 - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ARMRel"
+# PROP BASE Intermediate_Dir "ARMRel"
+# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../LIB/Release/ARM"
+# PROP Intermediate_Dir "Release/ARM"
+# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /Oxs /M$(CECrtMT) /c
+# ADD CPP /nologo /W3 /I "../../.." /I "../.." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /D "TAO_IBM1047_ISO8859_BUILD_DLL" /YX /Oxs /M$(CECrtMT) /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
+# ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /nodefaultlib:"$(CENoDefaultLib)" /out:"../../../bin/Release/ARM/TAO_IBM1047_ISO8859.dll" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "ARMDbg"
+# PROP BASE Intermediate_Dir "ARMDbg"
+# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../LIB/Debug/ARM"
+# PROP Intermediate_Dir "Debug/ARM"
+# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /M$(CECrtMTDebug) /c
+# ADD CPP /nologo /W3 /Zi /Od /I "../../.." /I "../.." /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /D "TAO_IBM1047_ISO8859_BUILD_DLL" /YX /M$(CECrtMTDebug) /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
+# ADD LINK32 commctrl.lib coredll.lib aced.lib ace_osd.lib taod.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"$(CENoDefaultLib)" /out:"../../../bin/Debug/ARM/TAO_IBM1047_ISO8859d.dll" /libpath:"../../..\LIB\Debug\ARM" /libpath:"../..\LIB\Debug\ARM" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "X86Rel"
+# PROP BASE Intermediate_Dir "X86Rel"
+# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "X86Rel"
+# PROP Intermediate_Dir "X86Rel"
+# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /Gs8192 /GF /Oxs /c
+# ADD CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /Gs8192 /GF /Oxs /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86
+# ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "X86Dbg"
+# PROP BASE Intermediate_Dir "X86Dbg"
+# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "X86Dbg"
+# PROP Intermediate_Dir "X86Dbg"
+# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /Gs8192 /GF /c
+# ADD CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_USRDLL" /D "IBM1047_ISO8859_EXPORTS" /YX /Gs8192 /GF /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86
+# ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86
+
+!ENDIF
+
+# Begin Target
+
+# Name "IBM1047_ISO8859 - Win32 (WCE ARM) Release"
+# Name "IBM1047_ISO8859 - Win32 (WCE ARM) Debug"
+# Name "IBM1047_ISO8859 - Win32 (WCE x86) Release"
+# Name "IBM1047_ISO8859 - Win32 (WCE x86) Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Factory.cpp
+
+!IF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Release"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\cdr.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Debug"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\cdr.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Release"
+
+NODEP_CPP_CHAR_=\
+ ".\tao\IBM1047_ISO8859\Char_IBM1047_ISO8859_Factory.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Debug"
+
+NODEP_CPP_CHAR_=\
+ ".\tao\IBM1047_ISO8859\Char_IBM1047_ISO8859_Factory.h"\
+
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Translator.cpp
+
+!IF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Release"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE ARM) Debug"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Release"
+
+NODEP_CPP_CHAR_I=\
+ ".\tao\IBM1047_ISO8859\Char_IBM1047_ISO8859_Translator.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859 - Win32 (WCE x86) Debug"
+
+NODEP_CPP_CHAR_I=\
+ ".\tao\IBM1047_ISO8859\Char_IBM1047_ISO8859_Translator.h"\
+
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Factory.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Translator.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\codeset_export.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.dsp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.dsp
new file mode 100644
index 00000000000..e59b46e2346
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.dsp
@@ -0,0 +1,102 @@
+# Microsoft Developer Studio Project File - Name="IBM1047_ISO8859_Static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=IBM1047_ISO8859_Static - Win32 Static Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859_Static.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859_Static.mak" CFG="IBM1047_ISO8859_Static - Win32 Static Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "IBM1047_ISO8859_Static - Win32 Static Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "IBM1047_ISO8859_Static - Win32 Static Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 Static Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "LIB\Release\IBM1047_ISO8859"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "../" /I "../../" /I "../../../" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "WIN32" /D "TAO_AS_STATIC_LIBS" /D "ACE_AS_STATIC_LIBS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"IBM1047_ISO8859s.lib"
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 Static Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "LIB\Debug\IBM1047_ISO8859"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../" /I "../../" /I "../../../" /D "_WINDOWS" /D "_CONSOLE" /D "_DEBUG" /D "WIN32" /D "ACE_AS_STATIC_LIBS" /D "TAO_AS_STATIC_LIBS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"IBM1047_ISO8859sd.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "IBM1047_ISO8859_Static - Win32 Static Release"
+# Name "IBM1047_ISO8859_Static - Win32 Static Debug"
+# Begin Group "Inline Files"
+
+# PROP Default_Filter "i"
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h"
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp"
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.vcp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.vcp
new file mode 100644
index 00000000000..aa846b875ca
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_Static.vcp
@@ -0,0 +1,1448 @@
+# Microsoft eMbedded Visual Tools Project File - Name="IBM1047_ISO8859_Static" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE x86) Static Library" 0x8304
+# TARGTYPE "Win32 (WCE ARM) Static Library" 0x8504
+
+CFG=IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859_Static.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "IBM1047_ISO8859_Static.vcn" CFG="IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "IBM1047_ISO8859_Static - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Static Library")
+!MESSAGE "IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Static Library")
+!MESSAGE "IBM1047_ISO8859_Static - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Static Library")
+!MESSAGE "IBM1047_ISO8859_Static - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ARMRel"
+# PROP BASE Intermediate_Dir "ARMRel"
+# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../../lib/Release/ARM"
+# PROP Intermediate_Dir "ARMRel"
+# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c
+# ADD CPP /nologo /W3 /I "../../.." /I "../.." /D "NDEBUG" /D "ARM" /D "_ARM_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "ACE_AS_STATIC_LIBS" /D "TAO_AS_STATIC_LIBS" /YX /Oxs /M$(CECrtMT) /c
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../lib/Release/ARM/TAO_IBM1047_ISO8859s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "ARMDbg"
+# PROP BASE Intermediate_Dir "ARMDbg"
+# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "ARMDbg"
+# PROP Intermediate_Dir "ARMDbg"
+# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c
+# ADD CPP /nologo /W3 /Zi /Od /I "../../.." /I "../.." /D "DEBUG" /D "ARM" /D "_ARM_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "ACE_AS_STATIC_LIBS" /D "TAO_AS_STATIC_LIBS" /YX /M$(CECrtMTDebug) /c
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../bin/ARMDbg/TAO_IBM1047_ISO8859sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "X86Rel"
+# PROP BASE Intermediate_Dir "X86Rel"
+# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "X86Rel"
+# PROP Intermediate_Dir "X86Rel"
+# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /YX /Gs8192 /GF /Oxs /c
+# ADD CPP /nologo /W3 /I "../../.." /I "../.." /D "_i386_" /D "_X86_" /D "x86" /D "NDEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "ACE_AS_STATIC_LIBS" /D "TAO_AS_STATIC_LIBS" /YX /Gs8192 /GF /Oxs /c
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../bin/X86Rel/TAO_IBM1047_ISO8859s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "X86Dbg"
+# PROP BASE Intermediate_Dir "X86Dbg"
+# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "X86Dbg"
+# PROP Intermediate_Dir "X86Dbg"
+# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /YX /Gs8192 /GF /c
+# ADD CPP /nologo /W3 /Zi /Od /I "../../.." /I "../.." /D "DEBUG" /D "_i386_" /D "_X86_" /D "x86" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "ACE_AS_STATIC_LIBS" /D "TAO_AS_STATIC_LIBS" /YX /Gs8192 /GF /c
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../bin/X86Dbg/TAO_IBM1047_ISO8859sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "IBM1047_ISO8859_Static - Win32 (WCE ARM) Release"
+# Name "IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug"
+# Name "IBM1047_ISO8859_Static - Win32 (WCE x86) Release"
+# Name "IBM1047_ISO8859_Static - Win32 (WCE x86) Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Factory.cpp
+
+!IF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Release"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\CDR.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\Sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\CDR.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\Sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Release"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\CDR.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\Sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Debug"
+
+DEP_CPP_CHAR_=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\CORBA_macros.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Handle_Set.h"\
+ "..\..\..\ace\Handle_Set.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\Reactor.h"\
+ "..\..\..\ace\Reactor.i"\
+ "..\..\..\ace\Reactor_Impl.h"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Service_Config.h"\
+ "..\..\..\ace\Service_Config.i"\
+ "..\..\..\ace\Service_Object.h"\
+ "..\..\..\ace\Service_Object.i"\
+ "..\..\..\ace\Shared_Object.h"\
+ "..\..\..\ace\Shared_Object.i"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\SString.h"\
+ "..\..\..\ace\SString.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\Svc_Conf_Tokens.h"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Timer_Queue.h"\
+ "..\..\..\ace\Timer_Queue_T.cpp"\
+ "..\..\..\ace\Timer_Queue_T.h"\
+ "..\..\..\ace\Timer_Queue_T.i"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Queue.cpp"\
+ "..\..\..\ace\Unbounded_Queue.h"\
+ "..\..\..\ace\Unbounded_Queue.inl"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ "..\CDR.h"\
+ "..\CDR.i"\
+ "..\Codeset_Translator_Factory.h"\
+ "..\Codeset_Translator_Factory_T.cpp"\
+ "..\Codeset_Translator_Factory_T.h"\
+ "..\CONV_FRAMEC.h"\
+ "..\CONV_FRAMEC.i"\
+ "..\corbafwd.h"\
+ "..\corbafwd.i"\
+ "..\debug.h"\
+ "..\Environment.h"\
+ "..\Environment.i"\
+ "..\Managed_Types.h"\
+ "..\Managed_Types.i"\
+ "..\orbconf.h"\
+ "..\Sequence.h"\
+ "..\Sequence.i"\
+ "..\Sequence_T.cpp"\
+ "..\Sequence_T.h"\
+ "..\Sequence_T.i"\
+ "..\TAO_Export.h"\
+ "..\try_macros.h"\
+ "..\varbase.h"\
+ ".\Char_IBM1047_ISO8859_Factory.h"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\Char_IBM1047_ISO8859_Translator.cpp
+
+!IF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Release"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE ARM) Debug"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Release"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ELSEIF "$(CFG)" == "IBM1047_ISO8859_Static - Win32 (WCE x86) Debug"
+
+DEP_CPP_CHAR_I=\
+ "..\..\..\ace\ACE.h"\
+ "..\..\..\ace\ACE.i"\
+ "..\..\..\ace\ACE_export.h"\
+ "..\..\..\ace\ace_wchar.h"\
+ "..\..\..\ace\ace_wchar.inl"\
+ "..\..\..\ace\Atomic_Op.i"\
+ "..\..\..\ace\Base_Thread_Adapter.h"\
+ "..\..\..\ace\Base_Thread_Adapter.inl"\
+ "..\..\..\ace\Basic_Types.h"\
+ "..\..\..\ace\Basic_Types.i"\
+ "..\..\..\ace\CDR_Base.h"\
+ "..\..\..\ace\CDR_Base.inl"\
+ "..\..\..\ace\CDR_Stream.h"\
+ "..\..\..\ace\CDR_Stream.i"\
+ "..\..\..\ace\config-all.h"\
+ "..\..\..\ace\config-cygwin32-common.h"\
+ "..\..\..\ace\config-cygwin32.h"\
+ "..\..\..\ace\config-g++-common.h"\
+ "..\..\..\ace\config-ghs-common.h"\
+ "..\..\..\ace\config-win32-borland.h"\
+ "..\..\..\ace\config-win32-common.h"\
+ "..\..\..\ace\config-win32-ghs.h"\
+ "..\..\..\ace\config-win32-mingw.h"\
+ "..\..\..\ace\config-win32-msvc-5.h"\
+ "..\..\..\ace\config-win32-msvc-6.h"\
+ "..\..\..\ace\config-win32-msvc-7.h"\
+ "..\..\..\ace\config-win32-msvc.h"\
+ "..\..\..\ace\config-win32-visualage.h"\
+ "..\..\..\ace\config-win32.h"\
+ "..\..\..\ace\config-WinCE.h"\
+ "..\..\..\ace\config.h"\
+ "..\..\..\ace\Event_Handler.h"\
+ "..\..\..\ace\Event_Handler.i"\
+ "..\..\..\ace\File_Lock.h"\
+ "..\..\..\ace\File_Lock.inl"\
+ "..\..\..\ace\Flag_Manip.h"\
+ "..\..\..\ace\Flag_Manip.i"\
+ "..\..\..\ace\Free_List.cpp"\
+ "..\..\..\ace\Free_List.h"\
+ "..\..\..\ace\Free_List.i"\
+ "..\..\..\ace\Handle_Ops.h"\
+ "..\..\..\ace\Handle_Ops.i"\
+ "..\..\..\ace\Init_ACE.h"\
+ "..\..\..\ace\Init_ACE.i"\
+ "..\..\..\ace\iosfwd.h"\
+ "..\..\..\ace\Lib_Find.h"\
+ "..\..\..\ace\Lib_Find.i"\
+ "..\..\..\ace\Log_Msg.h"\
+ "..\..\..\ace\Log_Msg_Callback.h"\
+ "..\..\..\ace\Log_Priority.h"\
+ "..\..\..\ace\Log_Record.h"\
+ "..\..\..\ace\Log_Record.i"\
+ "..\..\..\ace\Malloc.h"\
+ "..\..\..\ace\Malloc.i"\
+ "..\..\..\ace\Malloc_Allocator.h"\
+ "..\..\..\ace\Malloc_Allocator.i"\
+ "..\..\..\ace\Malloc_Base.h"\
+ "..\..\..\ace\Malloc_T.cpp"\
+ "..\..\..\ace\Malloc_T.h"\
+ "..\..\..\ace\Malloc_T.i"\
+ "..\..\..\ace\Managed_Object.cpp"\
+ "..\..\..\ace\Managed_Object.h"\
+ "..\..\..\ace\Managed_Object.i"\
+ "..\..\..\ace\Mem_Map.h"\
+ "..\..\..\ace\Mem_Map.i"\
+ "..\..\..\ace\Memory_Pool.h"\
+ "..\..\..\ace\Memory_Pool.i"\
+ "..\..\..\ace\Message_Block.h"\
+ "..\..\..\ace\Message_Block.i"\
+ "..\..\..\ace\Message_Block_T.cpp"\
+ "..\..\..\ace\Message_Block_T.h"\
+ "..\..\..\ace\Message_Block_T.i"\
+ "..\..\..\ace\Min_Max.h"\
+ "..\..\..\ace\Node.cpp"\
+ "..\..\..\ace\Node.h"\
+ "..\..\..\ace\Object_Manager.h"\
+ "..\..\..\ace\Object_Manager.i"\
+ "..\..\..\ace\OS.h"\
+ "..\..\..\ace\OS.i"\
+ "..\..\..\ace\OS_Dirent.h"\
+ "..\..\..\ace\OS_Dirent.inl"\
+ "..\..\..\ace\OS_Errno.h"\
+ "..\..\..\ace\OS_Errno.inl"\
+ "..\..\..\ace\OS_Export.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.h"\
+ "..\..\..\ace\OS_Log_Msg_Attributes.inl"\
+ "..\..\..\ace\OS_Memory.h"\
+ "..\..\..\ace\OS_Memory.inl"\
+ "..\..\..\ace\OS_String.h"\
+ "..\..\..\ace\OS_String.inl"\
+ "..\..\..\ace\OS_TLI.h"\
+ "..\..\..\ace\OS_TLI.inl"\
+ "..\..\..\ace\post.h"\
+ "..\..\..\ace\pre.h"\
+ "..\..\..\ace\Process_Mutex.h"\
+ "..\..\..\ace\Process_Mutex.inl"\
+ "..\..\..\ace\Process_Semaphore.h"\
+ "..\..\..\ace\Process_Semaphore.inl"\
+ "..\..\..\ace\RW_Process_Mutex.h"\
+ "..\..\..\ace\RW_Process_Mutex.inl"\
+ "..\..\..\ace\Signal.h"\
+ "..\..\..\ace\Signal.i"\
+ "..\..\..\ace\Sock_Connect.h"\
+ "..\..\..\ace\Sock_Connect.i"\
+ "..\..\..\ace\streams.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.h"\
+ "..\..\..\ace\SV_Semaphore_Complex.i"\
+ "..\..\..\ace\SV_Semaphore_Simple.h"\
+ "..\..\..\ace\SV_Semaphore_Simple.i"\
+ "..\..\..\ace\svc_export.h"\
+ "..\..\..\ace\Synch.h"\
+ "..\..\..\ace\Synch.i"\
+ "..\..\..\ace\Synch_T.cpp"\
+ "..\..\..\ace\Synch_T.h"\
+ "..\..\..\ace\Synch_T.i"\
+ "..\..\..\ace\Test_and_Set.cpp"\
+ "..\..\..\ace\Test_and_Set.h"\
+ "..\..\..\ace\Test_and_Set.i"\
+ "..\..\..\ace\Thread.h"\
+ "..\..\..\ace\Thread.i"\
+ "..\..\..\ace\Thread_Adapter.h"\
+ "..\..\..\ace\Thread_Adapter.inl"\
+ "..\..\..\ace\Thread_Control.h"\
+ "..\..\..\ace\Thread_Control.inl"\
+ "..\..\..\ace\Thread_Exit.h"\
+ "..\..\..\ace\Thread_Hook.h"\
+ "..\..\..\ace\Trace.h"\
+ "..\..\..\ace\Unbounded_Set.cpp"\
+ "..\..\..\ace\Unbounded_Set.h"\
+ "..\..\..\ace\Unbounded_Set.inl"\
+ ".\Char_IBM1047_ISO8859_Translator.h"\
+ ".\codeset_export.h"\
+
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_export.h b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_export.h
new file mode 100644
index 00000000000..66305084475
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/IBM1047_ISO8859_export.h
@@ -0,0 +1,40 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl
+// ------------------------------
+#ifndef IBM1047_ISO8859_EXPORT_H
+#define IBM1047_ISO8859_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (AS_STATIC_LIBS)
+# if !defined (IBM1047_ISO8859_HAS_DLL)
+# define IBM1047_ISO8859_HAS_DLL 0
+# endif /* ! IBM1047_ISO8859_HAS_DLL */
+#else
+# if !defined (IBM1047_ISO8859_HAS_DLL)
+# define IBM1047_ISO8859_HAS_DLL 1
+# endif /* ! IBM1047_ISO8859_HAS_DLL */
+#endif
+
+#if defined (IBM1047_ISO8859_HAS_DLL) && (IBM1047_ISO8859_HAS_DLL == 1)
+# if defined (IBM1047_ISO8859_BUILD_DLL)
+# define IBM1047_ISO8859_Export ACE_Proper_Export_Flag
+# define IBM1047_ISO8859_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define IBM1047_ISO8859_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* IBM1047_ISO8859_BUILD_DLL */
+# define IBM1047_ISO8859_Export ACE_Proper_Import_Flag
+# define IBM1047_ISO8859_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define IBM1047_ISO8859_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* IBM1047_ISO8859_BUILD_DLL */
+#else /* IBM1047_ISO8859_HAS_DLL == 1 */
+# define IBM1047_ISO8859_Export
+# define IBM1047_ISO8859_SINGLETON_DECLARATION(T)
+# define IBM1047_ISO8859_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* IBM1047_ISO8859_HAS_DLL == 1 */
+
+#endif /* IBM1047_ISO8859_EXPORT_H */
+
+// End of auto generated file.
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Makefile b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Makefile
new file mode 100644
index 00000000000..03335d17556
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Makefile
@@ -0,0 +1,60 @@
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+#----------------------------------------------------------------------------
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+MAKEFILE = Makefile
+LIBNAME = libIBM1047_ISO8859
+LIB = $(LIBNAME).a
+SHLIB = $(LIBNAME).$(SOEXT)
+
+ACE_SHLIBS = -lTAO -lACE
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+include $(TAO_ROOT)/taoconfig.mk
+
+CPP_SRCS += \
+ Char_IBM1047_ISO8859_Translator \
+ Char_IBM1047_ISO8859_Factory \
+ Wchar_IBM1047_ISO8859_Translator \
+ Wchar_IBM1047_ISO8859_Factory
+
+IDL_SRC = \
+ $(addsuffix S.cpp, $(IDL_FILES)) \
+ $(addsuffix C.cpp, $(IDL_FILES))
+FILES = $(CPP_SRCS)
+DEFS = $(addsuffix .h,$(FILES))
+LSRC = $(addsuffix .cpp,$(FILES))
+
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+
+#----------------------------------------------------------------------------
+# Local targets (and local hacks)
+#----------------------------------------------------------------------------
+
+LDFLAGS += -L$(TAO_ROOT)/tao
+CPPFLAGS += -I$(TAO_ROOT)
+
+#----------------------------------------------------------------------------
+# Dependencies
+#----------------------------------------------------------------------------
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+
+.obj/Char_IBM1047_ISO8859_Translator.o .obj/Char_IBM1047_ISO8859_Translator.so .shobj/Char_IBM1047_ISO8859_Translator.o .shobj/Char_IBM1047_ISO8859_Translator.so: Char_IBM1047_ISO8859_Translator.cpp Char_IBM1047_ISO8859_Translator.h
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.cpp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.cpp
new file mode 100644
index 00000000000..60da234be4c
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.cpp
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/libs/IBM1047_ISO8859
+//
+// = FILENAME
+// Wchar_IBM1047_ISO8859_Factory.cpp
+//
+// = DESCRIPTION
+// A tempate instantiation of the codeset translator factory from TAO. This
+// one loads a modified version of ACE's IBM1047 (EBCDIC) to ISO8859 (ASCII)
+// translator. In this case, wchars and wstrings are translated rather than
+// strings and chars.
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+#include "Wchar_IBM1047_ISO8859_Factory.h"
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+
+template class TAO_Codeset_Translator_Factory_T<WIBM1047_ISO8859>;
+
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+
+#pragma instantiate TAO_Codeset_Translator_Factory_T<WIBM1047_ISO8859>
+
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
+ACE_STATIC_SVC_DEFINE (Wchar_IBM1047_ISO8859_Factory,
+ ACE_TEXT ("Wchar_IBM1047_ISO8859_Factory"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (Wchar_IBM1047_ISO8859_Factory),
+ ACE_Service_Type::DELETE_THIS
+ | ACE_Service_Type::DELETE_OBJ,
+ 0)
+ACE_FACTORY_DEFINE (IBM1047_ISO8859, Wchar_IBM1047_ISO8859_Factory)
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.h b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.h
new file mode 100644
index 00000000000..2fe1f40543e
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Factory.h
@@ -0,0 +1,40 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/libs/IBM1047_ISO8859
+//
+// = FILENAME
+// Wchar_IBM1047_ISO8859_Factory.cpp
+//
+// = DESCRIPTION
+// A tempate instantiation of the codeset translator factory from TAO. This
+// one loads a modified version of ACE's IBM1047 (EBCDIC) to ISO8859 (ASCII)
+// translator. In this case, wchars and wstrings are translated rather than
+// strings and chars.
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+#ifndef WCHAR_IBM1047_ISO8859_FACTORY_H
+#define WCHAR_IBM1047_ISO8859_FACTORY_H
+
+#include <ace/pre.h>
+#include <ace/Service_Config.h>
+#include <tao/Codeset_Translator_Factory.h>
+
+#include "IBM1047_ISO8859_export.h"
+#include "Wchar_IBM1047_ISO8859_Translator.h"
+
+typedef IBM1047_ISO8859_Export TAO_Codeset_Translator_Factory_T<WIBM1047_ISO8859> Wchar_IBM1047_ISO8859_Factory;
+
+ACE_STATIC_SVC_DECLARE_EXPORT (IBM1047_ISO8859, Wchar_IBM1047_ISO8859_Factory)
+ACE_FACTORY_DECLARE (IBM1047_ISO8859, Wchar_IBM1047_ISO8859_Factory)
+
+#include <ace/post.h>
+#endif /* WCHAR_IBM1047_ISO8859_FACTORY_H */
+
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.cpp b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.cpp
new file mode 100644
index 00000000000..7958ddbfa58
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.cpp
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// ace
+//
+// = FILENAME
+// Wchar_IBM1047_ISO8859_Translator.cpp
+//
+// = DESCRIPTION
+// Defines the arrays required to convert between ISO8859 (aka
+// Latin/1) and IBM1047 (aka EBCDIC).
+//
+// = AUTHOR
+// Mahesh Vedantam (mahesh@ociweb.com)
+//
+// ============================================================================
+
+#include "Wchar_IBM1047_ISO8859_Translator.h"
+
+ACE_RCSID(IBM1047_ISO8859, Wchar_IBM1047_ISO8859_Translator, "$Id$")
+
+// ****************************************************************
+
+WIBM1047_ISO8859::WIBM1047_ISO8859 (void)
+{
+
+}
+
+WIBM1047_ISO8859::~WIBM1047_ISO8859 (void)
+{
+
+}
+
+// = Documented in $ACE_ROOT/ace/CDR_Stream.h
+ACE_CDR::Boolean WIBM1047_ISO8859::read_wchar (ACE_InputCDR &,
+ ACE_CDR::WChar &)
+{
+ return 0;
+}
+
+ACE_CDR::Boolean WIBM1047_ISO8859::read_wstring (ACE_InputCDR &,
+ ACE_CDR::WChar *&)
+{
+ return 0;
+}
+
+ACE_CDR::Boolean WIBM1047_ISO8859::read_wchar_array (ACE_InputCDR &,
+ ACE_CDR::WChar *,
+ ACE_CDR::ULong)
+{
+ return 0;
+}
+
+ACE_CDR::Boolean WIBM1047_ISO8859::write_wchar (ACE_OutputCDR &,
+ ACE_CDR::WChar)
+{
+ return 0;
+}
+ACE_CDR::Boolean WIBM1047_ISO8859::write_wstring (ACE_OutputCDR &,
+ ACE_CDR::ULong,
+ const ACE_CDR::WChar *)
+{
+ return 0;
+}
+ACE_CDR::Boolean WIBM1047_ISO8859::write_wchar_array (ACE_OutputCDR &,
+ const ACE_CDR::WChar *,
+ ACE_CDR::ULong)
+{
+ return 0;
+}
+
diff --git a/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.h b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.h
new file mode 100644
index 00000000000..fadd6e30af9
--- /dev/null
+++ b/TAO/tests/CodeSets/libs/IBM1047_ISO8859/Wchar_IBM1047_ISO8859_Translator.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Wchar_IBM1047_ISO8859_Translator.h
+ *
+ * $Id$
+ *
+ * Declares the arrays required to convert between IBM1047 (aka EBCDIC) and ISO8859 (aka
+ * Latin/1).
+ *
+ *
+ * @author Jim Rogers (jrogers@viasoft.com)
+ */
+//=============================================================================
+
+#ifndef WCHAR_IBM1047_ISO8859_TRANSLATOR_H
+#define WCHAR_IBM1047_ISO8859_TRANSLATOR_H
+#include "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/CDR_Stream.h"
+#include "IBM1047_ISO8859_export.h"
+
+extern IBM1047_ISO8859_Export ACE_CDR::WChar Wchar_to_IBM1047[257];
+extern IBM1047_ISO8859_Export ACE_CDR::WChar Wchar_from_IBM1047[257];
+
+// ****************************************************************
+
+/**
+ * @class ACE_Char_IBM1047_ISO8859
+ *
+ * @brief Codeset translation specialization.
+ *
+ * This class performs the codeset translation:
+ * - Native: IBM_1047 (i.e. EBCDIC)
+ * - Stream: ISO-8859 (i.e. Latin/1)
+ */
+class IBM1047_ISO8859_Export WIBM1047_ISO8859 : public ACE_WChar_Codeset_Translator
+{
+public:
+ /// A do nothing constructor.
+ WIBM1047_ISO8859 (void);
+
+ /// Virtual destruction
+ virtual ~WIBM1047_ISO8859 (void);
+
+ // = Documented in $ACE_ROOT/ace/CDR_Stream.h
+ virtual ACE_CDR::Boolean read_wchar (ACE_InputCDR &,
+ ACE_CDR::WChar &);
+ virtual ACE_CDR::Boolean read_wstring (ACE_InputCDR &,
+ ACE_CDR::WChar *&);
+ virtual ACE_CDR::Boolean read_wchar_array (ACE_InputCDR &,
+ ACE_CDR::WChar *,
+ ACE_CDR::ULong);
+ virtual ACE_CDR::Boolean write_wchar (ACE_OutputCDR &,
+ ACE_CDR::WChar);
+ virtual ACE_CDR::Boolean write_wstring (ACE_OutputCDR &,
+ ACE_CDR::ULong,
+ const ACE_CDR::WChar *);
+ virtual ACE_CDR::Boolean write_wchar_array (ACE_OutputCDR &,
+ const ACE_CDR::WChar *,
+ ACE_CDR::ULong);
+ virtual ACE_CDR::ULong ncs () {return 0x10020417;}
+ virtual ACE_CDR::ULong tcs () {return 0x00010001;}
+};
+
+#include "ace/post.h"
+#endif /* WCHAR_IBM1047_ISO8859_TRANSLATOR */
+
diff --git a/TAO/tests/CodeSets/simple/Makefile b/TAO/tests/CodeSets/simple/Makefile
new file mode 100644
index 00000000000..05d5c015037
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/Makefile
@@ -0,0 +1,61 @@
+# $Id$
+#
+#----------------------------------------------------------------------------
+# Local macros
+#----------------------------------------------------------------------------
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+IDL_FILES = simple
+
+IDL_SRC = \
+ $(addsuffix S.cpp, $(IDL_FILES)) \
+ $(addsuffix C.cpp, $(IDL_FILES))
+
+BIN = client server
+
+CPP_SRCS = $(addsuffix .cpp, $(BIN)) $(IDL_SRC)
+
+CLIENT_OBJS = simpleC.o client.o
+SERVER_OBJS = simpleS.o server.o $(IDL_SRC:.cpp=.o)
+
+TAO_IDLFLAGS += -Ge 1
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+include $(TAO_ROOT)/taoconfig.mk
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+
+simpleC.cpp: simple.idl
+ $(TAO_ROOT)/TAO_IDL/tao_idl -Ge 1 -Wb,export_macro=TAO_Export \
+ simple.idl
+
+simpleS.cpp: simple.idl
+ $(TAO_ROOT)/TAO_IDL/tao_idl -Ge 1 -Wb,export_macro=TAO_Export \
+ simple.idl
+
+server: $(addprefix $(VDIR),$(SERVER_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ -lTAO_Messaging $(TAO_SRVR_LIBS) \
+ $(POSTLINK)
+
+client: $(addprefix $(VDIR),$(CLIENT_OBJS))
+ $(LINK.cc) $(LDFLAGS) -o $@ $^ -lTAO_Messaging $(TAO_CLNT_LIBS) \
+ $(POSTLINK)
+
+clobber.local:
+ $(RM) -f simple[CS]*.*
+ $(RM) -f client server
+
diff --git a/TAO/tests/CodeSets/simple/README b/TAO/tests/CodeSets/simple/README
new file mode 100644
index 00000000000..d66352e747f
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/README
@@ -0,0 +1,29 @@
+Simple codeset translation test.
+
+As delivered, this test works with the IBM1047 - ISO8859 translator which is
+built as part of the library delivered with this test.
+
+After building the client and server, run one or the other with the supplied
+configuration file. Be sure to supply the configuration file to only one side
+or the other, not both. If you do both, no translation will happen.
+
+If the translators and the framework are working properly you will see the
+client report some text before and after a call. The before and after should be
+identical. The server side should look like garbage.
+
+The translation will occur on the side that takes the configuration file. If
+you run either side with -ORBDebuglevel 10, you will see that when the client
+is doing the translation the data in the message content dump is garbled and
+when the server is translating the message content dump is clear.
+
+To run with the client doing translation:
+ ./Server &
+ ./Client -orbsvcconf cs_test.conf
+
+To run with the server doing translation:
+ ./Server -orbsvcconf cs_test.conf
+ ./Client
+
+The server dumps its IOR to a file: server.ior. Use catior -f server.ior
+(from $TAO_ROOT/utils/catior) to see how the context information is added
+to the profiles.
diff --git a/TAO/tests/CodeSets/simple/client.cpp b/TAO/tests/CodeSets/simple/client.cpp
new file mode 100644
index 00000000000..2a2cadc0112
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/client.cpp
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/simple
+//
+// = FILENAME
+// client.cpp
+//
+// = DESCRIPTION
+// A simple client to demonstrate the use of codeset translation
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+// IDL generated headers
+#include "simpleC.h"
+
+// ------------------------------------------------------------
+// Client
+// ------------------------------------------------------------
+int main(int argc, char *argv[])
+{
+ char buf[1000];
+
+ ACE_TRY_NEW_ENV
+ {
+ // Init the orb
+ CORBA::ORB_var orb= CORBA::ORB_init (argc, argv);
+ ACE_TRY_CHECK;
+
+ // Get IOR from command line (or file)
+ if(argc != 2)
+ {
+ ifstream fstr;
+ fstr.open("server.ior");
+ if (fstr.bad())
+ {
+ cout << "Cannot open server.ior and no IOR argument!" << endl;
+ exit(1);
+ }
+ else
+ {
+ fstr >> buf;
+ }
+ }
+ else
+ {
+ strcpy(buf, argv[1]);
+ }
+
+ // The first arg should be the IOR
+ CORBA::Object_var object= orb->string_to_object(buf
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // Get the server
+ CORBA::Environment env;
+ simple_var server= simple::_narrow (object.in() ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // invoke the call
+ CORBA::String_var reply =
+ server->op1("Hello World" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ cout << "sent Hello World, got " << reply << endl;
+
+ reply = server->op1("Goodbye World" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ cout << "sent Goodby World, got " << reply << endl;
+
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+}
+
diff --git a/TAO/tests/CodeSets/simple/cs_test.conf b/TAO/tests/CodeSets/simple/cs_test.conf
new file mode 100644
index 00000000000..19166dba20e
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/cs_test.conf
@@ -0,0 +1,4 @@
+dynamic Char_IBM1047_ISO8859_Factory Service_Object * IBM1047_ISO8859:_make_Char_IBM1047_ISO8859_Factory ()
+
+static Resource_Factory
+ "-ORBNativeCharCodeSet 0x10020417 -ORBCharCodesetTranslator Char_IBM1047_ISO8859_Factory"
diff --git a/TAO/tests/CodeSets/simple/server.cpp b/TAO/tests/CodeSets/simple/server.cpp
new file mode 100644
index 00000000000..9956990d026
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/server.cpp
@@ -0,0 +1,122 @@
+// -*- C++ -*-
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/CodeSets/simple
+//
+// = FILENAME
+// client.cpp
+//
+// = DESCRIPTION
+// A simple client to demonstrate the use of codeset translation
+//
+// = AUTHORS
+// Phil Mesnier <mesnier_p@ociweb.com>
+//
+// ============================================================================
+
+// IDL generated header
+#include "simpleS.h"
+
+
+// ------------------------------------------------------------
+// Servant for associated CORBA object
+// ------------------------------------------------------------
+class SimpleImpl : public POA_simple
+{
+public:
+
+ // implementation of corba interface
+ char* op1(const char * name ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ cout << "Got: " << name << endl;
+
+ return(CORBA::string_dup (name));
+ };
+};
+
+// ------------------------------------------------------------
+// Main routine
+// ------------------------------------------------------------
+int main(int argc, char *argv[])
+{
+
+ ACE_TRY_NEW_ENV
+ {
+ // Init the orb
+ CORBA::ORB_var orb= CORBA::ORB_init (argc, argv);
+ ACE_TRY_CHECK;
+
+ // Initialize POA
+ CORBA::Object_var poa_object=
+ orb->resolve_initial_references("RootPOA");
+ ACE_TRY_CHECK;
+
+ // Check POA
+ if(CORBA::is_nil(poa_object.in()))
+ {
+ cout << "Couldn't initialize POA" << endl;
+ return(1);
+ }
+ ACE_TRY_CHECK;
+
+ // Get the ROOT POA
+ PortableServer::POA_var root_poa=
+ PortableServer::POA::_narrow (poa_object.in ());
+ ACE_TRY_CHECK;
+
+ // Get the POA manager
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+ ACE_TRY_CHECK;
+
+ // Create a C++ implementation of CORBA object
+ SimpleImpl* my_impl= new SimpleImpl;
+
+ // Create CORBA object for servant and REGISTER with POA
+ simple_var server= my_impl->_this();
+ ACE_TRY_CHECK;
+
+ // Get the IOR for our object
+ CORBA::String_var ior= orb->object_to_string (server.in ());
+ ACE_TRY_CHECK;
+
+ // Save IOR
+ cout << "Writing IOR to file: \n" << endl;
+ cout << ior.in() << endl;
+
+ ofstream fstr;
+ fstr.open("server.ior");
+ if (fstr.bad())
+ {
+ cout << "Cannot open server.ior!" << endl;
+ exit(1);
+ }
+ else
+ {
+ fstr << ior.in() << endl;
+ }
+
+ ACE_TRY_CHECK;
+
+ // Activate POA manager
+ poa_manager->activate();
+ ACE_TRY_CHECK;
+
+ // Wait for calls
+ orb->run(ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+}
diff --git a/TAO/tests/CodeSets/simple/simple.idl b/TAO/tests/CodeSets/simple/simple.idl
new file mode 100644
index 00000000000..e137e083b14
--- /dev/null
+++ b/TAO/tests/CodeSets/simple/simple.idl
@@ -0,0 +1,6 @@
+// $Id$
+
+interface simple
+{
+ string op1(in string name);
+};
diff --git a/TAO/utils/catior/catior.cpp b/TAO/utils/catior/catior.cpp
index b00019c826f..636ffd2d7d2 100644
--- a/TAO/utils/catior/catior.cpp
+++ b/TAO/utils/catior/catior.cpp
@@ -18,6 +18,7 @@
//
// ============================================================================
+#include "ace/Codeset_Registry.h"
#include "ace/Get_Opt.h"
#include "ace/streams.h"
#include "tao/corba.h"
@@ -828,6 +829,98 @@ cat_object_key (TAO_InputCDR& stream)
return cat_octet_seq ("Object Key", stream);
}
+ACE_CString
+ _find_info (CORBA::ULong id)
+{
+ ACE_CString locale="";
+ ACE_Codeset_Registry::registry_to_locale(id, locale, NULL, NULL);
+ return locale;
+}
+
+void displayHex( TAO_InputCDR &str )
+{
+ if (str.good_bit () == 0 )
+ return;
+
+ TAO_InputCDR clone_str( str );
+ CORBA::ULong theSetId ;
+ str.read_ulong(theSetId);
+ ACE_DEBUG ((LM_DEBUG," Hex - %x", theSetId));
+ ACE_DEBUG ((LM_DEBUG," Description - "));
+ ACE_CString theDescr = _find_info ( theSetId );
+
+ if( theDescr.length() == 0 )
+ {
+ ACE_DEBUG ((LM_DEBUG," Unknown CodeSet \n "));
+ return;
+ }
+
+ ACE_DEBUG (( LM_DEBUG," %s \n", theDescr.c_str()));
+}
+
+static CORBA::Boolean
+cat_codeset_info(TAO_InputCDR& stream)
+{
+ // Component Length
+ CORBA::ULong compLen=0L;
+ stream >> compLen;
+ ACE_DEBUG ((LM_DEBUG, "\tComponent Length %u \n", compLen));
+
+ // Byte Order
+ CORBA::ULong byteOrder;
+ stream >> byteOrder;
+
+ if( byteOrder )
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "\tThe Component Byte Order:\tLittle Endian\n"));
+ }
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "\tThe Component Byte Order:\tBig Endian\n"));
+
+ // CodesetId for char
+ // CORBA::ULong c_ncsId;
+ ACE_DEBUG ((LM_DEBUG, "\tNative CodeSet for char: "));
+ displayHex( stream );
+
+ // number of Conversion Codesets for char
+ CORBA::ULong c_ccslen=0;
+ stream >> c_ccslen;
+ ACE_DEBUG ((LM_DEBUG, "\tNumber of CCS for char %u \n", c_ccslen));
+
+ if( c_ccslen )
+ ACE_DEBUG ((LM_DEBUG, "\tConversion Codesets for char are: \n"));
+
+ // Loop through and display them
+ for( CORBA::ULong index=0; index < c_ccslen; ++index)
+ {
+ // CodesetId for char
+ ACE_DEBUG ((LM_DEBUG, "\t%u) ", index + 1L));
+ displayHex( stream );
+ }
+
+ // CodesetId for wchar
+ ACE_DEBUG ((LM_DEBUG, "\tNative CodeSet for wchar: "));
+ displayHex( stream );
+
+ // number of Conversion Codesets for char
+ CORBA::ULong w_ccslen=0;
+ stream >> w_ccslen;
+ ACE_DEBUG ((LM_DEBUG, "\tNumber of CCS for wchar %u \n", w_ccslen));
+
+ if( w_ccslen )
+ ACE_DEBUG ((LM_DEBUG, "\tConversion Codesets for wchar are: \n"));
+
+ // Loop through and display them
+ for( CORBA::ULong index=0; index < w_ccslen; ++index)
+ {
+ ACE_DEBUG ((LM_DEBUG, "\t %u) ", index + 1L));
+ displayHex( stream );
+ }
+ return 1;
+}
+
static CORBA::Boolean
cat_tagged_components (TAO_InputCDR& stream)
{
@@ -854,7 +947,7 @@ cat_tagged_components (TAO_InputCDR& stream)
} else if (tag == IOP::TAG_CODE_SETS) {
ACE_DEBUG ((LM_DEBUG,"%d (TAG_CODE_SETS)\n", tag));
ACE_DEBUG ((LM_DEBUG, "%{%{"));
- cat_octet_seq ("Component Value" ,stream);
+ cat_codeset_info(stream);
ACE_DEBUG ((LM_DEBUG, "%}%}"));
} else if (tag == IOP::TAG_ALTERNATE_IIOP_ADDRESS) {