// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 1999
// Object Oriented Concepts, Inc.
// Billerica, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 3.2
// License: non-commercial

#include <OB/CORBA.h>
#include <OB/TemplateI.h>
#include <OB/IOP.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined!
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 3020000L)
#       error ORBacus version mismatch!
#   endif
#endif

//
// IDL:omg.org/IOP/TAG_INTERNET_IOP:1.0
//
const IOP_ProfileId IOP_TAG_INTERNET_IOP = 0;

//
// IDL:omg.org/IOP/TAG_MULTIPLE_COMPONENTS:1.0
//
const IOP_ProfileId IOP_TAG_MULTIPLE_COMPONENTS = 1;

//
// IDL:omg.org/IOP/TaggedProfile:1.0
//
#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarVar< IOP_TaggedProfile >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarVar< IOP_TaggedProfile >)
#endif
#endif

#ifdef OB_CLEAR_MEM
IOP_TaggedProfile::IOP_TaggedProfile()
{
    memset(&tag, 0, sizeof(tag));
}
#endif

IOP_TaggedProfile::IOP_TaggedProfile(const IOP_TaggedProfile& _ob_a)
    : tag(_ob_a.tag),
      profile_data(_ob_a.profile_data)
{
}

IOP_TaggedProfile&
IOP_TaggedProfile::operator=(const IOP_TaggedProfile& _ob_a)
{
    if(this != &_ob_a)
    {
        tag = _ob_a.tag;
        profile_data = _ob_a.profile_data;
    }
    return *this;
}

void
OBMarshal(const IOP_TaggedProfile& val, CORBA_Octet*& oct)
{
    OBMarshal(val.tag, oct);
    OBMarshal(val.profile_data, oct);
}

void
OBMarshalCount(const IOP_TaggedProfile& val, CORBA_ULong& count)
{
    OBMarshalCount(val.tag, count);
    OBMarshalCount(val.profile_data, count);
}

void
OBUnmarshal(IOP_TaggedProfile& val, const CORBA_Octet*& coct, bool swap)
{
    OBUnmarshal(val.tag, coct, swap);
    OBUnmarshal(val.profile_data, coct, swap);
}

//
// IDL:omg.org/IOP/IOR:1.0
//
#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarVar< IOP_IOR >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarVar< IOP_IOR >)
#endif
#endif

IOP_IOR::IOP_IOR(const IOP_IOR& _ob_a)
    : type_id(_ob_a.type_id),
      profiles(_ob_a.profiles)
{
}

IOP_IOR&
IOP_IOR::operator=(const IOP_IOR& _ob_a)
{
    if(this != &_ob_a)
    {
        type_id = _ob_a.type_id;
        profiles = _ob_a.profiles;
    }
    return *this;
}

void
OBMarshal(const IOP_IOR& val, CORBA_Octet*& oct)
{
    OBMarshal(val.type_id.in(), oct);
    OBMarshal(val.profiles, oct);
}

void
OBMarshalCount(const IOP_IOR& val, CORBA_ULong& count)
{
    OBMarshalCount(val.type_id.in(), count);
    OBMarshalCount(val.profiles, count);
}

void
OBUnmarshal(IOP_IOR& val, const CORBA_Octet*& coct, bool swap)
{
    OBUnmarshal(val.type_id.inout(), coct, swap);
    OBUnmarshal(val.profiles, coct, swap);
}

//
// IDL:omg.org/IOP/TaggedComponent:1.0
//
#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarVar< IOP_TaggedComponent >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarVar< IOP_TaggedComponent >)
#endif
#endif

#ifdef OB_CLEAR_MEM
IOP_TaggedComponent::IOP_TaggedComponent()
{
    memset(&tag, 0, sizeof(tag));
}
#endif

IOP_TaggedComponent::IOP_TaggedComponent(const IOP_TaggedComponent& _ob_a)
    : tag(_ob_a.tag),
      component_data(_ob_a.component_data)
{
}

IOP_TaggedComponent&
IOP_TaggedComponent::operator=(const IOP_TaggedComponent& _ob_a)
{
    if(this != &_ob_a)
    {
        tag = _ob_a.tag;
        component_data = _ob_a.component_data;
    }
    return *this;
}

void
OBMarshal(const IOP_TaggedComponent& val, CORBA_Octet*& oct)
{
    OBMarshal(val.tag, oct);
    OBMarshal(val.component_data, oct);
}

void
OBMarshalCount(const IOP_TaggedComponent& val, CORBA_ULong& count)
{
    OBMarshalCount(val.tag, count);
    OBMarshalCount(val.component_data, count);
}

void
OBUnmarshal(IOP_TaggedComponent& val, const CORBA_Octet*& coct, bool swap)
{
    OBUnmarshal(val.tag, coct, swap);
    OBUnmarshal(val.component_data, coct, swap);
}

//
// IDL:omg.org/IOP/ServiceContext:1.0
//
#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarVar< IOP_ServiceContext >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarVar< IOP_ServiceContext >)
#endif
#endif

#ifdef OB_CLEAR_MEM
IOP_ServiceContext::IOP_ServiceContext()
{
    memset(&context_id, 0, sizeof(context_id));
}
#endif

IOP_ServiceContext::IOP_ServiceContext(const IOP_ServiceContext& _ob_a)
    : context_id(_ob_a.context_id),
      context_data(_ob_a.context_data)
{
}

