Public Member Functions | Static Public Member Functions

TAO_Marshal_Object Class Reference

TAO_Marshal_Object. More...

#include <Marshal.h>

Inheritance diagram for TAO_Marshal_Object:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 TAO_Marshal_Object (void)
 constructor
virtual ~TAO_Marshal_Object (void)
 destructor
virtual TAO::traverse_status skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *context)=0
 skip operation
virtual TAO::traverse_status append (CORBA::TypeCode_ptr tc, TAO_InputCDR *src, TAO_OutputCDR *dest)=0
 append operation

Static Public Member Functions

static TAO::traverse_status perform_skip (CORBA::TypeCode_ptr tc, TAO_InputCDR *context)
static TAO::traverse_status perform_append (CORBA::TypeCode_ptr tc, TAO_InputCDR *src, TAO_OutputCDR *dest)

Detailed Description

TAO_Marshal_Object.

The Marshaling object that provides a common interface to the CDR object for marshaling different IDL data types Provides a set of virtual methods for appending and skipping data over a CDR stream.

Definition at line 77 of file Marshal.h.


Constructor & Destructor Documentation

TAO_Marshal_Object::TAO_Marshal_Object ( void   ) 

constructor

Definition at line 8 of file Marshal.inl.

{
}

TAO_Marshal_Object::~TAO_Marshal_Object ( void   )  [virtual]

destructor

Definition at line 30 of file Marshal.cpp.

{
}


Member Function Documentation

virtual TAO::traverse_status TAO_Marshal_Object::append ( CORBA::TypeCode_ptr  tc,
TAO_InputCDR src,
TAO_OutputCDR dest 
) [pure virtual]
TAO::traverse_status TAO_Marshal_Object::perform_append ( CORBA::TypeCode_ptr  tc,
TAO_InputCDR src,
TAO_OutputCDR dest 
) [static]

append entry point, it allocates the right kind of Marshal_Object and invokes skip on it.

Definition at line 142 of file Marshal.cpp.

{
  CORBA::ULong kind = tc->kind ();

  switch (kind)
    {
    default:
    case CORBA::tk_fixed:
    case CORBA::tk_native:
    case CORBA::tk_abstract_interface:
    case CORBA::tk_component:
    case CORBA::tk_home:
      // @@ We don't know how to handle any of them yet.
      return TAO::TRAVERSE_STOP;

    case CORBA::tk_null:
    case CORBA::tk_void:
    case CORBA::tk_short:
    case CORBA::tk_long:
    case CORBA::tk_ushort:
    case CORBA::tk_ulong:
    case CORBA::tk_float:
    case CORBA::tk_double:
    case CORBA::tk_boolean:
    case CORBA::tk_char:
    case CORBA::tk_octet:
    case CORBA::tk_longlong:
    case CORBA::tk_ulonglong:
    case CORBA::tk_longdouble:
    case CORBA::tk_wchar:
    case CORBA::tk_enum:
      {
        TAO_Marshal_Primitive marshal;
        return marshal.append (tc, src, dest);
      }

    case CORBA::tk_any:
      {
        TAO_Marshal_Any marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_TypeCode:
      {
        TAO_Marshal_TypeCode marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_Principal:
      {
        TAO_Marshal_Principal marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_objref:
      {
        TAO_Marshal_ObjRef marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_struct:
      {
        TAO_Marshal_Struct marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_union:
      {
        TAO_Marshal_Union marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_string:
      {
        TAO_Marshal_String marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_sequence:
      {
        TAO_Marshal_Sequence marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_array:
      {
        TAO_Marshal_Array marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_alias:
      {
        TAO_Marshal_Alias marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_except:
      {
        TAO_Marshal_Except marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_wstring:
      {
        TAO_Marshal_WString marshal;
        return marshal.append (tc, src, dest);
      }
    case CORBA::tk_value_box:
    case CORBA::tk_value:
    case CORBA::tk_event:
      {
        TAO_Marshal_Value marshal;
        return marshal.append (tc, src, dest);
      }
    }
}

TAO::traverse_status TAO_Marshal_Object::perform_skip ( CORBA::TypeCode_ptr  tc,
TAO_InputCDR context 
) [static]

skip entry point, it allocates the right kind of Marshal_Object and invokes skip on it.

Definition at line 35 of file Marshal.cpp.

{
  CORBA::ULong const kind = tc->kind ();

  switch (kind)
    {
    default:
    case CORBA::tk_fixed:
    case CORBA::tk_native:
    case CORBA::tk_abstract_interface:
    case CORBA::tk_component:
    case CORBA::tk_home:
      // @@ We don't know how to handle any of them yet.
      return TAO::TRAVERSE_STOP;

    case CORBA::tk_null:
    case CORBA::tk_void:
    case CORBA::tk_short:
    case CORBA::tk_long:
    case CORBA::tk_ushort:
    case CORBA::tk_ulong:
    case CORBA::tk_float:
    case CORBA::tk_double:
    case CORBA::tk_boolean:
    case CORBA::tk_char:
    case CORBA::tk_octet:
    case CORBA::tk_longlong:
    case CORBA::tk_ulonglong:
    case CORBA::tk_longdouble:
    case CORBA::tk_wchar:
    case CORBA::tk_enum:
      {
        TAO_Marshal_Primitive marshal;
        return marshal.skip (tc, stream);
      }

    case CORBA::tk_any:
      {
        TAO_Marshal_Any marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_TypeCode:
      {
        TAO_Marshal_TypeCode marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_Principal:
      {
        TAO_Marshal_Principal marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_objref:
      {
        TAO_Marshal_ObjRef marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_struct:
      {
        TAO_Marshal_Struct marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_union:
      {
        TAO_Marshal_Union marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_string:
      {
        TAO_Marshal_String marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_sequence:
      {
        TAO_Marshal_Sequence marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_array:
      {
        TAO_Marshal_Array marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_alias:
      {
        TAO_Marshal_Alias marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_except:
      {
        TAO_Marshal_Except marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_wstring:
      {
        TAO_Marshal_WString marshal;
        return marshal.skip (tc, stream);
      }
    case CORBA::tk_value_box:
    case CORBA::tk_value:
    case CORBA::tk_event:
      {
        TAO_Marshal_Value marshal;
        return marshal.skip (tc, stream);
      }
    }
}

virtual TAO::traverse_status TAO_Marshal_Object::skip ( CORBA::TypeCode_ptr  tc,
TAO_InputCDR context 
) [pure virtual]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines