public void setSerializationTree(Tree tr) { Tree t; int num, i; // Переменные дерева сериализации t = tr.Get_First(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); fserializationvars.Add(new SerializationTreeVar(t)); } // Дерево сериализации tr = tr.Get_Next(); t = tr.Get_First(); fserializationtree = SerializationTreeNode.SerializationTree(this, t, null); // Внешние файлы tr = tr.Get_Next(); t = tr.Get_First(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); fexternalfiles.Add(new ExternalFile(this, t)); } // TODO : Продолжить доработки }
public static SerializationTreeNode SerializationTree(MetaType _owner, Tree tr, SerializationTreeNode parent) { int count, i; SerializationTreeNode st = null; SerializationTreeNode cst = null; SerializationTreeNode nst; count = Convert.ToInt32(tr.Get_Value()); if (count == 0) { return(null); } for (i = 0; i < count; ++i) { tr = tr.Get_Next(); nst = new SerializationTreeNode(_owner, tr.Get_First(), parent, (uint)i); if (i != 0) { cst.next = nst; } else { st = nst; } cst = nst; } return(st); }
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 SerializationTreeNode() { next = null; first = null; nomove = false; }
public string typeval2presentation() { return(SerializationTreeNode.typevalpresentation(typeval2)); }