// -*- C++ -*-
//
// htiop_endpointsC.cpp,v 1.1 2004/10/26 04:18:22 mesnier_p Exp

// ****  Code generated by the The ACE ORB (TAO) IDL Compiler ****
// TAO and the TAO IDL Compiler have been developed by:
//       Center for Distributed Object Computing
//       Washington University
//       St. Louis, MO
//       USA
//       http://www.cs.wustl.edu/~schmidt/doc-center.html
// and
//       Distributed Object Computing Laboratory
//       University of California at Irvine
//       Irvine, CA
//       USA
//       http://doc.ece.uci.edu/
// and
//       Institute for Software Integrated Systems
//       Vanderbilt University
//       Nashville, TN
//       USA
//       http://www.isis.vanderbilt.edu/
//
// Information about TAO is available at:
//     http://www.cs.wustl.edu/~schmidt/TAO.html

// TAO_IDL - Generated from
// be/be_codegen.cpp:301


#include "htiop_endpointsC.h"
#include "tao/CDR.h"
#include "tao/Typecode.h"
#include "tao/Any_Dual_Impl_T.h"

#if defined (__BORLANDC__)
#pragma option -w-rvl -w-rch -w-ccc -w-aus -w-sig
#endif /* __BORLANDC__ */

#if !defined (__ACE_INLINE__)
#include "htiop_endpointsC.inl"
#endif /* !defined INLINE */

// TAO_IDL - Generated from
// be/be_visitor_arg_traits.cpp:64

// Arg traits specializations.
namespace TAO
{
}


// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_defn.cpp:290

static const CORBA::Long _oc_HTIOP_Endpoint_Info[] =
{
    TAO_ENCAP_BYTE_ORDER, // byte order
  28,
  ACE_NTOHL (0x49444c3a), 
  ACE_NTOHL (0x4854494f), 
  ACE_NTOHL (0x505f456e), 
  ACE_NTOHL (0x64706f69), 
  ACE_NTOHL (0x6e745f49), 
  ACE_NTOHL (0x6e666f3a), 
  ACE_NTOHL (0x312e3000),  // repository ID = IDL:HTIOP_Endpoint_Info:1.0
    20,
  ACE_NTOHL (0x4854494f), 
  ACE_NTOHL (0x505f456e), 
  ACE_NTOHL (0x64706f69), 
  ACE_NTOHL (0x6e745f49), 
  ACE_NTOHL (0x6e666f00),  // name = HTIOP_Endpoint_Info
  3, // member count
    5,
  ACE_NTOHL (0x686f7374), 
  ACE_NTOHL (0x0),  // name = host
    CORBA::tk_string, 
  0U, // string length
  5,
  ACE_NTOHL (0x706f7274), 
  ACE_NTOHL (0x0),  // name = port
    CORBA::tk_short,

  5,
  ACE_NTOHL (0x68746964), 
  ACE_NTOHL (0x0),  // name = htid
    CORBA::tk_string, 
  0U, // string length
};

static CORBA::TypeCode _tc_TAO_tc_HTIOP_Endpoint_Info (
    CORBA::tk_struct,
    sizeof (_oc_HTIOP_Endpoint_Info),
    (char *) &_oc_HTIOP_Endpoint_Info,
    0,
    sizeof (HTIOP_Endpoint_Info)
  );

::CORBA::TypeCode_ptr _tc_HTIOP_Endpoint_Info =
  &_tc_TAO_tc_HTIOP_Endpoint_Info;

// TAO_IDL - Generated from 
// be/be_visitor_structure/structure_cs.cpp:66

void 
HTIOP_Endpoint_Info::_tao_any_destructor (
    void *_tao_void_pointer
  )
{
  HTIOP_Endpoint_Info *_tao_tmp_pointer =
    static_cast<HTIOP_Endpoint_Info *> (_tao_void_pointer);
  delete _tao_tmp_pointer;
}

// TAO_IDL - Generated from 
// be/be_visitor_sequence/sequence_cs.cpp:65

#if !defined (_HTIOPENDPOINTSEQUENCE_CS_)
#define _HTIOPENDPOINTSEQUENCE_CS_

HTIOPEndpointSequence::HTIOPEndpointSequence (void)
{}

HTIOPEndpointSequence::HTIOPEndpointSequence (
    CORBA::ULong max
  )
  : TAO_Unbounded_Sequence<
        HTIOP_Endpoint_Info
      >
    (max)
{}

HTIOPEndpointSequence::HTIOPEndpointSequence (
    CORBA::ULong max,
    CORBA::ULong length,
    HTIOP_Endpoint_Info * buffer,
    CORBA::Boolean release
  )
  : TAO_Unbounded_Sequence<
        HTIOP_Endpoint_Info
      >
    (max, length, buffer, release)
{}

