X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/3dca7758421664a838c54b273bd9221f02072045..b5130310e64d10370f0ed36f20ce24ad3c84dc16:/lib/sod.h diff --git a/lib/sod.h b/lib/sod.h index efac06b..dc85843 100644 --- a/lib/sod.h +++ b/lib/sod.h @@ -7,7 +7,7 @@ /*----- Licensing notice --------------------------------------------------* * - * This file is part of the Sensble Object Design, an object system for C. + * This file is part of the Sensible Object Design, an object system for C. * * The SOD Runtime Library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License as @@ -32,6 +32,20 @@ extern "C" { #endif +/*----- Preliminary utilities ---------------------------------------------*/ + +/* --- @SOD__CAR@ --- * + * + * Arguments: @...@ = a nonempty list of arguments + * + * Returns: The first argument only. + */ + +#if __STDC_VERSION__ >= 199901 +# define SOD__CAR(...) SOD__CARx(__VA_LIST__, _) +# define SOD__CARx(a, ...) a +#endif + /*----- Header files ------------------------------------------------------*/ #include @@ -125,25 +139,13 @@ struct sod_chain { ((struct cls##__ilayout *) \ ((char *)(obj) - offsetof(struct cls##__ilayout, chead))) -/* --- @SOD_CAR@ --- * - * - * Arguments: @...@ = a nonempty list of arguments - * - * Returns: The first argument only. - */ - -#if __STDC_VERSION__ >= 199901 -# define SOD_CAR(...) SOD__CARx(__VA_LIST__, _) -# define SOD__CARx(a, ...) a -#endif - /*----- Utility macros ----------------------------------------------------*/ /* --- @SOD_CLASSOF@ --- * * * Arguments: @p@ = pointer to an instance chain * - * Returns: A pointer to the instance's class, as a const SodClass. + * Returns: A pointer to the instance's class, as a @const SodClass *@. */ #define SOD_CLASSOF(obj) ((const SodClass *)(obj)->_vt->_class)