www.pudn.com > bp_cpp.zip > annfunc.cpp


/* 
 * public/ann/annfunc/annfunc.cpp 
 * 2004-02-16 by ShanLanshan 
 */ 
#include  
#include "public/ann/annfunc/annfunc.h" 
#include "public/ann/annfunc/hyperbola_tangent.h" 
#include "public/ann/annfunc/sigmoid.h" 
#include "public/ann/annfunc/sign.h" 
#include "public/ann/annfunc/sin.h" 
#include "public/ann/annfunc/sech6.h" 
 
using namespace ann::annfunc; 
 
namespace ann { 
 
	AnnFuncGroupFactory g_func_factory; 
	AnnFuncGroupFactory::AnnFuncGroupFactory():m_inited(false){} 
	AnnFuncGroupFactory::~AnnFuncGroupFactory() 
	{ 
		finalize(); 
	} 
 
	void AnnFuncGroupFactory::finalize() 
	{ 
		if (!m_inited) 
			return; 
 
		for (int i=0; ifinalize != NULL); 
			m_funcgroup[i]->finalize(); 
		} 
		m_inited = false; 
	} 
 
	bool AnnFuncGroupFactory::init() 
	{ 
		int i = 0; 
 
		if (m_inited) 
			return true; 
 
		m_funcgroup[i++] = &hyperbola_tangent::g_funcgroup; 
		m_funcgroup[i++] = &sigmoid::g_funcgroup; 
		m_funcgroup[i++] = &sign::g_funcgroup; 
		m_funcgroup[i++] = &sin::g_funcgroup; 
		m_funcgroup[i++] = &sech6::g_funcgroup; 
		m_funcgroup[i++] = &sech6::g_funcgroup_cache; 
		m_funcgroup_count = i; 
 
		for (i=0; iinit != NULL); 
			if (!m_funcgroup[i]->init()) 
				return false; 
		} 
 
		m_inited = true; 
 
		return true; 
	} 
 
 
	AnnFuncGroup *annfunc_get(const char *name) 
	{ 
		AnnFuncGroup *func; 
		for (int i=0; iname, name)) 
				continue; 
			return func; 
		} 
 
		return NULL; 
	} 
 
}	// namespace ann