mirror of https://github.com/mono/CppSharp.git
c-sharpdotnetmonobindingsbridgecclangcpluspluscppsharpglueinteropparserparsingpinvokeswigsyntax-treevisitorsxamarinxamarin-bindings
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
5.7 KiB
195 lines
5.7 KiB
using System; |
|
using System.Collections.Generic; |
|
using CppSharp.AST; |
|
|
|
namespace CppSharp.Generators |
|
{ |
|
public abstract class CodeGenerator : BlockGenerator, IDeclVisitor<bool> |
|
{ |
|
public BindingContext Context { get; } |
|
|
|
public DriverOptions Options => Context.Options; |
|
|
|
public List<TranslationUnit> TranslationUnits { get; } |
|
|
|
public TranslationUnit TranslationUnit => TranslationUnits[0]; |
|
|
|
public abstract string FileExtension { get; } |
|
|
|
protected CodeGenerator(BindingContext context, TranslationUnit unit) |
|
: this(context, new List<TranslationUnit> { unit }) |
|
{ |
|
} |
|
|
|
protected CodeGenerator(BindingContext context, IEnumerable<TranslationUnit> units) |
|
{ |
|
Context = context; |
|
TranslationUnits = new List<TranslationUnit>(units); |
|
} |
|
|
|
public abstract void Process(); |
|
|
|
public override string Generate() |
|
{ |
|
if (Options.IsCSharpGenerator && Options.CompileCode) |
|
return base.GenerateUnformatted(); |
|
|
|
return base.Generate(); |
|
} |
|
|
|
public virtual void GenerateFilePreamble() |
|
{ |
|
PushBlock(BlockKind.Header); |
|
WriteLine("//----------------------------------------------------------------------------"); |
|
WriteLine("// <auto-generated>"); |
|
WriteLine("// This is autogenerated code by CppSharp."); |
|
WriteLine("// Do not edit this file or all your changes will be lost after re-generation."); |
|
WriteLine("// </auto-generated>"); |
|
WriteLine("//----------------------------------------------------------------------------"); |
|
PopBlock(); |
|
} |
|
|
|
#region Visitor methods |
|
|
|
public virtual bool VisitDeclaration(Declaration decl) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitDeclContext(DeclarationContext context) |
|
{ |
|
foreach (var decl in context.Declarations) |
|
if (!decl.IsGenerated) |
|
decl.Visit(this); |
|
|
|
return true; |
|
} |
|
|
|
public virtual bool VisitClassDecl(Class @class) |
|
{ |
|
return VisitDeclContext(@class); |
|
} |
|
|
|
public virtual bool VisitFieldDecl(Field field) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitFunctionDecl(Function function) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitMethodDecl(Method method) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitParameterDecl(Parameter parameter) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitTypedefDecl(TypedefDecl typedef) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitTypeAliasDecl(TypeAlias typeAlias) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitEnumDecl(Enumeration @enum) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitEnumItemDecl(Enumeration.Item item) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitVariableDecl(Variable variable) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitMacroDefinition(MacroDefinition macro) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitNamespace(Namespace @namespace) |
|
{ |
|
return VisitDeclContext(@namespace); |
|
} |
|
|
|
public virtual bool VisitEvent(Event @event) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitProperty(Property property) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitFriend(Friend friend) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitClassTemplateDecl(ClassTemplate template) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization) |
|
{ |
|
return VisitClassDecl(specialization); |
|
} |
|
|
|
public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitFunctionTemplateSpecializationDecl(FunctionTemplateSpecialization specialization) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitVarTemplateDecl(VarTemplate template) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitVarTemplateSpecializationDecl(VarTemplateSpecialization template) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitTemplateTemplateParameterDecl(TemplateTemplateParameter templateTemplateParameter) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitTemplateParameterDecl(TypeTemplateParameter templateParameter) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitNonTypeTemplateParameterDecl(NonTypeTemplateParameter nonTypeTemplateParameter) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
public virtual bool VisitTypeAliasTemplateDecl(TypeAliasTemplate typeAliasTemplate) |
|
{ |
|
throw new NotImplementedException(); |
|
} |
|
|
|
#endregion |
|
} |
|
}
|
|
|