@@ -49,9 +49,9 @@ GalleyVectorBase::minSize()
49
49
50
50
51
51
std::vector<std::string>
52
- GalleyVectorStr::ExtractStrVector (Blob & blob)
52
+ GalleyVectorStr::ExtractStrVector (std::shared_ptr< Blob> blob)
53
53
{
54
- std::vector<Blob> blobs = extract_internal (blob);
54
+ std::vector<std::shared_ptr< Blob> > blobs = extract_internal (blob);
55
55
std::vector<std::string> res (blobs.size ());
56
56
57
57
for (int i = 0 ; i<blobs.size (); i++)
@@ -62,9 +62,9 @@ GalleyVectorStr::ExtractStrVector(Blob &blob)
62
62
}
63
63
64
64
std::vector<std::vector<char >>
65
- GalleyVectorBin::ExtractBinVector (Blob & blob)
65
+ GalleyVectorBin::ExtractBinVector (std::shared_ptr< Blob> blob)
66
66
{
67
- std::vector<Blob> blobs = extract_internal (blob);
67
+ std::vector<std::shared_ptr< Blob> > blobs = extract_internal (blob);
68
68
std::vector<std::vector<char >> res (blobs.size ());
69
69
70
70
for (int i = 0 ; i<blobs.size (); i++)
@@ -74,20 +74,20 @@ GalleyVectorBin::ExtractBinVector(Blob &blob)
74
74
return res;
75
75
}
76
76
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)
79
79
{
80
- if (blob. Size ()<stamp.minSize ())
80
+ if (blob-> Size ()<stamp.minSize ())
81
81
{
82
82
throw OutOfData (); /* FIXME: May be later add option that allows empty lists if needed*/
83
83
}
84
- std::vector<Blob> res;
84
+ std::vector<std::shared_ptr< Blob> > res;
85
85
if (stamp.isFixedSize ())
86
86
{
87
87
int size = stamp.minSize ();
88
- while (blob. Size () >= size)
88
+ while (blob-> Size () >= size)
89
89
{
90
- Blob el = blob. ShiftBytes (size);
90
+ std::shared_ptr< Blob> el = blob-> ShiftBytes (size);
91
91
res.push_back (el);
92
92
}
93
93
}
@@ -112,7 +112,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
112
112
*/
113
113
114
114
/* 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
116
116
117
117
ORACLE_STAMP stamp_oracle;
118
118
ORACLE_TYPE count_oracle = stamp_oracle.ExtractValue (blob);
@@ -139,7 +139,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
139
139
}
140
140
141
141
/* 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 ();
143
143
int fixed_data_size = stamp.minSize () * count_target;
144
144
int var_data_size = data_size - fixed_data_size;
145
145
@@ -151,7 +151,7 @@ GalleyVectorBase::extract_internal(Blob &blob)
151
151
int el_size = el_size_f;
152
152
remainder = el_size_f - el_size;
153
153
154
- Blob blob2 = blob. ShiftBytes (el_size);
154
+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (el_size);
155
155
res.push_back (blob2);
156
156
}
157
157
}
@@ -163,15 +163,15 @@ GalleyVectorBase::extract_internal(Blob &blob)
163
163
ORACLE_STAMP stamp_oracle;
164
164
while (1 )
165
165
{
166
- if (stamp.minSize () + stamp_oracle.minSize () > blob. Size ())
166
+ if (stamp.minSize () + stamp_oracle.minSize () > blob-> Size ())
167
167
break ;
168
168
169
169
ORACLE_TYPE oracle = stamp_oracle.ExtractValue (blob);
170
170
171
171
int size = (double ) oracle / ORACLE_MAX * (var_size + 1 ); /* +1 -- это грубая эмуляция округления вверх. oracle == ORACLE_MAX-1 == 65534 должен дать count_max*/
172
172
if (size > var_size) size = var_size; // In case we've hit oracle == ORACLE_MAX boundary
173
173
size += fixed_size;
174
- Blob blob2 = blob. ShiftBytes (size);
174
+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (size);
175
175
res.push_back (blob2);
176
176
}
177
177
}
@@ -181,10 +181,10 @@ GalleyVectorBase::extract_internal(Blob &blob)
181
181
182
182
/* *********************************************/
183
183
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)
186
186
{
187
- std::vector<Blob> res;
187
+ std::vector<std::shared_ptr< Blob> > res;
188
188
int fixed_total_size = 0 ; // Summ of sizes of fixed parts of all stamps
189
189
int max_varited_total_size = 0 ; // Summ of sizes of variable parts of variated stamps
190
190
ORACLE_STAMP oracle_stamp;
@@ -225,12 +225,12 @@ GalleySetBase::extract_internal(Blob &blob)
225
225
This is a variable that will set limits to gariated stamps greed (will be rediced later */
226
226
int varited_total_size_limit = max_varited_total_size;
227
227
228
- if (fixed_total_size > blob. Size ()) /* Not enought data case*/
228
+ if (fixed_total_size > blob-> Size ()) /* Not enought data case*/
229
229
{
230
230
throw OutOfData ();
231
231
}
232
232
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*/
234
234
if (varited_total_size_limit > avaliable_nonfixed_size)
235
235
varited_total_size_limit = avaliable_nonfixed_size; /* Can't use more than we have */
236
236
@@ -341,33 +341,33 @@ GalleySetBase::extract_internal(Blob &blob)
341
341
unbounded_remainder = len - el_size;
342
342
el_size +=s.minSize ();
343
343
}
344
- Blob blob2 = blob. ShiftBytes (el_size);
344
+ std::shared_ptr< Blob> blob2 = blob-> ShiftBytes (el_size);
345
345
res.push_back (blob2);
346
346
}
347
347
return res;
348
348
}
349
349
350
350
void
351
- GalleySetBase::LoadAll (Blob & blob)
351
+ GalleySetBase::LoadAll (std::shared_ptr< Blob> blob)
352
352
{
353
- std::vector<Blob> blobs = extract_internal (blob);
353
+ std::vector<std::shared_ptr< Blob> > blobs = extract_internal (blob);
354
354
for (int i=0 ; i<blobs.size (); i++)
355
355
{
356
- Blob blob = blobs[i];
356
+ std::shared_ptr< Blob> blob = blobs[i];
357
357
StampBase & stamp = stamps[i];
358
358
stamp.Load (blob);
359
359
}
360
360
}
361
361
362
362
363
363
std::vector<std::string>
364
- GalleySetStr::ExtractStrSet (Blob & blob)
364
+ GalleySetStr::ExtractStrSet (std::shared_ptr< Blob> blob)
365
365
{
366
366
std::vector<std::string> res;
367
- std::vector<Blob> blobs = extract_internal (blob);
367
+ std::vector<std::shared_ptr< Blob> > blobs = extract_internal (blob);
368
368
for (int i=0 ; i<blobs.size (); i++)
369
369
{
370
- Blob blob = blobs[i];
370
+ std::shared_ptr< Blob> blob = blobs[i];
371
371
StampBaseStr & stamp = s_stamps[i];
372
372
std::string str = stamp.ExtractStr (blob);
373
373
res.push_back (str);
@@ -376,13 +376,13 @@ GalleySetStr::ExtractStrSet(Blob &blob)
376
376
}
377
377
378
378
std::vector<std::vector<char >>
379
- GalleySetBin::ExtractBinSet (Blob & blob)
379
+ GalleySetBin::ExtractBinSet (std::shared_ptr< Blob> blob)
380
380
{
381
381
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);
383
383
for (int i=0 ; i<blobs.size (); i++)
384
384
{
385
- Blob blob = blobs[i];
385
+ std::shared_ptr< Blob> blob = blobs[i];
386
386
StampBaseBin & stamp = b_stamps[i];
387
387
std::vector<char > v = stamp.ExtractBin (blob);
388
388
res.push_back (v);
0 commit comments