@@ -12,9 +12,9 @@ struct rc_type_t {
12
12
typedef unsigned char byte;
13
13
};
14
14
15
- template <class Store > class rc_encoder_t : public rc_type_t {
15
+ template <class Iter > class rc_encoder_t : public rc_type_t {
16
16
public:
17
- rc_encoder_t (Store *_store ) : store(_store ) {
17
+ rc_encoder_t (const Iter &i ) : iter(i ) {
18
18
L = 0 ;
19
19
R = 0xFFFFFFFF ;
20
20
buffer = 0 ;
@@ -35,7 +35,7 @@ template <class Store> class rc_encoder_t : public rc_type_t {
35
35
// buffer FF FF .. FF -> buffer+1 00 00 .. 00
36
36
buffer++;
37
37
for (;carryN > 0 ; carryN--) {
38
- store-> push_back ( buffer) ;
38
+ *iter++ = buffer;
39
39
buffer = 0 ;
40
40
}
41
41
}
@@ -48,9 +48,9 @@ template <class Store> class rc_encoder_t : public rc_type_t {
48
48
} else if (newBuffer == 0xFF ) {
49
49
carryN++;
50
50
} else {
51
- store-> push_back ( buffer) ;
51
+ *iter++ = buffer;
52
52
for (; carryN != 0 ; carryN--) {
53
- store-> push_back ( 0xFF ) ;
53
+ *iter++ = 0xFF ;
54
54
}
55
55
buffer = newBuffer;
56
56
}
@@ -60,14 +60,14 @@ template <class Store> class rc_encoder_t : public rc_type_t {
60
60
counter++;
61
61
}
62
62
void final () {
63
- store-> push_back ( buffer) ;
63
+ *iter++ = buffer;
64
64
for (; carryN != 0 ; carryN--) {
65
- store-> push_back ( 0xFF ) ;
65
+ *iter++ = 0xFF ;
66
66
}
67
67
uint t = L + R;
68
68
while (1 ) {
69
69
uint t8 = t >> 24 , l8 = L >> 24 ;
70
- store-> push_back (l8) ;
70
+ *iter++ = l8 ;
71
71
if (t8 != l8) {
72
72
break ;
73
73
}
@@ -81,7 +81,7 @@ template <class Store> class rc_encoder_t : public rc_type_t {
81
81
bool start;
82
82
byte buffer;
83
83
uint carryN;
84
- Store* store ;
84
+ Iter iter ;
85
85
uint counter;
86
86
};
87
87
0 commit comments