/**
 * This file was generated by the Objective Systems ASN1C Compiler
 * (http://www.obj-sys.com).  Version: 5.63.
 */
#ifndef CRYPTOGRAPHIC_GOST_USEFUL_DEFINITIONSCLASS_H
#define CRYPTOGRAPHIC_GOST_USEFUL_DEFINITIONSCLASS_H

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "asn1XerCppTypes.h"
#include "rtTable.h"
#include "ASN1CBitStr.h"
#include "Cryptographic-Gost-Useful-Definitions.h"
namespace asn1data {


/* Class definitions */


/**************************************************************/
/*                                                            */
/*  ALGORITHM_IDENTIFIER                                      */
/*                                                            */
/**************************************************************/

class EXTERN ALGORITHM_IDENTIFIER {
 protected:
   struct {
      unsigned TypePresent : 1;
   } m;
   ASN1TObjId id;

   ALGORITHM_IDENTIFIER () {
            m.TypePresent = 0;
   }

 public:
   ASN1BOOL isTypePresent() {
       if(m.TypePresent) {return TRUE;} else {return FALSE;}
   }
   virtual void* constructASN1TType
       (ASN1CTXT* pctxt) { return NULL; };

   virtual ASN1CType* constructASN1CType
       (ASN1MessageBufferIF& msgBuf, void* data) { return NULL; };

   virtual void destructASN1CType
       (ASN1CType* obj) {}

   virtual ~ALGORITHM_IDENTIFIER() {}

   virtual int encodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object) { return 0; }

   virtual int decodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object) { return 0; }

   virtual void copyType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject) {}

   virtual void freeType
      (ASN1CTXT* pctxt, ASN1TObject& object) {}

   inline ASN1BOOL idEquals (ASN1TObjId value) {
      return (id == value);
   }
} ;


}
#endif
