int tool::source::Column::Check() { if (m_read.Open()) { int character = 0; std::size_t column = 1; std::string string_line = ""; while (!m_read.IsEOF()) { character = m_read.GetCharacter(); if (IsNewLine(character)) { Newline(column, string_line); column = 1; string_line.clear(); } else if (IsSkip(character)) { continue; } else if (std::isspace(character)) { if (character == ' ') { ++column; string_line.push_back(character); } else if (character == '\t') { column += (4 - ((column - 1) % 4)); string_line.push_back(character); } } else { ++column; if (string_line.size() < MAXIMUM_STRING_COLUMN_BUFFER_SIZE + 1) { string_line.push_back(character); } else if (string_line.size() == MAXIMUM_STRING_COLUMN_BUFFER_SIZE + 1) { string_line += "..."; } } } if (!string_line.empty()) { Newline(column - 1, string_line); } return 0; } return 1; }
const char* CSvnProp::ReadSingle(const char* data, const char* dataEnd) { //name std::string name; for(;data != dataEnd && !IsSkip(*data); ++data) name += *data; Skip(&data, dataEnd); std::string value; for(;data != dataEnd && !IsEnd(*data); ++data) value += *data; Skip(&data, dataEnd); m_NameVal[name].swap(value); return data; }
static void Skip(const char** data, const char* dataEnd) { while(*data != dataEnd && IsSkip(**data)) ++*data; }