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

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "rtTable.h"
#include "GostR3411-94-DigestSyntax.h"
#include "Cryptographic-Gost-Useful-DefinitionsClass.h"
namespace asn1data {

/* Object definitions */

/**************************************************************/
/*                                                            */
/*  GostR3411_94_DigestAlgorithms_1                           */
/*                                                            */
/**************************************************************/

class EXTERN GostR3411_94_DigestAlgorithms_1 : public ALGORITHM_IDENTIFIER {
 public:
   GostR3411_94_DigestAlgorithms_1();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~GostR3411_94_DigestAlgorithms_1() {}

   virtual int encodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  GostR3411_94_DigestAlgorithms_2                           */
/*                                                            */
/**************************************************************/

class EXTERN GostR3411_94_DigestAlgorithms_2 : public ALGORITHM_IDENTIFIER {
 public:
   GostR3411_94_DigestAlgorithms_2();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~GostR3411_94_DigestAlgorithms_2() {}

   virtual int encodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;


/* ObjectSet definitions */

/**************************************************************/
/*                                                            */
/*  GostR3411_94_DigestAlgorithms                             */
/*                                                            */
/**************************************************************/

class EXTERN GostR3411_94_DigestAlgorithms {
 protected:
   ALGORITHM_IDENTIFIER* mObjectSet[2];
   const size_t mNumObjects;
   static GostR3411_94_DigestAlgorithms* mpInstance;
   GostR3411_94_DigestAlgorithms (ASN1CTXT *pctxt);

 public:
   ALGORITHM_IDENTIFIER* lookupObject (ASN1TObjId _id);

   static GostR3411_94_DigestAlgorithms* instance(ASN1CTXT *pctxt = 0);
} ;


}
#endif
