void CObjectIStreamAsn::SkipComments(void) { try { for ( ;; ) { char c = GetChar(); switch ( c ) { case '\r': case '\n': SkipEndOfLine(c); return; case '-': c = GetChar(); switch ( c ) { case '\r': case '\n': SkipEndOfLine(c); return; case '-': return; } continue; default: continue; } } } catch ( CEofException& /* ignored */ ) { return; } }
void CObjectIStreamAsn::SkipAnyContent(void) { char to = GetChar(true); if (to == '{') { to = '}'; } else if (to == '\"') { } else { to = '\0'; } for (char c = m_Input.PeekChar(); ; c = m_Input.PeekChar()) { if (to != '\"') { if (to != '}' && (c == '\n' || c == ',' || c == '}')) { return; } else if (c == '\"' || c == '{') { SkipAnyContent(); continue; } } if (c == to) { m_Input.SkipChar(); if (c == '\n') { SkipEndOfLine(c); } return; } if (c == '\"' || (c == '{' && to != '\"')) { SkipAnyContent(); continue; } m_Input.SkipChar(); if (c == '\n') { SkipEndOfLine(c); } } }
char CObjectIStreamJson::SkipWhiteSpace(void) { try { // catch CEofException for ( ;; ) { char c = m_Input.SkipSpaces(); switch ( c ) { case '\t': m_Input.SkipChar(); continue; case '\r': case '\n': m_Input.SkipChar(); SkipEndOfLine(c); continue; default: return c; } } } catch (CEofException& e) { ThrowError(fEOF, e.what()); } return '\0'; }
char CObjectIStreamAsn::SkipWhiteSpace(void) { try { // catch CEofException for ( ;; ) { char c = m_Input.SkipSpaces(); switch ( c ) { case '\t': m_Input.SkipChar(); continue; case '\r': case '\n': m_Input.SkipChar(); SkipEndOfLine(c); continue; case '-': // check for comments if ( m_Input.PeekChar(1) != '-' ) { return '-'; } m_Input.SkipChars(2); // skip comments SkipComments(); continue; default: return c; } } } catch (CEofException& e) { if (GetStackDepth() <= 2) { throw; } else { // There should be no eof here, report as error ThrowError(fEOF, e.what()); } } return '\0'; }