+
+
+;;; Pseudo type for structs which are inlined in other objects
+
+(defmethod size-of ((type (eql 'inlined)) &rest args)
+ (declare (ignore type))
+ (proxy-instance-size (first args)))
+
+(defmethod reader-function ((type (eql 'inlined)) &rest args)
+ (declare (ignore type))
+ (destructuring-bind (class) args
+ #'(lambda (location &optional (offset 0))
+ (ensure-proxy-instance class
+ (reference-foreign class (sap+ location offset))))))
+
+(defmethod destroy-function ((type (eql 'inlined)) &rest args)
+ (declare (ignore args))
+ #'(lambda (location &optional (offset 0))
+ (declare (ignore location offset))))
+
+(export 'inlined)