void CYFinalize(JSObjectRef object) {
CYData *internal(reinterpret_cast<CYData *>(JSObjectGetPrivate(object)));
+ if (internal == NULL)
+ return;
_assert(internal->count_ != _not(unsigned));
if (--internal->count_ == 0)
delete internal;
CYJSString script(context, value);
auto string(CYCastUTF16String(script));
_assert(string.size == 1);
+ _assert((string.data[0] & 0xff) == string.data[0]);
*reinterpret_cast<char *>(data) = string.data[0];
}
}
void Void::PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const {
- _assert(false);
+ _assert(JSValueIsUndefined(context, value));
}
void Unknown::PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const {
values[index] = internal->signature_.elements[1 + index].type->FromFFI(context, internal->cif_.arg_types[index], arguments[index]);
JSValueRef value(internal->adapter_(context, count, values, internal->function_));
- if (internal->cif_.rtype != &ffi_type_void)
- internal->signature_.elements[0].type->PoolFFI(NULL, context, internal->cif_.rtype, result, value);
+ internal->signature_.elements[0].type->PoolFFI(NULL, context, internal->cif_.rtype, result, value);
}
static JSValueRef FunctionAdapter_(JSContextRef context, size_t count, JSValueRef values[], JSObjectRef function) {
Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
if (dynamic_cast<sig::Primitive<char> *>(internal->type_) != NULL)
- return CYMakeType(context, sig::String());
+ return CYMakeType(context, sig::String((internal->type_->flags & JOC_TYPE_CONST) != 0));
else
return CYMakeType(context, sig::Pointer(*internal->type_));
} CYCatch(NULL) }
} CYCatch(NULL) }
static JSValueRef CString_getProperty_$cyt(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
- return CYMakeType(context, sig::String());
+ return CYMakeType(context, sig::String(true));
} CYCatch(NULL) }
static JSValueRef CArray_getProperty_$cyt(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
{NULL, NULL, NULL, 0}
};
-static JSStaticFunction Functor_staticFunctions[4] = {
+static JSStaticFunction Functor_staticFunctions[5] = {
{"$cya", &Functor_callAsFunction_$cya, kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
{"toCYON", &Functor_callAsFunction_toCYON, kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
+ {"toPointer", &Functor_callAsFunction_$cya, kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
{"valueOf", &Functor_callAsFunction_valueOf, kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
{NULL, NULL, 0}
};
}
#endif
- CYSetProperty(context, String_prototype, cyt_s, CYMakeType(context, sig::String()), kJSPropertyAttributeDontEnum);
+ CYSetProperty(context, String_prototype, cyt_s, CYMakeType(context, sig::String(true)), kJSPropertyAttributeDontEnum);
CYSetProperty(context, cache, CYJSString("dlerror"), CYMakeFunctor(context, "dlerror", "*"), kJSPropertyAttributeDontEnum);
CYSetProperty(context, cache, CYJSString("RTLD_DEFAULT"), CYCastJSValue(context, reinterpret_cast<intptr_t>(RTLD_DEFAULT)), kJSPropertyAttributeDontEnum);