Blob Blame Raw


#include "ext/CompositeStatus.h"

#include "tgeometry.h"
#include "tvectorimage.h"

#include "ext/Types.h"
#include "ext/StrokeParametricDeformer.h"

#include <vector>

namespace ToonzExt
{

//---------------------------------------------------------------------------
/**
   *@class CompositeStatus
   *@brief This class mantains interal data for Dragger manipulator.
   */
CompositeStatus::CompositeStatus()
	: dbImpl_(new std::map<std::string, CompositeStatus *>), db_(*dbImpl_)
{
}

//---------------------------------------------------------------------------

CompositeStatus::~CompositeStatus()
{
	iterator
		it = db_.begin(),
		end = db_.end();

	while (it != end) {
		delete it->second;
		++it;
	}

	delete dbImpl_;
}

//---------------------------------------------------------------------------

void CompositeStatus::add(CompositeStatus *status,
						  const std::string &name)
{
	if (!status)
		return;

	CompositeStatus
		*tmp = this->find(name);

	if (tmp)
		delete tmp;

	db_[name] = status;
}

//---------------------------------------------------------------------------

void CompositeStatus::remove(const std::string &name)
{
	iterator
		found = db_.find(name),
		end = db_.end();

	if (found != end) {
		delete found->second;
		db_.erase(found);
	}
}

//---------------------------------------------------------------------------

CompositeStatus *
CompositeStatus::find(const std::string &name) const
{
	const_iterator
		found = db_.find(name),
		end = db_.end();

	if (found != end)
		return found->second;

	return 0;
}

//---------------------------------------------------------------------------
}