public static string DefineTextKeyField(DefField field, string lan)
        {
            switch (lan)
            {
            case "cs": return($"string {field.ConventionName}{TText.L10N_FIELD_SUFFIX};");

            default: throw new NotSupportedException($"not support lan:{lan}");
            }
        }
Beispiel #2
0
 public void Accept(DString type, DefField x, List <ResourceInfo> y)
 {
     if (!string.IsNullOrEmpty(type.Value))
     {
         y.Add(new ResourceInfo()
         {
             Resource = type.Value, Tag = x.ResourceTag
         });
     }
 }
Beispiel #3
0
 private void Accept(DefField def, List <DType> datas, TType elementType, List <ResourceInfo> ress)
 {
     if (def.IsResource || (elementType is TBean))
     {
         foreach (var e in datas)
         {
             e.Apply(this, def, ress);
         }
     }
 }
Beispiel #4
0
 public void Accept(DMap type, DefField x, List <ResourceInfo> y)
 {
     if (x.IsResource || (type.Type.ValueType is TBean))
     {
         foreach (var e in type.Datas.Values)
         {
             e.Apply(this, x, y);
         }
     }
 }
 protected override void AddPropertyField(DefField field)
 {
     //TODO comments for fields
     //AddComments(field);
     string ptype = GetCLRTypeName(field);
     _sb.AppendFormatIndent("property {0} {1}\n{{\n", ptype, ToCamelCase(field.Name));
     _sb.IncreaseIndent();
     _sb.AppendLine(ptype + " get()\n{");
     _sb.AppendLine("\treturn " + NameToPrivate(field) + ";");
     _sb.AppendLine("}");
     _sb.DecreaseIndent();
     _sb.AppendLine("}");
 }
        public static string CppRefValidatorResolve(DefField field)
        {
            var refVarName = field.RefVarName;
            var name       = field.ConventionName;
            var tableName  = field.Ref.FirstTable;
            var table      = field.Assembly.GetCfgTable(field.Ref.FirstTable);

            if (field.IsNullable)
            {
                return($"this->{refVarName} = this->{name} != nullptr ? (({table.CppFullName}*)(_tables[\"{tableName}\"]))->get(*(this->{name})) : nullptr;");
            }
            else
            {
                return($"this->{refVarName} = (({table.CppFullName}*)(_tables[\"{tableName}\"]))->get({name});");
            }
        }
        public static string CsRefValidatorResolve(DefField field)
        {
            var refVarName = field.RefVarName;
            var name       = field.ConventionName;
            var tableName  = field.Ref.FirstTable;
            var table      = field.Assembly.GetCfgTable(field.Ref.FirstTable);

            if (field.IsNullable)
            {
                return($"this.{refVarName} = this.{name} != null ? (_tables[\"{tableName}\"] as  {table.FullName}).GetOrDefault({name}.Value) : null;");
            }
            else
            {
                return($"this.{refVarName} = (_tables[\"{tableName}\"] as {table.FullName}).GetOrDefault({name});");
            }
        }
        public static string JavaRefValidatorResolve(DefField field)
        {
            var refVarName = field.RefVarName;
            var name       = field.ConventionName;
            var tableName  = field.Ref.FirstTable;
            var table      = field.Assembly.GetCfgTable(field.Ref.FirstTable);

            if (field.IsNullable)
            {
                return($"this.{refVarName} = this.{name} != null ? (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name}) : null;");
            }
            else
            {
                return($"this.{refVarName} = (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name});");
            }
        }
        public static string TsRefValidatorResolve(DefField field)
        {
            var refVarName = field.RefVarName;
            var name       = "this." + field.ConventionName;
            var tableName  = field.Ref.FirstTable;
            var table      = field.Assembly.GetCfgTable(field.Ref.FirstTable);

            if (field.IsNullable)
            {
                return($"this.{refVarName} = {name} != undefined ? (_tables.get('{tableName}') as  {table.FullName}).get({name}) : undefined");
            }
            else
            {
                return($"this.{refVarName} = (_tables.get('{tableName}') as {table.FullName}).get({name})!");
            }
        }
