@@ -35,6 +35,10 @@ SEXP type_convert_int(SEXP input, SEXP _n_bytes) {
3535 }
3636 }
3737
38+ /* Set dim attribute if chunk_dim is not NULL / NA */
39+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
40+ setAttrib (data , R_DimSymbol , chunk_dim );
41+ }
3842 UNPROTECT (1 );
3943 return (data );
4044}
@@ -73,6 +77,11 @@ SEXP type_convert_uint(SEXP input, SEXP _n_bytes) {
7377 }
7478 }
7579
80+ /* Set dim attribute if chunk_dim is not NULL / NA */
81+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
82+ setAttrib (data , R_DimSymbol , chunk_dim );
83+ }
84+
7685 UNPROTECT (1 );
7786 return (data );
7887}
@@ -111,6 +120,11 @@ SEXP type_convert_float(SEXP input, SEXP _n_bytes){
111120 error ("%d byte floating point values are not currently supported\n" , n_bytes );
112121 }
113122
123+ /* Set dim attribute if chunk_dim is not NULL / NA */
124+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
125+ setAttrib (data , R_DimSymbol , chunk_dim );
126+ }
127+
114128 UNPROTECT (1 );
115129 return (data );
116130}
@@ -133,6 +147,11 @@ SEXP type_convert_bool(SEXP input, SEXP _n_bytes) {
133147 p_data [i ] = ((const int8_t * )raw_buffer )[i ];
134148 }
135149
150+ /* Set dim attribute if chunk_dim is not NULL / NA */
151+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
152+ setAttrib (data , R_DimSymbol , chunk_dim );
153+ }
154+
136155 UNPROTECT (1 );
137156 return (data );
138157}
@@ -171,6 +190,11 @@ SEXP type_convert_string(SEXP input, SEXP _n_bytes) {
171190 SET_STRING_ELT (data , i , mkCharCE (field , CE_BYTES ));
172191 }
173192
193+ /* Set dim attribute if chunk_dim is not NULL / NA */
194+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
195+ setAttrib (data , R_DimSymbol , chunk_dim );
196+ }
197+
174198 UNPROTECT (1 );
175199 return (data );
176200}
@@ -232,8 +256,13 @@ SEXP type_convert_unicode(SEXP input, SEXP _n_bytes, SEXP _endian) {
232256
233257 SET_STRING_ELT (data , i , mkCharCE (utf8_buf , CE_UTF8 ));
234258 }
235-
236259 Riconv_close (cd );
260+
261+ /* Set dim attribute if chunk_dim is not NULL / NA */
262+ if (!isNull (chunk_dim ) && xlength (chunk_dim ) > 0 ) {
263+ setAttrib (data , R_DimSymbol , chunk_dim );
264+ }
265+
237266 UNPROTECT (1 );
238267 return (data );
239268}
0 commit comments