CORBA::TypeCode Class Reference

The CORBA TypeCode class. It maintains the in-memory representation of any OMG CORBA IDL data type. More...

#include <Typecode.h>

Collaboration diagram for CORBA::TypeCode:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_Unbounded_Queue<
CORBA::Long
OFFSET_LIST
typedef ACE_Unbounded_Queue_Iterator<
CORBA::Long
OFFSET_LIST_ITERATOR
typedef ACE_Hash_Map_Entry<
const char *, OFFSET_LIST * > 
OFFSET_MAP_ENTRY
typedef ACE_Hash_Map_Manager_Ex<
const char *, OFFSET_LIST *,
ACE_Hash< const char * >,
ACE_Equal_To< const char * >,
ACE_Null_Mutex
OFFSET_MAP
typedef ACE_Hash_Map_Iterator_Ex<
const char *, OFFSET_LIST *,
ACE_Hash< const char * >,
ACE_Equal_To< const char * >,
ACE_Null_Mutex
OFFSET_MAP_ITERATOR
typedef CORBA::TypeCode_ptr _ptr_type
typedef CORBA::TypeCode_var _var_type

Public Member Functions

CORBA::Boolean equal (CORBA::TypeCode_ptr ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
 Compares two typecodes. Must be identical in every respect.
CORBA::Boolean equivalent (CORBA::TypeCode_ptr ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
 Conforms to CORBA 2.3.1 (99-10-07).
CORBA::TCKind kind (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 For all TypeCode kinds, returns the "kind" of the typecode.
const char * id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
const char * name (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 Returns name (), raises (BadKind).
CORBA::ULong member_count (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
const char * member_name (CORBA::ULong slot ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
CORBA::TypeCode_ptr member_type (CORBA::ULong slot ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
CORBA::Any_ptr member_label (CORBA::ULong n ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
 For tk_union. Returns the label. Raises BadKind, Bounds.
CORBA::TypeCode_ptr discriminator_type (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 Returns the discriminator type for tk_union. raises (BadKind).
CORBA::Long default_index (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 Returns the default slot for the tk_union. Raises (BadKind).
CORBA::ULong length (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
CORBA::TypeCode_ptr content_type (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
CORBA::UShort fixed_digits (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 These just throw CORBA::NO_IMPLEMENT.
CORBA::Short fixed_scale (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
CORBA::Visibility member_visibility (CORBA::ULong slot ACE_ENV_ARG_DECL_WITH_DEFAULTS) const
CORBA::ValueModifier type_modifier (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 Returns the value modifier. Raises (BadKind). Useful for tk_value only.
CORBA::TypeCode_ptr concrete_base_type (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
 TypeCode (CORBA::TCKind kind)
 TypeCode (CORBA::TCKind kind, size_t length, const char *buffer, CORBA::Boolean orb_owns_tc, CORBA::ULong size, CORBA::TypeCode_ptr parent=0)
 ~TypeCode (void)
 destructor
CORBA::ULong _incr_refcnt (void)
 These are used to indicate the status of marshaling.
CORBA::ULong _decr_refcnt (void)
CORBA::Any_ptr parameter (const CORBA::Long slot ACE_ENV_ARG_DECL_WITH_DEFAULTS)
CORBA::ULong param_count (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) const
TypeCode_ptr unalias (ACE_ENV_SINGLE_ARG_DECL)
 Strip away all typedefs, if any.
OFFSET_MAPoffset_map (void) const
void offset_map (OFFSET_MAP *new_map)

Static Public Member Functions

static CORBA::TypeCode_ptr _duplicate (CORBA::TypeCode_ptr tc)
 Duplicates i.e., increments ref count.
static CORBA::TypeCode_ptr _nil (void)
 Returns a NULL typecode.
static void _tao_decode (const TypeCode *parent, TAO_InputCDR &cdr, TypeCode *&child ACE_ENV_ARG_DECL)
static void _tao_any_destructor (void *)
 Used in our destruction when we are in an Any.
static CORBA::Boolean skip_typecode (TAO_InputCDR &stream)

Public Attributes

size_t length_
 length of the encapsulated stream
const char * buffer_
 the encapsulated stream
CORBA::Long byte_order_
 The byte order in the encapsulated stream.
CORBA::Long kind_
 the TypeCode kind
CORBA::TypeCode_ptr parent_
const char * tc_base_
const char * root_tc_base_

Static Public Attributes

static CORBA::TypeCode_ptr _tc_Bounds = 0
static CORBA::TypeCode_ptr _tc_BadKind = 0

Private Member Functions

CORBA::Boolean equ_common (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
CORBA::Boolean private_equal (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 Compares the typecodes.
const char * private_id (ACE_ENV_SINGLE_ARG_DECL) const
const char * private_name (ACE_ENV_SINGLE_ARG_DECL) const
 returns name (), raises (BadKind)
CORBA::ULong private_member_count (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::TypeCode_ptr private_member_type (CORBA::ULong slot ACE_ENV_ARG_DECL) const
const char * private_member_name (CORBA::ULong slot ACE_ENV_ARG_DECL) const
CORBA::Any_ptr private_member_label (CORBA::ULong n ACE_ENV_ARG_DECL) const
 For tk_union. Returns the label. Raises BadKind, Bounds.
CORBA::TypeCode_ptr private_discriminator_type (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::TypeCode_ptr private_discriminator_type_i (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::Long private_default_index (ACE_ENV_SINGLE_ARG_DECL) const
 returns the default slot for the tk_union. Raises (BadKind);
CORBA::Long private_default_index_i (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::Long private_length (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::TypeCode_ptr private_content_type (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::Visibility private_member_visibility (CORBA::ULong slot ACE_ENV_ARG_DECL) const
CORBA::ValueModifier private_type_modifier (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::TypeCode_ptr private_concrete_base_type (ACE_ENV_SINGLE_ARG_DECL) const
CORBA::Boolean private_equal_objref (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of objrefs
CORBA::Boolean private_equal_struct (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of structs
CORBA::Boolean private_equal_union (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of unions
CORBA::Boolean private_equal_enum (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of enums
CORBA::Boolean private_equal_string (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of strings
CORBA::Boolean private_equal_wstring (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of wide strings
CORBA::Boolean private_equal_sequence (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of sequences
CORBA::Boolean private_equal_array (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of array
CORBA::Boolean private_equal_alias (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of typedefs
CORBA::Boolean private_equal_except (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of exceptions
CORBA::Boolean private_equal_valuetype (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only ACE_ENV_ARG_DECL) const
 test equality for typecodes of exceptions
 TypeCode (const CORBA::TypeCode &src)
TypeCodeoperator= (const CORBA::TypeCode &src)

Private Attributes

CORBA::ULong refcount_
 if refcount reaches 0, free this typecode
TAO_SYNCH_MUTEX refcount_lock_
CORBA::Boolean orb_owns_
TAO::TC_Private_Stateprivate_state_
char * non_aligned_buffer_
OFFSET_MAPoffset_map_

Classes

class  BadKind
class  Bounds

Detailed Description

The CORBA TypeCode class. It maintains the in-memory representation of any OMG CORBA IDL data type.

Implements the CORBA::TypeCode interface specified by CORBA 2.0 spec. Typecodes essentially consist of just the CDR octets that get marshaled and unmarshaled, and this code knows how to parse those octets and answer questions CORBA's TypeCode APIs require.

A TypeCode describes data. This one's as thin a wrapper around CDR octet sequences as is practical. There are guesses here about how the OMG C++ mapping and CORBA 2.0 IfR specification will interact.
Note:
Use TypeCode_ptr, except in code (e.g. output of and OMG-IDL / compiler) that needs to create typecodes from their octet-sequence encodings.

This isn't well tuned performance-wise. Given how much is variable (byte order, alignment) it's clear tuning has its limits with respect to CDR bytecode interpretation.

(THREADING) Typecodes are readonly data structures, and the only mutual exclusion relates to reference counting and construction.


Member Typedef Documentation

typedef CORBA::TypeCode_ptr CORBA::TypeCode::_ptr_type
 

typedef CORBA::TypeCode_var CORBA::TypeCode::_var_type
 

typedef ACE_Unbounded_Queue<CORBA::Long> CORBA::TypeCode::OFFSET_LIST
 

typedef ACE_Unbounded_Queue_Iterator<CORBA::Long> CORBA::TypeCode::OFFSET_LIST_ITERATOR
 

typedef ACE_Hash_Map_Manager_Ex<const char *, OFFSET_LIST *, ACE_Hash<const char *>, ACE_Equal_To<const char *>, ACE_Null_Mutex> CORBA::TypeCode::OFFSET_MAP
 

typedef ACE_Hash_Map_Entry<const char *, OFFSET_LIST *> CORBA::TypeCode::OFFSET_MAP_ENTRY
 

typedef ACE_Hash_Map_Iterator_Ex<const char *, OFFSET_LIST *, ACE_Hash<const char *>, ACE_Equal_To<const char *>, ACE_Null_Mutex> CORBA::TypeCode::OFFSET_MAP_ITERATOR
 


Constructor & Destructor Documentation

CORBA::TypeCode::TypeCode CORBA::TCKind  kind  ) 
 

This constructor is used only for built-in TypeCode constants, with no parameters.

CORBA::TypeCode::TypeCode CORBA::TCKind  kind,
size_t  length,
const char *  buffer,
CORBA::Boolean  orb_owns_tc,
CORBA::ULong  size,
CORBA::TypeCode_ptr  parent = 0
 

This constructor is used both for typecode constants and for heap-allocated TypeCodes. The two are distinguished by the orb_owns_tc flag passed in by the creator.

For simple param lists with a single numeric parameter, only 'length' matters.

For complex param lists, or simple param lists for which the parameter is a string or typecode, length _and_ buffer matter.

For typecodes that are precomputed from the encapsulation stream of the parent, even the "parent" argument matters because this implies that all children will share the octet buffers of its parent

CORBA::TypeCode::~TypeCode void   ) 
 

destructor

CORBA::TypeCode::TypeCode const CORBA::TypeCode src  )  [private]
 


Member Function Documentation

ACE_INLINE CORBA::ULong CORBA::TypeCode::_decr_refcnt void   ) 
 

ACE_INLINE CORBA::TypeCode_ptr CORBA::TypeCode::_duplicate CORBA::TypeCode_ptr  tc  )  [static]
 

Duplicates i.e., increments ref count.

ACE_INLINE CORBA::ULong CORBA::TypeCode::_incr_refcnt void   ) 
 

These are used to indicate the status of marshaling.

ACE_INLINE CORBA::TypeCode_ptr CORBA::TypeCode::_nil void   )  [static]
 

Returns a NULL typecode.

void CORBA::TypeCode::_tao_any_destructor void *   )  [static]
 

Used in our destruction when we are in an Any.

static void CORBA::TypeCode::_tao_decode const TypeCode parent,
TAO_InputCDR cdr,
TypeCode *&child  ACE_ENV_ARG_DECL
[static]
 

CDR decoding: the >> operator is not enough because we must also respect the parent/child relationship among TypeCodes.

CORBA::TypeCode_ptr CORBA::TypeCode::concrete_base_type ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns the concrete base type. Raises (BadKind); Useful for tk_value only.

CORBA::TypeCode_ptr CORBA::TypeCode::content_type ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns the content type (element type). Raises (BadKind); Useful for tk_sequence, tk_array, and tk_alias.

CORBA::Long CORBA::TypeCode::default_index ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns the default slot for the tk_union. Raises (BadKind).

CORBA::TypeCode_ptr CORBA::TypeCode::discriminator_type ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns the discriminator type for tk_union. raises (BadKind).

CORBA::Boolean CORBA::TypeCode::equ_common CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

equal() and equivalent() must both recurse, but their behavior is somewhat different (as defined in CORBA 2.3). This function allows us to reuse the same code by acting as the point of recursion and by adding the equiv_only flag, to differentiate the behavior where necessary.

CORBA::Boolean CORBA::TypeCode::equal CORBA::TypeCode_ptr  ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

Compares two typecodes. Must be identical in every respect.

CORBA::Boolean CORBA::TypeCode::equivalent CORBA::TypeCode_ptr  ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

Conforms to CORBA 2.3.1 (99-10-07).

CORBA::UShort CORBA::TypeCode::fixed_digits ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

These just throw CORBA::NO_IMPLEMENT.

CORBA::Short CORBA::TypeCode::fixed_scale ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

const char* CORBA::TypeCode::id ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

For tk_{objref,struct,union,enum,alias,except}. Returns the repository ID, raises BadKind.

CORBA::TCKind CORBA::TypeCode::kind ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

For all TypeCode kinds, returns the "kind" of the typecode.

CORBA::ULong CORBA::TypeCode::length ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns length, raises (BadKind). Used for tk_string, tk_sequence, and tk_array.

CORBA::ULong CORBA::TypeCode::member_count ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns member_count (), raises (BadKind). Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

CORBA::Any_ptr CORBA::TypeCode::member_label CORBA::ULong ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

For tk_union. Returns the label. Raises BadKind, Bounds.

const char * CORBA::TypeCode::member_name CORBA::ULong slot  ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

Returns member_name (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

CORBA::TypeCode_ptr CORBA::TypeCode::member_type CORBA::ULong slot  ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

Returns member_type (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, and tk_except.

CORBA::Visibility CORBA::TypeCode::member_visibility CORBA::ULong slot  ACE_ENV_ARG_DECL_WITH_DEFAULTS  )  const
 

Returns the visibility (public/private) of the member at index 'slot'. Raises (BadKind, Bounds). Useful for tk_value only.

const char* CORBA::TypeCode::name ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns name (), raises (BadKind).

ACE_INLINE void CORBA::TypeCode::offset_map OFFSET_MAP new_map  ) 
 

ACE_INLINE CORBA::TypeCode::OFFSET_MAP * CORBA::TypeCode::offset_map void   )  const
 

TypeCode& CORBA::TypeCode::operator= const CORBA::TypeCode src  )  [private]
 

CORBA::ULong CORBA::TypeCode::param_count ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Deprecated, CORBA 1.2, not fully usable. Returns the number of parameters that the typecode takes.

CORBA::Any_ptr CORBA::TypeCode::parameter const CORBA::Long slot  ACE_ENV_ARG_DECL_WITH_DEFAULTS  ) 
 

Deprecated in the CORBA 2.2 spec and missing altogether from 2.3a (98-12-04),

CORBA::TypeCode_ptr CORBA::TypeCode::private_concrete_base_type ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Returns the concrete base type. Raises (BadKind). Useful for tk_value only.

CORBA::TypeCode_ptr CORBA::TypeCode::private_content_type ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Returns the content type (element type). Raises (BadKind); Useful for tk_sequence, tk_array, and tk_alias.

CORBA::Long CORBA::TypeCode::private_default_index ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

returns the default slot for the tk_union. Raises (BadKind);

CORBA::Long CORBA::TypeCode::private_default_index_i ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Acquires no lock so it can be called internally from blocks which have a lock.

CORBA::TypeCode_ptr CORBA::TypeCode::private_discriminator_type ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

returns the discriminator type for tk_union, and acquires the lock for the wrapped function below. raises (BadKind)

CORBA::TypeCode_ptr CORBA::TypeCode::private_discriminator_type_i ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Acquires no lock so it can be called internally from blocks which have a lock.

CORBA::Boolean CORBA::TypeCode::private_equal CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

Compares the typecodes.

CORBA::Boolean CORBA::TypeCode::private_equal_alias CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of typedefs

CORBA::Boolean CORBA::TypeCode::private_equal_array CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of array

CORBA::Boolean CORBA::TypeCode::private_equal_enum CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of enums

CORBA::Boolean CORBA::TypeCode::private_equal_except CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of exceptions

CORBA::Boolean CORBA::TypeCode::private_equal_objref CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of objrefs

CORBA::Boolean CORBA::TypeCode::private_equal_sequence CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of sequences

CORBA::Boolean CORBA::TypeCode::private_equal_string CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of strings

CORBA::Boolean CORBA::TypeCode::private_equal_struct CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of structs

CORBA::Boolean CORBA::TypeCode::private_equal_union CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of unions

CORBA::Boolean CORBA::TypeCode::private_equal_valuetype CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of exceptions

CORBA::Boolean CORBA::TypeCode::private_equal_wstring CORBA::TypeCode_ptr  tc,
CORBA::Boolean equiv_only  ACE_ENV_ARG_DECL
const [private]
 

test equality for typecodes of wide strings

const char * CORBA::TypeCode::private_id ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

For tk_{objref,struct,union,enum,alias,except}. Returns the repository ID, raises BadKind.

CORBA::Long CORBA::TypeCode::private_length ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Returns length, raises (BadKind). Used for tk_string, tk_sequence, and tk_array.

CORBA::ULong CORBA::TypeCode::private_member_count ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

returns member_count (), raises (BadKind). Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

CORBA::Any_ptr CORBA::TypeCode::private_member_label CORBA::ULong ACE_ENV_ARG_DECL  )  const [private]
 

For tk_union. Returns the label. Raises BadKind, Bounds.

const char * CORBA::TypeCode::private_member_name CORBA::ULong slot  ACE_ENV_ARG_DECL  )  const [private]
 

returns member_name (...), raises (BadKind, Bounds); Useful for tk_union, tk_struct, tk_except, and tk_enum

CORBA::TypeCode_ptr CORBA::TypeCode::private_member_type CORBA::ULong slot  ACE_ENV_ARG_DECL  )  const [private]
 

returns member_type (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, and tk_except

CORBA::Visibility CORBA::TypeCode::private_member_visibility CORBA::ULong slot  ACE_ENV_ARG_DECL  )  const [private]
 

Returns the visibility (public/private) of the member at index 'slot'. Raises (BadKind, Bounds). Useful for tk_value only.

const char * CORBA::TypeCode::private_name ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

returns name (), raises (BadKind)

CORBA::ValueModifier CORBA::TypeCode::private_type_modifier ACE_ENV_SINGLE_ARG_DECL   )  const [private]
 

Returns the value modifier. Raises (BadKind). Useful for tk_value only.

CORBA::Boolean CORBA::TypeCode::skip_typecode TAO_InputCDR stream  )  [static]
 

skip a typecode encoding in a given CDR stream. This is just a helper function.

CORBA::ValueModifier CORBA::TypeCode::type_modifier ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS   )  const
 

Returns the value modifier. Raises (BadKind). Useful for tk_value only.

CORBA::TypeCode_ptr CORBA::TypeCode::unalias ACE_ENV_SINGLE_ARG_DECL   ) 
 

Strip away all typedefs, if any.


Member Data Documentation

TypeCode_ptr CORBA::TypeCode::_tc_BadKind = 0 [static]
 

TypeCode_ptr CORBA::TypeCode::_tc_Bounds = 0 [static]
 

const char* CORBA::TypeCode::buffer_
 

the encapsulated stream

CORBA::Long CORBA::TypeCode::byte_order_
 

The byte order in the encapsulated stream.

CORBA::Long CORBA::TypeCode::kind_
 

the TypeCode kind

size_t CORBA::TypeCode::length_
 

length of the encapsulated stream

char* CORBA::TypeCode::non_aligned_buffer_ [private]
 

Original buffer that may possibly be non-aligned. We still need a handle to the allocated memory so that all of it can be freed by the destructor.

OFFSET_MAP* CORBA::TypeCode::offset_map_ [private]
 

CORBA::Boolean CORBA::TypeCode::orb_owns_ [private]
 

If "orb_owns" is false, the value is a not a constant typecode with both the typecode and the buffer allocated (typically, this will be created by the IDL compiler generated code)

CORBA::TypeCode_ptr CORBA::TypeCode::parent_
 

Indirected typecodes share "buffer" with a parent, and hold a reference to that parent to ensure its memory is not freed inappropriately.

TAO::TC_Private_State* CORBA::TypeCode::private_state_ [private]
 

maintains precomputed state. We need a separate class that maintains the precomputed state since most of the TypeCode class operations keep the state of the object constant. However, for the purpose of precomputation, we need to update the state. We cannot update state directly in the TypeCode class as that defeats the constness. However, we can keep an object in our typecode class that remains constant, but we can update its state.

CORBA::ULong CORBA::TypeCode::refcount_ [private]
 

if refcount reaches 0, free this typecode

TAO_SYNCH_MUTEX CORBA::TypeCode::refcount_lock_ [private]
 

Protect the reference count, this is OK because we do no duplicates or releases on the critical path.

const char* CORBA::TypeCode::root_tc_base_
 

base of the topmost level typecode. Applicable only if I have any parents, else it is the same as tc_base. This helps in case we have indirections and we need to traverse beyond encapsulation boundaries.

const char* CORBA::TypeCode::tc_base_
 

my typecode base. Notice that the buffer_ member points to my encapsulation. However, for indirected typecodes, the offsets will point to my tk_kind field which should be pointed to be tc_base_.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:04:48 2005 for TAO by  doxygen 1.4.5