From 7f3f546cdd2b8fe5602e34446a010305773c26bf Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 5 Oct 2015 02:56:40 +0200 Subject: [PATCH] Interrogate now parses "volatile" qualifier in instance identifiers correctly --- dtool/src/cppparser/cppBison.yxx | 20 +++++++++++++++++++ dtool/src/cppparser/cppInstanceIdentifier.cxx | 5 +++++ dtool/src/cppparser/cppInstanceIdentifier.h | 1 + makepanda/makepanda.py | 2 +- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 644fcac1de..7fd639d497 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -1233,6 +1233,11 @@ instance_identifier: { $$ = $2; $$->add_modifier(IIT_const); +} + | KW_VOLATILE instance_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_volatile); } | '*' instance_identifier %prec UNARY { @@ -1435,6 +1440,11 @@ not_paren_formal_parameter_identifier: { $$ = $2; $$->add_modifier(IIT_const); +} + | KW_VOLATILE not_paren_formal_parameter_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_volatile); } | '*' not_paren_formal_parameter_identifier %prec UNARY { @@ -1480,6 +1490,11 @@ formal_parameter_identifier: { $$ = $2; $$->add_modifier(IIT_const); +} + | KW_VOLATILE formal_parameter_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_volatile); } | '*' formal_parameter_identifier %prec UNARY { @@ -1528,6 +1543,11 @@ empty_instance_identifier: { $$ = $2; $$->add_modifier(IIT_const); +} + | KW_VOLATILE empty_instance_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_volatile); } | '*' empty_instance_identifier %prec UNARY { diff --git a/dtool/src/cppparser/cppInstanceIdentifier.cxx b/dtool/src/cppparser/cppInstanceIdentifier.cxx index 45379e5f70..ffef7523b9 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.cxx +++ b/dtool/src/cppparser/cppInstanceIdentifier.cxx @@ -286,6 +286,11 @@ r_unroll_type(CPPType *start_type, result = new CPPConstType(r_unroll_type(start_type, mi)); break; + case IIT_volatile: + // Just pass it through for now. + result = r_unroll_type(start_type, mi); + break; + case IIT_paren: result = r_unroll_type(start_type, mi); break; diff --git a/dtool/src/cppparser/cppInstanceIdentifier.h b/dtool/src/cppparser/cppInstanceIdentifier.h index b906a4f386..3efe9fc1b3 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.h +++ b/dtool/src/cppparser/cppInstanceIdentifier.h @@ -36,6 +36,7 @@ enum CPPInstanceIdentifierType { IIT_scoped_pointer, IIT_array, IIT_const, + IIT_volatile, IIT_paren, IIT_func, IIT_initializer, diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 77712197de..9a077f6f58 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -1354,7 +1354,7 @@ def CompileIgate(woutd,wsrc,opts): # Assume that interrogate is on the PATH somewhere. cmd = 'interrogate' - cmd += ' -srcdir %s -I%s -Dvolatile -Dmutable' % (srcdir, srcdir) + cmd += ' -srcdir %s -I%s' % (srcdir, srcdir) cmd += ' -DCPPPARSER -D__STDC__=1 -D__cplusplus=201103L' if (COMPILER=="MSVC"): cmd += ' -D__inline -D_X86_ -DWIN32_VC -DWIN32 -D_WIN32'