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; }
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); }
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(); }