Ejemplo n.º 1
0
        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 : Продолжить доработки
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
 public SerializationTreeNode()
 {
     next   = null;
     first  = null;
     nomove = false;
 }
Ejemplo n.º 5
0
 public string typeval2presentation()
 {
     return(SerializationTreeNode.typevalpresentation(typeval2));
 }