#ifndef LEGOPHONEMELIST_H
#define LEGOPHONEMELIST_H

#include "decomp.h"
#include "legophoneme.h"
#include "mxlist.h"

// VTABLE: LEGO1 0x100d9cd0
// class MxCollection<LegoPhoneme *>

// VTABLE: LEGO1 0x100d9ce8
// class MxList<LegoPhoneme *>

// VTABLE: LEGO1 0x100d9d00
// VTABLE: BETA10 0x101bef58
// SIZE 0x18
class LegoPhonemeList : public MxList<LegoPhoneme*> {
public:
	LegoPhonemeList() { SetDestroy(Destroy); }

	// FUNCTION: LEGO1 0x1007b210
	// FUNCTION: BETA10 0x100d8340
	MxS8 Compare(LegoPhoneme* p_a, LegoPhoneme* p_b) override
	{
		MxString a(p_a->GetName());
		MxString b(p_b->GetName());
		return a.Equal(b) ? 0 : p_a < p_b ? -1 : 1;
	} // vtable+0x14

	// FUNCTION: LEGO1 0x1007b2e0
	static void Destroy(LegoPhoneme* p_element) { delete p_element; }
};

// VTABLE: LEGO1 0x100d80c8
// class MxListCursor<LegoPhoneme *>

// VTABLE: LEGO1 0x100d80e0
// SIZE 0x10
class LegoPhonemeListCursor : public MxListCursor<LegoPhoneme*> {
public:
	LegoPhonemeListCursor(LegoPhonemeList* p_list) : MxListCursor<LegoPhoneme*>(p_list) {}
};

// TEMPLATE: LEGO1 0x1004e680
// LegoPhonemeListCursor::`scalar deleting destructor'

// TEMPLATE: LEGO1 0x1004e6f0
// MxListCursor<LegoPhoneme *>::~MxListCursor<LegoPhoneme *>

// TEMPLATE: LEGO1 0x1004e740
// MxListCursor<LegoPhoneme *>::`scalar deleting destructor'

// TEMPLATE: LEGO1 0x1004e7b0
// LegoPhonemeListCursor::~LegoPhonemeListCursor

// TEMPLATE: LEGO1 0x1007b300
// MxCollection<LegoPhoneme *>::Compare

// TEMPLATE: LEGO1 0x1007b310
// MxCollection<LegoPhoneme *>::~MxCollection<LegoPhoneme *>

// TEMPLATE: LEGO1 0x1007b360
// MxCollection<LegoPhoneme *>::Destroy

// TEMPLATE: LEGO1 0x1007b370
// MxList<LegoPhoneme *>::~MxList<LegoPhoneme *>

// SYNTHETIC: LEGO1 0x1007b400
// LegoPhonemeList::`scalar deleting destructor'

// SYNTHETIC: LEGO1 0x1007b470
// MxCollection<LegoPhoneme *>::`scalar deleting destructor'

// SYNTHETIC: LEGO1 0x1007b4e0
// MxList<LegoPhoneme *>::`scalar deleting destructor'

#endif // LEGOPHONEMELIST_H