public static string typevalpresentation(SerializationTreeValueType typeval) { switch (typeval) { case SerializationTreeValueType.stv_string: return("Строка"); case SerializationTreeValueType.stv_number: return("Число"); case SerializationTreeValueType.stv_uid: return("УникальныйИдентификатор"); case SerializationTreeValueType.stv_value: return("Значение"); case SerializationTreeValueType.stv_var: return("Переменная"); case SerializationTreeValueType.stv_prop: return("Свойство"); case SerializationTreeValueType.stv_vercon: return("Версия контейнера"); case SerializationTreeValueType.stv_ver1C: return("Версия 1C"); case SerializationTreeValueType.stv_classpar: return("Параметр класса"); case SerializationTreeValueType.stv_globalvar: return("Глобальная переменная"); case SerializationTreeValueType.stv_none: return("<Нет значения>"); } return("<Неизвестный тип значения дерева сериализации>"); }
public SerializationTreeNode(MetaType _owner, Tree tr, SerializationTreeNode _parent, uint _index) { uint i; string str; string stval; string sval1; string sval2; MetaType typ; owner = _owner; parent = _parent; index = _index; type = (SerializationTreeNodeType)(Convert.ToInt32(tr.Get_Value())); tr = tr.Get_Next(); stval = tr.Get_Value(); tr = tr.Get_Next(); sval1 = tr.Get_Value(); tr = tr.Get_Next(); sval2 = tr.Get_Value(); if (type == SerializationTreeNodeType.stt_class) { if (parent == null) { // error(L"Ошибка загрузки статических типов. Узел типа Класс находится на верхнем уровне" // , L"Тип", owner->name // , L"Путь", path()); } else if (parent.type != SerializationTreeNodeType.stt_classcol) { // error(L"Ошибка загрузки статических типов. Узел типа Класс находится не в узле типа Коллекция классов" // , L"Тип", owner->name // , L"Путь", path()); } } else { if (parent != null) { if (parent.type == SerializationTreeNodeType.stt_classcol) { // error(L"Ошибка загрузки статических типов. Узел не типа Класс находится в узле типа Коллекция классов" // , L"Тип", owner->name // , L"Путь", path()); } } } if (type == SerializationTreeNodeType.stt_idel) { if (parent == null) { // error(L"Ошибка загрузки статических типов. Узел типа ИД-элемент находится на верхнем уровне" // , L"Тип", owner->name // , L"Путь", path()); } else { if (parent.type != SerializationTreeNodeType.stt_idcol) { // error(L"Ошибка загрузки статических типов. Узел типа ИД-элемент находится не в узле типа Коллекция ИД-элементов" // , L"Тип", owner->name // , L"Путь", path()); } } } else { if ((parent != null) && (parent.type == SerializationTreeNodeType.stt_idcol)) { // error(L"Ошибка загрузки статических типов. Узел не типа ИД-элемент находится в узле типа Коллекция ИД-элементов" // , L"Тип", owner->name // , L"Путь", path()); } } switch (type) { case SerializationTreeNodeType.stt_min: break; case SerializationTreeNodeType.stt_const: typeval1 = (SerializationTreeValueType)(Convert.ToInt32(stval)); switch (typeval1) { case SerializationTreeValueType.stv_string: str1 = sval1; break; case SerializationTreeValueType.stv_number: uTreeNode1.num1 = Convert.ToInt32(sval1); break; case SerializationTreeValueType.stv_uid: if (!string_to_GUID(sval1, ref uTreeNode1.uid1)) { // error(L"Ошибка загрузки статических типов. Ошибка преобразования УИД в константе дерева сериализации" // , L"Тип", owner->name // , L"Путь", path() // , L"УИД", sval1); } break; default: // error(L"Ошибка загрузки статических типов. Некорректный тип значения константы" // , L"Тип", owner->name // , L"Путь", path() // , L"Тип значения", (int)typeval1); break; } break; case SerializationTreeNodeType.stt_var: str1 = sval1; break; case SerializationTreeNodeType.stt_list: break; case SerializationTreeNodeType.stt_prop: uTreeNode1.prop1 = owner.GetProperty(sval1); if (uTreeNode1.prop1 == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства дерева сериализации" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя свойства", sval1); } typeprop = null; if (!String.IsNullOrEmpty(stval)) { typeprop = MetaTypeSet.staticTypes.GetTypeByName(stval); if (typeprop == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя типа свойства" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя свойства", sval1 // , L"Имя типа", stval); } } uTreeNode2.prop2 = null; if (sval2.Length > 0) { uTreeNode2.prop2 = owner.GetProperty(sval2); if (uTreeNode2.prop2 == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства дерева сериализации" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя свойства", sval2); } } break; case SerializationTreeNodeType.stt_elcol: str = sval1.Substring(1, 1); if (string.IsNullOrEmpty(str)) { typeval1 = SerializationTreeValueType.stv_none; } else if (str.CompareTo("%") == 0) { typeval1 = SerializationTreeValueType.stv_var; str1 = sval1.Substring(2, sval1.Length - 1); } else if (str.CompareTo(".") == 0) { sval1 = sval1.Substring(2, sval1.Length - 1); typeval1 = SerializationTreeValueType.stv_prop; uTreeNode1.prop1 = owner.GetProperty(sval1); if (uTreeNode1.prop1 == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства дерева сериализации" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя свойства", sval1); } } else { str = sval1.Substring(1, 2); if (str.CompareTo("N'") == 0) { typeval1 = SerializationTreeValueType.stv_number; uTreeNode1.num1 = Convert.ToInt32(sval1.Substring(3, sval1.Length - 2)); } else { // error(L"Ошибка загрузки статических типов. Ошибка разбора значения в элементе коллекции дерева сериализации" // , L"Тип", owner->name // , L"Путь", path() // , L"Значение", sval1); } } typeprop = null; if (!string.IsNullOrEmpty(stval)) { typeprop = MetaTypeSet.staticTypes.GetTypeByName(stval); if (typeprop == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя типа элемента коллекции" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя типа", stval); } } break; case SerializationTreeNodeType.stt_gentype: uTreeNode1.gentype = null; // for (i = 0; i < owner.generatedtypes.size(); ++i) if (sval1.CompareIC(owner->generatedtypes[i]->name) == 0) // { // gentype = owner->generatedtypes[i]; // } // if (!gentype) // { // error(L"Ошибка загрузки статических типов. Некорректное имя генерируемого типа" // , L"Тип", owner->name // , L"Путь", path() // , L"Имя генерируемого типа", sval1); // } break; case SerializationTreeNodeType.stt_cond: break; case SerializationTreeNodeType.stt_metaid: break; case SerializationTreeNodeType.stt_classcol: break; case SerializationTreeNodeType.stt_class: break; case SerializationTreeNodeType.stt_idcol: break; case SerializationTreeNodeType.stt_idel: break; case SerializationTreeNodeType.stt_max: break; default: break; } }
public ExternalFile(MetaType _owner, Tree tr) { Tree tt; string sval; string str; uint i; MetaType typ; owner = _owner; tt = tr.Get_First(); prop = owner.GetProperty(tt.Get_Value()); if (!(prop is null)) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства дерева сериализации в описании внешнего файла" // , L"Тип", owner->name // , L"Имя свойства", tt->get_value()); } tt = tt.Get_Next(); relativepath = tt.Get_Value().CompareTo("1") == 0 ? true : false; tt = tt.Get_Next(); name = tt.Get_Value(); tt = tt.Get_Next(); ext = tt.Get_Value(); tt = tt.Get_Next(); catalog = tt.Get_Value().CompareTo("1") == 0 ? true : false; tt = tt.Get_Next(); filename = tt.Get_Value(); tt = tt.Get_Next(); format = (ExternalFileFormat)(Convert.ToInt32(tt.Get_Value())); if (format <= ExternalFileFormat.eff_min || format >= ExternalFileFormat.eff_max) { // error(L"Ошибка загрузки статических типов. Некорректное значение формата внешнего файла" // , L"Тип", owner->name // , L"Значение", tt->get_value()); } tt = tt.Get_Next(); str = tt.Get_Value(); if (string.IsNullOrEmpty(str)) { type = null; } else { type = MetaTypeSet.staticTypes.GetTypeByName(str); if (!(type is null)) { // error(L"Ошибка загрузки статических типов. Некорректное имя типа внешнего файла" // , L"Тип", owner->name // , L"Имя типа", str); } } tt = tt.Get_Next(); optional = tt.Get_Value().CompareTo("1") == 0 ? true : false; tt = tt.Get_Next(); ver1C = stringtover1C(tt.Get_Value()); if (ver1C == Version1C.v1C_min) { // error(L"Ошибка загрузки статических типов. Некорректное значение версии 1C в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", tt->get_value()); } tt = tt.Get_Next(); havecondition = tt.Get_Value().CompareTo("1") == 0 ? true : false; if (havecondition) { tt = tt.Get_Next(); condition = (SerializationTreeCondition)(Convert.ToInt32(tt.Get_Value())); if (condition <= SerializationTreeCondition.stc_min || condition >= SerializationTreeCondition.stc_max) { // error(L"Ошибка загрузки статических типов. Некорректный вид условия в описании внешнего файла" // , L"Тип", owner->name // , L"Вид условия", tt->get_value()); } tt = tt.Get_Next(); sval = tt.Get_Value(); str = sval.Substring(1, 1); if (str.CompareTo("%") == 0) { typeval1 = SerializationTreeValueType.stv_var; str1 = sval.Substring(2, sval.Length - 1); } else if (str.CompareTo(".") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval1 = SerializationTreeValueType.stv_prop; uTreeNode3.prop1 = owner.GetProperty(sval); if (!(uTreeNode3.prop1 is null)) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства в описании внешнего файла" // , L"Тип", owner->name // , L"Имя свойства", sval); } } else if (str.CompareTo("*") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval1 = SerializationTreeValueType.stv_value; uTreeNode3.val1 = null; //i = sval.Pos("."); i = (uint)sval.IndexOf("."); if (i != 0) { str = sval.Substring(1, (int)i - 1); typ = MetaTypeSet.staticTypes.GetTypeByName(str); if (typ != null) { str = sval.Substring((int)i + 1, (int)(sval.Length - i)); uTreeNode3.val1 = typ.GetValue(str); } } if (!(uTreeNode3.val1 is null)) { // error(L"Ошибка загрузки статических типов. Некорректное значение в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("v") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval1 = SerializationTreeValueType.stv_vercon; if (sval == "2.0") { uTreeNode3.vercon1 = ContainerVer.cv_2_0; } else if (sval == "5.0") { uTreeNode3.vercon1 = ContainerVer.cv_5_0; } else if (sval == "6.0") { uTreeNode3.vercon1 = ContainerVer.cv_6_0; } else if (sval == "106.0") { uTreeNode3.vercon1 = ContainerVer.cv_106_0; } else if (sval == "200.0") { uTreeNode3.vercon1 = ContainerVer.cv_200_0; } else if (sval == "202.2") { uTreeNode3.vercon1 = ContainerVer.cv_202_2; } else if (sval == "216.0") { uTreeNode3.vercon1 = ContainerVer.cv_216_0; } else { // error(L"Ошибка загрузки статических типов. Некорректное значение версии контейнера в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo(":") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval1 = SerializationTreeValueType.stv_ver1C; uTreeNode3.ver1C1 = stringtover1C(sval); if (uTreeNode3.ver1C1 == Version1C.v1C_min) { // error(L"Ошибка загрузки статических типов. Некорректное значение версии 1C в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("&") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval1 = SerializationTreeValueType.stv_classpar; uTreeNode3.classpar1 = ClassParameter.GetParam(sval); if (!(uTreeNode3.classpar1 is null)) { // error(L"Ошибка загрузки статических типов. Некорректное имя параметра класса в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("~") == 0) { typeval1 = SerializationTreeValueType.stv_globalvar; str1 = sval.Substring(2, sval.Length - 1); } else { str = sval.Substring(1, 2); if (str.CompareTo("S'") == 0) { typeval1 = SerializationTreeValueType.stv_string; str1 = sval.Substring(3, sval.Length - 2); } else if (str.CompareTo("N'") == 0) { typeval1 = SerializationTreeValueType.stv_number; uTreeNode3.num1 = Convert.ToInt32(sval.Substring(3, sval.Length - 2)); } else if (str.CompareTo("U'") == 0) { typeval1 = SerializationTreeValueType.stv_uid; if (!string_to_GUID(sval.Substring(3, sval.Length - 2), ref uTreeNode3.uid1)) { // error(L"Ошибка загрузки статических типов. Ошибка преобразования УИД в условии в описании внешнего файла" // , L"Тип", owner->name // , L"УИД", sval); } } else { // error(L"Ошибка загрузки статических типов. Ошибка разбора значения в условии в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } tt = tt.Get_Next(); sval = tt.Get_Value(); str = sval.Substring(1, 1); if (str.CompareTo("%") == 0) { typeval2 = SerializationTreeValueType.stv_var; str2 = sval.Substring(2, sval.Length - 1); } else if (str.CompareTo(".") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval2 = SerializationTreeValueType.stv_prop; uTreeNode4.prop2 = owner.GetProperty(sval); if (!(uTreeNode4.prop2 is null)) { // error(L"Ошибка загрузки статических типов. Некорректное имя свойства в описании внешнего файла" // , L"Тип", owner->name // , L"Имя свойства", sval); } } else if (str.CompareTo("*") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval2 = SerializationTreeValueType.stv_value; uTreeNode4.val2 = null; //i = sval.Pos(L"."); i = (uint)sval.IndexOf("."); if (i != 0) { str = sval.Substring(1, (int)i - 1); typ = MetaTypeSet.staticTypes.GetTypeByName(str); if (typ != null) { str = sval.Substring((int)i + 1, (int)(sval.Length - i)); uTreeNode4.val2 = typ.GetValue(str); } } if (uTreeNode4.val2 is null) { // error(L"Ошибка загрузки статических типов. Некорректное значение в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("v") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval2 = SerializationTreeValueType.stv_vercon; if (sval == "2.0") { uTreeNode4.vercon2 = ContainerVer.cv_2_0; } else if (sval == "5.0") { uTreeNode4.vercon2 = ContainerVer.cv_5_0; } else if (sval == "6.0") { uTreeNode4.vercon2 = ContainerVer.cv_6_0; } else if (sval == "106.0") { uTreeNode4.vercon2 = ContainerVer.cv_106_0; } else if (sval == "200.0") { uTreeNode4.vercon2 = ContainerVer.cv_200_0; } else if (sval == "202.2") { uTreeNode4.vercon2 = ContainerVer.cv_202_2; } else if (sval == "216.0") { uTreeNode4.vercon2 = ContainerVer.cv_216_0; } else { // error(L"Ошибка загрузки статических типов. Некорректное значение версии контейнера в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo(":") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval2 = SerializationTreeValueType.stv_ver1C; uTreeNode4.ver1C2 = stringtover1C(sval); if (uTreeNode4.ver1C2 == Version1C.v1C_min) { // error(L"Ошибка загрузки статических типов. Некорректное значение версии 1C в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("&") == 0) { sval = sval.Substring(2, sval.Length - 1); typeval2 = SerializationTreeValueType.stv_classpar; uTreeNode4.classpar2 = ClassParameter.GetParam(sval); if (uTreeNode4.classpar2 == null) { // error(L"Ошибка загрузки статических типов. Некорректное имя параметра класса в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } else if (str.CompareTo("~") == 0) { typeval2 = SerializationTreeValueType.stv_globalvar; str2 = sval.Substring(2, sval.Length - 1); } else { str = sval.Substring(1, 2); if (str.CompareTo("S'") == 0) { typeval2 = SerializationTreeValueType.stv_string; str2 = sval.Substring(3, sval.Length - 2); } else if (str.CompareTo("N'") == 0) { typeval2 = SerializationTreeValueType.stv_number; uTreeNode4.num2 = Convert.ToInt32(sval.Substring(3, sval.Length - 2)); } else if (str.CompareTo("U'") == 0) { typeval2 = SerializationTreeValueType.stv_uid; if (!string_to_GUID(sval.Substring(3, sval.Length - 2), ref uTreeNode4.uid2)) { // error(L"Ошибка загрузки статических типов. Ошибка преобразования УИД в условии в описании внешнего файла" // , L"Тип", owner->name // , L"УИД", sval); } } else { // error(L"Ошибка загрузки статических типов. Ошибка разбора значения в условии в описании внешнего файла" // , L"Тип", owner->name // , L"Значение", sval); } } } }