/**
 * This file was generated by the Objective Systems ASN1C Compiler
 * (http://www.obj-sys.com).  Version: 5.50, Date: 30-May-2003.
 */
#ifndef ASN1EMBEDDEDPDV_H
#define ASN1EMBEDDEDPDV_H

#include <stdio.h>
#include <stdlib.h>
#include "asn1CppTypes.h"

/**************************************************************/
/*                                                            */
/*  EmbeddedPDV_identification_syntaxes                       */
/*                                                            */
/**************************************************************/

class EXTERNRT ASN1C_EmbeddedPDV_identification_syntaxes;

typedef struct EXTERNRT ASN1T_EmbeddedPDV_identification_syntaxes {
   ASN1TObjId abstract_;
   ASN1TObjId transfer;
   ASN1T_EmbeddedPDV_identification_syntaxes ();
   ASN1T_EmbeddedPDV_identification_syntaxes (ASN1C_EmbeddedPDV_identification_syntaxes& srcData);
} ASN1T_EmbeddedPDV_identification_syntaxes;

class EXTERNRT ASN1C_EmbeddedPDV_identification_syntaxes :
   public ASN1CType
{
protected:
   ASN1T_EmbeddedPDV_identification_syntaxes& msgData;
public:
   ASN1C_EmbeddedPDV_identification_syntaxes (ASN1T_EmbeddedPDV_identification_syntaxes& data);
   ASN1C_EmbeddedPDV_identification_syntaxes (
      ASN1MessageBufferIF& msgBuf, ASN1T_EmbeddedPDV_identification_syntaxes& data);
   ASN1C_EmbeddedPDV_identification_syntaxes (ASN1C_EmbeddedPDV_identification_syntaxes& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:

   void Print (ASN1ConstCharPtr name);
   int toString (ASN1ConstCharPtr name, 
                 char* buffer, int bufSize);
   ASN1BOOL Equals (ASN1T_EmbeddedPDV_identification_syntaxes* pCmpValue,
                    char* errBuff, int errBuffSize);
   ASN1T_EmbeddedPDV_identification_syntaxes& getCopy (ASN1T_EmbeddedPDV_identification_syntaxes* pDstData = 0);

   inline ASN1C_EmbeddedPDV_identification_syntaxes& operator= (ASN1C_EmbeddedPDV_identification_syntaxes& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
} ;

EXTERNRT void asn1Print_EmbeddedPDV_identification_syntaxes
   (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_syntaxes* pvalue);

EXTERNRT int asn1PrtToStr_EmbeddedPDV_identification_syntaxes (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_syntaxes* pvalue, char* buffer, int bufSize);

EXTERNRT ASN1BOOL asn1Compare_EmbeddedPDV_identification_syntaxes (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_syntaxes* pValue, ASN1T_EmbeddedPDV_identification_syntaxes* pCmpValue, char* errBuff, int errBuffSize);

EXTERNRT void asn1Copy_EmbeddedPDV_identification_syntaxes (ASN1CTXT *pctxt, ASN1T_EmbeddedPDV_identification_syntaxes* pSrcValue, ASN1T_EmbeddedPDV_identification_syntaxes* pDstValue);

/**************************************************************/
/*                                                            */
/*  EmbeddedPDV_identification_context_negotiation            */
/*                                                            */
/**************************************************************/

class EXTERNRT ASN1C_EmbeddedPDV_identification_context_negotiation;

typedef struct EXTERNRT ASN1T_EmbeddedPDV_identification_context_negotiation {
   ASN1INT presentation_context_id;
   ASN1TObjId transfer_syntax;
   ASN1T_EmbeddedPDV_identification_context_negotiation ();
   ASN1T_EmbeddedPDV_identification_context_negotiation (ASN1C_EmbeddedPDV_identification_context_negotiation& srcData);
} ASN1T_EmbeddedPDV_identification_context_negotiation;

class EXTERNRT ASN1C_EmbeddedPDV_identification_context_negotiation :
   public ASN1CType
{
protected:
   ASN1T_EmbeddedPDV_identification_context_negotiation& msgData;
public:
   ASN1C_EmbeddedPDV_identification_context_negotiation (ASN1T_EmbeddedPDV_identification_context_negotiation& data);
   ASN1C_EmbeddedPDV_identification_context_negotiation (
      ASN1MessageBufferIF& msgBuf, ASN1T_EmbeddedPDV_identification_context_negotiation& data);
   ASN1C_EmbeddedPDV_identification_context_negotiation (ASN1C_EmbeddedPDV_identification_context_negotiation& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:

   void Print (ASN1ConstCharPtr name);
   int toString (ASN1ConstCharPtr name, 
                 char* buffer, int bufSize);
   ASN1BOOL Equals (ASN1T_EmbeddedPDV_identification_context_negotiation* pCmpValue,
                    char* errBuff, int errBuffSize);
   ASN1T_EmbeddedPDV_identification_context_negotiation& getCopy (ASN1T_EmbeddedPDV_identification_context_negotiation* pDstData = 0);

   inline ASN1C_EmbeddedPDV_identification_context_negotiation& operator= (ASN1C_EmbeddedPDV_identification_context_negotiation& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
} ;

EXTERNRT void asn1Print_EmbeddedPDV_identification_context_negotiation
   (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_context_negotiation* pvalue);

EXTERNRT int asn1PrtToStr_EmbeddedPDV_identification_context_negotiation (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_context_negotiation* pvalue, char* buffer, int bufSize);

EXTERNRT ASN1BOOL asn1Compare_EmbeddedPDV_identification_context_negotiation (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification_context_negotiation* pValue, ASN1T_EmbeddedPDV_identification_context_negotiation* pCmpValue, char* errBuff, int errBuffSize);

EXTERNRT void asn1Copy_EmbeddedPDV_identification_context_negotiation (ASN1CTXT *pctxt, ASN1T_EmbeddedPDV_identification_context_negotiation* pSrcValue, ASN1T_EmbeddedPDV_identification_context_negotiation* pDstValue);

/**************************************************************/
/*                                                            */
/*  EmbeddedPDV_identification                                */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_EmbeddedPDV_identification_syntaxes 1
#define T_EmbeddedPDV_identification_syntax 2
#define T_EmbeddedPDV_identification_presentation_context_id 3
#define T_EmbeddedPDV_identification_context_negotiation 4
#define T_EmbeddedPDV_identification_transfer_syntax 5
#define T_EmbeddedPDV_identification_fixed 6

class EXTERNRT ASN1C_EmbeddedPDV_identification;

typedef struct EXTERNRT ASN1T_EmbeddedPDV_identification {
   int t;
   union {
      /* t = 1 */
      ASN1T_EmbeddedPDV_identification_syntaxes *syntaxes;
      /* t = 2 */
      ASN1TObjId *syntax;
      /* t = 3 */
      ASN1INT presentation_context_id;
      /* t = 4 */
      ASN1T_EmbeddedPDV_identification_context_negotiation *context_negotiation;
      /* t = 5 */
      ASN1TObjId *transfer_syntax;
      /* t = 6 */
   } u;

   ASN1T_EmbeddedPDV_identification () {}
   ASN1T_EmbeddedPDV_identification (ASN1C_EmbeddedPDV_identification& srcData);
} ASN1T_EmbeddedPDV_identification;

class EXTERNRT ASN1C_EmbeddedPDV_identification :
   public ASN1CType
{
protected:
   ASN1T_EmbeddedPDV_identification& msgData;
public:
   ASN1C_EmbeddedPDV_identification (ASN1T_EmbeddedPDV_identification& data);
   ASN1C_EmbeddedPDV_identification (
      ASN1MessageBufferIF& msgBuf, ASN1T_EmbeddedPDV_identification& data);
   ASN1C_EmbeddedPDV_identification (ASN1C_EmbeddedPDV_identification& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:

   void Print (ASN1ConstCharPtr name);
   int toString (ASN1ConstCharPtr name, 
                 char* buffer, int bufSize);
   ASN1BOOL Equals (ASN1T_EmbeddedPDV_identification* pCmpValue,
                    char* errBuff, int errBuffSize);
   ASN1T_EmbeddedPDV_identification& getCopy (ASN1T_EmbeddedPDV_identification* pDstData = 0);

   inline ASN1C_EmbeddedPDV_identification& operator= (ASN1C_EmbeddedPDV_identification& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
} ;

EXTERNRT void asn1Print_EmbeddedPDV_identification
   (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification* pvalue);

EXTERNRT int asn1PrtToStr_EmbeddedPDV_identification (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification* pvalue, char* buffer, int bufSize);

EXTERNRT ASN1BOOL asn1Compare_EmbeddedPDV_identification (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV_identification* pValue, ASN1T_EmbeddedPDV_identification* pCmpValue, char* errBuff, int errBuffSize);

EXTERNRT void asn1Copy_EmbeddedPDV_identification (ASN1CTXT *pctxt, ASN1T_EmbeddedPDV_identification* pSrcValue, ASN1T_EmbeddedPDV_identification* pDstValue);

/**************************************************************/
/*                                                            */
/*  EmbeddedPDV                                               */
/*                                                            */
/**************************************************************/

#define TV_EmbeddedPDV	(TM_UNIV|TM_CONS|11)

class EXTERNRT ASN1C_EmbeddedPDV;

typedef struct EXTERNRT ASN1T_EmbeddedPDV {
   struct {
      unsigned data_value_descriptorPresent : 1;
   } m;
   ASN1T_EmbeddedPDV_identification identification;
   ASN1ObjectDescriptor data_value_descriptor;
   ASN1TDynOctStr data_value;
   ASN1T_EmbeddedPDV ();
   ASN1T_EmbeddedPDV (ASN1C_EmbeddedPDV& srcData);
} ASN1T_EmbeddedPDV;

class EXTERNRT ASN1C_EmbeddedPDV :
   public ASN1CType
{
protected:
   ASN1T_EmbeddedPDV& msgData;
public:
   ASN1C_EmbeddedPDV (ASN1T_EmbeddedPDV& data);
   ASN1C_EmbeddedPDV (
      ASN1MessageBufferIF& msgBuf, ASN1T_EmbeddedPDV& data);
   ASN1C_EmbeddedPDV (ASN1C_EmbeddedPDV& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:

   void Print (ASN1ConstCharPtr name);
   int toString (ASN1ConstCharPtr name, 
                 char* buffer, int bufSize);
   ASN1BOOL Equals (ASN1T_EmbeddedPDV* pCmpValue,
                    char* errBuff, int errBuffSize);
   ASN1T_EmbeddedPDV& getCopy (ASN1T_EmbeddedPDV* pDstData = 0);

   inline ASN1C_EmbeddedPDV& operator= (ASN1C_EmbeddedPDV& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
} ;

EXTERNRT void asn1Print_EmbeddedPDV
   (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV* pvalue);

EXTERNRT int asn1PrtToStr_EmbeddedPDV (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV* pvalue, char* buffer, int bufSize);

EXTERNRT ASN1BOOL asn1Compare_EmbeddedPDV (ASN1ConstCharPtr name, ASN1T_EmbeddedPDV* pValue, ASN1T_EmbeddedPDV* pCmpValue, char* errBuff, int errBuffSize);

EXTERNRT void asn1Copy_EmbeddedPDV (ASN1CTXT *pctxt, ASN1T_EmbeddedPDV* pSrcValue, ASN1T_EmbeddedPDV* pDstValue);

#endif
