//
// h4507.h
//
// Code automatically generated by asnparse.
//

#include <opal/buildopts.h>

#if ! H323_DISABLE_H4507

#ifndef __H4507_H
#define __H4507_H

#ifdef P_USE_PRAGMA
#pragma interface
#endif

#include <ptclib/asner.h>

#include "h4501.h"
#include "h4501.h"
#include "h4501.h"
#include "h4504.h"


//
// H323-MWI-Operations
//

class H4507_H323_MWI_Operations : public PASN_Enumeration
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_H323_MWI_Operations, PASN_Enumeration);
#endif
  public:
    H4507_H323_MWI_Operations(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);

    enum Enumerations {
      e_mwiActivate = 80,
      e_mwiDeactivate,
      e_mwiInterrogate
    };

    H4507_H323_MWI_Operations & operator=(unsigned v);
    PObject * Clone() const;
};


//
// DummyRes
//

class H4504_MixedExtension;

class H4507_DummyRes : public PASN_Array
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_DummyRes, PASN_Array);
#endif
  public:
    H4507_DummyRes(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    PASN_Object * CreateObject() const;
    H4504_MixedExtension & operator[](PINDEX i) const;
    PObject * Clone() const;
};


//
// MWIInterrogateRes
//

class H4507_MWIInterrogateResElt;

class H4507_MWIInterrogateRes : public PASN_Array
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MWIInterrogateRes, PASN_Array);
#endif
  public:
    H4507_MWIInterrogateRes(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    PASN_Object * CreateObject() const;
    H4507_MWIInterrogateResElt & operator[](PINDEX i) const;
    PObject * Clone() const;
};


//
// MsgCentreId
//

class H4501_EndpointAddress;

class H4507_MsgCentreId : public PASN_Choice
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MsgCentreId, PASN_Choice);
#endif
  public:
    H4507_MsgCentreId(unsigned tag = 0, TagClass tagClass = UniversalTagClass);

    enum Choices {
      e_integer,
      e_partyNumber,
      e_numericString
    };

#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    operator H4501_EndpointAddress &() const;
#else
    operator H4501_EndpointAddress &();
    operator const H4501_EndpointAddress &() const;
#endif

    PBoolean CreateObject();
    PObject * Clone() const;
};


//
// NbOfMessages
//

class H4507_NbOfMessages : public PASN_Integer
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_NbOfMessages, PASN_Integer);
#endif
  public:
    H4507_NbOfMessages(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass);

    H4507_NbOfMessages & operator=(int v);
    H4507_NbOfMessages & operator=(unsigned v);
    PObject * Clone() const;
};


//
// TimeStamp
//

class H4507_TimeStamp : public PASN_GeneralisedTime
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_TimeStamp, PASN_GeneralisedTime);
#endif
  public:
    H4507_TimeStamp(unsigned tag = UniversalGeneralisedTime, TagClass tagClass = UniversalTagClass);

    PObject * Clone() const;
};


//
// MessageWaitingIndicationErrors
//

class H4507_MessageWaitingIndicationErrors : public PASN_Enumeration
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MessageWaitingIndicationErrors, PASN_Enumeration);
#endif
  public:
    H4507_MessageWaitingIndicationErrors(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);

    enum Enumerations {
      e_notActivated = 31,
      e_undefined = 2002,
      e_invalidMsgCentreId = 1018
    };

    H4507_MessageWaitingIndicationErrors & operator=(unsigned v);
    PObject * Clone() const;
};


//
// BasicService
//

class H4507_BasicService : public PASN_Enumeration
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_BasicService, PASN_Enumeration);
#endif
  public:
    H4507_BasicService(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);

    enum Enumerations {
      e_allServices,
      e_speech,
      e_unrestrictedDigitalInformation,
      e_audio3100Hz,
      e_telephony = 32,
      e_teletex,
      e_telefaxGroup4Class1,
      e_videotexSyntaxBased,
      e_videotelephony
    };

    H4507_BasicService & operator=(unsigned v);
    PObject * Clone() const;
};


//
// ArrayOf_MixedExtension
//

class H4504_MixedExtension;

class H4507_ArrayOf_MixedExtension : public PASN_Array
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_ArrayOf_MixedExtension, PASN_Array);
#endif
  public:
    H4507_ArrayOf_MixedExtension(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    PASN_Object * CreateObject() const;
    H4504_MixedExtension & operator[](PINDEX i) const;
    PObject * Clone() const;
};