IOP_ServiceContext&
IOP_ServiceContext::operator=(const IOP_ServiceContext& _ob_a)
{
    if(this != &_ob_a)
    {
        context_id = _ob_a.context_id;
        context_data = _ob_a.context_data;
    }
    return *this;
}

void
OBMarshal(const IOP_ServiceContext& val, CORBA_Octet*& oct)
{
    OBMarshal(val.context_id, oct);
    OBMarshal(val.context_data, oct);
}

void
OBMarshalCount(const IOP_ServiceContext& val, CORBA_ULong& count)
{
    OBMarshalCount(val.context_id, count);
    OBMarshalCount(val.context_data, count);
}

void
OBUnmarshal(IOP_ServiceContext& val, const CORBA_Octet*& coct, bool swap)
{
    OBUnmarshal(val.context_id, coct, swap);
    OBUnmarshal(val.context_data, coct, swap);
}

//
// IDL:omg.org/IOP/TransactionService:1.0
//
const IOP_ServiceId IOP_TransactionService = 0;

//
// IDL:omg.org/IOP/CodeSets:1.0
//
const IOP_ServiceId IOP_CodeSets = 1;

//
// OBFixSeq< OBUnsignedChar >
//
#ifdef OB_use_OBFixSeq_OBUnsignedChar_from_IOP_h

#endif

//
// OBVarSeq< IOP_TaggedProfile >
//
#ifdef OB_use_OBVarSeq_IOP__TaggedProfile_from_IOP_h

#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarSeq< IOP_TaggedProfile >;
template class OBSeqVar< OBVarSeq< IOP_TaggedProfile > >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarSeq< IOP_TaggedProfile >)
#pragma define(OBSeqVar< OBVarSeq< IOP_TaggedProfile > >)
#endif
#endif

void
OBMarshal(const OBVarSeq< IOP_TaggedProfile >& seq, CORBA_Octet*& oct)
{
    OBMarshal(seq.length(), oct);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshal(seq[i], oct);
}

void
OBMarshalCount(const OBVarSeq< IOP_TaggedProfile >& seq, CORBA_ULong& count)
{
    OBMarshalCount(seq.length(), count);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshalCount(seq[i], count);
}

void
OBUnmarshal(OBVarSeq< IOP_TaggedProfile >& seq, const CORBA_Octet*& coct, bool swap)
{
    CORBA_ULong len;
    OBUnmarshal(len, coct, swap);
    seq.length(len);
    for(CORBA_ULong i = 0 ; i < len ; i++)
        OBUnmarshal(seq[i], coct, swap);
}

#endif

//
// OBVarSeq< IOP_TaggedComponent >
//
#ifdef OB_use_OBVarSeq_IOP__TaggedComponent_from_IOP_h

#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarSeq< IOP_TaggedComponent >;
template class OBSeqVar< OBVarSeq< IOP_TaggedComponent > >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarSeq< IOP_TaggedComponent >)
#pragma define(OBSeqVar< OBVarSeq< IOP_TaggedComponent > >)
#endif
#endif

void
OBMarshal(const OBVarSeq< IOP_TaggedComponent >& seq, CORBA_Octet*& oct)
{
    OBMarshal(seq.length(), oct);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshal(seq[i], oct);
}

void
OBMarshalCount(const OBVarSeq< IOP_TaggedComponent >& seq, CORBA_ULong& count)
{
    OBMarshalCount(seq.length(), count);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshalCount(seq[i], count);
}

void
OBUnmarshal(OBVarSeq< IOP_TaggedComponent >& seq, const CORBA_Octet*& coct, bool swap)
{
    CORBA_ULong len;
    OBUnmarshal(len, coct, swap);
    seq.length(len);
    for(CORBA_ULong i = 0 ; i < len ; i++)
        OBUnmarshal(seq[i], coct, swap);
}

#endif

//
// OBVarSeq< IOP_ServiceContext >
//
#ifdef OB_use_OBVarSeq_IOP__ServiceContext_from_IOP_h

#ifndef HAVE_NO_EXPLICIT_TEMPLATES
template class OBVarSeq< IOP_ServiceContext >;
template class OBSeqVar< OBVarSeq< IOP_ServiceContext > >;
#else
#ifdef HAVE_PRAGMA_DEFINE
#pragma define(OBVarSeq< IOP_ServiceContext >)
#pragma define(OBSeqVar< OBVarSeq< IOP_ServiceContext > >)
#endif
#endif

void
OBMarshal(const OBVarSeq< IOP_ServiceContext >& seq, CORBA_Octet*& oct)
{
    OBMarshal(seq.length(), oct);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshal(seq[i], oct);
}

void
OBMarshalCount(const OBVarSeq< IOP_ServiceContext >& seq, CORBA_ULong& count)
{
    OBMarshalCount(seq.length(), count);
    for(CORBA_ULong i = 0 ; i < seq.length() ; i++)
        OBMarshalCount(seq[i], count);
}

void
OBUnmarshal(OBVarSeq< IOP_ServiceContext >& seq, const CORBA_Octet*& coct, bool swap)
{
    CORBA_ULong len;
    OBUnmarshal(len, coct, swap);
    seq.length(len);
    for(CORBA_ULong i = 0 ; i < len ; i++)
        OBUnmarshal(seq[i], coct, swap);
}

#endif
