bool TrainExample::isEqual(const ParseTree & pt) const { assert(pts().size() >= 2); const ParseInfo * p = pts()[0].rootNode()->parseInfo(&pts()[0]); const ParseInfo * p1 = pt.rootNode()->parseInfo(&pt); assert(p); assert(p1); return (pts()[0].dataId() == pt.dataId()) && (p->c_ == p1->c_) && (p->l_ == p1->l_) && (p->x_ == p1->x_) && (p->y_ == p1->y_ ); }
ParseTree::ParseTree(const ParseTree & pt) : g_(NULL), idxRootNode_(-1), states_(NULL), dataId_(pt.dataId()), appearanceX_(NULL), imgWd_(pt.imgWd()), imgHt_(pt.imgHt()) { nodeSet_.resize(pt.nodeSet().size(), NULL); for ( int i = 0; i < nodeSet_.size(); ++i ) { nodeSet_[i] = new PtNode(*pt.nodeSet()[i]); } edgeSet_.resize(pt.edgeSet().size(), NULL); for ( int i = 0; i < edgeSet_.size(); ++i ) { edgeSet_[i] = new PtEdge(*pt.edgeSet()[i]); } idxRootNode_ = pt.idxRootNode(); g_ = pt.grammar(); appearanceSet_.resize(pt.appearanceSet().size(), NULL); for ( int i = 0; i < appearanceSet_.size(); ++i ) { appearanceSet_[i] = new Appearance::Param(*pt.appearanceSet()[i]); } biasSet_ = pt.biasSet(); deformationSet_.resize(pt.deformationSet().size(), NULL); for ( int i = 0; i < deformationSet_.size(); ++i ) { deformationSet_[i] = new Deformation::Param(*pt.deformationSet()[i]); } scalepriorSet_.resize(pt.scalepriorSet().size(), NULL); for ( int i = 0; i < scalepriorSet_.size(); ++i ) { scalepriorSet_[i] = new Scaleprior::Param(*pt.scalepriorSet()[i]); } parseInfoSet_.resize(pt.parseInfoSet().size(), NULL); for ( int i = 0; i < parseInfoSet_.size(); ++i ) { parseInfoSet_[i] = new ParseInfo(*pt.parseInfoSet()[i]); } if (pt.states() != NULL ) { states_ = new States(*pt.states()); } appUsage_ = pt.appUsage(); if ( pt.appearaceX() != NULL ) { appearanceX_ = new Appearance::Param( *(pt.appearaceX()) ); } }
void ParseTree::swap(ParseTree & pt) { if ( this == &pt ) { return; } clear(); nodeSet_.swap(pt.getNodeSet()); edgeSet_.swap(pt.getEdgeSet()); /*nodeSet_.resize(pt.nodeSet().size(), NULL); for ( int i = 0; i < nodeSet_.size(); ++i ) { nodeSet_[i] = new PtNode(*pt.nodeSet()[i]); } edgeSet_.resize(pt.edgeSet().size(), NULL); for ( int i = 0; i < edgeSet_.size(); ++i ) { edgeSet_[i] = new PtEdge(*pt.edgeSet()[i]); }*/ idxRootNode_ = pt.idxRootNode(); g_ = pt.grammar(); appearanceSet_.swap(pt.getAppearanceSet()); biasSet_.swap(pt.getBiasSet()); deformationSet_.swap(pt.getDeformationSet()); scalepriorSet_.swap(pt.getScalepriorSet()); parseInfoSet_.swap(pt.getParseInfoSet()); appUsage_.swap(pt.getAppUsage()); /*appearanceSet_.resize(pt.appearanceSet().size(), NULL); for ( int i = 0; i < appearanceSet_.size(); ++i ) { appearanceSet_[i] = new Appearance::Param(*pt.appearanceSet()[i]); } biasSet_ = pt.biasSet(); deformationSet_.resize(pt.deformationSet().size(), NULL); for ( int i = 0; i < deformationSet_.size(); ++i ) { deformationSet_[i] = new Deformation::Param(*pt.deformationSet()[i]); } scalepriorSet_.resize(pt.scalepriorSet().size(), NULL); for ( int i = 0; i < scalepriorSet_.size(); ++i ) { scalepriorSet_[i] = new Scaleprior::Param(*pt.scalepriorSet()[i]); } parseInfoSet_.resize(pt.parseInfoSet().size(), NULL); for ( int i = 0; i < parseInfoSet_.size(); ++i ) { parseInfoSet_[i] = new ParseInfo(*pt.parseInfoSet()[i]); } appUsage_ = pt.appUsage();*/ if (pt.states() != NULL ) { //states_ = new States(*pt.states()); std::swap(states_, pt.getStates()); } dataId_ = pt.dataId(); if ( pt.appearaceX() != NULL ) { std::swap(appearanceX_, pt.getAppearaceX()); } imgWd_ = pt.imgWd(); imgHt_ = pt.imgHt(); }