Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e707d2e

Browse files
committed
Some stub implementations for neko buffers
1 parent 1f95056 commit e707d2e

1 file changed

Lines changed: 26 additions & 17 deletions

File tree

include/hx/CFFINekoLoader.h

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

228219
int 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

244237
void 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

258253
char * api_val_dup_string(neko_value inVal)
259254
{
@@ -268,10 +263,24 @@ char * api_val_dup_string(neko_value inVal)
268263
neko_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

277286
neko_value api_alloc_wstring_len(const wchar_t *inStr,int inLen)

0 commit comments

Comments
 (0)