|
5 | 5 | #include "string_utils.h" |
6 | 6 | #include "iconv.h" |
7 | 7 |
|
| 8 | + |
8 | 9 | #include <Rcpp.h> |
9 | 10 | using namespace Rcpp; |
10 | 11 |
|
@@ -101,47 +102,28 @@ void ColumnInteger::setValue(int i, const char* x_start, const char* x_end) { |
101 | 102 | } |
102 | 103 |
|
103 | 104 | void ColumnCharacter::resize(int n) { |
104 | | - if (n == n_) |
105 | | - return; |
106 | | - |
107 | | - if (n > 0 && n < n_) { |
108 | | - SETLENGTH(values_, n); |
109 | | - SET_TRUELENGTH(values_, n); |
110 | | - } else { |
111 | | - values_ = Rf_lengthgets(values_, n); |
112 | | - } |
| 105 | + if (n == n_) return; |
| 106 | + values_ = Rf_lengthgets(values_, n); |
113 | 107 | n_ = n; |
114 | | - |
115 | 108 | } |
116 | 109 |
|
117 | | -void ColumnDouble::resize(int n) { |
118 | | - if (n == n_) |
119 | | - return; |
120 | 110 |
|
121 | | - if (n > 0 && n < n_) { |
122 | | - SETLENGTH(values_, n); |
123 | | - SET_TRUELENGTH(values_, n); |
124 | | - } else { |
125 | | - values_ = Rf_lengthgets(values_, n); |
126 | | - } |
| 111 | +void ColumnDouble::resize(int n) { |
| 112 | + if (n == n_) return; |
| 113 | + values_ = Rf_lengthgets(values_, n); |
127 | 114 | n_ = n; |
128 | 115 | valuepointer = REAL(values_); |
129 | 116 | } |
130 | 117 |
|
131 | | -void ColumnInteger::resize(int n) { |
132 | | - if (n == n_) |
133 | | - return; |
134 | 118 |
|
135 | | - if (n > 0 && n < n_) { |
136 | | - SETLENGTH(values_, n); |
137 | | - SET_TRUELENGTH(values_, n); |
138 | | - } else { |
139 | | - values_ = Rf_lengthgets(values_, n); |
140 | | - } |
| 119 | +void ColumnInteger::resize(int n) { |
| 120 | + if (n == n_) return; |
| 121 | + values_ = Rf_lengthgets(values_, n); |
141 | 122 | n_ = n; |
142 | 123 | valuepointer = INTEGER(values_); |
143 | 124 | } |
144 | 125 |
|
| 126 | + |
145 | 127 | std::vector<ColumnPtr> createAllColumns(CharacterVector types, Rcpp::List var_opts, Iconv* pEncoder_) { |
146 | 128 | int num_cols = static_cast<int>(types.size()); |
147 | 129 | std::vector<ColumnPtr> out; |
|
0 commit comments