示例#1
0
        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("<Неизвестный тип значения дерева сериализации>");
        }
示例#2
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;
            }
        }
示例#3
0
        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);
                    }
                }
            }
        }