#include "munga.h"
#pragma hdrstop

#include "hostmgr.h"
#include "registry.h"
#include "app.h"
#include "namelist.h"
#include "notation.h"
#include "entity.h"

//##########################################################################
//#############    Entity::StaticVideoSocketIterator    ####################
//##########################################################################

Entity__StaticVideoSocketIterator::Entity__StaticVideoSocketIterator(Entity *entity) : SChainIteratorOf<Component*>(&entity->staticVideoSocket)
{
}

Entity__StaticVideoSocketIterator::Entity__StaticVideoSocketIterator(const Entity__StaticVideoSocketIterator &iterator) : SChainIteratorOf<Component*>(iterator)
{
}

Entity__StaticVideoSocketIterator::~Entity__StaticVideoSocketIterator()
{
}

//##########################################################################
//#############    Entity::DynamicVideoSocketIterator    ###################
//##########################################################################

Entity__DynamicVideoSocketIterator::Entity__DynamicVideoSocketIterator(Entity *entity) : SChainIteratorOf<Component*>(&entity->dynamicVideoSocket)
{
}

Entity__DynamicVideoSocketIterator::Entity__DynamicVideoSocketIterator(const Entity__DynamicVideoSocketIterator &iterator) : SChainIteratorOf<Component*>(iterator)
{
}

Entity__DynamicVideoSocketIterator::~Entity__DynamicVideoSocketIterator()
{
}

//##########################################################################
//################    Entity::AudioSocketIterator    #######################
//##########################################################################

Entity__AudioSocketIterator::Entity__AudioSocketIterator(Entity *entity) : SChainIteratorOf<Component*>(&entity->audioSocket)
{
}

Entity__AudioSocketIterator::~Entity__AudioSocketIterator()
{
}

int Find_Subsystem_Index(NotationFile *file, const char* name)
{
	Check(file);
	Check_Pointer(name);

	NameList *namelist = file->MakePageList();
	Register_Object(namelist);
	NameList::Entry *entry = namelist->GetFirstEntry();

	int count = 0;
	while (entry)
	{
		if (!strcmp(name, entry->GetName()))
		{
			Unregister_Object(namelist);
			delete namelist;
			return count;
		}
		++count;
		entry = entry->GetNextEntry();
	}

	Unregister_Object(namelist);
	delete namelist;
	return (!strcmp(name, "None")) ? count : -1;
}
