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}"); } }
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 }); } }
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); } } }
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})!"); } }
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); } } }
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); }
public void Accept(DSet type, DefField x, List <ResourceInfo> y) { Accept(x, type.Datas, type.Type.ElementType, y); }
protected override void AddInterfaceMethodsForField(DefField field) { _sb.DecreaseIndent(); _sb.AppendLine(GetProtectionString(field.ProtectionType) + ":"); _sb.IncreaseIndent(); base.AddInterfaceMethodsForField(field); }
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)); }
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)}"); }
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)); }
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("}"); }