projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
HP-UX gcc compilation fixes
[wxWidgets.git]
/
src
/
common
/
module.cpp
diff --git
a/src/common/module.cpp
b/src/common/module.cpp
index 57c8a312cce40270e7a4977fc9a54fe8ca3738b9..f1d0bebed748271964c2af7a3f90eb2601d75392 100644
(file)
--- a/
src/common/module.cpp
+++ b/
src/common/module.cpp
@@
-22,58
+22,80
@@
#include "wx/module.h"
#include "wx/hash.h"
#include "wx/module.h"
#include "wx/hash.h"
+#include "wx/listimpl.cpp"
+
+#ifdef __SALFORDC__
+void wxwxModuleListNode::DeleteData()
+{
+ delete (_WX_LIST_ITEM_TYPE_wxModuleList *)GetData();
+}
+#else
+WX_DEFINE_LIST(wxModuleList);
+#endif
IMPLEMENT_CLASS(wxModule, wxObject)
IMPLEMENT_CLASS(wxModule, wxObject)
-wxList wxModule::m_modules;
+wx
Module
List wxModule::m_modules;
void wxModule::RegisterModule(wxModule* module)
{
void wxModule::RegisterModule(wxModule* module)
{
- m_modules.Append(module);
+
m_modules.Append(module);
}
// Collect up all module-derived classes, create an instance of each,
// and register them.
}
// Collect up all module-derived classes, create an instance of each,
// and register them.
-
bool wxModule::RegisterModules(void
)
+
void wxModule::RegisterModules(
)
{
wxNode *node;
wxClassInfo* classInfo;
{
wxNode *node;
wxClassInfo* classInfo;
- wxClassInfo::
classTable.
BeginFind();
- node = wxClassInfo::
classTable.
Next();
+ wxClassInfo::
sm_classTable->
BeginFind();
+ node = wxClassInfo::
sm_classTable->
Next();
while (node)
{
classInfo = (wxClassInfo *)node->Data();
while (node)
{
classInfo = (wxClassInfo *)node->Data();
- if (
(classInfo != (& (wxModule::classwxModule)
)) &&
-
classInfo->IsKindOf(CLASSINFO(wxModule))
)
+ if (
classInfo->IsKindOf(CLASSINFO(wxModule
)) &&
+
(classInfo != (& (wxModule::sm_classwxModule)))
)
{
{
- wxModule* module = (wxModule
*)
classInfo->CreateObject();
+ wxModule* module = (wxModule
*)
classInfo->CreateObject();
RegisterModule(module);
}
RegisterModule(module);
}
- node = wxClassInfo::
classTable.
Next();
+ node = wxClassInfo::
sm_classTable->
Next();
}
}
- return TRUE;
}
}
-bool wxModule::InitializeModules(
void
)
+bool wxModule::InitializeModules()
{
{
- // Initialize user-defined modules
- for (wxNode *node = m_modules.First(); node; node = node->Next())
+ // Initialize user-defined modules
+ wxModuleList::Node *node;
+ for ( node = m_modules.GetFirst(); node; node = node->GetNext() )
{
{
- if (!((wxModule*)(node->Data()))->Init())
- return FALSE;
+ if ( !node->GetData()->Init() )
+ {
+ // clean up already initialized modules - process in reverse order
+ wxModuleList::Node *n;
+ for ( n = node->GetPrevious(); n; n = n->GetPrevious() )
+ {
+ n->GetData()->OnExit();
+ }
+
+ return FALSE;
+ }
}
}
+
return TRUE;
}
return TRUE;
}
-void wxModule::CleanUpModules(
void
)
+void wxModule::CleanUpModules()
{
{
- // Cleanup user-defined modules
- for(wxNode* node = m_modules.Last(); node; node = node->Previous())
+ // Cleanup user-defined modules
+ wxModuleList::Node *node;
+ for ( node = m_modules.GetFirst(); node; node = node->GetNext() )
{
{
- ((wxModule*)(node->Data()))->Exit();
- delete (wxModule*)(node->Data());
+ node->GetData()->Exit();
}
}
+
+ m_modules.DeleteContents(TRUE);
m_modules.Clear();
}
m_modules.Clear();
}