+ if ( mpPlugin ) delete mpPlugin;
+
+ mpPlugin = pPlugin;
+}
+
+// ===========================================================================
+// debug methods
+// ===========================================================================
+
+#ifdef __WXDEBUG__
+
+void spContext::Dump(const wxString& indent) const
+{
+ DumpThis(indent);
+
+ // increase it for the children
+ wxString indentChild = indent + " ";
+
+ for ( MMemberListT::const_iterator i = mMembers.begin();
+ i != mMembers.end();
+ i++ ) {
+ (*i)->Dump(indentChild);
+ }
+}
+
+void spContext::DumpThis(const wxString& WXUNUSED(indent)) const
+{
+ wxFAIL_MSG("abstract base class can't be found in parser tree!");
+}
+
+void spParameter::DumpThis(const wxString& indent) const
+{
+ wxLogDebug("%sparam named '%s' of type '%s'",
+ indent.c_str(), m_Name.c_str(), m_Type.c_str());
+}
+
+void spAttribute::DumpThis(const wxString& indent) const
+{
+ wxLogDebug("%svariable named '%s' of type '%s'",
+ indent.c_str(), m_Name.c_str(), m_Type.c_str());
+}
+
+void spOperation::DumpThis(const wxString& indent) const
+{
+ wxString protection;
+ if ( !mScope.empty() ) {
+ switch ( mVisibility ) {
+ case SP_VIS_PUBLIC:
+ protection = "public";
+ break;
+
+ case SP_VIS_PROTECTED:
+ protection = "protected";
+ break;
+
+ case SP_VIS_PRIVATE:
+ protection = "private";
+ break;
+
+ default:
+ wxFAIL_MSG("unknown protection type");
+ }
+ }
+ else {
+ protection = "global";
+ }
+
+ wxString constStr,virtualStr;
+ if(mIsConstant) constStr = _T("const ");
+ if(mIsVirtual) virtualStr = _T("virtual ");
+
+ wxLogDebug("%s%s%s%s function named '%s::%s' of type '%s'",
+ indent.c_str(),
+ constStr.c_str(),
+ virtualStr.c_str(),
+ protection.c_str(),
+ mScope.c_str(), m_Name.c_str(), m_RetType.c_str());
+}
+
+void spPreprocessorLine::DumpThis(const wxString& indent) const
+{
+ wxString kind;
+ switch ( mDefType ) {
+ case SP_PREP_DEF_DEFINE_SYMBOL:
+ kind = "define";
+ break;
+
+ case SP_PREP_DEF_REDEFINE_SYMBOL:
+ kind = "redefine";
+ break;
+
+ case SP_PREP_DEF_INCLUDE_FILE:
+ kind.Printf("include (%s)", CPP_GetIncludedFileNeme().c_str());
+ break;
+
+ case SP_PREP_DEF_OTHER:
+ kind = "other";
+ break;
+
+ }
+
+ wxLogDebug("%spreprocessor statement: %s",
+ indent.c_str(), kind.c_str());
+}
+
+void spClass::DumpThis(const wxString& indent) const
+{
+ wxString base;
+ for ( StrListT::const_iterator i = m_SuperClassNames.begin();
+ i != m_SuperClassNames.end();
+ i++ ) {
+ if ( !base.empty() )
+ base += ", ";
+ base += *i;
+ }