X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.cpp;h=aa6a885572fcf9e68a7003d311c5fe4e48f6bffa;hb=4bd816265ae88b4e1631634260384baa559f8967;hp=b1353d422837585605a1dfc992a8c0513900c9df;hpb=450ba3c9c74665094fb8f6821d6cc92d2bf23011;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree.cpp b/libcds/src/static_sequence/static_sequence_wvtree.cpp index b1353d4..aa6a885 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree.cpp @@ -1,4 +1,4 @@ -/* static_sequence_wvtree.h +/* static_sequence_wvtree.cpp * Copyright (C) 2008, Francisco Claude, all rights reserved. * * static_sequence_wvtree definition @@ -25,18 +25,32 @@ static_sequence_wvtree::static_sequence_wvtree(uint * symbols, uint n, wt_coder for(uint i=0;imap(symbols[i]); this->am = am; + am->use(); this->c=c; + c->use(); root = new wt_node_internal(symbols, n, 0, c, bmb); for(uint i=0;iunmap(symbols[i]); } +static_sequence_wvtree::static_sequence_wvtree(uchar * symbols, uint n, wt_coder * c, static_bitsequence_builder * bmb, alphabet_mapper * am) { + for(uint i=0;imap((uint)symbols[i]); + this->am = am; + am->use(); + this->c=c; + c->use(); + root = new wt_node_internal(symbols, n, 0, c, bmb); + for(uint i=0;iunmap((uint)symbols[i]); +} + static_sequence_wvtree::static_sequence_wvtree() {} static_sequence_wvtree::~static_sequence_wvtree() { delete root; - delete am; - delete c; + am->unuse(); + c->unuse(); } uint static_sequence_wvtree::rank(uint symbol, uint pos) { @@ -81,7 +95,9 @@ static_sequence_wvtree * static_sequence_wvtree::load(FILE *fp) { static_sequence_wvtree * ret = new static_sequence_wvtree(); if(fread(&ret->n,sizeof(uint),1,fp)!=1) return NULL; ret->c = wt_coder::load(fp); + ret->c->use(); ret->am = alphabet_mapper::load(fp); + ret->am->use(); ret->root = wt_node::load(fp); return ret; }