/
MadDAD
/
TFS4OpenConf
Обзор
Документация
Войти
/
MadDAD
/
TFS4OpenConf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
gcomp/FileParser.cpp
137 строк
2 KB
DmitryDreytser
Выгрузил исходники
01 фев 2017, 17:19
01 фев 2017, 17:19
b9402b1
Код
Авторство
О чём код?
#include "Declarations.h" #include "CommonFunctions.h" #include "Strings.h" #include "Lexer.h" #include "MMS_Basic.h" #include "DialogForm.h" bool CMMSObject::ParseFile(GCString& FileName) { if( !FileExist(FileName) ) return false; CLexer Lexer(FileName); ParseFile(Lexer); return true; } void CMMSObject::ParseFile(CLexer& Lexer) { GCString Token, Value, PrevToken, PrevValue; CMMSObject* Child; while( Lexer.GetToken(Token, ":\t\r\n") ) { Lexer.GetRest(Value); Token.TrimRight(); Value.TrimLeft(); if( Token == '{' ) { if( Lexer.CurrentLine() <= 2 ) { //������ ��������� ID � sID ��� �������� ������� PrevValue.TrimLeft(); PrevValue.TrimRight(); SetIDs(PrevToken, PrevValue); } else { Child = CreateChild(PrevToken, PrevValue); if( Child == NULL ) { Msg(0, "ERR: Can't create child %s of %s", PrevToken, sID); throw NULL; } if( PrevValue.IsNumber() ) Child->ID = atoi(PrevValue); try { Child->ParseFile(Lexer); } catch(...) { Msg(0, "INFO: parsing %s", sID); throw NULL; } AddChild(Child); } Token = ""; Value = ""; } else { if( !PrevToken.IsEmpty() ) { SetValue(PrevToken, PrevValue); } if( Token == '}' ) { return; } } PrevToken = Token; PrevValue = Value; } if( !PrevToken.IsEmpty() ) { SetValue(PrevToken, PrevValue); } } void CMMSNamedList::ParseFile(CLexer& Lexer) { GCString Token, Value; while( Lexer.GetToken(Token, ":\t\r\n") ) { if( Token == "}" ) return; SetValue(-1, Token); } } void CMMSReferList::ParseFile(CLexer& Lexer) { GCString Token, Value; while( Lexer.GetToken(Token, "\t\r\n") ) { Lexer.GetRest(Value); if( Token == "}" ) return; SetValue(-1, Token); } } void CFormLayers::ParseFile(CLexer& Lexer) { GCString Token, Value; char* flags; while( Lexer.GetToken(Token, ": \t\r\n") ) { Lexer.GetRest(Value); if( Token == "}" ) return; CFormLayer* Layer = new CFormLayer; Layer->sID = Token; flags = strtok((char*)(LPCSTR)Value, ", \t"); while( NULL != flags ) { if( _stricoll(flags, "�������") == 0 ) Layer->IsVisible = true; if( _stricoll(flags, "��������") == 0 ) ActiveLayer = GetNChildren(); flags = strtok(NULL, ", \t"); } AddChild(Layer); } }