@@ -215,15 +215,6 @@ double api_val_field_numeric(neko_value arg1,int arg2)
215215
216216
217217
218- neko_buffer api_alloc_buffer_len (int inLen )
219- {
220- char * s = dyn_alloc_private (inLen + 1 );
221- memset (s ,' ' ,inLen );
222- s [inLen ] = 0 ;
223- neko_buffer b = dyn_alloc_buffer (s );
224- return b ;
225- }
226-
227218
228219int api_val_strlen (neko_value arg1 )
229220{
@@ -238,22 +229,26 @@ int api_val_strlen(neko_value arg1)
238229 }
239230 return 0 ;
240231}
241- void api_buffer_set_size (neko_buffer inBuffer ,int inLen ) { NEKO_NOT_IMPLEMENTED ("api_buffer_set_size" ); }
232+ void api_buffer_set_size (neko_buffer inBuffer ,int inLen ) {
233+ NEKO_NOT_IMPLEMENTED ("api_buffer_set_size" );
234+ }
242235
243236
244237void api_buffer_append_char (neko_buffer inBuffer ,int inChar )
245238{
246- char buf [2 ] = { (char )inChar , '\0' };
247- dyn_buffer_append_sub (inBuffer ,buf ,1 );
239+ NEKO_NOT_IMPLEMENTED ("api_buffer_append_char" );
248240}
249241
250242
251243
252- // Byte arrays - not used on neko
253- neko_buffer api_val_to_buffer (neko_value arg1 ) { return 0 ; }
254- bool api_val_is_buffer (neko_value arg1 ) { return false; }
255- int api_buffer_size (neko_buffer inBuffer ) { return 0 ; }
256- char * api_buffer_data (neko_buffer inBuffer ) { return 0 ; }
244+ // Byte arrays - use strings
245+ neko_buffer api_val_to_buffer (neko_value arg1 )
246+ {
247+ return (neko_buffer )api_val_string (arg1 );
248+ }
249+ bool api_val_is_buffer (neko_value arg1 ) { return neko_val_is_string (arg1 ); }
250+ int api_buffer_size (neko_buffer inBuffer ) { return neko_val_strlen ((neko_value )inBuffer ); }
251+ char * api_buffer_data (neko_buffer inBuffer ) { return (char * )api_val_string ((neko_value )inBuffer ); }
257252
258253char * api_val_dup_string (neko_value inVal )
259254{
@@ -268,10 +263,24 @@ char * api_val_dup_string(neko_value inVal)
268263neko_value api_alloc_string_len (const char * inStr ,int inLen )
269264{
270265 if (gNeko2HaxeString )
266+ {
267+ if (!inStr )
268+ return dyn_val_call1 (* gNeko2HaxeString ,api_alloc_raw_string (inLen ));
271269 return dyn_val_call1 (* gNeko2HaxeString ,dyn_copy_string (inStr ,inLen ));
270+ }
271+ if (!inStr )
272+ inStr = dyn_alloc_private (inLen );
272273 return dyn_copy_string (inStr ,inLen );
273274}
274275
276+ neko_buffer api_alloc_buffer_len (int inLen )
277+ {
278+ neko_value str = api_alloc_string_len (0 ,inLen + 1 );
279+ char * s = (char * )api_val_string (str );
280+ memset (s ,0 ,inLen + 1 );
281+ return (neko_buffer )str ;
282+ }
283+
275284
276285
277286neko_value api_alloc_wstring_len (const wchar_t * inStr ,int inLen )
0 commit comments