@@ -49,9 +49,9 @@ GalleyVectorBase::minSize()
4949
5050
5151std::vector<std::string>
52- GalleyVectorStr::ExtractStrVector (Blob & blob)
52+ GalleyVectorStr::ExtractStrVector (std::shared_ptr< Blob> blob)
5353{
54- std::vector<Blob> blobs =extract_internal (blob);
54+ std::vector<std::shared_ptr< Blob> > blobs =extract_internal (blob);
5555 std::vector<std::string>res (blobs.size ());
5656
5757for (int i =0 ; i<blobs.size (); i++)
@@ -62,9 +62,9 @@ GalleyVectorStr::ExtractStrVector(Blob &blob)
6262}
6363
6464std::vector<std::vector<char >>
65- GalleyVectorBin::ExtractBinVector (Blob & blob)
65+ GalleyVectorBin::ExtractBinVector (std::shared_ptr< Blob> blob)
6666{
67- std::vector<Blob> blobs =extract_internal (blob);
67+ std::vector<std::shared_ptr< Blob> > blobs =extract_internal (blob);
6868 std::vector<std::vector<char >>res (blobs.size ());
6969
7070for (int i =0 ; i<blobs.size (); i++)
@@ -74,20 +74,20 @@ GalleyVectorBin::ExtractBinVector(Blob &blob)
7474return res;
7575}
7676
77- std::vector<Blob>
78- GalleyVectorBase::extract_internal (Blob & blob)
77+ std::vector<std::shared_ptr< Blob> >
78+ GalleyVectorBase::extract_internal (std::shared_ptr< Blob> blob)
7979{
80- if (blob. Size ()<stamp.minSize ())
80+ if (blob-> Size ()<stamp.minSize ())
8181 {
8282throw OutOfData ();/* FIXME: May be later add option that allows empty lists if needed*/
8383 }
84- std::vector<Blob> res;
84+ std::vector<std::shared_ptr< Blob> > res;
8585if (stamp.isFixedSize ())
8686 {
8787int size = stamp.minSize ();
88- while (blob. Size () >= size)
88+ while (blob-> Size () >= size)
8989 {
90- Blob el = blob. ShiftBytes (size);
90+ std::shared_ptr< Blob> el = blob-> ShiftBytes (size);
9191 res.push_back (el);
9292 }
9393 }
@@ -112,7 +112,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
112112*/
113113
114114/* Getting count oracle and normalze it to fit available size*/
115- size_t count_max = (blob. Size () - ORACLE_SIZE) / (stamp.minSize () + ORACLE_SIZE);// First oracle - for number of items, and second one is oracle for each item size
115+ size_t count_max = (blob-> Size () - ORACLE_SIZE) / (stamp.minSize () + ORACLE_SIZE);// First oracle - for number of items, and second one is oracle for each item size
116116
117117 ORACLE_STAMP stamp_oracle;
118118 ORACLE_TYPE count_oracle = stamp_oracle.ExtractValue (blob);
@@ -139,7 +139,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
139139 }
140140
141141/* Calculating available vairable size, that will be destributed between parts according to size oracles*/
142- int data_size = blob. Size ();
142+ int data_size = blob-> Size ();
143143int fixed_data_size = stamp.minSize () * count_target;
144144int var_data_size = data_size - fixed_data_size;
145145
@@ -151,7 +151,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
151151int el_size = el_size_f;
152152 remainder = el_size_f - el_size;
153153
154- Blob blob2 = blob. ShiftBytes (el_size);
154+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (el_size);
155155 res.push_back (blob2);
156156 }
157157 }
@@ -163,15 +163,15 @@ GalleyVectorBase::extract_internal(Blob &blob)
163163 ORACLE_STAMP stamp_oracle;
164164while (1 )
165165 {
166- if (stamp.minSize () + stamp_oracle.minSize () > blob. Size ())
166+ if (stamp.minSize () + stamp_oracle.minSize () > blob-> Size ())
167167break ;
168168
169169 ORACLE_TYPE oracle = stamp_oracle.ExtractValue (blob);
170170
171171int size = (double ) oracle / ORACLE_MAX * (var_size +1 );/* +1 -- это грубая эмуляция округления вверх. oracle == ORACLE_MAX-1 == 65534 должен дать count_max*/
172172if (size > var_size) size = var_size;// In case we've hit oracle == ORACLE_MAX boundary
173173 size += fixed_size;
174- Blob blob2 = blob. ShiftBytes (size);
174+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (size);
175175 res.push_back (blob2);
176176 }
177177 }
@@ -181,10 +181,10 @@ GalleyVectorBase::extract_internal(Blob &blob)
181181
182182/* *********************************************/
183183
184- std::vector<Blob>
185- GalleySetBase::extract_internal (Blob & blob)
184+ std::vector<std::shared_ptr< Blob> >
185+ GalleySetBase::extract_internal (std::shared_ptr< Blob> blob)
186186{
187- std::vector<Blob> res;
187+ std::vector<std::shared_ptr< Blob> > res;
188188int fixed_total_size =0 ;// Summ of sizes of fixed parts of all stamps
189189int max_varited_total_size =0 ;// Summ of sizes of variable parts of variated stamps
190190 ORACLE_STAMP oracle_stamp;
@@ -225,12 +225,12 @@ GalleySetBase::extract_internal(Blob &blob)
225225 This is a variable that will set limits to gariated stamps greed (will be rediced later*/
226226int varited_total_size_limit = max_varited_total_size;
227227
228- if (fixed_total_size > blob. Size ())/* Not enought data case*/
228+ if (fixed_total_size > blob-> Size ())/* Not enought data case*/
229229 {
230230throw OutOfData ();
231231 }
232232
233- int avaliable_nonfixed_size = blob. Size () - fixed_total_size;/* The ammount of data available for non-fixed part of variated or unbounded stamps*/
233+ int avaliable_nonfixed_size = blob-> Size () - fixed_total_size;/* The ammount of data available for non-fixed part of variated or unbounded stamps*/
234234if (varited_total_size_limit > avaliable_nonfixed_size)
235235 varited_total_size_limit = avaliable_nonfixed_size;/* Can't use more than we have*/
236236
@@ -341,33 +341,33 @@ GalleySetBase::extract_internal(Blob &blob)
341341 unbounded_remainder = len - el_size;
342342 el_size +=s.minSize ();
343343 }
344- Blob blob2 = blob. ShiftBytes (el_size);
344+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (el_size);
345345 res.push_back (blob2);
346346 }
347347return res;
348348}
349349
350350void
351- GalleySetBase::LoadAll (Blob & blob)
351+ GalleySetBase::LoadAll (std::shared_ptr< Blob> blob)
352352{
353- std::vector<Blob> blobs =extract_internal (blob);
353+ std::vector<std::shared_ptr< Blob> > blobs =extract_internal (blob);
354354for (int i=0 ; i<blobs.size (); i++)
355355 {
356- Blob blob = blobs[i];
356+ std::shared_ptr< Blob> blob = blobs[i];
357357 StampBase & stamp = stamps[i];
358358 stamp.Load (blob);
359359 }
360360}
361361
362362
363363std::vector<std::string>
364- GalleySetStr::ExtractStrSet (Blob & blob)
364+ GalleySetStr::ExtractStrSet (std::shared_ptr< Blob> blob)
365365{
366366 std::vector<std::string> res;
367- std::vector<Blob> blobs =extract_internal (blob);
367+ std::vector<std::shared_ptr< Blob> > blobs =extract_internal (blob);
368368for (int i=0 ; i<blobs.size (); i++)
369369 {
370- Blob blob = blobs[i];
370+ std::shared_ptr< Blob> blob = blobs[i];
371371 StampBaseStr & stamp = s_stamps[i];
372372 std::string str = stamp.ExtractStr (blob);
373373 res.push_back (str);
@@ -376,13 +376,13 @@ GalleySetStr::ExtractStrSet(Blob &blob)
376376}
377377
378378std::vector<std::vector<char >>
379- GalleySetBin::ExtractBinSet (Blob & blob)
379+ GalleySetBin::ExtractBinSet (std::shared_ptr< Blob> blob)
380380{
381381 std::vector<std::vector<char >> res;
382- std::vector<Blob> blobs =extract_internal (blob);
382+ std::vector<std::shared_ptr< Blob> > blobs =extract_internal (blob);
383383for (int i=0 ; i<blobs.size (); i++)
384384 {
385- Blob blob = blobs[i];
385+ std::shared_ptr< Blob> blob = blobs[i];
386386 StampBaseBin & stamp = b_stamps[i];
387387 std::vector<char > v = stamp.ExtractBin (blob);
388388 res.push_back (v);