Beispiel #10
0
        public void Accept(DBean type, DefField _, List <ResourceInfo> y)
        {
            var def = type.ImplType;

            if (def == null)
            {
                return;
            }
            int index = 0;

            foreach (DType fieldData in type.Fields)
            {
                var fieldDef = (DefField)def.HierarchyFields[index++];
                if (fieldDef.IsResource)
                {
                    fieldData.Apply(this, fieldDef, y);
                }
            }
        }
Beispiel #11
0
        public void Compile(DefField def)
        {
            void ThrowError()
            {
                throw new Exception($"结构:{ def.HostType.FullName } 字段: { def.Name}  range 定义:{_str} 不合法");
            }

            if (_str.Length <= 2)
            {
                ThrowError();
            }
            switch (_str[0])
            {
            case '[': _includeMinBound = true; break;

            case '(': _includeMinBound = false; break;

            default: ThrowError(); break;
            }
            switch (_str[^ 1])
 protected virtual string GetNativeInvokationTarget(DefField field)
 {
     if (!field.IsStatic)
     {
         if (field.ProtectionType == ProtectionType.Public)
         {
             return GetNativeInvokationTarget() + "->" + field.Name;
         }
         else if (field.ProtectionType == ProtectionType.Protected)
         {
             string proxyName = NativeProtectedStaticsProxy.GetProtectedStaticsProxyName(_t);
             return "static_cast<" + proxyName + "*>(_native)->" + field.Name;
         }
         else
             throw new Exception("Unexpected");
     }
     else
     {
         if (field.ProtectionType == ProtectionType.Public)
             return field.Class.FullNativeName + "::" + field.Name;
         else
             return NativeProtectedStaticsProxy.GetProtectedStaticsProxyName(field.Class) + "::" + field.Name;
     }
 }
 protected virtual void AddStaticField(DefField field)
 {
 }
 protected virtual void AddPropertyField(DefField field)
 {
 }
 protected virtual void AddMethodsForField(DefField field)
 {
 }
 protected virtual void AddInterfacePropertyField(DefField field)
 {
     AddPropertyField(field);
 }
Beispiel #17
0
 public void Accept(DSet type, DefField x, List <ResourceInfo> y)
 {
     Accept(x, type.Datas, type.Type.ElementType, y);
 }
Beispiel #18
0
 protected override void AddInterfaceMethodsForField(DefField field)
 {
     _sb.DecreaseIndent();
     _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
     _sb.IncreaseIndent();
     base.AddInterfaceMethodsForField(field);
 }
Beispiel #19
0
        protected override void AddPropertyField(DefField field)
        {
            //TODO comments for fields
            //AddComments(field);

            string ptype;

            if (field.IsNativeArray)
            {
                if (field.Type.HasAttribute<NativeValueContainerAttribute>()
                    || (field.Type.IsValueType && !field.Type.HasWrapType(WrapTypes.NativePtrValueType)))
                {
                    DefParam tmpParam = new DefParam(field, field.Name);
                    switch (field.PassedByType)
                    {
                        case PassedByType.Value:
                            tmpParam.PassedByType = PassedByType.Pointer;
                            break;
                        case PassedByType.Pointer:
                            tmpParam.PassedByType = PassedByType.PointerPointer;
                            break;
                        default:
                            throw new Exception("Unexpected");
                    }

                    ptype = tmpParam.CLRTypeName;
                    _sb.AppendIndent("");
                    if (field.IsStatic) _sb.Append("static ");
                    _sb.AppendFormat("property {0} {1}\n", ptype, field.Name);
                    _sb.AppendLine("{");

                    _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
                    _sb.AppendLine("\t" + ptype + " get();");

                    _sb.AppendLine("}");
                }
                else
                {
                    ptype = field.CLRTypeName;
                    _sb.AppendIndent("");
                    if (field.IsStatic) _sb.Append("static ");
                    _sb.AppendFormat("property {0} {1}[int]\n", ptype, field.Name);
                    _sb.AppendLine("{");

                    _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
                    _sb.AppendLine("\t" + ptype + " get(int index);");
                    _sb.AppendLine("\tvoid set(int index, " + ptype + " value);");

                    _sb.AppendLine("}");
                }
            }
            else if (_cachedMembers.Contains(field))
            {
                ptype = field.CLRTypeName;
                _sb.AppendIndent("");
                if (field.IsStatic) _sb.Append("static ");
                _sb.AppendFormat("property {0} {1}\n", ptype, field.Name);
                _sb.AppendLine("{");

                _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
                _sb.AppendLine("\t" + ptype + " get();");

                _sb.AppendLine("}");
            }
            else
            {
                ptype = GetCLRTypeName(field);
                _sb.AppendIndent("");
                if (field.IsStatic) _sb.Append("static ");
                _sb.AppendFormat("property {0} {1}\n", ptype, field.Name);
                _sb.AppendLine("{");

                _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
                _sb.AppendLine("\t" + ptype + " get();");

                if ( // SharedPtrs can be copied by value. Let all be copied by value just to be sure (field.PassedByType == PassedByType.Pointer || field.Type.IsValueType)
                    !IsReadOnly && !field.Type.HasAttribute<ReadOnlyForFieldsAttribute>()
                    && !field.IsConst)
                {
                    _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":");
                    _sb.AppendLine("\tvoid set(" + ptype + " value);");
                }

                _sb.AppendLine("}");
            }
        }
 public static string CsRecursiveTranslateText(DefField field, string translatorName)
 {
     return(field.CType.Apply(CsRecursiveTranslateVisitor.Ins, field.ConventionName, translatorName));
 }
