diff options
Diffstat (limited to 'xsde/cxx/hybrid/parser-name-processor.cxx')
-rw-r--r-- | xsde/cxx/hybrid/parser-name-processor.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/xsde/cxx/hybrid/parser-name-processor.cxx b/xsde/cxx/hybrid/parser-name-processor.cxx index 482c195..c913766 100644 --- a/xsde/cxx/hybrid/parser-name-processor.cxx +++ b/xsde/cxx/hybrid/parser-name-processor.cxx @@ -126,6 +126,12 @@ namespace CXX return t.context ().get<Boolean> ("fixed"); } + Boolean + recursive (SemanticGraph::Type& t) + { + return t.context ().count ("recursive"); + } + public: String find_name (String const& n, String const& suffix, NameSet& set) @@ -379,6 +385,15 @@ namespace CXX cc.set ("pstate-type", state_type); cc.set ("pstate", find_name (state_type, "_", set)); + + if (recursive (c)) + { + cc.set ("pstate-first", find_name (state_type, "_first_", set)); + + if (c.inherits_p () && !recursive (c.inherits ().base ())) + cc.set ("pstate-top", find_name (state_type, "_top_", set)); + } + cc.set ("pstate-base", find_name (base + L"_base", "_", set)); // State members are in a nested struct so use a new and |