public MarkDeprecatedFunctionsAsObsoletePass(IGeneratorConfig config, bool ignoreObsolete) { VisitOptions.VisitClassBases = false; VisitOptions.VisitClassFields = false; VisitOptions.VisitClassMethods = false; VisitOptions.VisitClassProperties = false; VisitOptions.VisitClassTemplateSpecializations = false; VisitOptions.VisitEventParameters = false; VisitOptions.VisitFunctionParameters = false; VisitOptions.VisitFunctionReturnType = false; VisitOptions.VisitNamespaceEnums = false; VisitOptions.VisitNamespaceEvents = false; VisitOptions.VisitNamespaceTemplates = false; VisitOptions.VisitNamespaceTypedefs = false; VisitOptions.VisitNamespaceVariables = false; VisitOptions.VisitPropertyAccessors = false; VisitOptions.VisitTemplateArguments = false; Map = (from f in config.FunctionBindings.Values where f.IsObsolete && f.IsProjected select f ).ToDictionary(f => f.Name, f => f.DeprecationMessage); IgnoreObsoleteFunctions = ignoreObsolete; }
internal ClassInfo MaybeMakeNullable(IGeneratorConfig generator) { if (!generator.AlwaysUseNullableValues) { return(this); } return(this.GetCommonType(ClassInfo.GetNull(generator))); }
public MapHandleAliasTypesPass(IGeneratorConfig config) { var aliasFuncs = from f in config.FunctionBindings.Values where f.ReturnTransform != null && f.ReturnTransform.IsAlias && f.IsProjected select f.Name; AliasReturningFunctions = new SortedSet <string>(aliasFuncs); }
/// <summary>Initializes a new instance of the <see cref="LibLlvmGeneratorLibrary"/> class.</summary> /// <param name="llvmRoot">Root path to standard LLVM source</param> /// <param name="outputPath">Output path of the generated code files</param> /// <remarks> /// The <paramref name="llvmRoot"/> only needs to have the files required to parse the LLVM-C API /// </remarks> public LibLlvmGeneratorLibrary(IGeneratorConfig configuration, string llvmRoot, string extensionsRoot, string outputPath) { Configuration = configuration; CommonInclude = Path.Combine(llvmRoot, "include"); ArchInclude = Path.Combine(llvmRoot, "x64-Release", "include"); ExtensionsInclude = Path.Combine(extensionsRoot, "include"); OutputPath = Path.GetFullPath(outputPath); }
public MarkDeprecatedFunctionsAsObsoletePass(IGeneratorConfig config, bool ignoreObsolete = false) { Map = (from f in config.FunctionBindings.Values where f.IsObsolete && f.IsProjected select f ).ToDictionary(f => f.Name, f => f.DeprecationMessage); IgnoreObsoleteFunctions = ignoreObsolete; }
/// <summary>Initializes a new instance of the <see cref="LibLlvmGeneratorLibrary"/> class.</summary> /// <param name="llvmRoot">Root path to standard LLVM source</param> /// <param name="outputPath">Output path of the generated code files</param> /// <remarks> /// The <paramref name="llvmRoot"/> only needs to have the files required to parse the LLVM-C API /// </remarks> public LibLlvmGeneratorLibrary(IGeneratorConfig configuration, string llvmRoot, string extensionsRoot, string outputPath) { Configuration = configuration; CommonInclude = Path.Combine(llvmRoot, "include"); ArchInclude = Path.Combine(llvmRoot, "x64-Release", "include"); ExtensionsInclude = Path.Combine(extensionsRoot, "include"); OutputPath = Path.GetFullPath(outputPath); InternalTypePrinter = new LibLLVMTypePrinter(); Type.TypePrinterDelegate = t => InternalTypePrinter.GetName(t, TypeNameKind.Native); }
public ClassInfo(IGeneratorConfig generator, JToken token) : this(generator) { UseJsonProperty = generator.PropertyAttribute == "JsonProperty"; Type = GetFirstTypeEnum(token); if (Type == JsonTypeEnum.Array) { var array = (JArray)token; InternalType = GetCommonType(generator, array.ToArray()); } }
public static ClassInfo GetCommonType(IGeneratorConfig generator, JToken[] tokens) { if (tokens.Length == 0) { return(new ClassInfo(generator, JsonTypeEnum.NonConstrained)); } var common = new ClassInfo(generator, tokens[0]).MaybeMakeNullable(generator); for (int i = 1; i < tokens.Length; i++) { var current = new ClassInfo(generator, tokens[i]); common = common.GetCommonType(current); } return(common); }
public MarkFunctionsInternalPass(IGeneratorConfig config) { VisitOptions.VisitClassBases = false; VisitOptions.VisitClassFields = false; VisitOptions.VisitClassProperties = false; VisitOptions.VisitClassTemplateSpecializations = false; VisitOptions.VisitEventParameters = false; VisitOptions.VisitFunctionParameters = false; VisitOptions.VisitFunctionReturnType = false; VisitOptions.VisitNamespaceEnums = false; VisitOptions.VisitNamespaceEvents = false; VisitOptions.VisitNamespaceTemplates = false; VisitOptions.VisitNamespaceTypedefs = false; VisitOptions.VisitNamespaceVariables = false; VisitOptions.VisitPropertyAccessors = false; VisitOptions.VisitTemplateArguments = false; Configuration = config; }
public AddMarshalingAttributesPass(IGeneratorConfig configuration) { VisitOptions.VisitClassBases = false; VisitOptions.VisitClassMethods = false; VisitOptions.VisitClassProperties = false; VisitOptions.VisitClassTemplateSpecializations = false; VisitOptions.VisitEventParameters = false; VisitOptions.VisitFunctionParameters = true; VisitOptions.VisitFunctionReturnType = true; VisitOptions.VisitNamespaceEnums = false; VisitOptions.VisitNamespaceEvents = false; VisitOptions.VisitNamespaceTemplates = false; VisitOptions.VisitNamespaceTypedefs = true; VisitOptions.VisitNamespaceVariables = false; VisitOptions.VisitPropertyAccessors = false; VisitOptions.VisitTemplateArguments = false; Configuration = configuration; }
public string GetTypeName(ClassInfo type, IGeneratorConfig config) { switch (type.Type) { case JsonTypeEnum.Anything: return("object"); case JsonTypeEnum.Array: return("IList<" + GetTypeName(type.InternalType, config) + ">"); case JsonTypeEnum.Dictionary: return("Dictionary<string, " + GetTypeName(type.InternalType, config) + ">"); case JsonTypeEnum.Boolean: return("bool"); case JsonTypeEnum.Float: return("double"); case JsonTypeEnum.Integer: return("int"); case JsonTypeEnum.Long: return("long"); case JsonTypeEnum.Date: return("DateTime"); case JsonTypeEnum.NonConstrained: return("object"); case JsonTypeEnum.NullableBoolean: return("bool?"); case JsonTypeEnum.NullableFloat: return("double?"); case JsonTypeEnum.NullableInteger: return("int?"); case JsonTypeEnum.NullableLong: return("long?"); case JsonTypeEnum.NullableDate: return("DateTime?"); case JsonTypeEnum.NullableSomething: return("object"); case JsonTypeEnum.Object: return(type.AssignedName); case JsonTypeEnum.String: return("string"); default: throw new NotSupportedException("Unsupported json type"); } }
public MapHandleAliasTypesPass(IGeneratorConfig config) { VisitOptions.VisitClassBases = false; VisitOptions.VisitClassFields = false; VisitOptions.VisitClassMethods = false; VisitOptions.VisitClassProperties = false; VisitOptions.VisitClassTemplateSpecializations = false; VisitOptions.VisitEventParameters = false; VisitOptions.VisitFunctionParameters = false; VisitOptions.VisitFunctionReturnType = false; VisitOptions.VisitNamespaceEnums = false; VisitOptions.VisitNamespaceEvents = false; VisitOptions.VisitNamespaceTemplates = false; VisitOptions.VisitNamespaceTypedefs = false; VisitOptions.VisitNamespaceVariables = false; VisitOptions.VisitPropertyAccessors = false; VisitOptions.VisitTemplateArguments = false; var aliasFuncs = from f in config.FunctionBindings.Values where f.ReturnTransform != null && f.ReturnTransform.IsAlias && f.IsProjected select f.Name; AliasReturningFunctions = new SortedSet <string>(aliasFuncs); }
public MarkFunctionsInternalPass(IGeneratorConfig config) { Configuration = config; }
public AddMarshalingAttributesPass(IGeneratorConfig configuration) { Configuration = configuration; }
public LibLlvmTemplateFactory(IGeneratorConfig config) { HandleToTemplateMap = config.BuildTemplateMap( ); }
public ConvertLLVMBoolPass(IGeneratorConfig config) { Configuration = config; }
public void WriteNamespaceStart(IGeneratorConfig config, TextWriter sw, bool root) { sw.WriteLine(); sw.WriteLine("namespace {0}", config.Namespace); sw.WriteLine("{"); }
public IdentifyReduntantConfigurationEntriesPass(IGeneratorConfig configuration) { Configuration = configuration; }
public ValidateMarshalingInfoPass(IGeneratorConfig config) { Config = config; }
private ClassInfo(IGeneratorConfig generator) { this.generator = generator; UseJsonProperty = generator.PropertyAttribute == "JsonProperty"; }
public LibLlvmTemplateFactory(IGeneratorConfig config, ITypePrinter2 typePrinter) { HandleToTemplateMap = config.BuildTemplateMap( ); TypePrinter = typePrinter; }
internal ClassInfo(IGeneratorConfig generator, JsonTypeEnum type) : this(generator) { this.Type = type; }
internal static ClassInfo GetNull(IGeneratorConfig generator) { return(new ClassInfo(generator, JsonTypeEnum.NullableSomething)); }