Beispiel #21
0
 protected override void AddStaticField(DefField field)
 {
     base.AddStaticField(field);
     _sb.AppendIndent("");
     if (field.IsConst) _sb.Append("const ");
     if (field.IsStatic) _sb.Append("static ");
     _sb.Append(GetCLRTypeName(field) + " " + field.Name + " = " + field.Type.GetNativeCallConversion(field.FullNativeName, field) + ";\n\n");
 }
 public static string CsTranslateText(DefField field, string translatorName)
 {
     return($"{field.ConventionName} = {translatorName}({field.GetTextKeyName(field.ConventionName)}, {field.ConventionName});");
 }
 public static string CsDefineTextKeyField(DefField field)
 {
     return($"string {field.GetTextKeyName(field.ConventionName)}");
 }
Beispiel #24
0
 protected override void AddMethodsForField(DefField field)
 {
     _sb.AppendLine(GetCLRTypeName(field) + " get_" + field.Name + "();");
     DefParam param = new DefParam(field, "value");
     _sb.AppendLine("void set_" + field.Name + "(" + param.Type.GetCLRParamTypeName(param) + " value);");
 }
 protected virtual void AddInterfaceMethodsForField(DefField field)
 {
     AddMethodsForField(field);
 }
        protected override void AddPropertyField(DefField field)
        {
            string ptype = GetCLRTypeName(field);
            string pname = GetClassName() + "::" + field.Name;

            if (field.IsNativeArray)
            {
                if (field.Type.HasAttribute<NativeValueContainerAttribute>()
                    || (field.Type.IsValueType && !field.Type.HasWrapType(WrapTypes.NativePtrValueType)))
                {
                    DefParam tmpParam = new DefParam(field, field.Name + "_array");
                    switch (field.PassedByType)
                    {
                        case PassedByType.Value:
                            tmpParam.PassedByType = PassedByType.Pointer;
                            break;
                        case PassedByType.Pointer:
                            tmpParam.PassedByType = PassedByType.PointerPointer;
                            break;
                        default:
                            throw new Exception("Unexpected");
                    }

                    ptype = GetCLRTypeName(tmpParam);
                    string managedType = field.Type.GetNativeCallConversion(GetNativeInvokationTarget(field), tmpParam);

                    _sb.AppendLine(ptype + " " + pname + "::get()");
                    _sb.AppendLine("{");
                    _sb.AppendLine("\treturn " + managedType + ";");
                    _sb.AppendLine("}");
                }
                else
                {
                    string managedType = field.Type.GetNativeCallConversion(GetNativeInvokationTarget(field) + "[index]", field);

                    _sb.AppendLine(ptype + " " + pname + "::get(int index)");
                    _sb.AppendLine("{");
                    _sb.AppendLine("\tif (index < 0 || index >= " + field.ArraySize + ") throw gcnew IndexOutOfRangeException();");
                    _sb.AppendLine("\treturn " + managedType + ";");
                    _sb.AppendLine("}");
                    _sb.AppendLine("void " + pname + "::set(int index, " + ptype + " value )");
                    _sb.AppendLine("{");
                    _sb.IncreaseIndent();
                    _sb.AppendLine("if (index < 0 || index >= " + field.ArraySize + ") throw gcnew IndexOutOfRangeException();");
                    string param = AddParameterConversion(new DefParam(field, "value"));
                    _sb.AppendLine(GetNativeInvokationTarget(field) + "[index] = " + param + ";");
                    _sb.DecreaseIndent();
                    _sb.AppendLine("}");
                }
            }
            else if (_cachedMembers.Contains(field))
            {
                string managedType;
                if (field.Type.IsSTLContainer)
                {
                    managedType = GetNativeInvokationTarget(field);
                }
                else
                {
                    managedType = field.Type.GetNativeCallConversion(GetNativeInvokationTarget(field), field);
                }
                string priv = NameToPrivate(field);

                _sb.AppendLine(ptype + " " + pname + "::get()");
                _sb.AppendLine("{");
                if (!field.IsStatic)
                    _sb.AppendLine("\treturn ( CLR_NULL == " + priv + " ) ? (" + priv + " = " + managedType + ") : " + priv + ";");
                else
                    _sb.AppendLine("\treturn " + priv + ";");
                _sb.AppendLine("}");
            }
            else
            {
                string managedType = field.Type.GetNativeCallConversion(GetNativeInvokationTarget(field), field);

                _sb.AppendLine(ptype + " " + pname + "::get()");
                _sb.AppendLine("{");
                _sb.AppendLine("\treturn " + managedType + ";");
                _sb.AppendLine("}");

                if ( // SharedPtrs can be copied by value. Let all be copied by value just to be sure (field.PassedByType == PassedByType.Pointer || field.Type.IsValueType)
                    !IsReadOnly && !field.Type.HasAttribute<ReadOnlyForFieldsAttribute>()
                    && !field.IsConst)
                {
                    _sb.AppendLine("void " + pname + "::set( " + ptype + " value )");
                    _sb.AppendLine("{");
                    _sb.IncreaseIndent();
                    string param = AddParameterConversion(new DefParam(field, "value"));
                    _sb.AppendLine(GetNativeInvokationTarget(field) + " = " + param + ";");
                    _sb.DecreaseIndent();
                    _sb.AppendLine("}");
                }
            }
        }
 public static string TsRecursiveResolve(DefField field, string tables)
 {
     return(field.CType.Apply(TypescriptRecursiveResolveVisitor.Ins, "this." + field.ConventionName, tables));
 }
