+;;;; Signal registration
+
+(defbinding %signal-newv (name itype flags return-type param-types)
+ unsigned-int
+ ((signal-name-to-string name) string)
+ (itype gtype)
+ (flags signal-flags)
+ (nil null) ; class closure
+ (nil null) ; accumulator
+ (nil null) ; accumulator data
+ (nil null) ; c marshaller
+ (return-type gtype)
+ ((length param-types) unsigned-int)
+ (param-types (vector gtype)))
+
+(defun signal-new (name itype flags return-type param-types)
+ (when (zerop (signal-lookup name itype))
+ (%signal-newv name itype flags return-type param-types)))
+