diff --git a/src/CppParser/AST.cpp b/src/CppParser/AST.cpp index bb98052516..8e3bb68fc4 100644 --- a/src/CppParser/AST.cpp +++ b/src/CppParser/AST.cpp @@ -248,6 +248,7 @@ Declaration::Declaration(DeclarationKind kind) , isIncomplete(false) , isDependent(false) , isImplicit(false) + , isInvalid(false) , completeDeclaration(0) , definitionOrder(0) , originalPtr(0) @@ -268,6 +269,7 @@ Declaration::Declaration(const Declaration& rhs) , isIncomplete(rhs.isIncomplete) , isDependent(rhs.isDependent) , isImplicit(rhs.isImplicit) + , isInvalid(rhs.isInvalid) , completeDeclaration(rhs.completeDeclaration) , definitionOrder(rhs.definitionOrder) , PreprocessedEntities(rhs.PreprocessedEntities) diff --git a/src/CppParser/AST.h b/src/CppParser/AST.h index 3aa3f48e18..64f866ec33 100644 --- a/src/CppParser/AST.h +++ b/src/CppParser/AST.h @@ -483,6 +483,7 @@ class CS_API Declaration bool isIncomplete; bool isDependent; bool isImplicit; + bool isInvalid; Declaration* completeDeclaration; unsigned definitionOrder; VECTOR(PreprocessedEntity*, PreprocessedEntities) diff --git a/src/CppParser/Bindings/CLI/AST.cpp b/src/CppParser/Bindings/CLI/AST.cpp index 9f00574318..a28bf81def 100644 --- a/src/CppParser/Bindings/CLI/AST.cpp +++ b/src/CppParser/Bindings/CLI/AST.cpp @@ -2240,6 +2240,16 @@ void CppSharp::Parser::AST::Declaration::IsImplicit::set(bool value) ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isImplicit = value; } +bool CppSharp::Parser::AST::Declaration::IsInvalid::get() +{ + return ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isInvalid; +} + +void CppSharp::Parser::AST::Declaration::IsInvalid::set(bool value) +{ + ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isInvalid = value; +} + CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::Declaration::CompleteDeclaration::get() { return (((::CppSharp::CppParser::AST::Declaration*)NativePtr)->completeDeclaration == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)((::CppSharp::CppParser::AST::Declaration*)NativePtr)->completeDeclaration); diff --git a/src/CppParser/Bindings/CLI/AST.h b/src/CppParser/Bindings/CLI/AST.h index 42c1d44798..56b5a7e3ce 100644 --- a/src/CppParser/Bindings/CLI/AST.h +++ b/src/CppParser/Bindings/CLI/AST.h @@ -1514,6 +1514,12 @@ namespace CppSharp void set(bool); } + property bool IsInvalid + { + bool get(); + void set(bool); + } + property CppSharp::Parser::AST::Declaration^ CompleteDeclaration { CppSharp::Parser::AST::Declaration^ get(); diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs index e1ab4e1a1f..8016937337 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -4259,6 +4259,9 @@ public partial struct __Internal [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -4651,6 +4654,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4776,6 +4792,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -5450,6 +5469,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -5617,6 +5639,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -5766,6 +5791,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -5936,6 +5964,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -6862,6 +6893,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -7093,6 +7127,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -7641,6 +7678,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -8093,6 +8133,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -8249,6 +8292,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -8598,6 +8644,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -8938,6 +8987,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -9153,6 +9205,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -9299,6 +9354,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -9883,6 +9941,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -10125,6 +10186,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -10277,6 +10341,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -10476,6 +10543,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -10676,6 +10746,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -10847,6 +10920,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -11071,6 +11147,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -11321,6 +11400,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -11634,6 +11716,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -11867,6 +11952,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -12304,6 +12392,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -12554,6 +12645,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -12795,6 +12889,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -12956,6 +13053,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; @@ -13620,6 +13720,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(68)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs index aa429d2921..ea27e71f11 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs @@ -4259,6 +4259,9 @@ public partial struct __Internal [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -4651,6 +4654,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4776,6 +4792,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -5450,6 +5469,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -5617,6 +5639,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -5766,6 +5791,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -5936,6 +5964,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -6862,6 +6893,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -7093,6 +7127,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -7641,6 +7678,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -8093,6 +8133,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -8249,6 +8292,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -8598,6 +8644,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -8938,6 +8987,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -9153,6 +9205,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -9299,6 +9354,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -9883,6 +9941,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -10125,6 +10186,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -10277,6 +10341,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -10476,6 +10543,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -10676,6 +10746,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -10847,6 +10920,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -11071,6 +11147,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -11321,6 +11400,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -11634,6 +11716,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -11867,6 +11952,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -12304,6 +12392,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -12554,6 +12645,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -12795,6 +12889,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -12956,6 +13053,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; @@ -13620,6 +13720,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(102)] internal byte isImplicit; + [FieldOffset(103)] + internal byte isInvalid; + [FieldOffset(104)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs index 6f14483106..e1ef46d340 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -4258,6 +4258,9 @@ public partial struct __Internal [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -4650,6 +4653,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4775,6 +4791,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -5449,6 +5468,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -5616,6 +5638,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -5765,6 +5790,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -5935,6 +5963,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -6861,6 +6892,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -7092,6 +7126,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -7640,6 +7677,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -8092,6 +8132,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -8248,6 +8291,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -8597,6 +8643,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -8937,6 +8986,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -9152,6 +9204,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -9298,6 +9353,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -9882,6 +9940,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -10124,6 +10185,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -10276,6 +10340,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -10475,6 +10542,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -10675,6 +10745,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -10846,6 +10919,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -11070,6 +11146,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -11320,6 +11399,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -11633,6 +11715,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -11866,6 +11951,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -12303,6 +12391,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -12553,6 +12644,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -12794,6 +12888,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -12955,6 +13052,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; @@ -13619,6 +13719,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(114)] internal byte isImplicit; + [FieldOffset(115)] + internal byte isInvalid; + [FieldOffset(120)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs index 7c91b3ec7c..40e64fed0f 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs @@ -4258,6 +4258,9 @@ public partial struct __Internal [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -4650,6 +4653,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4775,6 +4791,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5449,6 +5468,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5616,6 +5638,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5765,6 +5790,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5935,6 +5963,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -6861,6 +6892,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -7092,6 +7126,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -7640,6 +7677,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8092,6 +8132,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8248,6 +8291,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8597,6 +8643,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8937,6 +8986,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9152,6 +9204,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9298,6 +9353,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9882,6 +9940,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10124,6 +10185,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10276,6 +10340,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10475,6 +10542,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10675,6 +10745,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10846,6 +10919,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11070,6 +11146,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11320,6 +11399,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11633,6 +11715,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11866,6 +11951,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12303,6 +12391,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12553,6 +12644,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12794,6 +12888,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12955,6 +13052,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -13619,6 +13719,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs index 1e93cc2f20..437778c61a 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs @@ -4258,6 +4258,9 @@ public partial struct __Internal [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -4650,6 +4653,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4775,6 +4791,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -5449,6 +5468,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -5616,6 +5638,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -5765,6 +5790,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -5935,6 +5963,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -6861,6 +6892,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -7092,6 +7126,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -7640,6 +7677,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -8092,6 +8132,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -8248,6 +8291,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -8597,6 +8643,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -8937,6 +8986,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -9152,6 +9204,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -9298,6 +9353,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -9882,6 +9940,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -10124,6 +10185,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -10276,6 +10340,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -10475,6 +10542,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -10675,6 +10745,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -10846,6 +10919,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -11070,6 +11146,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -11320,6 +11399,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -11633,6 +11715,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -11866,6 +11951,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -12303,6 +12391,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -12553,6 +12644,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -12794,6 +12888,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -12955,6 +13052,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; @@ -13619,6 +13719,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(66)] internal byte isImplicit; + [FieldOffset(67)] + internal byte isInvalid; + [FieldOffset(72)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs index 3944ffb887..494123610f 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs @@ -4259,6 +4259,9 @@ public partial struct __Internal [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -4651,6 +4654,19 @@ public bool IsImplicit } } + public bool IsInvalid + { + get + { + return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0; + } + + set + { + ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0); + } + } + public global::CppSharp.Parser.AST.Declaration CompleteDeclaration { get @@ -4776,6 +4792,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5450,6 +5469,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5617,6 +5639,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5766,6 +5791,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -5936,6 +5964,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -6862,6 +6893,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -7093,6 +7127,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -7641,6 +7678,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8093,6 +8133,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8249,6 +8292,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8598,6 +8644,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -8938,6 +8987,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9153,6 +9205,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9299,6 +9354,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -9883,6 +9941,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10125,6 +10186,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10277,6 +10341,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10476,6 +10543,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10676,6 +10746,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -10847,6 +10920,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11071,6 +11147,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11321,6 +11400,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11634,6 +11716,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -11867,6 +11952,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12304,6 +12392,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template, [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12554,6 +12645,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12795,6 +12889,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp. [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -12956,6 +13053,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; @@ -13620,6 +13720,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp [FieldOffset(138)] internal byte isImplicit; + [FieldOffset(139)] + internal byte isInvalid; + [FieldOffset(144)] internal global::System.IntPtr completeDeclaration; diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index d38d78c731..e5f355cf61 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -259,7 +259,7 @@ void Parser::Setup() CompilerInvocation::CreateFromArgs(*Inv, args.data(), args.data() + args.size(), c->getDiagnostics()); c->setInvocation(std::shared_ptr(Inv)); - + c->getLangOpts() = *Inv->LangOpts; auto& TO = Inv->TargetOpts; targetABI = ConvertToClangTargetCXXABI(opts->abi); @@ -1136,7 +1136,7 @@ struct DiagnosticConsumer : public clang::DiagnosticConsumer NumErrors++; if (Decl) { - Decl->setInvalidDecl(); + Decl->isInvalid = true; Decl = 0; } } @@ -1149,7 +1149,7 @@ struct DiagnosticConsumer : public clang::DiagnosticConsumer } std::vector Diagnostics; - clang::Decl* Decl; + Declaration* Decl; }; ClassTemplateSpecialization* @@ -2919,7 +2919,6 @@ void Parser::CompleteIfSpecializationType(const clang::QualType& QualType) auto Diagnostics = c->getSema().getDiagnostics().getClient(); auto SemaDiagnostics = static_cast<::DiagnosticConsumer*>(Diagnostics); - SemaDiagnostics->Decl = CTS; c->getSema().InstantiateClassTemplateSpecialization(CTS->getLocStart(), CTS, TSK_ImplicitInstantiation, false); } @@ -2983,6 +2982,27 @@ void Parser::SetBody(const clang::FunctionDecl* FD, Function* F) } } +void Parser::MarkValidity(Function* F) +{ + using namespace clang; + + auto FD = static_cast(F->originalPtr); + + if (!FD->getTemplateInstantiationPattern() || + FD->getTemplateInstantiationPattern()->isLateTemplateParsed() || + !FD->isExternallyVisible() || + c->getSourceManager().isInSystemHeader(FD->getLocStart())) + return; + + auto Diagnostics = c->getSema().getDiagnostics().getClient(); + auto SemaDiagnostics = static_cast<::DiagnosticConsumer*>(Diagnostics); + SemaDiagnostics->Decl = F; + c->getSema().InstantiateFunctionDefinition(FD->getLocStart(), FD, + /*Recursive*/true); + if (!F->isInvalid) + F->isInvalid = FD->isInvalidDecl(); +} + void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F, bool IsDependent) { @@ -3101,7 +3121,7 @@ void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F, if (auto FTSI = FD->getTemplateSpecializationInfo()) F->specializationInfo = WalkFunctionTemplateSpec(FTSI, F); - if (F->isDependent) + if (FD->isDependentContext()) return; const CXXMethodDecl* MD; @@ -3129,6 +3149,8 @@ void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F, continue; F->Parameters[Index++]->isIndirect = I->info.isIndirect(); } + + MarkValidity(F); } Function* Parser::WalkFunction(const clang::FunctionDecl* FD, bool IsDependent, diff --git a/src/CppParser/Parser.h b/src/CppParser/Parser.h index cfab66f85e..ab1676c848 100644 --- a/src/CppParser/Parser.h +++ b/src/CppParser/Parser.h @@ -120,6 +120,7 @@ class Parser Parameter* WalkParameter(const clang::ParmVarDecl* PVD, const clang::SourceLocation& ParamStartLoc); void SetBody(const clang::FunctionDecl* FD, Function* F); + void MarkValidity(Function* F); void WalkFunction(const clang::FunctionDecl* FD, Function* F, bool IsDependent = false); void HandlePreprocessedEntities(Declaration* Decl); diff --git a/src/Generator/Generators/CSharp/CSharpSources.cs b/src/Generator/Generators/CSharp/CSharpSources.cs index 70ff403394..7dde37aa40 100644 --- a/src/Generator/Generators/CSharp/CSharpSources.cs +++ b/src/Generator/Generators/CSharp/CSharpSources.cs @@ -2313,15 +2313,22 @@ private void GenerateMethodBody(Class @class, Method method, { var specializedMethod = @class.Methods.FirstOrDefault( m => m.InstantiatedFrom == method); - if (specializedMethod != null) - method = specializedMethod; - else + if (specializedMethod == null) { WriteLine($@"throw new MissingMethodException(""Method { method.Name} missing from explicit specialization { @class.Visit(TypePrinter)}."");"); return; } + if (specializedMethod.Ignore) + { + WriteLine($@"throw new MissingMethodException(""Method { + method.Name} ignored in specialization { + @class.Visit(TypePrinter)}."");"); + return; + } + + method = specializedMethod; } if (@class.IsRefType) { diff --git a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs index 6dcec35e38..e23ebbed91 100644 --- a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs +++ b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs @@ -77,19 +77,26 @@ public override bool VisitClassDecl(Class @class) } break; case "allocator": - foreach (var method in @class.Methods.Where(m => !m.IsConstructor || m.Parameters.Any())) + foreach (var method in @class.Methods.Where(Unused)) method.ExplicitlyIgnore(); foreach (var allocator in GetCharSpecializations(@class)) { allocator.GenerationKind = GenerationKind.Generate; foreach (var method in allocator.Methods) - method.ExplicitlyIgnore(); - var ctor = allocator.Methods.Single(m => m.IsConstructor && !m.Parameters.Any()); - ctor.GenerationKind = GenerationKind.Generate; - ctor.InstantiatedFrom.GenerationKind = GenerationKind.Generate; - ctor.InstantiatedFrom.Namespace.GenerationKind = GenerationKind.Generate; - foreach (var parameter in ctor.Parameters) - parameter.DefaultArgument = null; + { + if (Unused(method)) + method.ExplicitlyIgnore(); + else + { + method.GenerationKind = GenerationKind.Generate; + if (method.InstantiatedFrom != null) + method.InstantiatedFrom.GenerationKind = + method.InstantiatedFrom.Namespace.GenerationKind = + GenerationKind.Generate; + foreach (var parameter in method.Parameters) + parameter.DefaultArgument = null; + } + } } break; case "char_traits": @@ -107,6 +114,11 @@ public override bool VisitClassDecl(Class @class) return true; } + private static bool Unused(Method m) + { + return !m.IsDestructor && (!m.IsConstructor || m.Parameters.Count > 0); + } + private static IEnumerable GetCharSpecializations(Class @class) { return @class.Specializations.Where(s => diff --git a/src/Parser/ASTConverter.cs b/src/Parser/ASTConverter.cs index e04ebfb795..cfc686c316 100644 --- a/src/Parser/ASTConverter.cs +++ b/src/Parser/ASTConverter.cs @@ -944,6 +944,9 @@ void VisitDeclaration(Declaration decl, AST.Declaration _decl) _decl.DebugText = decl.DebugText; _decl.IsIncomplete = decl.IsIncomplete; _decl.IsDependent = decl.IsDependent; + _decl.IsImplicit = decl.IsImplicit; + if (decl.IsInvalid) + _decl.GenerationKind = AST.GenerationKind.None; _decl.DefinitionOrder = decl.DefinitionOrder; _decl.MaxFieldAlignment = decl.MaxFieldAlignment;