class CYPool;
struct CYTypedIdentifier;
+struct CYTypedParameter;
namespace sig {
virtual ffi_type *GetFFI(CYPool &pool) const = 0;
virtual void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const = 0;
virtual JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize = false, JSObjectRef owner = NULL) const = 0;
-
- virtual size_t Translate(Type *&type) const {
- return _not(size_t);
- }
};
template <typename Type_>
ffi_type *GetFFI(CYPool &pool) const override;
void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
JSValueRef FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const override;
-
- size_t Translate(Type *&type) const override {
- type = &this->type;
- return size;
- }
};
struct Object :
Type
{
Signature signature;
+
+ CYTypedIdentifier *Decode(CYPool &pool) const override;
+ virtual CYTypedIdentifier *Modify(CYPool &pool, CYTypedIdentifier *result, CYTypedParameter *parameters) const = 0;
};
struct Function :
Callable
{
+ bool variadic;
+
+ Function(bool variadic) :
+ variadic(variadic)
+ {
+ }
+
Function *Copy(CYPool &pool, const char *name = NULL) const override;
const char *Encode(CYPool &pool) const override;
- CYTypedIdentifier *Decode(CYPool &pool) const override;
+ CYTypedIdentifier *Modify(CYPool &pool, CYTypedIdentifier *result, CYTypedParameter *parameters) const override;
ffi_type *GetFFI(CYPool &pool) const override;
void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;
const char *Encode(CYPool &pool) const override;
CYTypedIdentifier *Decode(CYPool &pool) const override;
+ CYTypedIdentifier *Modify(CYPool &pool, CYTypedIdentifier *result, CYTypedParameter *parameters) const override;
ffi_type *GetFFI(CYPool &pool) const override;
void PoolFFI(CYPool *pool, JSContextRef context, ffi_type *ffi, void *data, JSValueRef value) const override;