summaryrefslogtreecommitdiff
path: root/TAO/utils/catior/catior.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/utils/catior/catior.cpp')
-rw-r--r--TAO/utils/catior/catior.cpp95
1 files changed, 94 insertions, 1 deletions
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) {