Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cASNSequence.h
Go to the documentation of this file.
1 //
5 
6 #ifndef _INC_cASNSequence_H
7 #define _INC_cASNSequence_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cASNReader.h"
14 
15 namespace GrayLib
16 {
17  class cASNWriterRev;
18 
20  {
26  public:
29 
30  private:
31  static void FreeASNSequence(cASNSequence* pCur)
32  {
34  while (pCur != nullptr)
35  {
36  cASNSequence* pNext = pCur->m_pNextSeq;
37  pCur->m_pNextSeq = nullptr; // clear early so destructor won't do its own free.
38  delete pCur;
39  pCur = pNext;
40  }
41  }
42 
43  public:
44  cASNSequence() noexcept
45  : m_pNextSeq(nullptr)
46  , m_pChildSeq(nullptr)
47  {
48  }
50  {
51  FreeASNSequence(m_pChildSeq);
52  }
53 
54  void SetEmptySeq()
55  {
57  SetEmptyBuf();
58  cASNSequence* pNext = m_pNextSeq;
59  m_pNextSeq = nullptr;
60  FreeASNSequence(pNext);
61  }
62 
63  HRESULT GetDescriptionSeq(StrBuilder& s, const char* pszSep = nullptr, bool bTypeLabel = false, int iLevel = 0) const;
64 
65  HRESULT ReadSequence1(ASN_t nTagExpected, cASNReader& r);
66  HRESULT ReadSequence(ASN_t nTagExpected, cASNReader& r);
67  HRESULT WriteSequence(cASNWriterRev& w);
68  };
69 }
70 
71 #endif
72 
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cASN.h:78
Definition: cASNReader.h:22
Definition: cASNSequence.h:20
void SetEmptySeq()
Definition: cASNSequence.h:54
cASNSequence * m_pChildSeq
This item itself is a isSequence()/ASN_SEQUENCE. Store my children.
Definition: cASNSequence.h:28
~cASNSequence()
Definition: cASNSequence.h:49
cASNSequence() noexcept
Definition: cASNSequence.h:44
cASNSequence * m_pNextSeq
The next peer entry in the sequence.
Definition: cASNSequence.h:27
Definition: cASNWriterRev.h:22
Definition: StrBuilder.h:18
Definition: cMesh.h:22
BYTE ASN_t
Definition: cASN.h:75