48 BMPString, |
48 BMPString, |
49 }; |
49 }; |
50 |
50 |
51 virtual ~ASN1ContentHandler() = default; |
51 virtual ~ASN1ContentHandler() = default; |
52 |
52 |
|
53 virtual void writeStreamStart() = 0; |
|
54 virtual void writeStreamEnd() = 0; |
|
55 |
53 virtual void writeCollectionStart(CollectionType type) = 0; |
56 virtual void writeCollectionStart(CollectionType type) = 0; |
54 virtual void writeCollectionEnd() = 0; |
57 virtual void writeCollectionEnd() = 0; |
55 virtual void writeBoolean(bool value) = 0; |
58 virtual void writeBoolean(bool value) = 0; |
56 virtual void writeNull() = 0; |
59 virtual void writeNull() = 0; |
57 virtual void writeInteger(int64_t value) = 0; |
60 virtual void writeInteger(int64_t value) = 0; |
83 handlers.push_back(handler); |
86 handlers.push_back(handler); |
84 } |
87 } |
85 |
88 |
86 #define handler for (auto ___h : handlers) ___h |
89 #define handler for (auto ___h : handlers) ___h |
87 |
90 |
88 void writeCollectionStart(CollectionType type) { |
91 void writeStreamStart() override { |
|
92 handler->writeStreamStart(); |
|
93 } |
|
94 |
|
95 void writeStreamEnd() override { |
|
96 handler->writeStreamEnd(); |
|
97 } |
|
98 |
|
99 void writeCollectionStart(CollectionType type) override { |
89 handler->writeCollectionStart(type); |
100 handler->writeCollectionStart(type); |
90 } |
101 } |
91 |
102 |
92 void writeCollectionEnd() { |
103 void writeCollectionEnd() override { |
93 handler->writeCollectionEnd(); |
104 handler->writeCollectionEnd(); |
94 } |
105 } |
95 |
106 |
96 void writeBoolean(bool value) { |
107 void writeBoolean(bool value) override { |
97 handler->writeBoolean(value); |
108 handler->writeBoolean(value); |
98 } |
109 } |
99 |
110 |
100 void writeNull() { |
111 void writeNull() override { |
101 handler->writeNull(); |
112 handler->writeNull(); |
102 } |
113 } |
103 |
114 |
104 void writeInteger(int64_t value) { |
115 void writeInteger(int64_t value) override { |
105 handler->writeInteger(value); |
116 handler->writeInteger(value); |
106 } |
117 } |
107 |
118 |
108 void writeString(StringType type, std::string value) { |
119 void writeString(StringType type, std::string value) override { |
109 handler->writeString(type, value); |
120 handler->writeString(type, value); |
110 } |
121 } |
111 |
122 |
112 #undef handler |
123 #undef handler |
113 |
124 |