+static JSValueRef Type_callAsFunction_constant(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.constant");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type(*internal->type_);
+ type.flags |= JOC_TYPE_CONST;
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_long(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.long");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type(*internal->type_);
+
+ switch (type.primitive) {
+ case sig::short_P: type.primitive = sig::int_P; break;
+ case sig::int_P: type.primitive = sig::long_P; break;
+ case sig::long_P: type.primitive = sig::longlong_P; break;
+ default: throw CYJSError(context, "invalid type argument to Type.long");
+ }
+
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_short(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.short");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type(*internal->type_);
+
+ switch (type.primitive) {
+ case sig::int_P: type.primitive = sig::short_P; break;
+ case sig::long_P: type.primitive = sig::int_P; break;
+ case sig::longlong_P: type.primitive = sig::long_P; break;
+ default: throw CYJSError(context, "invalid type argument to Type.short");
+ }
+
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_signed(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.signed");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type(*internal->type_);
+
+ switch (type.primitive) {
+ case sig::char_P: case sig::uchar_P: type.primitive = sig::char_P; break;
+ case sig::short_P: case sig::ushort_P: type.primitive = sig::short_P; break;
+ case sig::int_P: case sig::uint_P: type.primitive = sig::int_P; break;
+ case sig::long_P: case sig::ulong_P: type.primitive = sig::long_P; break;
+ case sig::longlong_P: case sig::ulonglong_P: type.primitive = sig::longlong_P; break;
+ default: throw CYJSError(context, "invalid type argument to Type.signed");
+ }
+
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_unsigned(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.unsigned");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type(*internal->type_);
+
+ switch (type.primitive) {
+ case sig::char_P: case sig::uchar_P: type.primitive = sig::uchar_P; break;
+ case sig::short_P: case sig::ushort_P: type.primitive = sig::ushort_P; break;
+ case sig::int_P: case sig::uint_P: type.primitive = sig::uint_P; break;
+ case sig::long_P: case sig::ulong_P: type.primitive = sig::ulong_P; break;
+ case sig::longlong_P: case sig::ulonglong_P: type.primitive = sig::ulonglong_P; break;
+ default: throw CYJSError(context, "invalid type argument to Type.unsigned");
+ }
+
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_functionWith(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
+ return Type_callAsFunction_$With(context, object, _this, count, arguments, sig::function_P, exception);
+}
+
+static JSValueRef Type_callAsFunction_pointerTo(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 0)
+ throw CYJSError(context, "incorrect number of arguments to Type.pointerTo");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ sig::Type type;
+ type.name = NULL;
+
+ if (internal->type_->primitive == sig::char_P) {
+ type.flags = internal->type_->flags;
+ type.primitive = sig::string_P;
+ type.data.data.type = NULL;
+ type.data.data.size = 0;
+ } else {
+ type.flags = 0;
+ type.primitive = sig::pointer_P;
+ type.data.data.type = internal->type_;
+ type.data.data.size = 0;
+ }
+
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction_withName(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+ if (count != 1)
+ throw CYJSError(context, "incorrect number of arguments to Type.withName");
+ Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
+
+ CYPool pool;
+ const char *name(CYPoolCString(pool, context, arguments[0]));
+
+ sig::Type type(*internal->type_);
+ type.name = name;
+ return CYMakeType(context, &type);
+} CYCatch(NULL) }
+
+static JSValueRef Type_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {