Skip to content

Commit 4dfd9cc

Browse files
committed
Prevented C++ generation for invalid specialised functions.
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent 04a1591 commit 4dfd9cc

File tree

15 files changed

+697
-16
lines changed

15 files changed

+697
-16
lines changed

src/CppParser/AST.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ Declaration::Declaration(DeclarationKind kind)
248248
, isIncomplete(false)
249249
, isDependent(false)
250250
, isImplicit(false)
251+
, isInvalid(false)
251252
, completeDeclaration(0)
252253
, definitionOrder(0)
253254
, originalPtr(0)
@@ -268,6 +269,7 @@ Declaration::Declaration(const Declaration& rhs)
268269
, isIncomplete(rhs.isIncomplete)
269270
, isDependent(rhs.isDependent)
270271
, isImplicit(rhs.isImplicit)
272+
, isInvalid(rhs.isInvalid)
271273
, completeDeclaration(rhs.completeDeclaration)
272274
, definitionOrder(rhs.definitionOrder)
273275
, PreprocessedEntities(rhs.PreprocessedEntities)

src/CppParser/AST.h

+1
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ class CS_API Declaration
483483
bool isIncomplete;
484484
bool isDependent;
485485
bool isImplicit;
486+
bool isInvalid;
486487
Declaration* completeDeclaration;
487488
unsigned definitionOrder;
488489
VECTOR(PreprocessedEntity*, PreprocessedEntities)

src/CppParser/Bindings/CLI/AST.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -2240,6 +2240,16 @@ void CppSharp::Parser::AST::Declaration::IsImplicit::set(bool value)
22402240
((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isImplicit = value;
22412241
}
22422242

2243+
bool CppSharp::Parser::AST::Declaration::IsInvalid::get()
2244+
{
2245+
return ((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isInvalid;
2246+
}
2247+
2248+
void CppSharp::Parser::AST::Declaration::IsInvalid::set(bool value)
2249+
{
2250+
((::CppSharp::CppParser::AST::Declaration*)NativePtr)->isInvalid = value;
2251+
}
2252+
22432253
CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::Declaration::CompleteDeclaration::get()
22442254
{
22452255
return (((::CppSharp::CppParser::AST::Declaration*)NativePtr)->completeDeclaration == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)((::CppSharp::CppParser::AST::Declaration*)NativePtr)->completeDeclaration);

src/CppParser/Bindings/CLI/AST.h

+6
Original file line numberDiff line numberDiff line change
@@ -1514,6 +1514,12 @@ namespace CppSharp
15141514
void set(bool);
15151515
}
15161516

1517+
property bool IsInvalid
1518+
{
1519+
bool get();
1520+
void set(bool);
1521+
}
1522+
15171523
property CppSharp::Parser::AST::Declaration^ CompleteDeclaration
15181524
{
15191525
CppSharp::Parser::AST::Declaration^ get();

src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

+103
Original file line numberDiff line numberDiff line change
@@ -4259,6 +4259,9 @@ public partial struct __Internal
42594259
[FieldOffset(66)]
42604260
internal byte isImplicit;
42614261

4262+
[FieldOffset(67)]
4263+
internal byte isInvalid;
4264+
42624265
[FieldOffset(68)]
42634266
internal global::System.IntPtr completeDeclaration;
42644267

@@ -4651,6 +4654,19 @@ public bool IsImplicit
46514654
}
46524655
}
46534656

4657+
public bool IsInvalid
4658+
{
4659+
get
4660+
{
4661+
return ((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid != 0;
4662+
}
4663+
4664+
set
4665+
{
4666+
((global::CppSharp.Parser.AST.Declaration.__Internal*) __Instance)->isInvalid = (byte) (value ? 1 : 0);
4667+
}
4668+
}
4669+
46544670
public global::CppSharp.Parser.AST.Declaration CompleteDeclaration
46554671
{
46564672
get
@@ -4776,6 +4792,9 @@ public unsafe partial class DeclarationContext : global::CppSharp.Parser.AST.Dec
47764792
[FieldOffset(66)]
47774793
internal byte isImplicit;
47784794

4795+
[FieldOffset(67)]
4796+
internal byte isInvalid;
4797+
47794798
[FieldOffset(68)]
47804799
internal global::System.IntPtr completeDeclaration;
47814800

@@ -5450,6 +5469,9 @@ public unsafe partial class TypedefNameDecl : global::CppSharp.Parser.AST.Declar
54505469
[FieldOffset(66)]
54515470
internal byte isImplicit;
54525471

5472+
[FieldOffset(67)]
5473+
internal byte isInvalid;
5474+
54535475
[FieldOffset(68)]
54545476
internal global::System.IntPtr completeDeclaration;
54555477

@@ -5617,6 +5639,9 @@ public unsafe partial class TypedefDecl : global::CppSharp.Parser.AST.TypedefNam
56175639
[FieldOffset(66)]
56185640
internal byte isImplicit;
56195641

5642+
[FieldOffset(67)]
5643+
internal byte isInvalid;
5644+
56205645
[FieldOffset(68)]
56215646
internal global::System.IntPtr completeDeclaration;
56225647

@@ -5766,6 +5791,9 @@ public unsafe partial class TypeAlias : global::CppSharp.Parser.AST.TypedefNameD
57665791
[FieldOffset(66)]
57675792
internal byte isImplicit;
57685793

5794+
[FieldOffset(67)]
5795+
internal byte isInvalid;
5796+
57695797
[FieldOffset(68)]
57705798
internal global::System.IntPtr completeDeclaration;
57715799

@@ -5936,6 +5964,9 @@ public unsafe partial class Friend : global::CppSharp.Parser.AST.Declaration, ID
59365964
[FieldOffset(66)]
59375965
internal byte isImplicit;
59385966

5967+
[FieldOffset(67)]
5968+
internal byte isInvalid;
5969+
59395970
[FieldOffset(68)]
59405971
internal global::System.IntPtr completeDeclaration;
59415972

@@ -6862,6 +6893,9 @@ public unsafe partial class Parameter : global::CppSharp.Parser.AST.Declaration,
68626893
[FieldOffset(66)]
68636894
internal byte isImplicit;
68646895

6896+
[FieldOffset(67)]
6897+
internal byte isInvalid;
6898+
68656899
[FieldOffset(68)]
68666900
internal global::System.IntPtr completeDeclaration;
68676901

@@ -7093,6 +7127,9 @@ public unsafe partial class Function : global::CppSharp.Parser.AST.DeclarationCo
70937127
[FieldOffset(66)]
70947128
internal byte isImplicit;
70957129

7130+
[FieldOffset(67)]
7131+
internal byte isInvalid;
7132+
70967133
[FieldOffset(68)]
70977134
internal global::System.IntPtr completeDeclaration;
70987135

@@ -7641,6 +7678,9 @@ public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisp
76417678
[FieldOffset(66)]
76427679
internal byte isImplicit;
76437680

7681+
[FieldOffset(67)]
7682+
internal byte isInvalid;
7683+
76447684
[FieldOffset(68)]
76457685
internal global::System.IntPtr completeDeclaration;
76467686

@@ -8093,6 +8133,9 @@ public unsafe partial class Enumeration : global::CppSharp.Parser.AST.Declaratio
80938133
[FieldOffset(66)]
80948134
internal byte isImplicit;
80958135

8136+
[FieldOffset(67)]
8137+
internal byte isInvalid;
8138+
80968139
[FieldOffset(68)]
80978140
internal global::System.IntPtr completeDeclaration;
80988141

@@ -8249,6 +8292,9 @@ public unsafe partial class Item : global::CppSharp.Parser.AST.Declaration, IDis
82498292
[FieldOffset(66)]
82508293
internal byte isImplicit;
82518294

8295+
[FieldOffset(67)]
8296+
internal byte isInvalid;
8297+
82528298
[FieldOffset(68)]
82538299
internal global::System.IntPtr completeDeclaration;
82548300

@@ -8598,6 +8644,9 @@ public unsafe partial class Variable : global::CppSharp.Parser.AST.Declaration,
85988644
[FieldOffset(66)]
85998645
internal byte isImplicit;
86008646

8647+
[FieldOffset(67)]
8648+
internal byte isInvalid;
8649+
86018650
[FieldOffset(68)]
86028651
internal global::System.IntPtr completeDeclaration;
86038652

@@ -8938,6 +8987,9 @@ public unsafe partial class Field : global::CppSharp.Parser.AST.Declaration, IDi
89388987
[FieldOffset(66)]
89398988
internal byte isImplicit;
89408989

8990+
[FieldOffset(67)]
8991+
internal byte isInvalid;
8992+
89418993
[FieldOffset(68)]
89428994
internal global::System.IntPtr completeDeclaration;
89438995

@@ -9153,6 +9205,9 @@ public unsafe partial class AccessSpecifierDecl : global::CppSharp.Parser.AST.De
91539205
[FieldOffset(66)]
91549206
internal byte isImplicit;
91559207

9208+
[FieldOffset(67)]
9209+
internal byte isInvalid;
9210+
91569211
[FieldOffset(68)]
91579212
internal global::System.IntPtr completeDeclaration;
91589213

@@ -9299,6 +9354,9 @@ public unsafe partial class Class : global::CppSharp.Parser.AST.DeclarationConte
92999354
[FieldOffset(66)]
93009355
internal byte isImplicit;
93019356

9357+
[FieldOffset(67)]
9358+
internal byte isInvalid;
9359+
93029360
[FieldOffset(68)]
93039361
internal global::System.IntPtr completeDeclaration;
93049362

@@ -9883,6 +9941,9 @@ public unsafe partial class Template : global::CppSharp.Parser.AST.Declaration,
98839941
[FieldOffset(66)]
98849942
internal byte isImplicit;
98859943

9944+
[FieldOffset(67)]
9945+
internal byte isInvalid;
9946+
98869947
[FieldOffset(68)]
98879948
internal global::System.IntPtr completeDeclaration;
98889949

@@ -10125,6 +10186,9 @@ public unsafe partial class TypeAliasTemplate : global::CppSharp.Parser.AST.Temp
1012510186
[FieldOffset(66)]
1012610187
internal byte isImplicit;
1012710188

10189+
[FieldOffset(67)]
10190+
internal byte isInvalid;
10191+
1012810192
[FieldOffset(68)]
1012910193
internal global::System.IntPtr completeDeclaration;
1013010194

@@ -10277,6 +10341,9 @@ public unsafe partial class TemplateParameter : global::CppSharp.Parser.AST.Decl
1027710341
[FieldOffset(66)]
1027810342
internal byte isImplicit;
1027910343

10344+
[FieldOffset(67)]
10345+
internal byte isInvalid;
10346+
1028010347
[FieldOffset(68)]
1028110348
internal global::System.IntPtr completeDeclaration;
1028210349

@@ -10476,6 +10543,9 @@ public unsafe partial class TemplateTemplateParameter : global::CppSharp.Parser.
1047610543
[FieldOffset(66)]
1047710544
internal byte isImplicit;
1047810545

10546+
[FieldOffset(67)]
10547+
internal byte isInvalid;
10548+
1047910549
[FieldOffset(68)]
1048010550
internal global::System.IntPtr completeDeclaration;
1048110551

@@ -10676,6 +10746,9 @@ public unsafe partial class TypeTemplateParameter : global::CppSharp.Parser.AST.
1067610746
[FieldOffset(66)]
1067710747
internal byte isImplicit;
1067810748

10749+
[FieldOffset(67)]
10750+
internal byte isInvalid;
10751+
1067910752
[FieldOffset(68)]
1068010753
internal global::System.IntPtr completeDeclaration;
1068110754

@@ -10847,6 +10920,9 @@ public unsafe partial class NonTypeTemplateParameter : global::CppSharp.Parser.A
1084710920
[FieldOffset(66)]
1084810921
internal byte isImplicit;
1084910922

10923+
[FieldOffset(67)]
10924+
internal byte isInvalid;
10925+
1085010926
[FieldOffset(68)]
1085110927
internal global::System.IntPtr completeDeclaration;
1085210928

@@ -11071,6 +11147,9 @@ public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template
1107111147
[FieldOffset(66)]
1107211148
internal byte isImplicit;
1107311149

11150+
[FieldOffset(67)]
11151+
internal byte isInvalid;
11152+
1107411153
[FieldOffset(68)]
1107511154
internal global::System.IntPtr completeDeclaration;
1107611155

@@ -11321,6 +11400,9 @@ public unsafe partial class ClassTemplateSpecialization : global::CppSharp.Parse
1132111400
[FieldOffset(66)]
1132211401
internal byte isImplicit;
1132311402

11403+
[FieldOffset(67)]
11404+
internal byte isInvalid;
11405+
1132411406
[FieldOffset(68)]
1132511407
internal global::System.IntPtr completeDeclaration;
1132611408

@@ -11634,6 +11716,9 @@ public unsafe partial class ClassTemplatePartialSpecialization : global::CppShar
1163411716
[FieldOffset(66)]
1163511717
internal byte isImplicit;
1163611718

11719+
[FieldOffset(67)]
11720+
internal byte isInvalid;
11721+
1163711722
[FieldOffset(68)]
1163811723
internal global::System.IntPtr completeDeclaration;
1163911724

@@ -11867,6 +11952,9 @@ public unsafe partial class FunctionTemplate : global::CppSharp.Parser.AST.Templ
1186711952
[FieldOffset(66)]
1186811953
internal byte isImplicit;
1186911954

11955+
[FieldOffset(67)]
11956+
internal byte isInvalid;
11957+
1187011958
[FieldOffset(68)]
1187111959
internal global::System.IntPtr completeDeclaration;
1187211960

@@ -12304,6 +12392,9 @@ public unsafe partial class VarTemplate : global::CppSharp.Parser.AST.Template,
1230412392
[FieldOffset(66)]
1230512393
internal byte isImplicit;
1230612394

12395+
[FieldOffset(67)]
12396+
internal byte isInvalid;
12397+
1230712398
[FieldOffset(68)]
1230812399
internal global::System.IntPtr completeDeclaration;
1230912400

@@ -12554,6 +12645,9 @@ public unsafe partial class VarTemplateSpecialization : global::CppSharp.Parser.
1255412645
[FieldOffset(66)]
1255512646
internal byte isImplicit;
1255612647

12648+
[FieldOffset(67)]
12649+
internal byte isInvalid;
12650+
1255712651
[FieldOffset(68)]
1255812652
internal global::System.IntPtr completeDeclaration;
1255912653

@@ -12795,6 +12889,9 @@ public unsafe partial class VarTemplatePartialSpecialization : global::CppSharp.
1279512889
[FieldOffset(66)]
1279612890
internal byte isImplicit;
1279712891

12892+
[FieldOffset(67)]
12893+
internal byte isInvalid;
12894+
1279812895
[FieldOffset(68)]
1279912896
internal global::System.IntPtr completeDeclaration;
1280012897

@@ -12956,6 +13053,9 @@ public unsafe partial class Namespace : global::CppSharp.Parser.AST.DeclarationC
1295613053
[FieldOffset(66)]
1295713054
internal byte isImplicit;
1295813055

13056+
[FieldOffset(67)]
13057+
internal byte isInvalid;
13058+
1295913059
[FieldOffset(68)]
1296013060
internal global::System.IntPtr completeDeclaration;
1296113061

@@ -13620,6 +13720,9 @@ public unsafe partial class TranslationUnit : global::CppSharp.Parser.AST.Namesp
1362013720
[FieldOffset(66)]
1362113721
internal byte isImplicit;
1362213722

13723+
[FieldOffset(67)]
13724+
internal byte isInvalid;
13725+
1362313726
[FieldOffset(68)]
1362413727
internal global::System.IntPtr completeDeclaration;
1362513728

0 commit comments

Comments
 (0)