#ifndef NEURAL_CONTAINER_H #define NEURAL_CONTAINER_H #include "neural/node.h" #include namespace Neural { template class Container : public Node { public: typedef Bu::List *> NodeList; Container() { } virtual ~Container() { for( typename NodeList::iterator i = lNodes.begin(); i; i++ ) delete *i; } virtual int setWeights( const sigtype *pWeights ) { int iOffset = 0; for( typename Container::NodeList::iterator i = Container::getNodeList().begin(); i; i++ ) { iOffset += (*i)->setWeights( &pWeights[iOffset] ); } return iOffset; } virtual int setBiases( const sigtype *pBiases ) { int iOffset = 0; for( typename Container::NodeList::iterator i = Container::getNodeList().begin(); i; i++ ) { iOffset += (*i)->setBiases( &pBiases[iOffset] ); } return iOffset; } virtual void addNode( Node *pNode ) { lNodes.append( pNode ); } virtual const NodeList &getNodeList() const { return lNodes; } protected: virtual NodeList &getNodeList() { return lNodes; } private: NodeList lNodes; }; }; #endif