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(); }