Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

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 CORBA_TypeCode_ptr _ptr_type
typedef CORBA_TypeCode_var _var_type
enum  traverse_status { TRAVERSE_STOP, TRAVERSE_CONTINUE }

Public Methods

CORBA::Boolean equal (CORBA::TypeCode_ptr, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Compares two typecodes. Must be identical in every respect.

CORBA::Boolean equivalent (CORBA::TypeCode_ptr, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Conforms to CORBA 2.3.1 (99-10-07).

CORBA::TCKind kind (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 For all TypeCode kinds, returns the "kind" of the typecode.

const char* id (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 For tk_{objref,struct,union,enum,alias,except}. Returns the repository ID, raises BadKind.

const char* name (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns name (), raises (BadKind).

CORBA::ULong member_count (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns member_count (), raises (BadKind). Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

const char* member_name (CORBA::ULong slot, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns member_name (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

CORBA::TypeCode_ptr member_type (CORBA::ULong slot, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns member_type (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, and tk_except.

CORBA::Any_ptr member_label (CORBA::ULong n, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 For tk_union. Returns the label. Raises BadKind, Bounds.

CORBA::TypeCode_ptr discriminator_type ( CORBA_Environment &ACE_TRY_ENV = TAO_default_environment () ) const
 Returns the discriminator type for tk_union. raises (BadKind).

CORBA::Long default_index (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns the default slot for the tk_union. Raises (BadKind).

CORBA::ULong length (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns length, raises (BadKind). Used for tk_string, tk_sequence, and tk_array.

CORBA::TypeCode_ptr content_type (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Returns the content type (element type). Raises (BadKind); Useful for tk_sequence, tk_array, and tk_alias.

 CORBA_TypeCode (CORBA::TCKind kind)
 This constructor is used only for built-in TypeCode constants, with no parameters.

 CORBA_TypeCode (CORBA::TCKind kind, size_t length, const char *buffer, CORBA::Boolean orb_owns_tc, CORBA::ULong size, CORBA::TypeCode_ptr parent = 0)
 ~CORBA_TypeCode (void)
 destructor.

CORBA::ULong _incr_refcnt (void)
CORBA::ULong _decr_refcnt (void)
CORBA::Any_ptr parameter (const CORBA::Long slot, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
 Deprecated in the CORBA 2.2 spec and missing altogether from 2.3a (98-12-04),.

CORBA::ULong param_count (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Deprecated, CORBA 1.2, not fully usable. Returns the number of parameters that the typecode takes.


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 Methods

CORBA::TypeCode_ptr _duplicate (CORBA::TypeCode_ptr tc)
 Duplicates i.e., increments ref count.

CORBA::TypeCode_ptr _nil (void)
 Returns a NULL typecode.

void _tao_decode (const CORBA_TypeCode *parent, TAO_InputCDR &cdr, CORBA_TypeCode *&child, CORBA::Environment &ACE_TRY_ENV)
 CDR decoding: the >> operator is not enough because we must also respect the parent/child relationship among TypeCodes.

CORBA::Boolean skip_typecode (TAO_InputCDR &stream)
 skip a typecode encoding in a given CDR stream. This is just a helper function.


Static Public Attributes

CORBA::TypeCode_ptr _tc_Bounds
CORBA::TypeCode_ptr _tc_BadKind

Private Methods

CORBA::Boolean equ_common (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
CORBA::Boolean private_equal (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Compares the typecodes.

const char* private_id (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 For tk_{objref,struct,union,enum,alias,except}. Returns the repository ID, raises BadKind.

const char* private_name (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 returns name (), raises (BadKind).

CORBA::ULong private_member_count (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 returns member_count (), raises (BadKind). Useful for tk_struct, tk_union, tk_enum, tk_alias, and tk_except.

CORBA::TypeCode_ptr private_member_type ( CORBA::ULong slot, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment () ) const
 returns member_type (...), raises (BadKind, Bounds); Useful for tk_struct, tk_union, and tk_except.

const char* private_member_name (CORBA::ULong slot, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 returns member_name (...), raises (BadKind, Bounds); Useful for tk_union, tk_struct, tk_except, and tk_enum.

CORBA::Any_ptr private_member_label (CORBA::ULong n, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 For tk_union. Returns the label. Raises BadKind, Bounds.

CORBA::TypeCode_ptr private_discriminator_type ( CORBA_Environment &ACE_TRY_ENV = TAO_default_environment () ) const
 returns the discriminator type for tk_union, and acquires the lock for the wrapped function below. raises (BadKind).

CORBA::TypeCode_ptr private_discriminator_type_i ( CORBA_Environment &ACE_TRY_ENV = TAO_default_environment () ) const
 Acquires no lock so it can be called internally from blocks which have a lock.

CORBA::Long private_default_index (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 returns the default slot for the tk_union. Raises (BadKind);.

CORBA::Long private_default_index_i (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 Acquires no lock so it can be called internally from blocks which have a lock.

CORBA::Long private_length (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 returns length, raises (BadKind). Used for tk_string, tk_sequence, and tk_array.

CORBA::TypeCode_ptr private_content_type ( CORBA_Environment &ACE_TRY_ENV = TAO_default_environment () ) const
 returns the content type (element type). Raises (BadKind); Useful for tk_sequence, tk_array, and tk_alias.

CORBA::Boolean private_equal_objref (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of objrefs.

CORBA::Boolean private_equal_struct (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of structs.

CORBA::Boolean private_equal_union (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of unions.

CORBA::Boolean private_equal_enum (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of enums.

CORBA::Boolean private_equal_string (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of strings.

CORBA::Boolean private_equal_wstring (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of wide strings.

CORBA::Boolean private_equal_sequence (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of sequences.

CORBA::Boolean private_equal_array (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of array.

CORBA::Boolean private_equal_alias (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of typedefs.

CORBA::Boolean private_equal_except (CORBA::TypeCode_ptr tc, CORBA::Boolean equiv_only, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()) const
 test equality for typecodes of exceptions.

 CORBA_TypeCode (const CORBA::TypeCode &src)
CORBA_TypeCode& operator= (const CORBA::TypeCode &src)

Private Attributes

CORBA::ULong refcount_
 if refcount reaches 0, free this typecode.

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

CORBA::Boolean orb_owns_
 TAO's approach differs from the SunSoft IIOP. Constant typecodes are owned by the ORB and get freed only when the ORB dies.

TC_Private_Stateprivate_state_
char* non_aligned_buffer_

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. NOTE: 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 NOTE: 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
 


Member Enumeration Documentation

enum CORBA_TypeCode::traverse_status
 

Enumeration values:
TRAVERSE_STOP  
TRAVERSE_CONTINUE  


Constructor & Destructor Documentation

CORBA_TypeCode::CORBA_TypeCode ( CORBA::TCKind kind )
 

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

CORBA_TypeCode::CORBA_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::~CORBA_TypeCode ( void )
 

destructor.

CORBA_TypeCode::CORBA_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 )
 

CORBA::TypeCode_ptr CORBA_TypeCode::_nil ( void ) [static]
 

Returns a NULL typecode.

void CORBA_TypeCode::_tao_decode ( const CORBA_TypeCode * parent,
TAO_InputCDR & cdr,
CORBA_TypeCode *& child,
CORBA::Environment & ACE_TRY_ENV ) [static]
 

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

CORBA::TypeCode_ptr CORBA_TypeCode::content_type ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::Long CORBA_TypeCode::default_index ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::TypeCode_ptr CORBA_TypeCode::discriminator_type ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::Boolean CORBA_TypeCode::equ_common ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

Compares two typecodes. Must be identical in every respect.

CORBA::Boolean CORBA_TypeCode::equivalent ( CORBA::TypeCode_ptr,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

const char * CORBA_TypeCode::id ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::TCKind CORBA_TypeCode::kind ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::ULong CORBA_TypeCode::length ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

CORBA::ULong CORBA_TypeCode::member_count ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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 n,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

const char * CORBA_TypeCode::member_name ( CORBA::ULong slot,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

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

const char * CORBA_TypeCode::name ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const
 

Returns name (), raises (BadKind).

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

CORBA::ULong CORBA_TypeCode::param_count ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () )
 

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

CORBA::TypeCode_ptr CORBA_TypeCode::private_content_type ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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 ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

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

CORBA::Long CORBA_TypeCode::private_default_index_i ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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 ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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 ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

Compares the typecodes.

CORBA::Boolean CORBA_TypeCode::private_equal_alias ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of typedefs.

CORBA::Boolean CORBA_TypeCode::private_equal_array ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of array.

CORBA::Boolean CORBA_TypeCode::private_equal_enum ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of enums.

CORBA::Boolean CORBA_TypeCode::private_equal_except ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of exceptions.

CORBA::Boolean CORBA_TypeCode::private_equal_objref ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of objrefs.

CORBA::Boolean CORBA_TypeCode::private_equal_sequence ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of sequences.

CORBA::Boolean CORBA_TypeCode::private_equal_string ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of strings.

CORBA::Boolean CORBA_TypeCode::private_equal_struct ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of structs.

CORBA::Boolean CORBA_TypeCode::private_equal_union ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of unions.

CORBA::Boolean CORBA_TypeCode::private_equal_wstring ( CORBA::TypeCode_ptr tc,
CORBA::Boolean equiv_only,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

test equality for typecodes of wide strings.

const char * CORBA_TypeCode::private_id ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

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

CORBA::Long CORBA_TypeCode::private_length ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

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

CORBA::ULong CORBA_TypeCode::private_member_count ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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 n,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

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

const char * CORBA_TypeCode::private_member_name ( CORBA::ULong slot,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) 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,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

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

const char * CORBA_TypeCode::private_name ( CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () ) const [private]
 

returns name (), raises (BadKind).

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.


Member Data Documentation

CORBA::TypeCode_ptr CORBA_TypeCode::_tc_BadKind [static]
 

CORBA::TypeCode_ptr CORBA_TypeCode::_tc_Bounds [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.

CORBA::Boolean CORBA_TypeCode::orb_owns_ [private]
 

TAO's approach differs from the SunSoft IIOP. Constant typecodes are owned by the ORB and get freed only when the ORB dies.

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.

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 at Sat Dec 1 12:05:50 2001 for TAO by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000