HTIOPEndpointSequence::HTIOPEndpointSequence (
    const HTIOPEndpointSequence &seq
  )
  : TAO_Unbounded_Sequence<
        HTIOP_Endpoint_Info
      >
    (seq)
{}

HTIOPEndpointSequence::~HTIOPEndpointSequence (void)
{}

void HTIOPEndpointSequence::_tao_any_destructor (
    void * _tao_void_pointer
  )
{
  HTIOPEndpointSequence * _tao_tmp_pointer =
    static_cast<HTIOPEndpointSequence *> (_tao_void_pointer);
  delete _tao_tmp_pointer;
}

#endif /* end #if !defined */

// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_defn.cpp:290

static const CORBA::Long _oc_HTIOPEndpointSequence[] =
{
    TAO_ENCAP_BYTE_ORDER, // byte order
  30,
  ACE_NTOHL (0x49444c3a), 
  ACE_NTOHL (0x4854494f), 
  ACE_NTOHL (0x50456e64), 
  ACE_NTOHL (0x706f696e), 
  ACE_NTOHL (0x74536571), 
  ACE_NTOHL (0x75656e63), 
  ACE_NTOHL (0x653a312e), 
  ACE_NTOHL (0x30000000),  // repository ID = IDL:HTIOPEndpointSequence:1.0
    22,
  ACE_NTOHL (0x4854494f), 
  ACE_NTOHL (0x50456e64), 
  ACE_NTOHL (0x706f696e), 
  ACE_NTOHL (0x74536571), 
  ACE_NTOHL (0x75656e63), 
  ACE_NTOHL (0x65000000),  // name = HTIOPEndpointSequence
    CORBA::tk_sequence, // typecode kind
  136, // encapsulation length
    TAO_ENCAP_BYTE_ORDER, // byte order
    CORBA::tk_struct, // typecode kind
    120, // encapsulation length
      TAO_ENCAP_BYTE_ORDER, // byte order
      28,
      ACE_NTOHL (0x49444c3a), 
      ACE_NTOHL (0x4854494f), 
      ACE_NTOHL (0x505f456e), 
      ACE_NTOHL (0x64706f69), 
      ACE_NTOHL (0x6e745f49), 
      ACE_NTOHL (0x6e666f3a), 
      ACE_NTOHL (0x312e3000),  // repository ID = IDL:HTIOP_Endpoint_Info:1.0
            20,
      ACE_NTOHL (0x4854494f), 
      ACE_NTOHL (0x505f456e), 
      ACE_NTOHL (0x64706f69), 
      ACE_NTOHL (0x6e745f49), 
      ACE_NTOHL (0x6e666f00),  // name = HTIOP_Endpoint_Info
      3, // member count
            5,
      ACE_NTOHL (0x686f7374), 
      ACE_NTOHL (0x0),  // name = host
            CORBA::tk_string, 
      0U, // string length
      5,
      ACE_NTOHL (0x706f7274), 
      ACE_NTOHL (0x0),  // name = port
            CORBA::tk_short,

      5,
      ACE_NTOHL (0x68746964), 
      ACE_NTOHL (0x0),  // name = htid
            CORBA::tk_string, 
      0U, // string length

    0U,

};

static CORBA::TypeCode _tc_TAO_tc_HTIOPEndpointSequence (
    CORBA::tk_alias,
    sizeof (_oc_HTIOPEndpointSequence),
    (char *) &_oc_HTIOPEndpointSequence,
    0,
    sizeof (HTIOPEndpointSequence)
  );

::CORBA::TypeCode_ptr _tc_HTIOPEndpointSequence =
  &_tc_TAO_tc_HTIOPEndpointSequence;

// TAO_IDL - Generated from 
// be/be_visitor_structure/any_op_cs.cpp:54

// Copying insertion.
void operator<<= (
    CORBA::Any &_tao_any,
    const HTIOP_Endpoint_Info &_tao_elem
  )
{
  TAO::Any_Dual_Impl_T<HTIOP_Endpoint_Info>::insert_copy (
      _tao_any,
      HTIOP_Endpoint_Info::_tao_any_destructor,
      _tc_HTIOP_Endpoint_Info,
      _tao_elem
    );
}

// Non-copying insertion.
void operator<<= (
    CORBA::Any &_tao_any,
    HTIOP_Endpoint_Info *_tao_elem
  )
{
  TAO::Any_Dual_Impl_T<HTIOP_Endpoint_Info>::insert (
      _tao_any,
      HTIOP_Endpoint_Info::_tao_any_destructor,
      _tc_HTIOP_Endpoint_Info,
      _tao_elem
    );
}

// Extraction to non-const pointer (deprecated).
CORBA::Boolean operator>>= (
    const CORBA::Any &_tao_any,
    HTIOP_Endpoint_Info *&_tao_elem
  )
{
  return _tao_any >>= const_cast<
      const HTIOP_Endpoint_Info *&> (
      _tao_elem
    );
}

