Example #1
0
        public override List<Template> Generate(TranslationUnit unit)
        {
            var outputs = new List<Template>();

            var header = new CLIHeadersTemplate(Driver, unit);
            outputs.Add(header);

            var source = new CLISourcesTemplate(Driver, unit);
            outputs.Add(source);

            return outputs;
        }
Example #2
0
        public override List <Template> Generate(IEnumerable <TranslationUnit> units)
        {
            var outputs = new List <Template>();

            var header = new CLIHeadersTemplate(Driver, units);

            outputs.Add(header);

            var source = new CLISourcesTemplate(Driver, units);

            outputs.Add(source);

            return(outputs);
        }
Example #3
0
        public void GenerateClass(Class @class)
        {
            PushBlock(CLIBlockKind.Class);

            // Output a default constructor that takes the native pointer.
            GenerateClassConstructor(@class, isIntPtr: false);
            GenerateClassConstructor(@class, isIntPtr: true);

            foreach (var method in @class.Methods)
            {
                if (ASTUtils.CheckIgnoreMethod(method))
                {
                    continue;
                }

                GenerateMethod(method, @class);
            }

            if (@class.IsRefType)
            {
                if (!CLIHeadersTemplate.HasRefBase(@class))
                {
                    PushBlock(CLIBlockKind.Method);
                    WriteLine("System::IntPtr {0}::Instance::get()",
                              QualifiedIdentifier(@class));
                    WriteStartBraceIndent();
                    WriteLine("return System::IntPtr(NativePtr);");
                    WriteCloseBraceIndent();
                    PopBlock(NewLineKind.BeforeNextBlock);

                    PushBlock(CLIBlockKind.Method);
                    WriteLine("void {0}::Instance::set(System::IntPtr object)",
                              QualifiedIdentifier(@class));
                    WriteStartBraceIndent();
                    var nativeType = string.Format("::{0}*", @class.QualifiedOriginalName);
                    WriteLine("NativePtr = ({0})object.ToPointer();", nativeType);
                    WriteCloseBraceIndent();
                    PopBlock(NewLineKind.BeforeNextBlock);
                }
            }

            foreach (var property in @class.Properties)
            {
                GenerateProperty(property);
            }

            foreach (var @event in @class.Events)
            {
                if (@event.Ignore)
                {
                    continue;
                }

                GenerateDeclarationCommon(@event);
                GenerateEvent(@event, @class);
            }

            if (Options.GenerateFunctionTemplates)
            {
                foreach (var template in @class.Templates)
                {
                    if (template.Ignore)
                    {
                        continue;
                    }

                    var functionTemplate = template as FunctionTemplate;
                    if (functionTemplate == null)
                    {
                        continue;
                    }

                    GenerateDeclarationCommon(template);
                    GenerateFunctionTemplate(functionTemplate, @class);
                }
            }

            foreach (var variable in @class.Variables)
            {
                if (variable.Ignore)
                {
                    continue;
                }

                if (variable.Access != AccessSpecifier.Public)
                {
                    continue;
                }

                GenerateDeclarationCommon(variable);
                GenerateVariable(variable, @class);
            }

            PopBlock();
        }