//
// MWIActivateArg
//

class H4507_MWIActivateArg : public PASN_Sequence
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MWIActivateArg, PASN_Sequence);
#endif
  public:
    H4507_MWIActivateArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    enum OptionalFields {
      e_msgCentreId,
      e_nbOfMessages,
      e_originatingNr,
      e_timestamp,
      e_priority,
      e_extensionArg
    };

    H4501_EndpointAddress m_servedUserNr;
    H4507_BasicService m_basicService;
    H4507_MsgCentreId m_msgCentreId;
    H4507_NbOfMessages m_nbOfMessages;
    H4501_EndpointAddress m_originatingNr;
    H4507_TimeStamp m_timestamp;
    PASN_Integer m_priority;
    H4507_ArrayOf_MixedExtension m_extensionArg;

    PINDEX GetDataLength() const;
    PBoolean Decode(PASN_Stream & strm);
    void Encode(PASN_Stream & strm) const;
#ifndef PASN_NOPRINTON
    void PrintOn(ostream & strm) const;
#endif
    Comparison Compare(const PObject & obj) const;
    PObject * Clone() const;
};


//
// MWIDeactivateArg
//

class H4507_MWIDeactivateArg : public PASN_Sequence
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MWIDeactivateArg, PASN_Sequence);
#endif
  public:
    H4507_MWIDeactivateArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    enum OptionalFields {
      e_msgCentreId,
      e_callbackReq,
      e_extensionArg
    };

    H4501_EndpointAddress m_servedUserNr;
    H4507_BasicService m_basicService;
    H4507_MsgCentreId m_msgCentreId;
    PASN_Boolean m_callbackReq;
    H4507_ArrayOf_MixedExtension m_extensionArg;

    PINDEX GetDataLength() const;
    PBoolean Decode(PASN_Stream & strm);
    void Encode(PASN_Stream & strm) const;
#ifndef PASN_NOPRINTON
    void PrintOn(ostream & strm) const;
#endif
    Comparison Compare(const PObject & obj) const;
    PObject * Clone() const;
};


//
// MWIInterrogateArg
//

class H4507_MWIInterrogateArg : public PASN_Sequence
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MWIInterrogateArg, PASN_Sequence);
#endif
  public:
    H4507_MWIInterrogateArg(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    enum OptionalFields {
      e_msgCentreId,
      e_callbackReq,
      e_extensionArg
    };

    H4501_EndpointAddress m_servedUserNr;
    H4507_BasicService m_basicService;
    H4507_MsgCentreId m_msgCentreId;
    PASN_Boolean m_callbackReq;
    H4507_ArrayOf_MixedExtension m_extensionArg;

    PINDEX GetDataLength() const;
    PBoolean Decode(PASN_Stream & strm);
    void Encode(PASN_Stream & strm) const;
#ifndef PASN_NOPRINTON
    void PrintOn(ostream & strm) const;
#endif
    Comparison Compare(const PObject & obj) const;
    PObject * Clone() const;
};


//
// MWIInterrogateResElt
//

class H4507_MWIInterrogateResElt : public PASN_Sequence
{
#ifndef PASN_LEANANDMEAN
    PCLASSINFO(H4507_MWIInterrogateResElt, PASN_Sequence);
#endif
  public:
    H4507_MWIInterrogateResElt(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);

    enum OptionalFields {
      e_msgCentreId,
      e_nbOfMessages,
      e_originatingNr,
      e_timestamp,
      e_priority,
      e_extensionArg
    };

    H4507_BasicService m_basicService;
    H4507_MsgCentreId m_msgCentreId;
    H4507_NbOfMessages m_nbOfMessages;
    H4501_EndpointAddress m_originatingNr;
    H4507_TimeStamp m_timestamp;
    PASN_Integer m_priority;
    H4507_ArrayOf_MixedExtension m_extensionArg;

    PINDEX GetDataLength() const;
    PBoolean Decode(PASN_Stream & strm);
    void Encode(PASN_Stream & strm) const;
#ifndef PASN_NOPRINTON
    void PrintOn(ostream & strm) const;
#endif
    Comparison Compare(const PObject & obj) const;
    PObject * Clone() const;
};


#endif // __H4507_H

#endif // if ! H323_DISABLE_H4507


// End of h4507.h
