#ifdef __APPLE__
#include <CoreFoundation/CoreFoundation.h>
#include <JavaScriptCore/JSStringRefCF.h>
-#include <WebKit/WebScriptObject.h>
#include <objc/runtime.h>
#endif
JSValueRef CYSendMessage(CYPool &pool, JSContextRef context, id self, Class super, SEL _cmd, size_t count, const JSValueRef arguments[], bool initialize, JSValueRef *exception);
/* Objective-C Pool Release {{{ */
-apr_status_t CYPoolRelease_(void *data) {
+void CYPoolRelease_(void *data) {
id object(reinterpret_cast<id>(data));
[object release];
- return APR_SUCCESS;
}
id CYPoolRelease_(CYPool *pool, id object) {
else if (pool == NULL)
return [object autorelease];
else {
- apr_pool_cleanup_register(*pool, object, &CYPoolRelease_, &apr_pool_cleanup_null);
+ pool->atexit(CYPoolRelease_);
return object;
}
}
/* }}} */
/* Objective-C Strings {{{ */
const char *CYPoolCString(CYPool &pool, JSContextRef context, NSString *value) {
- if (pool == NULL)
- return [value UTF8String];
- else {
- size_t size([value maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1);
- char *string(new(pool) char[size]);
- if (![value getCString:string maxLength:size encoding:NSUTF8StringEncoding])
- throw CYJSError(context, "[NSString getCString:maxLength:encoding:] == NO");
- return string;
- }
+ size_t size([value maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1);
+ char *string(new(pool) char[size]);
+ if (![value getCString:string maxLength:size encoding:NSUTF8StringEncoding])
+ throw CYJSError(context, "[NSString getCString:maxLength:encoding:] == NO");
+ return string;
}
JSStringRef CYCopyJSString(JSContextRef context, NSString *value) {
name = property_getName(property);
const char *attributes(property_getAttributes(property));
- for (char *state, *token(apr_strtok(pool_.strdup(attributes), ",", &state)); token != NULL; token = apr_strtok(NULL, ",", &state)) {
+ for (char *token(pool_.strdup(attributes)), *next; token != NULL; token = next) {
+ if ((next = strchr(token, ',')) != NULL)
+ *next++ = '\0';
switch (*token) {
case 'R': readonly = true; break;
case 'C': copy = true; break;
};
#endif
-#ifndef __APPLE__
@interface CYWebUndefined : NSObject {
}
@end
#define WebUndefined CYWebUndefined
-#endif
/* Bridge: CYJSObject {{{ */
@interface CYJSObject : NSMutableDictionary {