1 //=============================================================================
3 * @file Codeset_Registry.cpp
5 * $Id: Codeset_Registry.cpp 80826 2008-03-04 14:51:23Z wotte $
7 * emulated codset regstry functions
10 * @author Phil Mesnier <mesnier_p@ociweb.com>
12 //=============================================================================
14 #include "ace/Codeset_Registry.h"
15 #include "ace/OS_Memory.h"
16 #include "ace/OS_NS_string.h"
18 // $Id: Codeset_Registry.cpp 80826 2008-03-04 14:51:23Z wotte $
20 #if !defined (__ACE_INLINE__)
21 #include "ace/Codeset_Registry.inl"
22 #endif /* __ACE_INLINE__ */
26 "$Id: Codeset_Registry.cpp 80826 2008-03-04 14:51:23Z wotte $")
28 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
31 ACE_Codeset_Registry::locale_to_registry_i (const ACE_CString
&locale
,
32 ACE_CDR::ULong
&codeset_id
,
33 ACE_CDR::UShort
*num_sets
,
34 ACE_CDR::UShort
**char_sets
)
36 registry_entry
const *element
= 0;
37 for (size_t i
= 0; element
== 0 && i
< num_registry_entries_
; i
++)
38 if (ACE_OS::strcmp (registry_db_
[i
].loc_name_
, locale
.c_str ()) == 0)
39 element
= ®istry_db_
[i
];
42 codeset_id
= element
->codeset_id_
;
44 *num_sets
= element
->num_sets_
;
47 ACE_NEW_RETURN (*char_sets
,ACE_CDR::UShort
[element
->num_sets_
],0);
48 ACE_OS::memcpy (*char_sets
, element
->char_sets_
,
49 element
->num_sets_
* sizeof (ACE_CDR::UShort
));
55 ACE_Codeset_Registry::registry_to_locale_i (ACE_CDR::ULong codeset_id
,
57 ACE_CDR::UShort
*num_sets
,
58 ACE_CDR::UShort
**char_sets
)
60 registry_entry
const *element
= 0;
61 for (size_t i
= 0; element
== 0 && i
< num_registry_entries_
; i
++)
62 if (codeset_id
== registry_db_
[i
].codeset_id_
)
63 element
= ®istry_db_
[i
];
66 locale
.set (element
->loc_name_
);
68 *num_sets
= element
->num_sets_
;
71 ACE_NEW_RETURN (*char_sets
,ACE_CDR::UShort
[element
->num_sets_
],0);
72 ACE_OS::memcpy (*char_sets
, element
->char_sets_
,
73 element
->num_sets_
* sizeof (ACE_CDR::UShort
));
79 ACE_Codeset_Registry::is_compatible_i (ACE_CDR::ULong codeset_id
,
82 registry_entry
const *lhs
= 0;
83 registry_entry
const *rhs
= 0;
84 for (size_t i
= 0; (lhs
== 0 || rhs
== 0) && i
< num_registry_entries_
; i
++)
86 if (codeset_id
== registry_db_
[i
].codeset_id_
)
87 lhs
= ®istry_db_
[i
];
88 if (other
== registry_db_
[i
].codeset_id_
)
89 rhs
= ®istry_db_
[i
];
92 if (lhs
== 0 || rhs
== 0)
95 for (ACE_CDR::UShort l
= 0; l
< lhs
->num_sets_
; l
++)
96 for (ACE_CDR::UShort r
= 0; r
< rhs
->num_sets_
; r
++)
97 if (rhs
->char_sets_
[r
] == lhs
->char_sets_
[l
])
103 ACE_Codeset_Registry::get_max_bytes_i (ACE_CDR::ULong codeset_id
)
105 for (size_t i
= 0; i
< num_registry_entries_
; i
++)
106 if (codeset_id
== registry_db_
[i
].codeset_id_
)
107 return registry_db_
[i
].max_bytes_
;
111 ACE_END_VERSIONED_NAMESPACE_DECL