#ifndef _asn_useful_h_
#define _asn_useful_h_
class ObjectDescriptor;
class UTF8String;
class NumericString;
class PrintableString;
class TeletexString;
class T61String;
class VideotexString;
class IA5String;
class GraphicString;
class VisibleString;
class ISO646String;
class GeneralString;
class UTCTime;
class GeneralizedTime;
class UniversalString;
class BMPString;
class EXTERNALChoice;
class EXTERNAL;
class ObjectDescriptor: public AsnOcts
{
public:
ObjectDescriptor(): AsnOcts() {}
ObjectDescriptor (const char *str): AsnOcts (str) {}
ObjectDescriptor (const char *str, const size_t len): AsnOcts (str, len) {}
ObjectDescriptor (const AsnOcts &o): AsnOcts (o) {}
ObjectDescriptor &operator = (const ObjectDescriptor &o) { ReSet (o); return *this; }
ObjectDescriptor &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class UTF8String: public AsnOcts
{
public:
UTF8String(): AsnOcts() {}
UTF8String (const char *str): AsnOcts (str) {}
UTF8String (const char *str, const size_t len): AsnOcts (str, len) {}
UTF8String (const AsnOcts &o): AsnOcts (o) {}
UTF8String &operator = (const UTF8String &o) { ReSet (o); return *this; }
UTF8String &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class NumericString: public AsnOcts
{
public:
NumericString(): AsnOcts() {}
NumericString (const char *str): AsnOcts (str) {}
NumericString (const char *str, const size_t len): AsnOcts (str, len) {}
NumericString (const AsnOcts &o): AsnOcts (o) {}
NumericString &operator = (const NumericString &o) { ReSet (o); return *this; }
NumericString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class PrintableString: public AsnOcts
{
public:
PrintableString(): AsnOcts() {}
PrintableString (const char *str): AsnOcts (str) {}
PrintableString (const char *str, const size_t len): AsnOcts (str, len) {}
PrintableString (const AsnOcts &o): AsnOcts (o) {}
PrintableString &operator = (const PrintableString &o) { ReSet (o); return *this; }
PrintableString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class TeletexString: public AsnOcts
{
public:
TeletexString(): AsnOcts() {}
TeletexString (const char *str): AsnOcts (str) {}
TeletexString (const char *str, const size_t len): AsnOcts (str, len) {}
TeletexString (const AsnOcts &o): AsnOcts (o) {}
TeletexString &operator = (const TeletexString &o) { ReSet (o); return *this; }
TeletexString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class T61String: public AsnOcts
{
public:
T61String(): AsnOcts() {}
T61String (const char *str): AsnOcts (str) {}
T61String (const char *str, const size_t len): AsnOcts (str, len) {}
T61String (const AsnOcts &o): AsnOcts (o) {}
T61String &operator = (const T61String &o) { ReSet (o); return *this; }
T61String &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class VideotexString: public AsnOcts
{
public:
VideotexString(): AsnOcts() {}
VideotexString (const char *str): AsnOcts (str) {}
VideotexString (const char *str, const size_t len): AsnOcts (str, len) {}
VideotexString (const AsnOcts &o): AsnOcts (o) {}
VideotexString &operator = (const VideotexString &o) { ReSet (o); return *this; }
VideotexString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class IA5String: public AsnOcts
{
public:
IA5String(): AsnOcts() {}
IA5String (const char *str): AsnOcts (str) {}
IA5String (const char *str, const size_t len): AsnOcts (str, len) {}
IA5String (const AsnOcts &o): AsnOcts (o) {}
IA5String &operator = (const IA5String &o) { ReSet (o); return *this; }
IA5String &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class GraphicString: public AsnOcts
{
public:
GraphicString(): AsnOcts() {}
GraphicString (const char *str): AsnOcts (str) {}
GraphicString (const char *str, const size_t len): AsnOcts (str, len) {}
GraphicString (const AsnOcts &o): AsnOcts (o) {}
GraphicString &operator = (const GraphicString &o) { ReSet (o); return *this; }
GraphicString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class VisibleString: public AsnOcts
{
public:
VisibleString(): AsnOcts() {}
VisibleString (const char *str): AsnOcts (str) {}
VisibleString (const char *str, const size_t len): AsnOcts (str, len) {}
VisibleString (const AsnOcts &o): AsnOcts (o) {}
VisibleString &operator = (const VisibleString &o) { ReSet (o); return *this; }
VisibleString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class ISO646String: public AsnOcts
{
public:
ISO646String(): AsnOcts() {}
ISO646String (const char *str): AsnOcts (str) {}
ISO646String (const char *str, const size_t len): AsnOcts (str, len) {}
ISO646String (const AsnOcts &o): AsnOcts (o) {}
ISO646String &operator = (const ISO646String &o) { ReSet (o); return *this; }
ISO646String &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class GeneralString: public AsnOcts
{
public:
GeneralString(): AsnOcts() {}
GeneralString (const char *str): AsnOcts (str) {}
GeneralString (const char *str, const size_t len): AsnOcts (str, len) {}
GeneralString (const AsnOcts &o): AsnOcts (o) {}
GeneralString &operator = (const GeneralString &o) { ReSet (o); return *this; }
GeneralString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class UTCTime: public AsnOcts
{
public:
UTCTime(): AsnOcts() {}
UTCTime (const char *str): AsnOcts (str) {}
UTCTime (const char *str, const size_t len): AsnOcts (str, len) {}
UTCTime (const AsnOcts &o): AsnOcts (o) {}
UTCTime &operator = (const UTCTime &o) { ReSet (o); return *this; }
UTCTime &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class GeneralizedTime: public AsnOcts
{
public:
GeneralizedTime(): AsnOcts() {}
GeneralizedTime (const char *str): AsnOcts (str) {}
GeneralizedTime (const char *str, const size_t len): AsnOcts (str, len) {}
GeneralizedTime (const AsnOcts &o): AsnOcts (o) {}
GeneralizedTime &operator = (const GeneralizedTime &o) { ReSet (o); return *this; }
GeneralizedTime &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class UniversalString: public AsnOcts
{
public:
UniversalString(): AsnOcts() {}
UniversalString (const char *str): AsnOcts (str) {}
UniversalString (const char *str, const size_t len): AsnOcts (str, len) {}
UniversalString (const AsnOcts &o): AsnOcts (o) {}
UniversalString &operator = (const UniversalString &o) { ReSet (o); return *this; }
UniversalString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class BMPString: public AsnOcts
{
public:
BMPString(): AsnOcts() {}
BMPString (const char *str): AsnOcts (str) {}
BMPString (const char *str, const size_t len): AsnOcts (str, len) {}
BMPString (const AsnOcts &o): AsnOcts (o) {}
BMPString &operator = (const BMPString &o) { ReSet (o); return *this; }
BMPString &operator = (const char *str) { ReSet (str); return *this; }
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
};
class EXTERNALChoice: public AsnType
{
public:
enum ChoiceIdEnum
{
single_ASN1_typeCid = 0,
octet_alignedCid = 1,
arbitraryCid = 2
};
enum ChoiceIdEnum choiceId;
union
{
AsnOcts *single_ASN1_type;
AsnOcts *octet_aligned;
AsnBits *arbitrary;
};
EXTERNALChoice();
EXTERNALChoice (const EXTERNALChoice &);
virtual ~EXTERNALChoice();
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
EXTERNALChoice &operator = (const EXTERNALChoice &);
AsnLen BEncContent (BUF_TYPE b);
void BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
void Print (ostream &os) const;
};
class EXTERNAL: public AsnType
{
public:
AsnOid *direct_reference;
AsnInt *indirect_reference;
ObjectDescriptor *data_value_descriptor;
EXTERNALChoice *encoding;
EXTERNAL();
EXTERNAL (const EXTERNAL &);
virtual ~EXTERNAL();
virtual AsnType *Clone() const;
virtual AsnType *Copy() const;
EXTERNAL &operator = (const EXTERNAL &);
AsnLen BEncContent (BUF_TYPE b);
void BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
int BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded);
int BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded);
void Print (ostream &os) const;
};
#endif