// Extraction to const pointer.
CORBA::Boolean operator>>= (
    const CORBA::Any &_tao_any,
    const HTIOP_Endpoint_Info *&_tao_elem
  )
{
  return
    TAO::Any_Dual_Impl_T<HTIOP_Endpoint_Info>::extract (
        _tao_any,
        HTIOP_Endpoint_Info::_tao_any_destructor,
        _tc_HTIOP_Endpoint_Info,
        _tao_elem
      );
}

// TAO_IDL - Generated from 
// be/be_visitor_sequence/any_op_cs.cpp:54

// Copying insertion.
void operator<<= (
    CORBA::Any &_tao_any,
    const HTIOPEndpointSequence &_tao_elem
  )
{
  TAO::Any_Dual_Impl_T<HTIOPEndpointSequence>::insert_copy (
      _tao_any,
      HTIOPEndpointSequence::_tao_any_destructor,
      _tc_HTIOPEndpointSequence,
      _tao_elem
    );
}

// Non-copying insertion.
void operator<<= (
    CORBA::Any &_tao_any,
    HTIOPEndpointSequence *_tao_elem
  )
{
  TAO::Any_Dual_Impl_T<HTIOPEndpointSequence>::insert (
      _tao_any,
      HTIOPEndpointSequence::_tao_any_destructor,
      _tc_HTIOPEndpointSequence,
      _tao_elem
    );
}

// Extraction to non-const pointer (deprecated).
CORBA::Boolean operator>>= (
    const CORBA::Any &_tao_any,
    HTIOPEndpointSequence *&_tao_elem
  )
{
  return _tao_any >>= const_cast<
      const HTIOPEndpointSequence *&> (
      _tao_elem
    );
}

// Extraction to const pointer.
CORBA::Boolean operator>>= (
    const CORBA::Any &_tao_any,
    const HTIOPEndpointSequence *&_tao_elem
  )
{
  return
    TAO::Any_Dual_Impl_T<HTIOPEndpointSequence>::extract (
        _tao_any,
        HTIOPEndpointSequence::_tao_any_destructor,
        _tc_HTIOPEndpointSequence,
        _tao_elem
      );
}

// TAO_IDL - Generated from
// be/be_visitor_structure/cdr_op_cs.cpp:61

CORBA::Boolean operator<< (
    TAO_OutputCDR &strm,
    const HTIOP_Endpoint_Info &_tao_aggregate
  )
{
  return
    (strm << _tao_aggregate.host.in ()) &&
    (strm << _tao_aggregate.port) &&
    (strm << _tao_aggregate.htid.in ());
}

CORBA::Boolean operator>> (
    TAO_InputCDR &strm,
    HTIOP_Endpoint_Info &_tao_aggregate
  )
{
  return
    (strm >> _tao_aggregate.host.out ()) &&
    (strm >> _tao_aggregate.port) &&
    (strm >> _tao_aggregate.htid.out ());
}

// TAO_IDL - Generated from
// be/be_visitor_sequence/cdr_op_cs.cpp:96

#if !defined _TAO_CDR_OP_HTIOPEndpointSequence_CPP_
#define _TAO_CDR_OP_HTIOPEndpointSequence_CPP_

CORBA::Boolean operator<< (
    TAO_OutputCDR &strm,
    const HTIOPEndpointSequence &_tao_sequence
  )
{
  const CORBA::ULong _tao_seq_len = _tao_sequence.length ();
  
  if (strm << _tao_seq_len)
    {
      // Encode all elements.
      CORBA::Boolean _tao_marshal_flag = 1;
      
      for (CORBA::ULong i = 0; i < _tao_seq_len && _tao_marshal_flag; ++i)
        {
          _tao_marshal_flag = (strm << _tao_sequence[i]);
        }
      
      return _tao_marshal_flag;
    }
  
  return 0;
}

CORBA::Boolean operator>> (
    TAO_InputCDR &strm,
    HTIOPEndpointSequence &_tao_sequence
  )
{
  CORBA::ULong _tao_seq_len;
  
  if (strm >> _tao_seq_len)
    {
      // Add a check to the length of the sequence
      // to make sure it does not exceed the length
      // of the stream. (See bug 58.)
      if (_tao_seq_len > strm.length ())
        {
          return 0;
        }
      
      // Set the length of the sequence.
      _tao_sequence.length (_tao_seq_len);
      
      // If length is 0 we return true.
      if (0 >= _tao_seq_len) 
        {
          return 1;
        }
      
      // Retrieve all the elements.
      CORBA::Boolean _tao_marshal_flag = 1;
      
      for (CORBA::ULong i = 0; i < _tao_seq_len && _tao_marshal_flag; ++i)
        {
          _tao_marshal_flag = (strm >> _tao_sequence[i]);
        }
      
      return _tao_marshal_flag;
    
    }
  
  return 0;
}

#endif /* _TAO_CDR_OP_HTIOPEndpointSequence_CPP_ */
