// This file is generated by omniidl2- omniORB_2_8. Do not edit.
#ifndef __corbaidl_defs_hh__
#define __corbaidl_defs_hh__

#ifndef __CORBA_mIDLType__
#define __CORBA_mIDLType__
class   IDLType;
typedef IDLType* IDLType_ptr;
typedef IDLType_ptr IDLTypeRef;
class _proxy_IDLType;
class _sk_IDLType;
class _nil_IDLType;

class IDLType_Helper {
  public:
  static IDLType_ptr _nil();
  static CORBA::Boolean is_nil(IDLType_ptr p);
  static void release(IDLType_ptr p);
  static void duplicate(IDLType_ptr p);
  static size_t NP_alignedSize(IDLType_ptr obj,size_t initialoffset);
  static void marshalObjRef(IDLType_ptr obj,NetBufferedStream &s);
  static IDLType_ptr unmarshalObjRef(NetBufferedStream &s);
  static void marshalObjRef(IDLType_ptr obj,MemBufferedStream &s);
  static IDLType_ptr unmarshalObjRef(MemBufferedStream &s);
};
typedef _CORBA_ObjRef_Var<IDLType,IDLType_Helper> IDLType_var;
typedef _CORBA_ObjRef_OUT_arg<IDLType,IDLType_Helper > IDLType_out;

#endif
_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_Identifier;
typedef char* Identifier;
typedef CORBA::String_var Identifier_var;
struct StructMember {
  typedef _CORBA_ConstrType_Variable_Var<StructMember> _var_type;
  CORBA::String_member name;
  CORBA::TypeCode_member type;
  _CORBA_ObjRef_Member<IDLType,IDLType_Helper> type_def;
  
  size_t NP_alignedSize(size_t initialoffset) const;
  void operator>>= (NetBufferedStream &) const;
  void operator<<= (NetBufferedStream &);
  void operator>>= (MemBufferedStream &) const;
  void operator<<= (MemBufferedStream &);
};

typedef StructMember::_var_type StructMember_var;

typedef _CORBA_ConstrType_Variable_OUT_arg<StructMember,StructMember_var> StructMember_out;

_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_StructMember;

_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_StructMemberSeq;
class StructMemberSeq_var;

class StructMemberSeq : public _CORBA_Unbounded_Sequence<StructMember > {
public:
  typedef StructMemberSeq_var _var_type;
  inline StructMemberSeq() {}
  inline StructMemberSeq(const StructMemberSeq& seq)
    : _CORBA_Unbounded_Sequence<StructMember >(seq) {}
  inline StructMemberSeq(CORBA::ULong max)
    : _CORBA_Unbounded_Sequence<StructMember >(max) {}
  inline StructMemberSeq(CORBA::ULong max, CORBA::ULong len, StructMember* val, CORBA::Boolean rel=0)
    : _CORBA_Unbounded_Sequence<StructMember >(max, len, val, rel) {}
  inline StructMemberSeq& operator = (const StructMemberSeq& seq) {
    _CORBA_Unbounded_Sequence<StructMember >::operator=(seq);
    return *this;
  };
};

class StructMemberSeq_out;

class StructMemberSeq_var {
public:
  typedef StructMemberSeq _T;
  typedef StructMemberSeq_var _T_var;

