MCPcopy Create free account
hub / github.com/acl-dev/acl / decode

Method decode

lib_acl_cpp/src/mime/mime_code.cpp:171–280  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171void mime_code::decode(string* out)
172{
173 const unsigned char *cp;
174 int ch0, ch1, ch2, ch3;
175
176 if (m_decodeCnt <= 0) {
177 return;
178 }
179
180 /* ���뻺�嵽 4 ���ֽڲſ�ʼ���� */
181
182 for (cp = (const unsigned char *) m_decodeBuf; m_decodeCnt >= 4;) {
183 /* �������еĻس����з��������ֽ� '=' */
184
185 if (*cp == '\r' || *cp == '\n' || *cp == m_fillChar) {
186 cp++;
187 m_decodeCnt--;
188 continue;
189 }
190
191 /* ��һ���ֽ� */
192
193 if ((ch0 = m_unTab[*cp])== INVALID) {
194 /* ����Ƿ�, �򿽱�ԭ�ַ� */
195 if(m_addInvalid) {
196 out->push_back(*cp);
197 }
198 cp++;
199 m_decodeCnt--;
200 continue;
201 }
202 cp++;
203 m_decodeCnt--;
204
205 /* �ڶ����ֽ� */
206
207 if ((ch1 = m_unTab[*cp])== INVALID) {
208 /* ����Ƿ�, �򿽱�ԭ�ַ� */
209 if (m_addInvalid) {
210 out->push_back((char) (*cp));
211 }
212 cp++;
213 m_decodeCnt--;
214 continue;
215 }
216 cp++;
217 m_decodeCnt--;
218
219 out->push_back((char) (ch0 << 2 | ch1 >> 4));
220
221 /* �������ֽ� */
222
223 ch2 = *cp;
224 if (ch2 == m_fillChar) {
225 cp++;
226 m_decodeCnt--;
227 continue;
228 }

Callers

nothing calls this directly

Calls 1

push_backMethod · 0.45

Tested by

no test coverage detected