X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/7d21069e791a4d164c1eb1fc4f1ae661fe08ffbe..7b78999c5e8c9e3f06f6ad565dbafcb676747249:/lib/sod.h?ds=sidebyside diff --git a/lib/sod.h b/lib/sod.h index 594e343..919b927 100644 --- a/lib/sod.h +++ b/lib/sod.h @@ -168,6 +168,19 @@ struct sod_chain { #define SOD_CONVERT(cls, obj) ((cls *)sod_convert(cls##__class, (obj))) +/* --- @SOD_DECL@ --- * + * + * Arguments: @cls_@ = a class type name + * @var_@ = a variable name + * + * Use: Declare @var_@ as a pointer to an initialized instance of + * @cls_@ with automatic lifetime. + */ + +#define SOD_DECL(cls_, var_) \ + struct cls_##__ilayout var_##__layout; \ + cls_ *var_ = cls_##__class->cls.init(&var_##__layout) + /*----- Functions provided ------------------------------------------------*/ /* --- @sod_subclassp@ --- *