From 7b6ec235d8ad97c461c8ed46c4a058776d2be352 Mon Sep 17 00:00:00 2001 From: Christian Semmler <mail@csemmler.com> Date: Fri, 26 Jan 2024 17:52:03 -0500 Subject: [PATCH] Implement LegoWorld::Add (#490) * LegoWorld::Add * Add annotations * Fix include guard * Make stub * Change MxPresenterSet to MxCoreSet * Improve match * Match * Fix annotation --- .../lego/legoomni/include/legoanimpresenter.h | 5 + .../legoomni/include/legocachesoundlist.h | 98 +++++++++++++++++++ LEGO1/lego/legoomni/include/legoentitylist.h | 3 + LEGO1/lego/legoomni/include/legoutil.h | 2 + LEGO1/lego/legoomni/include/legoworld.h | 79 ++++++++++----- LEGO1/lego/legoomni/src/common/legoutil.cpp | 6 ++ LEGO1/lego/legoomni/src/entity/legoworld.cpp | 77 +++++++++++++-- LEGO1/omni/include/mxcorelist.h | 95 ------------------ LEGO1/omni/include/mxpresenterlist.h | 3 + 9 files changed, 236 insertions(+), 132 deletions(-) create mode 100644 LEGO1/lego/legoomni/include/legocachesoundlist.h delete mode 100644 LEGO1/omni/include/mxcorelist.h diff --git a/LEGO1/lego/legoomni/include/legoanimpresenter.h b/LEGO1/lego/legoomni/include/legoanimpresenter.h index 394147e5..2ca9c910 100644 --- a/LEGO1/lego/legoomni/include/legoanimpresenter.h +++ b/LEGO1/lego/legoomni/include/legoanimpresenter.h @@ -40,6 +40,8 @@ public: virtual void PutFrame() override; // vtable+0x6c virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88 + inline LegoAnimClass* GetUnknown0x64() { return m_unk0x64; } + const char* GetActionObjectName(); protected: @@ -101,6 +103,9 @@ public: virtual void VTable0xc() override; // vtable+0x0c virtual MxResult VTable0x10(LegoMemory* p_stream, MxS32); // vtable+0x10 + inline MxLong GetUnknown0x8() { return m_unk0x8; } + + // private: MxLong m_unk0x8; // 0x08 undefined4 m_unk0xc; // 0x0c undefined4 m_unk0x10; // 0x10 diff --git a/LEGO1/lego/legoomni/include/legocachesoundlist.h b/LEGO1/lego/legoomni/include/legocachesoundlist.h new file mode 100644 index 00000000..13d8f96c --- /dev/null +++ b/LEGO1/lego/legoomni/include/legocachesoundlist.h @@ -0,0 +1,98 @@ +#ifndef LEGOCACHESOUNDLIST_H +#define LEGOCACHESOUNDLIST_H + +#include "mxlist.h" +#include "mxtypes.h" + +class LegoCacheSound; + +// VTABLE: LEGO1 0x100d63b0 +// class MxCollection<LegoCacheSound *> + +// VTABLE: LEGO1 0x100d63c8 +// class MxList<LegoCacheSound *> + +// VTABLE: LEGO1 0x100d63e0 +// class MxPtrList<LegoCacheSound> + +// VTABLE: LEGO1 0x100d63f8 +// SIZE 0x18 +class LegoCacheSoundList : public MxPtrList<LegoCacheSound> { +public: + LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {} + + // FUNCTION: LEGO1 0x1001e650 + virtual MxS8 Compare(LegoCacheSound* p_a, LegoCacheSound* p_b) override + { + return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; + }; // vtable+0x14 +}; + +// VTABLE: LEGO1 0x100d64a0 +// class MxListCursor<LegoCacheSound *> + +// VTABLE: LEGO1 0x100d6500 +// class MxPtrListCursor<LegoCacheSound> + +// VTABLE: LEGO1 0x100d6518 +// SIZE 0x10 +class LegoCacheSoundListCursor : public MxPtrListCursor<LegoCacheSound> { +public: + LegoCacheSoundListCursor(LegoCacheSoundList* p_list) : MxPtrListCursor<LegoCacheSound>(p_list){}; +}; + +// TEMPLATE: LEGO1 0x1001e670 +// MxCollection<LegoCacheSound *>::Compare + +// TEMPLATE: LEGO1 0x1001e680 +// MxCollection<LegoCacheSound *>::~MxCollection<LegoCacheSound *> + +// TEMPLATE: LEGO1 0x1001e6d0 +// MxCollection<LegoCacheSound *>::Destroy + +// TEMPLATE: LEGO1 0x1001e6e0 +// MxList<LegoCacheSound *>::~MxList<LegoCacheSound *> + +// TEMPLATE: LEGO1 0x1001e770 +// MxPtrList<LegoCacheSound>::Destroy + +// SYNTHETIC: LEGO1 0x1001e780 +// LegoCacheSoundList::`scalar deleting destructor' + +// TEMPLATE: LEGO1 0x1001e7f0 +// MxPtrList<LegoCacheSound>::~MxPtrList<LegoCacheSound> + +// SYNTHETIC: LEGO1 0x1001e840 +// MxCollection<LegoCacheSound *>::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x1001e8b0 +// MxList<LegoCacheSound *>::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x1001e960 +// MxPtrList<LegoCacheSound>::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x1001f350 +// LegoCacheSoundListCursor::`scalar deleting destructor' + +// FUNCTION: LEGO1 0x1001f3c0 +// MxPtrListCursor<LegoCacheSound>::~MxPtrListCursor<LegoCacheSound> + +// SYNTHETIC: LEGO1 0x1001f410 +// MxListCursor<LegoCacheSound *>::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x1001f480 +// MxPtrListCursor<LegoCacheSound>::`scalar deleting destructor' + +// FUNCTION: LEGO1 0x1001f4f0 +// MxListCursor<LegoCacheSound *>::~MxListCursor<LegoCacheSound *> + +// FUNCTION: LEGO1 0x1001f540 +// LegoCacheSoundListCursor::~LegoCacheSoundListCursor + +// TEMPLATE: LEGO1 0x10020840 +// MxListCursor<LegoCacheSound *>::MxListCursor<LegoCacheSound *> + +// TEMPLATE: LEGO1 0x100224e0 +// MxList<LegoCacheSound *>::InsertEntry + +#endif // LEGOCACHESOUNDLIST_H diff --git a/LEGO1/lego/legoomni/include/legoentitylist.h b/LEGO1/lego/legoomni/include/legoentitylist.h index 04935769..4f212279 100644 --- a/LEGO1/lego/legoomni/include/legoentitylist.h +++ b/LEGO1/lego/legoomni/include/legoentitylist.h @@ -92,4 +92,7 @@ public: // TEMPLATE: LEGO1 0x100207d0 // MxListCursor<LegoEntity *>::MxListCursor<LegoEntity *> +// TEMPLATE: LEGO1 0x10022430 +// MxList<LegoEntity *>::InsertEntry + #endif // LEGOENTITYLIST_H diff --git a/LEGO1/lego/legoomni/include/legoutil.h b/LEGO1/lego/legoomni/include/legoutil.h index 6e9bb5ee..75e51c20 100644 --- a/LEGO1/lego/legoomni/include/legoutil.h +++ b/LEGO1/lego/legoomni/include/legoutil.h @@ -9,7 +9,9 @@ class MxAtomId; class LegoEntity; +class LegoAnimPresenter; +void FUN_1003e050(LegoAnimPresenter* p_presenter); Extra::ActionType MatchActionString(const char*); void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender); void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut); diff --git a/LEGO1/lego/legoomni/include/legoworld.h b/LEGO1/lego/legoomni/include/legoworld.h index 4bc7ab70..074728e3 100644 --- a/LEGO1/lego/legoomni/include/legoworld.h +++ b/LEGO1/lego/legoomni/include/legoworld.h @@ -1,22 +1,24 @@ #ifndef LEGOWORLD_H #define LEGOWORLD_H +#include "legocachesound.h" +#include "legocachesoundlist.h" #include "legocameracontroller.h" #include "legoentity.h" #include "legoentitylist.h" #include "legopathcontrollerlist.h" -#include "mxcorelist.h" #include "mxpresenter.h" #include "mxpresenterlist.h" class IslePathActor; class LegoPathBoundary; +class LegoHideAnimPresenter; -struct PresenterSetCompare { - MxS32 operator()(MxPresenter* const& p_a, MxPresenter* const& p_b) const { return p_a > p_b; } +struct CoreSetCompare { + MxS32 operator()(MxCore* const& p_a, MxCore* const& p_b) const { return p_a > p_b; } }; -typedef set<MxPresenter*, PresenterSetCompare> MxPresenterSet; +typedef set<MxCore*, CoreSetCompare> MxCoreSet; // VTABLE: LEGO1 0x100d6280 // SIZE 0xf8 @@ -72,38 +74,38 @@ public: // LegoWorld::`scalar deleting destructor' protected: - LegoPathControllerList m_list0x68; // 0x68 - MxPresenterList m_animPresenters; // 0x80 - LegoCameraController* m_cameraController; // 0x98 - LegoEntityList* m_entityList; // 0x9c - MxCoreList* m_coreList; // 0xa0 - undefined m_unk0xa4; // 0xa4 - MxPresenterSet m_set0xa8; // 0xa8 - MxPresenterList m_controlPresenters; // 0xb8 - MxPresenterSet m_set0xd0; // 0xd0 - list<AutoROI*> m_list0xe0; // 0xe0 - undefined4 m_unk0xec; // 0xec - undefined4 m_unk0xf0; // 0xf0 - MxS16 m_unk0xf4; // 0xf4 - MxBool m_worldStarted; // 0xf6 - undefined m_unk0xf7; // 0xf7 + LegoPathControllerList m_list0x68; // 0x68 + MxPresenterList m_animPresenters; // 0x80 + LegoCameraController* m_cameraController; // 0x98 + LegoEntityList* m_entityList; // 0x9c + LegoCacheSoundList* m_cacheSoundList; // 0xa0 + undefined m_unk0xa4; // 0xa4 + MxCoreSet m_set0xa8; // 0xa8 + MxPresenterList m_controlPresenters; // 0xb8 + MxCoreSet m_set0xd0; // 0xd0 + list<AutoROI*> m_list0xe0; // 0xe0 + undefined4 m_unk0xec; // 0xec + LegoHideAnimPresenter* m_hideAnimPresenter; // 0xf0 + MxS16 m_unk0xf4; // 0xf4 + MxBool m_worldStarted; // 0xf6 + undefined m_unk0xf7; // 0xf7 }; // clang-format off // TEMPLATE: LEGO1 0x1001d780 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::~_Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> > +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::~_Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> > // TEMPLATE: LEGO1 0x1001d850 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::iterator::_Inc +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Inc // TEMPLATE: LEGO1 0x1001d890 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::erase +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::erase // TEMPLATE: LEGO1 0x1001dcf0 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Erase +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Erase // TEMPLATE: LEGO1 0x1001dd30 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Init +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Init // TEMPLATE: LEGO1 0x1001ddf0 // list<AutoROI *,allocator<AutoROI *> >::~list<AutoROI *,allocator<AutoROI *> > @@ -115,10 +117,10 @@ protected: // list<AutoROI *,allocator<AutoROI *> >::_Buynode // TEMPLATE: LEGO1 0x1001de90 -// set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::~set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> > +// set<MxCore *,CoreSetCompare,allocator<MxCore *> >::~set<MxCore *,CoreSetCompare,allocator<MxCore *> > // TEMPLATE: LEGO1 0x1001df00 -// Set<MxPresenter *,PresenterSetCompare>::~Set<MxPresenter *,PresenterSetCompare> +// Set<MxCore *,CoreSetCompare>::~Set<MxCore *,CoreSetCompare> // SYNTHETIC: LEGO1 0x1001eed0 // MxPresenterListCursor::`scalar deleting destructor' @@ -141,8 +143,31 @@ protected: // TEMPLATE: LEGO1 0x10020760 // MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *> +// TEMPLATE: LEGO1 0x100208b0 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::insert + +// TEMPLATE: LEGO1 0x10020b20 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Dec + +// XTEMPLATE LEGO1 0x10020b70 + +// TEMPLATE: LEGO1 0x10020bb0 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Buynode + +// TEMPLATE: LEGO1 0x10020bd0 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Insert + +// TEMPLATE: LEGO1 0x10020e50 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Lrotate + +// TEMPLATE: LEGO1 0x10020eb0 +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Rrotate + +// TEMPLATE: LEGO1 0x10022360 +// _Construct + // GLOBAL: LEGO1 0x100f11a0 -// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *>>::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Nil +// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Nil // clang-format on #endif // LEGOWORLD_H diff --git a/LEGO1/lego/legoomni/src/common/legoutil.cpp b/LEGO1/lego/legoomni/src/common/legoutil.cpp index 843f4abb..dfb4b740 100644 --- a/LEGO1/lego/legoomni/src/common/legoutil.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutil.cpp @@ -10,6 +10,12 @@ #include <process.h> #include <string.h> +// STUB: LEGO1 0x1003e050 +void FUN_1003e050(LegoAnimPresenter* p_presenter) +{ + // TODO +} + // FUNCTION: LEGO1 0x1003e300 Extra::ActionType MatchActionString(const char* p_str) { diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index c9381197..a39a957e 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -15,8 +15,8 @@ DECOMP_SIZE_ASSERT(LegoWorld, 0xf8) DECOMP_SIZE_ASSERT(LegoEntityList, 0x18) DECOMP_SIZE_ASSERT(LegoEntityListCursor, 0x10) -DECOMP_SIZE_ASSERT(MxCoreList, 0x18) -DECOMP_SIZE_ASSERT(MxCoreListCursor, 0x10) +DECOMP_SIZE_ASSERT(LegoCacheSoundList, 0x18) +DECOMP_SIZE_ASSERT(LegoCacheSoundListCursor, 0x10) // FUNCTION: LEGO1 0x1001ca40 LegoWorld::LegoWorld() : m_list0x68(TRUE) @@ -24,9 +24,9 @@ LegoWorld::LegoWorld() : m_list0x68(TRUE) m_unk0xf4 = 4; m_cameraController = NULL; m_entityList = NULL; - m_coreList = NULL; + m_cacheSoundList = NULL; m_unk0xa4 = 0; // MxBool? - m_unk0xf0 = 0; + m_hideAnimPresenter = NULL; m_worldStarted = FALSE; NotificationManager()->Register(this); @@ -60,9 +60,9 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction) if (!m_entityList) return FAILURE; - m_coreList = new MxCoreList(TRUE); + m_cacheSoundList = new LegoCacheSoundList(TRUE); - if (!m_coreList) + if (!m_cacheSoundList) return FAILURE; if (!VTable0x54()) @@ -152,10 +152,67 @@ MxS32 LegoWorld::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value) return 0; } -// STUB: LEGO1 0x10020220 +// FUNCTION: LEGO1 0x10020220 void LegoWorld::Add(MxCore* p_object) { - // TODO + if (p_object && !p_object->IsA("LegoWorld") && !p_object->IsA("LegoWorldPresenter")) { + if (p_object->IsA("LegoAnimPresenter")) { + LegoAnimPresenter* animPresenter = (LegoAnimPresenter*) p_object; + + if (!strcmpi(animPresenter->GetAction()->GetObjectName(), "ConfigAnimation")) { + FUN_1003e050(animPresenter); + animPresenter->GetAction()->SetDuration(animPresenter->GetUnknown0x64()->GetUnknown0x8()); + } + } + + if (p_object->IsA("MxControlPresenter")) { + MxPresenterListCursor cursor(&m_controlPresenters); + + if (cursor.Find((MxPresenter*) p_object)) + return; + + m_controlPresenters.Append((MxPresenter*) p_object); + } + else if (p_object->IsA("MxEntity")) { + LegoEntityListCursor cursor(m_entityList); + + if (cursor.Find((LegoEntity*) p_object)) + return; + + m_entityList->Append((LegoEntity*) p_object); + } + else if (p_object->IsA("LegoLocomotionAnimPresenter") || p_object->IsA("LegoHideAnimPresenter") || p_object->IsA("LegoLoopingAnimPresenter")) { + MxPresenterListCursor cursor(&m_animPresenters); + + if (cursor.Find((MxPresenter*) p_object)) + return; + + ((MxPresenter*) p_object)->SendToCompositePresenter(Lego()); + m_animPresenters.Append(((MxPresenter*) p_object)); + + if (p_object->IsA("LegoHideAnimPresenter")) + m_hideAnimPresenter = (LegoHideAnimPresenter*) p_object; + } + else if (p_object->IsA("LegoCacheSound")) { + LegoCacheSoundListCursor cursor(m_cacheSoundList); + + if (cursor.Find((LegoCacheSound*) p_object)) + return; + + m_cacheSoundList->Append((LegoCacheSound*) p_object); + } + else { + if (m_set0xa8.find(p_object) == m_set0xa8.end()) + m_set0xa8.insert(p_object); + } + + if (!m_set0xd0.empty() && p_object->IsA("MxPresenter")) { + if (((MxPresenter*) p_object)->IsEnabled()) { + ((MxPresenter*) p_object)->Enable(FALSE); + m_set0xd0.insert(p_object); + } + } + } } // STUB: LEGO1 0x10020f10 @@ -206,7 +263,7 @@ MxCore* LegoWorld::Find(const char* p_class, const char* p_name) return NULL; } else { - for (MxPresenterSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) { + for (MxCoreSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) { if ((*it)->IsA(p_class) && (*it)->IsA("MxPresenter")) { MxPresenter* presenter = (MxPresenter*) *it; MxDSAction* action = presenter->GetAction(); @@ -250,7 +307,7 @@ MxCore* LegoWorld::Find(const MxAtomId& p_atom, MxS32 p_entityId) return presenter; } - for (MxPresenterSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) { + for (MxCoreSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) { MxCore* core = *it; if (core->IsA("MxPresenter")) { diff --git a/LEGO1/omni/include/mxcorelist.h b/LEGO1/omni/include/mxcorelist.h deleted file mode 100644 index 15ae7c9b..00000000 --- a/LEGO1/omni/include/mxcorelist.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef MXCORELIST_H -#define MXCORELIST_H - -#include "mxlist.h" -#include "mxtypes.h" - -class MxCore; - -// VTABLE: LEGO1 0x100d63b0 -// class MxCollection<MxCore *> - -// VTABLE: LEGO1 0x100d63c8 -// class MxList<MxCore *> - -// VTABLE: LEGO1 0x100d63e0 -// class MxPtrList<MxCore> - -// VTABLE: LEGO1 0x100d63f8 -// SIZE 0x18 -class MxCoreList : public MxPtrList<MxCore> { -public: - MxCoreList(MxBool p_ownership = FALSE) : MxPtrList<MxCore>(p_ownership) {} - - // FUNCTION: LEGO1 0x1001e650 - virtual MxS8 Compare(MxCore* p_a, MxCore* p_b) override - { - return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; - }; // vtable+0x14 -}; - -// VTABLE: LEGO1 0x100d64a0 -// class MxListCursor<MxCore *> - -// VTABLE: LEGO1 0x100d6500 -// class MxPtrListCursor<MxCore> - -// VTABLE: LEGO1 0x100d6518 -// SIZE 0x10 -class MxCoreListCursor : public MxPtrListCursor<MxCore> { -public: - MxCoreListCursor(MxCoreList* p_list) : MxPtrListCursor<MxCore>(p_list){}; -}; - -// TEMPLATE: LEGO1 0x1001e670 -// MxCollection<MxCore *>::Compare - -// TEMPLATE: LEGO1 0x1001e680 -// MxCollection<MxCore *>::~MxCollection<MxCore *> - -// TEMPLATE: LEGO1 0x1001e6d0 -// MxCollection<MxCore *>::Destroy - -// TEMPLATE: LEGO1 0x1001e6e0 -// MxList<MxCore *>::~MxList<MxCore *> - -// TEMPLATE: LEGO1 0x1001e770 -// MxPtrList<MxCore>::Destroy - -// SYNTHETIC: LEGO1 0x1001e780 -// MxCoreList::`scalar deleting destructor' - -// TEMPLATE: LEGO1 0x1001e7f0 -// MxPtrList<MxCore>::~MxPtrList<MxCore> - -// SYNTHETIC: LEGO1 0x1001e840 -// MxCollection<MxCore *>::`scalar deleting destructor' - -// SYNTHETIC: LEGO1 0x1001e8b0 -// MxList<MxCore *>::`scalar deleting destructor' - -// SYNTHETIC: LEGO1 0x1001e960 -// MxPtrList<MxCore>::`scalar deleting destructor' - -// SYNTHETIC: LEGO1 0x1001f350 -// MxCoreListCursor::`scalar deleting destructor' - -// FUNCTION: LEGO1 0x1001f3c0 -// MxPtrListCursor<MxCore>::~MxPtrListCursor<MxCore> - -// SYNTHETIC: LEGO1 0x1001f410 -// MxListCursor<MxCore *>::`scalar deleting destructor' - -// SYNTHETIC: LEGO1 0x1001f480 -// MxPtrListCursor<MxCore>::`scalar deleting destructor' - -// FUNCTION: LEGO1 0x1001f4f0 -// MxListCursor<MxCore *>::~MxListCursor<MxCore *> - -// FUNCTION: LEGO1 0x1001f540 -// MxCoreListCursor::~MxCoreListCursor - -// TEMPLATE: LEGO1 0x10020840 -// MxListCursor<MxCore *>::MxListCursor<MxCore *> - -#endif // MXCORELIST_H diff --git a/LEGO1/omni/include/mxpresenterlist.h b/LEGO1/omni/include/mxpresenterlist.h index a029a4cf..238dedfb 100644 --- a/LEGO1/omni/include/mxpresenterlist.h +++ b/LEGO1/omni/include/mxpresenterlist.h @@ -71,4 +71,7 @@ public: // SYNTHETIC: LEGO1 0x1001d100 // MxPresenterList::~MxPresenterList +// TEMPLATE: LEGO1 0x10022380 +// MxList<MxPresenter *>::InsertEntry + #endif // MXPRESENTERLIST_H