Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'InterfaceRepo_impl (./kdelibs/arts/mcop/ifacerepo_impl.h:28)

class InterfaceRepo_impl : virtual public InterfaceRepo_skel {
	class TypeEntry : public TypeDef {
	public:
		long moduleID;
		TypeEntry(Buffer& stream, long moduleID) :TypeDef(stream)
		{
			this->moduleID = moduleID;
		}
	};
	class InterfaceEntry : public InterfaceDef {
	public:
		long moduleID;
		InterfaceEntry(Buffer& stream, long moduleID) :InterfaceDef(stream)
		{
			this->moduleID = moduleID;
		}
	};

	std::list<TypeEntry *> types;
	std::list<InterfaceEntry *> interfaces;

	long nextModuleID;
public:

	InterfaceRepo_impl();

	long insertModule(const ModuleDef& newModule);
	void removeModule(long moduleID);
	InterfaceDef* queryInterface(const std::string& name);
	TypeDef* queryType(const std::string& name);
};

kdelibs'InterfaceRepo_impl::InterfaceRepo_impl() (./kdelibs/arts/mcop/ifacerepo_impl.cc:27)

InterfaceRepo_impl::InterfaceRepo_impl()
{
	nextModuleID = 1;
}


kdelibs'InterfaceRepo_impl::insertModule() (./kdelibs/arts/mcop/ifacerepo_impl.cc:32)

long InterfaceRepo_impl::insertModule(const ModuleDef& newModule)
{
	long moduleID = nextModuleID++;

	vector<InterfaceDef *>::const_iterator ii;
	for(ii=newModule.interfaces.begin();
		ii != newModule.interfaces.end();ii++)
	{
		Buffer b;
		(*ii)->writeType(b);
		interfaces.push_back(new InterfaceEntry(b,moduleID));
	}

	vector<TypeDef *>::const_iterator ti;
	for(ti=newModule.types.begin();
		ti != newModule.types.end();ti++)
	{
		Buffer b;
		(*ti)->writeType(b);
		types.push_back(new TypeEntry(b,moduleID));
	}

	return moduleID;
}


kdelibs'InterfaceRepo_impl::removeModule() (./kdelibs/arts/mcop/ifacerepo_impl.cc:57)

void InterfaceRepo_impl::removeModule(long moduleID)
{
	list<TypeEntry *>::iterator ti;

	/* erase types */
	ti = types.begin();
	while(ti != types.end())
	{
		if((*ti)->moduleID == moduleID)
		{
			delete (*ti);
			types.erase(ti);
			ti = types.begin();
		}
		else ti++;
	}

	/* erase interfaces */
	list<InterfaceEntry *>::iterator ii;
	ii = interfaces.begin();
	while(ii != interfaces.end())
	{
		if((*ii)->moduleID == moduleID)
		{
			delete (*ii);
			interfaces.erase(ii);
			ii = interfaces.begin();
		}
		else ii++;
	}
}


kdelibs'InterfaceRepo_impl::queryInterface() (./kdelibs/arts/mcop/ifacerepo_impl.cc:89)

InterfaceDef* InterfaceRepo_impl::queryInterface(const string& name)
{
	list<InterfaceEntry *>::iterator ii;

	for(ii = interfaces.begin();ii != interfaces.end();ii++)
	{
		if((*ii)->name == name)	/* TODO: namespace! */
		{
			Buffer b;
			(*ii)->writeType(b);
			return new InterfaceDef(b);
		}
	}
	/* TODO: what happens here? */
	assert(false);
	return 0;
}


kdelibs'InterfaceRepo_impl::queryType() (./kdelibs/arts/mcop/ifacerepo_impl.cc:107)

TypeDef* InterfaceRepo_impl::queryType(const string& name)
{
	list<TypeEntry *>::iterator ti;

	for(ti = types.begin();ti != types.end();ti++)
	{
		if((*ti)->name == name)	/* TODO: namespace! */
		{
			Buffer b;
			(*ti)->writeType(b);
			return new TypeDef(b);
		}
	}

	/* TODO: what happens here? */
	assert(false);
	return 0;
}