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;
        }
コード例 #2
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
 internal ClassInfo MaybeMakeNullable(IGeneratorConfig generator)
 {
     if (!generator.AlwaysUseNullableValues)
     {
         return(this);
     }
     return(this.GetCommonType(ClassInfo.GetNull(generator)));
 }
コード例 #3
0
        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);
        }
コード例 #4
0
 /// <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);
 }
コード例 #5
0
        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;
        }
コード例 #6
0
 /// <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);
 }
コード例 #7
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
        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());
            }
        }
コード例 #8
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
        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);
        }
コード例 #9
0
        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;
        }
コード例 #10
0
        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;
        }
コード例 #11
0
        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");
            }
        }
コード例 #12
0
        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);
        }
コード例 #13
0
 public MarkFunctionsInternalPass(IGeneratorConfig config)
 {
     Configuration = config;
 }
コード例 #14
0
 public AddMarshalingAttributesPass(IGeneratorConfig configuration)
 {
     Configuration = configuration;
 }
コード例 #15
0
 public LibLlvmTemplateFactory(IGeneratorConfig config)
 {
     HandleToTemplateMap = config.BuildTemplateMap( );
 }
コード例 #16
0
 public ConvertLLVMBoolPass(IGeneratorConfig config)
 {
     Configuration = config;
 }
コード例 #17
0
 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;
 }
コード例 #19
0
 public ValidateMarshalingInfoPass(IGeneratorConfig config)
 {
     Config = config;
 }
コード例 #20
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
        private ClassInfo(IGeneratorConfig generator)
        {
            this.generator = generator;

            UseJsonProperty = generator.PropertyAttribute == "JsonProperty";
        }
コード例 #21
0
 public LibLlvmTemplateFactory(IGeneratorConfig config, ITypePrinter2 typePrinter)
 {
     HandleToTemplateMap = config.BuildTemplateMap( );
     TypePrinter         = typePrinter;
 }
コード例 #22
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
 internal ClassInfo(IGeneratorConfig generator, JsonTypeEnum type) : this(generator)
 {
     this.Type = type;
 }
コード例 #23
0
ファイル: ClassInfo.cs プロジェクト: benlundberg/AppMapp
 internal static ClassInfo GetNull(IGeneratorConfig generator)
 {
     return(new ClassInfo(generator, JsonTypeEnum.NullableSomething));
 }