  inline StructMemberSeq_var() : pd_seq(0) {}
  inline StructMemberSeq_var(_T* s) : pd_seq(s) {}
  inline StructMemberSeq_var(const _T_var& sv) {
    if( sv.pd_seq ) {
      pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else
      pd_seq = 0;
  }
  inline ~StructMemberSeq_var() { if( pd_seq ) delete pd_seq; }

  inline _T_var& operator = (_T* s) {
    if( pd_seq )  delete pd_seq;
    pd_seq = s;
    return *this;
  }
  inline _T_var& operator = (const _T_var& sv) {
    if( sv.pd_seq ) {
      if( !pd_seq )  pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else if( pd_seq ) {
      delete pd_seq;
      pd_seq = 0;
    }
    return *this;
  }

  inline StructMember& operator [] (_CORBA_ULong i) {   return (*pd_seq)[i]; }
  inline _T* operator -> () { return pd_seq; }
#if defined(__GNUG__) && __GNUG__ == 2 && __GNUC_MINOR__ == 7
  inline operator _T& () const { return *pd_seq; }
#else
  inline operator const _T& () const { return *pd_seq; }
  inline operator _T& () { return *pd_seq; }
#endif

  inline const _T& in() const { return *pd_seq; }
  inline _T& inout() { return *pd_seq; }
  inline _T*& out() { if (pd_seq) { delete pd_seq; pd_seq = 0; } return pd_seq; }
  inline _T* _retn() { _T* tmp = pd_seq; pd_seq = 0; return tmp; }

  friend class StructMemberSeq_out;

private:
  _T* pd_seq;
};

class StructMemberSeq_out {
public:
  typedef StructMemberSeq _T;
  typedef StructMemberSeq_var _T_var;

  inline StructMemberSeq_out(_T*& s) : _data(s) { _data = 0; }
  inline StructMemberSeq_out(_T_var& sv)
    : _data(sv.pd_seq) { sv = (_T*) 0; }
  inline StructMemberSeq_out(const StructMemberSeq_out& s) : _data(s._data) { }
  inline StructMemberSeq_out& operator=(const StructMemberSeq_out& s) { _data = s._data; return *this; }
  inline StructMemberSeq_out& operator=(_T* s) { _data = s; return *this; }
  inline operator _T*&() { return _data; }
  inline _T*& ptr() { return _data; }
  inline _T* operator->() { return _data; }
  inline StructMember& operator [] (_CORBA_ULong i) {   return (*_data)[i]; }
  _T*& _data;

private:
  StructMemberSeq_out();
  StructMemberSeq_out operator=( const _T_var&);
};

struct UnionMember {
  typedef _CORBA_ConstrType_Variable_Var<UnionMember> _var_type;
  CORBA::String_member name;
  CORBA::Any label;
  CORBA::TypeCode_member type;
  _CORBA_ObjRef_Member<IDLType,IDLType_Helper> type_def;
  
  size_t NP_alignedSize(size_t initialoffset) const;
  void operator>>= (NetBufferedStream &) const;
  void operator<<= (NetBufferedStream &);
  void operator>>= (MemBufferedStream &) const;
  void operator<<= (MemBufferedStream &);
};

typedef UnionMember::_var_type UnionMember_var;

typedef _CORBA_ConstrType_Variable_OUT_arg<UnionMember,UnionMember_var> UnionMember_out;

_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_UnionMember;

_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_UnionMemberSeq;
class UnionMemberSeq_var;

class UnionMemberSeq : public _CORBA_Unbounded_Sequence<UnionMember > {
public:
  typedef UnionMemberSeq_var _var_type;
  inline UnionMemberSeq() {}
  inline UnionMemberSeq(const UnionMemberSeq& seq)
    : _CORBA_Unbounded_Sequence<UnionMember >(seq) {}
  inline UnionMemberSeq(CORBA::ULong max)
    : _CORBA_Unbounded_Sequence<UnionMember >(max) {}
  inline UnionMemberSeq(CORBA::ULong max, CORBA::ULong len, UnionMember* val, CORBA::Boolean rel=0)
    : _CORBA_Unbounded_Sequence<UnionMember >(max, len, val, rel) {}
  inline UnionMemberSeq& operator = (const UnionMemberSeq& seq) {
    _CORBA_Unbounded_Sequence<UnionMember >::operator=(seq);
    return *this;
  };
};

class UnionMemberSeq_out;

class UnionMemberSeq_var {
public:
  typedef UnionMemberSeq _T;
  typedef UnionMemberSeq_var _T_var;

  inline UnionMemberSeq_var() : pd_seq(0) {}
  inline UnionMemberSeq_var(_T* s) : pd_seq(s) {}
  inline UnionMemberSeq_var(const _T_var& sv) {
    if( sv.pd_seq ) {
      pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else
      pd_seq = 0;
  }
  inline ~UnionMemberSeq_var() { if( pd_seq ) delete pd_seq; }

  inline _T_var& operator = (_T* s) {
    if( pd_seq )  delete pd_seq;
    pd_seq = s;
    return *this;
  }
  inline _T_var& operator = (const _T_var& sv) {
    if( sv.pd_seq ) {
      if( !pd_seq )  pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else if( pd_seq ) {
      delete pd_seq;
      pd_seq = 0;
    }
    return *this;
  }

  inline UnionMember& operator [] (_CORBA_ULong i) {   return (*pd_seq)[i]; }
  inline _T* operator -> () { return pd_seq; }
#if defined(__GNUG__) && __GNUG__ == 2 && __GNUC_MINOR__ == 7
  inline operator _T& () const { return *pd_seq; }
#else
  inline operator const _T& () const { return *pd_seq; }
  inline operator _T& () { return *pd_seq; }
#endif

  inline const _T& in() const { return *pd_seq; }
  inline _T& inout() { return *pd_seq; }
  inline _T*& out() { if (pd_seq) { delete pd_seq; pd_seq = 0; } return pd_seq; }
  inline _T* _retn() { _T* tmp = pd_seq; pd_seq = 0; return tmp; }

  friend class UnionMemberSeq_out;

private:
  _T* pd_seq;
};

class UnionMemberSeq_out {
public:
  typedef UnionMemberSeq _T;
  typedef UnionMemberSeq_var _T_var;

  inline UnionMemberSeq_out(_T*& s) : _data(s) { _data = 0; }
  inline UnionMemberSeq_out(_T_var& sv)
    : _data(sv.pd_seq) { sv = (_T*) 0; }
  inline UnionMemberSeq_out(const UnionMemberSeq_out& s) : _data(s._data) { }
  inline UnionMemberSeq_out& operator=(const UnionMemberSeq_out& s) { _data = s._data; return *this; }
  inline UnionMemberSeq_out& operator=(_T* s) { _data = s; return *this; }
  inline operator _T*&() { return _data; }
  inline _T*& ptr() { return _data; }
  inline _T* operator->() { return _data; }
  inline UnionMember& operator [] (_CORBA_ULong i) {   return (*_data)[i]; }
  _T*& _data;

private:
  UnionMemberSeq_out();
  UnionMemberSeq_out operator=( const _T_var&);
};

_CORBA_MODULE_VAR _dyn_attr const CORBA::TypeCode_ptr _tc_EnumMemberSeq;
class EnumMemberSeq_var;

class EnumMemberSeq : public _CORBA_Unbounded_Sequence__String {
public:
  typedef EnumMemberSeq_var _var_type;
  inline EnumMemberSeq() {}
  inline EnumMemberSeq(const EnumMemberSeq& seq)
    : _CORBA_Unbounded_Sequence__String(seq) {}
  inline EnumMemberSeq(CORBA::ULong max)
    : _CORBA_Unbounded_Sequence__String(max) {}
  inline EnumMemberSeq(CORBA::ULong max, CORBA::ULong len, char** val, CORBA::Boolean rel=0)
    : _CORBA_Unbounded_Sequence__String(max, len, val, rel) {}
  inline EnumMemberSeq& operator = (const EnumMemberSeq& seq) {
    _CORBA_Unbounded_Sequence__String::operator=(seq);
    return *this;
  };
};

class EnumMemberSeq_out;

class EnumMemberSeq_var {
public:
  typedef EnumMemberSeq _T;
  typedef EnumMemberSeq_var _T_var;

  inline EnumMemberSeq_var() : pd_seq(0) {}
  inline EnumMemberSeq_var(_T* s) : pd_seq(s) {}
  inline EnumMemberSeq_var(const _T_var& sv) {
    if( sv.pd_seq ) {
      pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else
      pd_seq = 0;
  }
  inline ~EnumMemberSeq_var() { if( pd_seq ) delete pd_seq; }

  inline _T_var& operator = (_T* s) {
    if( pd_seq )  delete pd_seq;
    pd_seq = s;
    return *this;
  }
  inline _T_var& operator = (const _T_var& sv) {
    if( sv.pd_seq ) {
      if( !pd_seq )  pd_seq = new _T;
      *pd_seq = *sv.pd_seq;
    } else if( pd_seq ) {
      delete pd_seq;
      pd_seq = 0;
    }
    return *this;
  }

  inline _CORBA_String_member operator [] (_CORBA_ULong i) {   return (*pd_seq)[i]; }
  inline _T* operator -> () { return pd_seq; }
#if defined(__GNUG__) && __GNUG__ == 2 && __GNUC_MINOR__ == 7
  inline operator _T& () const { return *pd_seq; }
#else
  inline operator const _T& () const { return *pd_seq; }
  inline operator _T& () { return *pd_seq; }
#endif

  inline const _T& in() const { return *pd_seq; }
  inline _T& inout() { return *pd_seq; }
  inline _T*& out() { if (pd_seq) { delete pd_seq; pd_seq = 0; } return pd_seq; }
  inline _T* _retn() { _T* tmp = pd_seq; pd_seq = 0; return tmp; }

  friend class EnumMemberSeq_out;

private:
  _T* pd_seq;
};

class EnumMemberSeq_out {
public:
  typedef EnumMemberSeq _T;
  typedef EnumMemberSeq_var _T_var;

  inline EnumMemberSeq_out(_T*& s) : _data(s) { _data = 0; }
  inline EnumMemberSeq_out(_T_var& sv)
    : _data(sv.pd_seq) { sv = (_T*) 0; }
  inline EnumMemberSeq_out(const EnumMemberSeq_out& s) : _data(s._data) { }
  inline EnumMemberSeq_out& operator=(const EnumMemberSeq_out& s) { _data = s._data; return *this; }
  inline EnumMemberSeq_out& operator=(_T* s) { _data = s; return *this; }
  inline operator _T*&() { return _data; }
  inline _T*& ptr() { return _data; }
  inline _T* operator->() { return _data; }
  inline _CORBA_String_member operator [] (_CORBA_ULong i) {   return (*_data)[i]; }
  _T*& _data;

private:
  EnumMemberSeq_out();
  EnumMemberSeq_out operator=( const _T_var&);
};

#endif