Beispiel #28
0
 public void Accept(DText type, DefField x, List <ResourceInfo> y)
 {
     throw new NotImplementedException();
 }
 public static string JavaRecursiveResolve(DefField field, string tables)
 {
     return(field.CType.Apply(JavaRecursiveResolveVisitor.Ins, field.ConventionName, tables));
 }
 protected override string GetNativeInvokationTarget(DefField field)
 {
     return "static_cast<" + ProxyName + "*>(_native)->" + _t.FullNativeName + "::" + field.Name;
 }
        protected override void AddMethodsForField(DefField field)
        {
            string managedType = field.Type.GetNativeCallConversion(GetNativeInvokationTarget(field), field);

            _sb.AppendLine(GetCLRTypeName(field) + " " + GetClassName() + "::get_" + field.Name + "()");
            _sb.AppendLine("{");
            _sb.AppendLine("\treturn " + managedType + ";");
            _sb.AppendLine("}");

            DefParam param = new DefParam(field, "value");
            _sb.AppendLine("void " + GetClassName() + "::set_" + field.Name + "(" + param.Type.GetCLRParamTypeName(param) + " value)");
            _sb.AppendLine("{");
            _sb.IncreaseIndent();
            _sb.AppendLine(GetNativeInvokationTarget(field) + " = " + AddParameterConversion(param) + ";");
            _sb.DecreaseIndent();
            _sb.AppendLine("}");
        }