swig/nested_classes.diff

21 lines
1.0 KiB
Diff

--- ./Source/CParse/parser.c.orig 2014-08-26 12:24:53.381788068 +0000
+++ ./Source/CParse/parser.c 2014-08-26 12:36:45.700287073 +0000
@@ -1065,7 +1065,7 @@ static Node *nested_forward_declaration(
}
}
- if (!GetFlag(currentOuterClass, "nested")) {
+ if (!currentOuterClass || !GetFlag(currentOuterClass, "nested")) {
if (nn && Equal(nodeType(nn), "classforward")) {
Node *n = nn;
SWIG_WARN_NODE_BEGIN(n);
@@ -7562,6 +7562,8 @@ yyreduce:
} else if (nscope_inner) {
/* this is tricky */
/* we add the declaration in the original namespace */
+ if (Strcmp(nodeType(nscope_inner), "class") == 0 && cparse_cplusplus && ignore_nested_classes && !GetFlag((yyval.node), "feature:flatnested"))
+ (yyval.node) = nested_forward_declaration((yyvsp[(1) - (9)].id), (yyvsp[(2) - (9)].id), (yyvsp[(3) - (9)].str), Copy((yyvsp[(3) - (9)].str)), (yyvsp[(9) - (9)].node));
appendChild(nscope_inner, (yyval.node));
Swig_symbol_setscope(Getattr(nscope_inner, "symtab"));
Delete(Namespaceprefix);