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

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "asn1XerCppTypes.h"
#include "rtTable.h"
#include "ASN1CSeqOfList.h"
namespace asn1data {

/**************************************************************/
/*                                                            */
/*  AuditLogStatus                                            */
/*                                                            */
/**************************************************************/

struct EXTERN AuditLogStatus {
   enum Root {
      normal = 0,
      corrupted = 1,
      emergency = 2,
      suspicious = 3,
      corrupted_signedByOther = 4,
      emergency_signedByOther = 5,
      normal_signedByOther = 6
   } ;
} ;

typedef ASN1UINT ASN1T_AuditLogStatus;

class EXTERN ASN1C_AuditLogStatus :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditLogStatus& msgData;
public:
   ASN1C_AuditLogStatus (ASN1T_AuditLogStatus& data);
   ASN1C_AuditLogStatus (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditLogStatus& data);
   ASN1C_AuditLogStatus (ASN1C_AuditLogStatus& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditLogStatus& getCopy (ASN1T_AuditLogStatus* pDstData = 0);
   ASN1T_AuditLogStatus* newCopy ();

   inline ASN1C_AuditLogStatus& operator= (ASN1C_AuditLogStatus& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
   static int parseNamedValue (ASN1CTXT* pctxt, ASN1UINT* value);
} ;

EXTERN int asn1E_AuditLogStatus (ASN1CTXT* pctxt,
   ASN1T_AuditLogStatus *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditLogStatus (ASN1CTXT* pctxt,
   ASN1T_AuditLogStatus *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditLogStatus
  (ASN1CTXT* pctxt, ASN1T_AuditLogStatus value,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditLogStatus (ASN1CTXT *pctxt, ASN1T_AuditLogStatus* pSrcValue, ASN1T_AuditLogStatus* pDstValue);

/**************************************************************/
/*                                                            */
/*  ALVersion                                                 */
/*                                                            */
/**************************************************************/

struct EXTERN ALVersion {
   enum Root {
      v1 = 0
   } ;
} ;

typedef ASN1UINT ASN1T_ALVersion;

class EXTERN ASN1C_ALVersion :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_ALVersion& msgData;
public:
   ASN1C_ALVersion (ASN1T_ALVersion& data);
   ASN1C_ALVersion (
      ASN1MessageBufferIF& msgBuf, ASN1T_ALVersion& data);
   ASN1C_ALVersion (ASN1C_ALVersion& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_ALVersion& getCopy (ASN1T_ALVersion* pDstData = 0);
   ASN1T_ALVersion* newCopy ();

   inline ASN1C_ALVersion& operator= (ASN1C_ALVersion& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
   static int parseNamedValue (ASN1CTXT* pctxt, ASN1UINT* value);
} ;

EXTERN int asn1E_ALVersion (ASN1CTXT* pctxt,
   ASN1T_ALVersion *pvalue, ASN1TagType tagging);

EXTERN int asn1D_ALVersion (ASN1CTXT* pctxt,
   ASN1T_ALVersion *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_ALVersion
  (ASN1CTXT* pctxt, ASN1T_ALVersion value,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_ALVersion (ASN1CTXT *pctxt, ASN1T_ALVersion* pSrcValue, ASN1T_ALVersion* pDstValue);

/**************************************************************/
/*                                                            */
/*  AuditTransportInfoItem                                    */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditTransportInfoItem;

typedef struct EXTERN ASN1T_AuditTransportInfoItem : public ASN1TPDU {
   ASN1UTF8String name;
   ASN1UTF8String value;
   ASN1T_AuditTransportInfoItem ();
   ASN1T_AuditTransportInfoItem (ASN1C_AuditTransportInfoItem& srcData);
   ~ASN1T_AuditTransportInfoItem ();
} ASN1T_AuditTransportInfoItem;

class EXTERN ASN1C_AuditTransportInfoItem :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditTransportInfoItem& msgData;
   struct ElementID {
      enum {
         _unknown, name, value
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_AuditTransportInfoItem (ASN1T_AuditTransportInfoItem& data);
   ASN1C_AuditTransportInfoItem (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditTransportInfoItem& data);
   ASN1C_AuditTransportInfoItem (ASN1C_AuditTransportInfoItem& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditTransportInfoItem& getCopy (ASN1T_AuditTransportInfoItem* pDstData = 0);
   ASN1T_AuditTransportInfoItem* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditTransportInfoItem (ASN1CTXT* pctxt,
   ASN1T_AuditTransportInfoItem *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditTransportInfoItem (ASN1CTXT* pctxt,
   ASN1T_AuditTransportInfoItem *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditTransportInfoItem
  (ASN1CTXT* pctxt, ASN1T_AuditTransportInfoItem* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditTransportInfoItem (ASN1CTXT *pctxt, ASN1T_AuditTransportInfoItem* pSrcValue, ASN1T_AuditTransportInfoItem* pDstValue);

EXTERN void asn1Free_AuditTransportInfoItem (ASN1CTXT *pctxt, ASN1T_AuditTransportInfoItem* pvalue);

/**************************************************************/
/*                                                            */
/*  _SeqOfAuditTransportInfoItem                              */
/*                                                            */
/**************************************************************/

/* List of ASN1T_AuditTransportInfoItem */
typedef struct EXTERN ASN1T__SeqOfAuditTransportInfoItem : public ASN1TPDUSeqOfList {
   ~ASN1T__SeqOfAuditTransportInfoItem();
} ASN1T__SeqOfAuditTransportInfoItem;

class EXTERN ASN1C__SeqOfAuditTransportInfoItem :
   public ASN1CSeqOfList, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T__SeqOfAuditTransportInfoItem& msgData;
   ASN1T_AuditTransportInfoItem *mpElement;
   class ASN1C_AuditTransportInfoItem* mpElementC;
   ASN1XERSAXDecodeHandler* mpCurrElem;

public:
   ASN1C__SeqOfAuditTransportInfoItem (ASN1T__SeqOfAuditTransportInfoItem& data);
   ASN1C__SeqOfAuditTransportInfoItem (
      ASN1MessageBufferIF& msgBuf, ASN1T__SeqOfAuditTransportInfoItem& data);
   ASN1C__SeqOfAuditTransportInfoItem (ASN1C__SeqOfAuditTransportInfoItem& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T__SeqOfAuditTransportInfoItem& getCopy (ASN1T__SeqOfAuditTransportInfoItem* pDstData = 0);
   ASN1T__SeqOfAuditTransportInfoItem* newCopy ();

   ASN1C__SeqOfAuditTransportInfoItem& operator= (ASN1C__SeqOfAuditTransportInfoItem& srcData);
   void Append (ASN1T_AuditTransportInfoItem * elem) {
      append ((void*)elem);
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E__SeqOfAuditTransportInfoItem (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditTransportInfoItem *pvalue, ASN1TagType tagging);

EXTERN int asn1D__SeqOfAuditTransportInfoItem (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditTransportInfoItem *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE__SeqOfAuditTransportInfoItem
  (ASN1CTXT* pctxt, ASN1T__SeqOfAuditTransportInfoItem* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy__SeqOfAuditTransportInfoItem (ASN1CTXT *pctxt, ASN1T__SeqOfAuditTransportInfoItem* pSrcValue, ASN1T__SeqOfAuditTransportInfoItem* pDstValue);

EXTERN void asn1Free__SeqOfAuditTransportInfoItem (ASN1CTXT *pctxt, ASN1T__SeqOfAuditTransportInfoItem* pvalue);

/**************************************************************/
/*                                                            */
/*  AuditTransportData                                        */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditTransportData;

typedef struct EXTERN ASN1T_AuditTransportData : public ASN1TPDU {
   struct {
      unsigned transportInfoPresent : 1;
   } m;
   ASN1GeneralizedTime time_;
   ASN1TDynOctStr message;
   ASN1T__SeqOfAuditTransportInfoItem transportInfo;
   ASN1T_AuditTransportData ();
   ASN1T_AuditTransportData (ASN1C_AuditTransportData& srcData);
   ~ASN1T_AuditTransportData ();
} ASN1T_AuditTransportData;

class EXTERN ASN1C_AuditTransportData :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditTransportData& msgData;
   struct ElementID {
      enum {
         _unknown, time_, message, transportInfo
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   class ASN1C__SeqOfAuditTransportInfoItem* mpTransportInfoC;
   ASN1XERSAXDecodeHandler* mpCurrElem;
   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_AuditTransportData (ASN1T_AuditTransportData& data);
   ASN1C_AuditTransportData (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditTransportData& data);
   ASN1C_AuditTransportData (ASN1C_AuditTransportData& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditTransportData& getCopy (ASN1T_AuditTransportData* pDstData = 0);
   ASN1T_AuditTransportData* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditTransportData (ASN1CTXT* pctxt,
   ASN1T_AuditTransportData *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditTransportData (ASN1CTXT* pctxt,
   ASN1T_AuditTransportData *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditTransportData
  (ASN1CTXT* pctxt, ASN1T_AuditTransportData* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditTransportData (ASN1CTXT *pctxt, ASN1T_AuditTransportData* pSrcValue, ASN1T_AuditTransportData* pDstValue);

EXTERN void asn1Free_AuditTransportData (ASN1CTXT *pctxt, ASN1T_AuditTransportData* pvalue);

/**************************************************************/
/*                                                            */
/*  AuditTransactionData                                      */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditTransactionData;

typedef struct EXTERN ASN1T_AuditTransactionData : public ASN1TPDU {
   ASN1T_AuditTransportData request;
   ASN1T_AuditTransportData response;
   ASN1T_AuditTransactionData ();
   ASN1T_AuditTransactionData (ASN1C_AuditTransactionData& srcData);
   ~ASN1T_AuditTransactionData ();
} ASN1T_AuditTransactionData;

class EXTERN ASN1C_AuditTransactionData :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditTransactionData& msgData;
   struct ElementID {
      enum {
         _unknown, request, response
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   class ASN1C_AuditTransportData* mpRequestC;
   class ASN1C_AuditTransportData* mpResponseC;
   ASN1XERSAXDecodeHandler* mpCurrElem;
   int mReqElemCnt;
public:
   ASN1C_AuditTransactionData (ASN1T_AuditTransactionData& data);
   ASN1C_AuditTransactionData (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditTransactionData& data);
   ASN1C_AuditTransactionData (ASN1C_AuditTransactionData& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditTransactionData& getCopy (ASN1T_AuditTransactionData* pDstData = 0);
   ASN1T_AuditTransactionData* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditTransactionData (ASN1CTXT* pctxt,
   ASN1T_AuditTransactionData *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditTransactionData (ASN1CTXT* pctxt,
   ASN1T_AuditTransactionData *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditTransactionData
  (ASN1CTXT* pctxt, ASN1T_AuditTransactionData* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditTransactionData (ASN1CTXT *pctxt, ASN1T_AuditTransactionData* pSrcValue, ASN1T_AuditTransactionData* pDstValue);

EXTERN void asn1Free_AuditTransactionData (ASN1CTXT *pctxt, ASN1T_AuditTransactionData* pvalue);

/**************************************************************/
/*                                                            */
/*  _SeqOfAuditTransactionData                                */
/*                                                            */
/**************************************************************/

/* List of ASN1T_AuditTransactionData */
typedef struct EXTERN ASN1T__SeqOfAuditTransactionData : public ASN1TPDUSeqOfList {
   ~ASN1T__SeqOfAuditTransactionData();
} ASN1T__SeqOfAuditTransactionData;

class EXTERN ASN1C__SeqOfAuditTransactionData :
   public ASN1CSeqOfList, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T__SeqOfAuditTransactionData& msgData;
   ASN1T_AuditTransactionData *mpElement;
   class ASN1C_AuditTransactionData* mpElementC;
   ASN1XERSAXDecodeHandler* mpCurrElem;

public:
   ASN1C__SeqOfAuditTransactionData (ASN1T__SeqOfAuditTransactionData& data);
   ASN1C__SeqOfAuditTransactionData (
      ASN1MessageBufferIF& msgBuf, ASN1T__SeqOfAuditTransactionData& data);
   ASN1C__SeqOfAuditTransactionData (ASN1C__SeqOfAuditTransactionData& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T__SeqOfAuditTransactionData& getCopy (ASN1T__SeqOfAuditTransactionData* pDstData = 0);
   ASN1T__SeqOfAuditTransactionData* newCopy ();

   ASN1C__SeqOfAuditTransactionData& operator= (ASN1C__SeqOfAuditTransactionData& srcData);
   void Append (ASN1T_AuditTransactionData * elem) {
      append ((void*)elem);
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E__SeqOfAuditTransactionData (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditTransactionData *pvalue, ASN1TagType tagging);

EXTERN int asn1D__SeqOfAuditTransactionData (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditTransactionData *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE__SeqOfAuditTransactionData
  (ASN1CTXT* pctxt, ASN1T__SeqOfAuditTransactionData* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy__SeqOfAuditTransactionData (ASN1CTXT *pctxt, ASN1T__SeqOfAuditTransactionData* pSrcValue, ASN1T__SeqOfAuditTransactionData* pDstValue);

EXTERN void asn1Free__SeqOfAuditTransactionData (ASN1CTXT *pctxt, ASN1T__SeqOfAuditTransactionData* pvalue);

/**************************************************************/
/*                                                            */
/*  AuditRecord                                               */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditRecord;

typedef struct EXTERN ASN1T_AuditRecord : public ASN1TPDU {
   struct {
      unsigned redirectsPresent : 1;
   } m;
   ASN1TObjId type;
   ASN1T_AuditTransactionData transaction;
   ASN1T__SeqOfAuditTransactionData redirects;
   ASN1T_AuditRecord ();
   ASN1T_AuditRecord (ASN1C_AuditRecord& srcData);
   ~ASN1T_AuditRecord ();
} ASN1T_AuditRecord;

class EXTERN ASN1C_AuditRecord :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditRecord& msgData;
   struct ElementID {
      enum {
         _unknown, type, transaction, redirects
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   class ASN1C_AuditTransactionData* mpTransactionC;
   class ASN1C__SeqOfAuditTransactionData* mpRedirectsC;
   ASN1XERSAXDecodeHandler* mpCurrElem;
   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_AuditRecord (ASN1T_AuditRecord& data);
   ASN1C_AuditRecord (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditRecord& data);
   ASN1C_AuditRecord (ASN1C_AuditRecord& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditRecord& getCopy (ASN1T_AuditRecord* pDstData = 0);
   ASN1T_AuditRecord* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditRecord (ASN1CTXT* pctxt,
   ASN1T_AuditRecord *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditRecord (ASN1CTXT* pctxt,
   ASN1T_AuditRecord *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditRecord
  (ASN1CTXT* pctxt, ASN1T_AuditRecord* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditRecord (ASN1CTXT *pctxt, ASN1T_AuditRecord* pSrcValue, ASN1T_AuditRecord* pDstValue);

EXTERN void asn1Free_AuditRecord (ASN1CTXT *pctxt, ASN1T_AuditRecord* pvalue);

/**************************************************************/
/*                                                            */
/*  _SeqOfAuditRecord                                         */
/*                                                            */
/**************************************************************/

/* List of ASN1T_AuditRecord */
typedef struct EXTERN ASN1T__SeqOfAuditRecord : public ASN1TPDUSeqOfList {
   ~ASN1T__SeqOfAuditRecord();
} ASN1T__SeqOfAuditRecord;

class EXTERN ASN1C__SeqOfAuditRecord :
   public ASN1CSeqOfList, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T__SeqOfAuditRecord& msgData;
   ASN1T_AuditRecord *mpElement;
   class ASN1C_AuditRecord* mpElementC;
   ASN1XERSAXDecodeHandler* mpCurrElem;

public:
   ASN1C__SeqOfAuditRecord (ASN1T__SeqOfAuditRecord& data);
   ASN1C__SeqOfAuditRecord (
      ASN1MessageBufferIF& msgBuf, ASN1T__SeqOfAuditRecord& data);
   ASN1C__SeqOfAuditRecord (ASN1C__SeqOfAuditRecord& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T__SeqOfAuditRecord& getCopy (ASN1T__SeqOfAuditRecord* pDstData = 0);
   ASN1T__SeqOfAuditRecord* newCopy ();

   ASN1C__SeqOfAuditRecord& operator= (ASN1C__SeqOfAuditRecord& srcData);
   void Append (ASN1T_AuditRecord * elem) {
      append ((void*)elem);
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E__SeqOfAuditRecord (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditRecord *pvalue, ASN1TagType tagging);

EXTERN int asn1D__SeqOfAuditRecord (ASN1CTXT* pctxt,
   ASN1T__SeqOfAuditRecord *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE__SeqOfAuditRecord
  (ASN1CTXT* pctxt, ASN1T__SeqOfAuditRecord* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy__SeqOfAuditRecord (ASN1CTXT *pctxt, ASN1T__SeqOfAuditRecord* pSrcValue, ASN1T__SeqOfAuditRecord* pDstValue);

EXTERN void asn1Free__SeqOfAuditRecord (ASN1CTXT *pctxt, ASN1T__SeqOfAuditRecord* pvalue);

/**************************************************************/
/*                                                            */
/*  AuditLogStatusInfo                                        */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditLogStatusInfo;

typedef struct EXTERN ASN1T_AuditLogStatusInfo : public ASN1TPDU {
   struct {
      unsigned operatorStatementPresent : 1;
   } m;
   ASN1T_AuditLogStatus status;
   ASN1UTF8String operatorStatement;
   ASN1T_AuditLogStatusInfo ();
   ASN1T_AuditLogStatusInfo (ASN1C_AuditLogStatusInfo& srcData);
   ~ASN1T_AuditLogStatusInfo ();
} ASN1T_AuditLogStatusInfo;

class EXTERN ASN1C_AuditLogStatusInfo :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditLogStatusInfo& msgData;
   struct ElementID {
      enum {
         _unknown, status, operatorStatement
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_AuditLogStatusInfo (ASN1T_AuditLogStatusInfo& data);
   ASN1C_AuditLogStatusInfo (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditLogStatusInfo& data);
   ASN1C_AuditLogStatusInfo (ASN1C_AuditLogStatusInfo& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditLogStatusInfo& getCopy (ASN1T_AuditLogStatusInfo* pDstData = 0);
   ASN1T_AuditLogStatusInfo* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditLogStatusInfo (ASN1CTXT* pctxt,
   ASN1T_AuditLogStatusInfo *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditLogStatusInfo (ASN1CTXT* pctxt,
   ASN1T_AuditLogStatusInfo *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditLogStatusInfo
  (ASN1CTXT* pctxt, ASN1T_AuditLogStatusInfo* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditLogStatusInfo (ASN1CTXT *pctxt, ASN1T_AuditLogStatusInfo* pSrcValue, ASN1T_AuditLogStatusInfo* pDstValue);

EXTERN void asn1Free_AuditLogStatusInfo (ASN1CTXT *pctxt, ASN1T_AuditLogStatusInfo* pvalue);

/**************************************************************/
/*                                                            */
/*  AuditLog                                                  */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_AuditLog;

typedef struct EXTERN ASN1T_AuditLog : public ASN1TPDU {
   ASN1T_ALVersion version;
   ASN1GeneralizedTime startLogTime;
   ASN1GeneralizedTime finishLogTime;
   ASN1TObjId serviceType;
   ASN1T__SeqOfAuditRecord records;
   ASN1T_AuditLogStatusInfo statusInfo;
   ASN1T_AuditLog ();
   ASN1T_AuditLog (ASN1C_AuditLog& srcData);
   ~ASN1T_AuditLog ();
} ASN1T_AuditLog;

class EXTERN ASN1C_AuditLog :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_AuditLog& msgData;
   struct ElementID {
      enum {
         _unknown, version, startLogTime, finishLogTime, serviceType, records,
         statusInfo
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   class ASN1C__SeqOfAuditRecord* mpRecordsC;
   class ASN1C_AuditLogStatusInfo* mpStatusInfoC;
   ASN1XERSAXDecodeHandler* mpCurrElem;
   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_AuditLog (ASN1T_AuditLog& data);
   ASN1C_AuditLog (
      ASN1MessageBufferIF& msgBuf, ASN1T_AuditLog& data);
   ASN1C_AuditLog (ASN1C_AuditLog& original);

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

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_AuditLog& getCopy (ASN1T_AuditLog* pDstData = 0);
   ASN1T_AuditLog* newCopy ();

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

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_AuditLog (ASN1CTXT* pctxt,
   ASN1T_AuditLog *pvalue, ASN1TagType tagging);

EXTERN int asn1D_AuditLog (ASN1CTXT* pctxt,
   ASN1T_AuditLog *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_AuditLog
  (ASN1CTXT* pctxt, ASN1T_AuditLog* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_AuditLog (ASN1CTXT *pctxt, ASN1T_AuditLog* pSrcValue, ASN1T_AuditLog* pDstValue);

EXTERN void asn1Free_AuditLog (ASN1CTXT *pctxt, ASN1T_AuditLog* pvalue);

/* Value definitions */

extern EXTERN ASN1OBJID id_CryptoPro_audit_service_TSP;
extern EXTERN ASN1OBJID id_CryptoPro_audit_service_OCSP;
extern EXTERN ASN1OBJID id_CryptoPro_audit_service_DVCS;
extern EXTERN ASN1OBJID id_CryptoPro_audit_service_NS;
extern EXTERN ASN1OBJID id_CryptoPro_audit_record_TSP;
extern EXTERN ASN1OBJID id_CryptoPro_audit_record_OCSP;
extern EXTERN ASN1OBJID id_CryptoPro_audit_record_DVCS;
extern EXTERN ASN1OBJID id_CryptoPro_audit_record_NS;

}
#endif
