Browse Source

Cleanup

pull/1918/head
duckdoom5 1 year ago
parent
commit
da6a9d4946
  1. 514
      src/CppParser/Decl.h

514
src/CppParser/Decl.h

@ -10,14 +10,13 @@
#include "Helpers.h" #include "Helpers.h"
#include "Sources.h" #include "Sources.h"
#include "Types.h" #include "Types.h"
#include <algorithm> #include <algorithm>
namespace CppSharp { namespace CppSharp::CppParser::AST {
namespace CppParser {
namespace AST {
enum class DeclarationKind enum class DeclarationKind
{ {
DeclarationContext, DeclarationContext,
Typedef, Typedef,
TypeAlias, TypeAlias,
@ -49,26 +48,26 @@ namespace AST {
VarTemplateSpecialization, VarTemplateSpecialization,
VarTemplatePartialSpecialization, VarTemplatePartialSpecialization,
UnresolvedUsingTypename, UnresolvedUsingTypename,
}; };
#define DECLARE_DECL_KIND(klass, kind) \ #define DECLARE_DECL_KIND(klass, kind) \
klass(); klass();
enum class AccessSpecifier enum class AccessSpecifier
{ {
Private, Private,
Protected, Protected,
Public Public
}; };
class DeclarationContext; class DeclarationContext;
class RawComment; class RawComment;
class PreprocessedEntity; class PreprocessedEntity;
class ExpressionObsolete; class ExpressionObsolete;
class CS_API Declaration class CS_API Declaration
{ {
public: public:
Declaration(DeclarationKind kind); Declaration(DeclarationKind kind);
Declaration(const Declaration&); Declaration(const Declaration&);
~Declaration(); ~Declaration();
@ -95,24 +94,24 @@ namespace AST {
VECTOR(Declaration*, Redeclarations) VECTOR(Declaration*, Redeclarations)
void* originalPtr; void* originalPtr;
RawComment* comment; RawComment* comment;
}; };
class Class; class Class;
class Enumeration; class Enumeration;
class Function; class Function;
class TypedefDecl; class TypedefDecl;
class TypeAlias; class TypeAlias;
class Namespace; class Namespace;
class Template; class Template;
class TypeAliasTemplate; class TypeAliasTemplate;
class ClassTemplate; class ClassTemplate;
class FunctionTemplate; class FunctionTemplate;
class Variable; class Variable;
class Friend; class Friend;
class CS_API DeclarationContext : public Declaration class CS_API DeclarationContext : public Declaration
{ {
public: public:
DeclarationContext(DeclarationKind kind); DeclarationContext(DeclarationKind kind);
CS_IGNORE Declaration* FindAnonymous(const std::string& USR); CS_IGNORE Declaration* FindAnonymous(const std::string& USR);
@ -155,41 +154,41 @@ namespace AST {
std::map<std::string, Declaration*> anonymous; std::map<std::string, Declaration*> anonymous;
bool isAnonymous; bool isAnonymous;
}; };
class CS_API TypedefNameDecl : public Declaration class CS_API TypedefNameDecl : public Declaration
{ {
public: public:
TypedefNameDecl(DeclarationKind kind); TypedefNameDecl(DeclarationKind kind);
~TypedefNameDecl(); ~TypedefNameDecl();
QualifiedType qualifiedType; QualifiedType qualifiedType;
}; };
class CS_API TypedefDecl : public TypedefNameDecl class CS_API TypedefDecl : public TypedefNameDecl
{ {
public: public:
DECLARE_DECL_KIND(TypedefDecl, Typedef) DECLARE_DECL_KIND(TypedefDecl, Typedef)
~TypedefDecl(); ~TypedefDecl();
}; };
class CS_API TypeAlias : public TypedefNameDecl class CS_API TypeAlias : public TypedefNameDecl
{ {
public: public:
TypeAlias(); TypeAlias();
~TypeAlias(); ~TypeAlias();
TypeAliasTemplate* describedAliasTemplate; TypeAliasTemplate* describedAliasTemplate;
}; };
class CS_API Friend : public Declaration class CS_API Friend : public Declaration
{ {
public: public:
DECLARE_DECL_KIND(Friend, Friend) DECLARE_DECL_KIND(Friend, Friend)
~Friend(); ~Friend();
Declaration* declaration; Declaration* declaration;
}; };
enum class StatementClassObsolete enum class StatementClassObsolete
{ {
Any, Any,
BinaryOperator, BinaryOperator,
CallExprClass, CallExprClass,
@ -198,54 +197,54 @@ namespace AST {
CXXOperatorCallExpr, CXXOperatorCallExpr,
ImplicitCastExpr, ImplicitCastExpr,
ExplicitCastExpr, ExplicitCastExpr,
}; };
class CS_API StatementObsolete class CS_API StatementObsolete
{ {
public: public:
StatementObsolete(const std::string& str, StatementClassObsolete Class = StatementClassObsolete::Any, Declaration* decl = 0); StatementObsolete(const std::string& str, StatementClassObsolete Class = StatementClassObsolete::Any, Declaration* decl = 0);
StatementClassObsolete _class; StatementClassObsolete _class;
Declaration* decl; Declaration* decl;
std::string string; std::string string;
}; };
class CS_API ExpressionObsolete : public StatementObsolete class CS_API ExpressionObsolete : public StatementObsolete
{ {
public: public:
ExpressionObsolete(const std::string& str, StatementClassObsolete Class = StatementClassObsolete::Any, Declaration* decl = 0); ExpressionObsolete(const std::string& str, StatementClassObsolete Class = StatementClassObsolete::Any, Declaration* decl = 0);
}; };
class Expr; class Expr;
class CS_API BinaryOperatorObsolete : public ExpressionObsolete class CS_API BinaryOperatorObsolete : public ExpressionObsolete
{ {
public: public:
BinaryOperatorObsolete(const std::string& str, ExpressionObsolete* lhs, ExpressionObsolete* rhs, const std::string& opcodeStr); BinaryOperatorObsolete(const std::string& str, ExpressionObsolete* lhs, ExpressionObsolete* rhs, const std::string& opcodeStr);
~BinaryOperatorObsolete(); ~BinaryOperatorObsolete();
ExpressionObsolete* LHS; ExpressionObsolete* LHS;
ExpressionObsolete* RHS; ExpressionObsolete* RHS;
std::string opcodeStr; std::string opcodeStr;
}; };
class CS_API CallExprObsolete : public ExpressionObsolete class CS_API CallExprObsolete : public ExpressionObsolete
{ {
public: public:
CallExprObsolete(const std::string& str, Declaration* decl); CallExprObsolete(const std::string& str, Declaration* decl);
~CallExprObsolete(); ~CallExprObsolete();
VECTOR(ExpressionObsolete*, Arguments) VECTOR(ExpressionObsolete*, Arguments)
}; };
class CS_API CXXConstructExprObsolete : public ExpressionObsolete class CS_API CXXConstructExprObsolete : public ExpressionObsolete
{ {
public: public:
CXXConstructExprObsolete(const std::string& str, Declaration* decl = 0); CXXConstructExprObsolete(const std::string& str, Declaration* decl = 0);
~CXXConstructExprObsolete(); ~CXXConstructExprObsolete();
VECTOR(ExpressionObsolete*, Arguments) VECTOR(ExpressionObsolete*, Arguments)
}; };
class CS_API Parameter : public Declaration class CS_API Parameter : public Declaration
{ {
public: public:
Parameter(); Parameter();
~Parameter(); ~Parameter();
@ -255,20 +254,20 @@ namespace AST {
unsigned int index; unsigned int index;
ExpressionObsolete* defaultArgument; ExpressionObsolete* defaultArgument;
Expr* defaultValue; Expr* defaultValue;
}; };
enum class CXXMethodKind enum class CXXMethodKind
{ {
Normal, Normal,
Constructor, Constructor,
Destructor, Destructor,
Conversion, Conversion,
Operator, Operator,
UsingDirective UsingDirective
}; };
enum class CXXOperatorKind enum class CXXOperatorKind
{ {
None, None,
New, New,
Delete, Delete,
@ -315,22 +314,22 @@ namespace AST {
Subscript, Subscript,
Conditional, Conditional,
Coawait Coawait
}; };
class FunctionTemplateSpecialization; class FunctionTemplateSpecialization;
enum class FriendKind enum class FriendKind
{ {
None, None,
Declared, Declared,
Undeclared Undeclared
}; };
class Stmt; class Stmt;
class CS_API Function : public DeclarationContext class CS_API Function : public DeclarationContext
{ {
public: public:
Function(); Function();
~Function(); ~Function();
@ -355,20 +354,20 @@ namespace AST {
FunctionTemplateSpecialization* specializationInfo; FunctionTemplateSpecialization* specializationInfo;
Function* instantiatedFrom; Function* instantiatedFrom;
QualifiedType qualifiedType; QualifiedType qualifiedType;
}; };
class AccessSpecifierDecl; class AccessSpecifierDecl;
enum class RefQualifierKind enum class RefQualifierKind
{ {
None, None,
LValue, LValue,
RValue RValue
}; };
class CS_API Method : public Function class CS_API Method : public Function
{ {
public: public:
Method(); Method();
~Method(); ~Method();
@ -387,11 +386,11 @@ namespace AST {
QualifiedType conversionType; QualifiedType conversionType;
RefQualifierKind refQualifier; RefQualifierKind refQualifier;
VECTOR(Method*, OverriddenMethods) VECTOR(Method*, OverriddenMethods)
}; };
class CS_API Enumeration : public DeclarationContext class CS_API Enumeration : public DeclarationContext
{ {
public: public:
DECLARE_DECL_KIND(Enumeration, Enumeration) DECLARE_DECL_KIND(Enumeration, Enumeration)
~Enumeration(); ~Enumeration();
@ -418,52 +417,52 @@ namespace AST {
VECTOR(Item*, Items) VECTOR(Item*, Items)
Item* FindItemByName(const std::string& Name); Item* FindItemByName(const std::string& Name);
}; };
class CS_API Variable : public Declaration class CS_API Variable : public Declaration
{ {
public: public:
DECLARE_DECL_KIND(Variable, Variable) DECLARE_DECL_KIND(Variable, Variable)
~Variable(); ~Variable();
bool isConstExpr; bool isConstExpr;
std::string mangled; std::string mangled;
QualifiedType qualifiedType; QualifiedType qualifiedType;
ExpressionObsolete* initializer; ExpressionObsolete* initializer;
}; };
class PreprocessedEntity; class PreprocessedEntity;
struct CS_API BaseClassSpecifier struct CS_API BaseClassSpecifier
{ {
BaseClassSpecifier(); BaseClassSpecifier();
AccessSpecifier access; AccessSpecifier access;
bool isVirtual; bool isVirtual;
Type* type; Type* type;
int offset; int offset;
}; };
class Class; class Class;
class CS_API Field : public Declaration class CS_API Field : public Declaration
{ {
public: public:
DECLARE_DECL_KIND(Field, Field) DECLARE_DECL_KIND(Field, Field)
~Field(); ~Field();
QualifiedType qualifiedType; QualifiedType qualifiedType;
Class* _class; Class* _class;
bool isBitField; bool isBitField;
unsigned bitWidth; unsigned bitWidth;
}; };
class CS_API AccessSpecifierDecl : public Declaration class CS_API AccessSpecifierDecl : public Declaration
{ {
public: public:
DECLARE_DECL_KIND(AccessSpecifierDecl, AccessSpecifier) DECLARE_DECL_KIND(AccessSpecifierDecl, AccessSpecifier)
~AccessSpecifierDecl(); ~AccessSpecifierDecl();
}; };
enum class CppAbi enum class CppAbi
{ {
Itanium, Itanium,
Microsoft, Microsoft,
ARM, ARM,
@ -471,10 +470,10 @@ namespace AST {
iOS, iOS,
AppleARM64, AppleARM64,
WebAssembly WebAssembly
}; };
enum class VTableComponentKind enum class VTableComponentKind
{ {
VCallOffset, VCallOffset,
VBaseOffset, VBaseOffset,
OffsetToTop, OffsetToTop,
@ -483,37 +482,37 @@ namespace AST {
CompleteDtorPointer, CompleteDtorPointer,
DeletingDtorPointer, DeletingDtorPointer,
UnusedFunctionPointer, UnusedFunctionPointer,
}; };
struct CS_API VTableComponent struct CS_API VTableComponent
{ {
VTableComponent(); VTableComponent();
VTableComponentKind kind; VTableComponentKind kind;
unsigned offset; unsigned offset;
Declaration* declaration; Declaration* declaration;
}; };
struct CS_API VTableLayout struct CS_API VTableLayout
{ {
VTableLayout(); VTableLayout();
VTableLayout(const VTableLayout&); VTableLayout(const VTableLayout&);
~VTableLayout(); ~VTableLayout();
VECTOR(VTableComponent, Components) VECTOR(VTableComponent, Components)
}; };
struct CS_API VFTableInfo struct CS_API VFTableInfo
{ {
VFTableInfo(); VFTableInfo();
VFTableInfo(const VFTableInfo&); VFTableInfo(const VFTableInfo&);
uint64_t VBTableIndex; uint64_t VBTableIndex;
uint32_t VFPtrOffset; uint32_t VFPtrOffset;
uint32_t VFPtrFullOffset; uint32_t VFPtrFullOffset;
VTableLayout layout; VTableLayout layout;
}; };
class CS_API LayoutField class CS_API LayoutField
{ {
public: public:
LayoutField(); LayoutField();
LayoutField(const LayoutField& other); LayoutField(const LayoutField& other);
~LayoutField(); ~LayoutField();
@ -521,22 +520,22 @@ namespace AST {
std::string name; std::string name;
QualifiedType qualifiedType; QualifiedType qualifiedType;
void* fieldPtr; void* fieldPtr;
}; };
class Class; class Class;
class CS_API LayoutBase class CS_API LayoutBase
{ {
public: public:
LayoutBase(); LayoutBase();
LayoutBase(const LayoutBase& other); LayoutBase(const LayoutBase& other);
~LayoutBase(); ~LayoutBase();
unsigned offset; unsigned offset;
Class* _class; Class* _class;
}; };
enum class RecordArgABI enum class RecordArgABI
{ {
/// Pass it using the normal C aggregate rules for the ABI, /// Pass it using the normal C aggregate rules for the ABI,
/// potentially introducing extra copies and passing some /// potentially introducing extra copies and passing some
/// or all of it in registers. /// or all of it in registers.
@ -548,10 +547,10 @@ namespace AST {
DirectInMemory, DirectInMemory,
/// Pass it as a pointer to temporary memory. /// Pass it as a pointer to temporary memory.
Indirect Indirect
}; };
struct CS_API ClassLayout struct CS_API ClassLayout
{ {
ClassLayout(); ClassLayout();
CppAbi ABI; CppAbi ABI;
RecordArgABI argABI; RecordArgABI argABI;
@ -564,11 +563,11 @@ namespace AST {
int dataSize; int dataSize;
VECTOR(LayoutField, Fields) VECTOR(LayoutField, Fields)
VECTOR(LayoutBase, Bases) VECTOR(LayoutBase, Bases)
}; };
class CS_API Class : public DeclarationContext class CS_API Class : public DeclarationContext
{ {
public: public:
Class(); Class();
~Class(); ~Class();
@ -590,20 +589,20 @@ namespace AST {
TagKind tagKind; TagKind tagKind;
ClassLayout* layout; ClassLayout* layout;
}; };
class CS_API Template : public Declaration class CS_API Template : public Declaration
{ {
public: public:
Template(DeclarationKind kind); Template(DeclarationKind kind);
DECLARE_DECL_KIND(Template, Template) DECLARE_DECL_KIND(Template, Template)
Declaration* TemplatedDecl; Declaration* TemplatedDecl;
VECTOR(Declaration*, Parameters) VECTOR(Declaration*, Parameters)
}; };
template <typename T> template <typename T>
T* DeclarationContext::FindTemplate(const std::string& USR) T* DeclarationContext::FindTemplate(const std::string& USR)
{ {
auto foundTemplate = std::find_if(Templates.begin(), Templates.end(), auto foundTemplate = std::find_if(Templates.begin(), Templates.end(),
[&](Template* t) [&](Template* t)
{ {
@ -614,51 +613,51 @@ namespace AST {
return static_cast<T*>(*foundTemplate); return static_cast<T*>(*foundTemplate);
return nullptr; return nullptr;
} }
class CS_API TypeAliasTemplate : public Template class CS_API TypeAliasTemplate : public Template
{ {
public: public:
TypeAliasTemplate(); TypeAliasTemplate();
~TypeAliasTemplate(); ~TypeAliasTemplate();
Declaration* CanonicalDecl = nullptr; Declaration* CanonicalDecl = nullptr;
}; };
class CS_API TemplateParameter : public Declaration class CS_API TemplateParameter : public Declaration
{ {
public: public:
TemplateParameter(DeclarationKind kind); TemplateParameter(DeclarationKind kind);
~TemplateParameter(); ~TemplateParameter();
unsigned int depth; unsigned int depth;
unsigned int index; unsigned int index;
bool isParameterPack; bool isParameterPack;
}; };
class CS_API TemplateTemplateParameter : public Template class CS_API TemplateTemplateParameter : public Template
{ {
public: public:
TemplateTemplateParameter(); TemplateTemplateParameter();
~TemplateTemplateParameter(); ~TemplateTemplateParameter();
bool isParameterPack; bool isParameterPack;
bool isPackExpansion; bool isPackExpansion;
bool isExpandedParameterPack; bool isExpandedParameterPack;
}; };
class CS_API TypeTemplateParameter : public TemplateParameter class CS_API TypeTemplateParameter : public TemplateParameter
{ {
public: public:
TypeTemplateParameter(); TypeTemplateParameter();
TypeTemplateParameter(const TypeTemplateParameter&); TypeTemplateParameter(const TypeTemplateParameter&);
~TypeTemplateParameter(); ~TypeTemplateParameter();
QualifiedType defaultArgument; QualifiedType defaultArgument;
}; };
class CS_API NonTypeTemplateParameter : public TemplateParameter class CS_API NonTypeTemplateParameter : public TemplateParameter
{ {
public: public:
NonTypeTemplateParameter(); NonTypeTemplateParameter();
NonTypeTemplateParameter(const NonTypeTemplateParameter&); NonTypeTemplateParameter(const NonTypeTemplateParameter&);
~NonTypeTemplateParameter(); ~NonTypeTemplateParameter();
@ -668,172 +667,169 @@ namespace AST {
bool isPackExpansion; bool isPackExpansion;
bool isExpandedParameterPack; bool isExpandedParameterPack;
QualifiedType type; QualifiedType type;
}; };
class ClassTemplateSpecialization; class ClassTemplateSpecialization;
class ClassTemplatePartialSpecialization; class ClassTemplatePartialSpecialization;
class CS_API ClassTemplate : public Template class CS_API ClassTemplate : public Template
{ {
public: public:
ClassTemplate(); ClassTemplate();
~ClassTemplate(); ~ClassTemplate();
VECTOR(ClassTemplateSpecialization*, Specializations) VECTOR(ClassTemplateSpecialization*, Specializations)
ClassTemplateSpecialization* FindSpecialization(const std::string& usr); ClassTemplateSpecialization* FindSpecialization(const std::string& usr);
ClassTemplatePartialSpecialization* FindPartialSpecialization(const std::string& usr); ClassTemplatePartialSpecialization* FindPartialSpecialization(const std::string& usr);
}; };
enum class TemplateSpecializationKind enum class TemplateSpecializationKind
{ {
Undeclared, Undeclared,
ImplicitInstantiation, ImplicitInstantiation,
ExplicitSpecialization, ExplicitSpecialization,
ExplicitInstantiationDeclaration, ExplicitInstantiationDeclaration,
ExplicitInstantiationDefinition ExplicitInstantiationDefinition
}; };
class CS_API ClassTemplateSpecialization : public Class class CS_API ClassTemplateSpecialization : public Class
{ {
public: public:
ClassTemplateSpecialization(); ClassTemplateSpecialization();
~ClassTemplateSpecialization(); ~ClassTemplateSpecialization();
ClassTemplate* templatedDecl; ClassTemplate* templatedDecl;
VECTOR(TemplateArgument, Arguments) VECTOR(TemplateArgument, Arguments)
TemplateSpecializationKind specializationKind; TemplateSpecializationKind specializationKind;
}; };
class CS_API ClassTemplatePartialSpecialization : public ClassTemplateSpecialization class CS_API ClassTemplatePartialSpecialization : public ClassTemplateSpecialization
{ {
public: public:
ClassTemplatePartialSpecialization(); ClassTemplatePartialSpecialization();
~ClassTemplatePartialSpecialization(); ~ClassTemplatePartialSpecialization();
VECTOR(Declaration*, Parameters) VECTOR(Declaration*, Parameters)
}; };
class CS_API FunctionTemplate : public Template class CS_API FunctionTemplate : public Template
{ {
public: public:
FunctionTemplate(); FunctionTemplate();
~FunctionTemplate(); ~FunctionTemplate();
VECTOR(FunctionTemplateSpecialization*, Specializations) VECTOR(FunctionTemplateSpecialization*, Specializations)
FunctionTemplateSpecialization* FindSpecialization(const std::string& usr); FunctionTemplateSpecialization* FindSpecialization(const std::string& usr);
}; };
class CS_API FunctionTemplateSpecialization class CS_API FunctionTemplateSpecialization
{ {
public: public:
FunctionTemplateSpecialization(); FunctionTemplateSpecialization();
~FunctionTemplateSpecialization(); ~FunctionTemplateSpecialization();
FunctionTemplate* _template; FunctionTemplate* _template;
VECTOR(TemplateArgument, Arguments) VECTOR(TemplateArgument, Arguments)
Function* specializedFunction; Function* specializedFunction;
TemplateSpecializationKind specializationKind; TemplateSpecializationKind specializationKind;
}; };
class VarTemplateSpecialization; class VarTemplateSpecialization;
class VarTemplatePartialSpecialization; class VarTemplatePartialSpecialization;
class CS_API VarTemplate : public Template class CS_API VarTemplate : public Template
{ {
public: public:
VarTemplate(); VarTemplate();
~VarTemplate(); ~VarTemplate();
VECTOR(VarTemplateSpecialization*, Specializations) VECTOR(VarTemplateSpecialization*, Specializations)
VarTemplateSpecialization* FindSpecialization(const std::string& usr); VarTemplateSpecialization* FindSpecialization(const std::string& usr);
VarTemplatePartialSpecialization* FindPartialSpecialization(const std::string& usr); VarTemplatePartialSpecialization* FindPartialSpecialization(const std::string& usr);
}; };
class CS_API VarTemplateSpecialization : public Variable class CS_API VarTemplateSpecialization : public Variable
{ {
public: public:
VarTemplateSpecialization(); VarTemplateSpecialization();
~VarTemplateSpecialization(); ~VarTemplateSpecialization();
VarTemplate* templatedDecl; VarTemplate* templatedDecl;
VECTOR(TemplateArgument, Arguments) VECTOR(TemplateArgument, Arguments)
TemplateSpecializationKind specializationKind; TemplateSpecializationKind specializationKind;
}; };
class CS_API VarTemplatePartialSpecialization : public VarTemplateSpecialization class CS_API VarTemplatePartialSpecialization : public VarTemplateSpecialization
{ {
public: public:
VarTemplatePartialSpecialization(); VarTemplatePartialSpecialization();
~VarTemplatePartialSpecialization(); ~VarTemplatePartialSpecialization();
}; };
class CS_API UnresolvedUsingTypename : public Declaration class CS_API UnresolvedUsingTypename : public Declaration
{ {
public: public:
UnresolvedUsingTypename(); UnresolvedUsingTypename();
~UnresolvedUsingTypename(); ~UnresolvedUsingTypename();
}; };
class CS_API Namespace : public DeclarationContext class CS_API Namespace : public DeclarationContext
{ {
public: public:
Namespace(); Namespace();
~Namespace(); ~Namespace();
bool isInline; bool isInline;
}; };
enum class MacroLocation enum class MacroLocation
{ {
Unknown, Unknown,
ClassHead, ClassHead,
ClassBody, ClassBody,
FunctionHead, FunctionHead,
FunctionParameters, FunctionParameters,
FunctionBody, FunctionBody,
}; };
class CS_API PreprocessedEntity class CS_API PreprocessedEntity
{ {
public: public:
PreprocessedEntity(); PreprocessedEntity();
MacroLocation macroLocation; MacroLocation macroLocation;
void* originalPtr; void* originalPtr;
DeclarationKind kind; DeclarationKind kind;
}; };
class CS_API MacroDefinition : public PreprocessedEntity class CS_API MacroDefinition : public PreprocessedEntity
{ {
public: public:
MacroDefinition(); MacroDefinition();
~MacroDefinition(); ~MacroDefinition();
std::string name; std::string name;
std::string expression; std::string expression;
int lineNumberStart; int lineNumberStart;
int lineNumberEnd; int lineNumberEnd;
}; };
class CS_API MacroExpansion : public PreprocessedEntity class CS_API MacroExpansion : public PreprocessedEntity
{ {
public: public:
MacroExpansion(); MacroExpansion();
~MacroExpansion(); ~MacroExpansion();
std::string name; std::string name;
std::string text; std::string text;
MacroDefinition* definition; MacroDefinition* definition;
}; };
class CS_API TranslationUnit : public Namespace class CS_API TranslationUnit : public Namespace
{ {
public: public:
TranslationUnit(); TranslationUnit();
~TranslationUnit();
std::string fileName; std::string fileName;
bool isSystemHeader; bool isSystemHeader;
VECTOR(MacroDefinition*, Macros) VECTOR(MacroDefinition*, Macros)
}; };
class CS_API ASTContext class CS_API ASTContext
{ {
public: public:
ASTContext(); ASTContext();
~ASTContext(); ~ASTContext();
TranslationUnit* FindOrCreateModule(const std::string& File); TranslationUnit* FindOrCreateModule(const std::string& File);
VECTOR(TranslationUnit*, TranslationUnits) VECTOR(TranslationUnit*, TranslationUnits)
}; };
}
}
} // namespace CppSharp::CppParser::AST } // namespace CppSharp::CppParser::AST
Loading…
Cancel
Save