From 8248ce3d66a19f77ffe10ded4b922cf0606f47a4 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Sun, 20 Apr 2003 02:36:20 +0000 Subject: "" svn path=/trunk/; revision=579 --- externals/grill/flext/source/fldefs_attrcb.h | 147 +++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 externals/grill/flext/source/fldefs_attrcb.h (limited to 'externals/grill/flext/source/fldefs_attrcb.h') diff --git a/externals/grill/flext/source/fldefs_attrcb.h b/externals/grill/flext/source/fldefs_attrcb.h new file mode 100644 index 00000000..4e2fc700 --- /dev/null +++ b/externals/grill/flext/source/fldefs_attrcb.h @@ -0,0 +1,147 @@ +/* + +flext - C++ layer for Max/MSP and pd (pure data) externals + +Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "license.txt," in this distribution. + +*/ + +/*! \file fldefs_attrcb.h + \brief This file contains all #defines for actual usage + +*/ + +#ifndef __FLEXT_DEFS_ATTRCB_H +#define __FLEXT_DEFS_ATTRCB_H + + + +/*! \brief Declare a attribute set function + \internal +*/ +#define FLEXT_CALLSET_(FUN,TP) \ +static bool FLEXT_SET_PRE(FUN)(flext_base *c,TP &arg) \ +{ FLEXT_CAST(c)->FUN(arg); return true; } + +/*! \brief Declare a attribute get function + \internal +*/ +#define FLEXT_CALLGET_(FUN,TP) \ +static bool FLEXT_GET_PRE(FUN)(flext_base *c,TP &arg) \ +{ FLEXT_CAST(c)->FUN(arg); return true; } + + + +/*! \defgroup FLEXT_DA_CALLSET Definition of attribute set handlers + @{ +*/ + +//! Declare a set function for a float attribute +#define FLEXT_CALLSET_F(SFUN) \ +\ +FLEXT_CALLSET_(SFUN,float) + +//! Declare a set function for an integer attribute +#define FLEXT_CALLSET_I(SFUN) \ +\ +FLEXT_CALLSET_(SFUN,int) + +//! Declare a set function for a boolean attribute +#define FLEXT_CALLSET_B(FUN) \ +static bool FLEXT_SET_PRE(FUN)(flext_base *c,int &arg) \ +{ bool b = arg != 0; FLEXT_CAST(c)->FUN(b); return true; } + +//! Declare a set function for an enum attribute +#define FLEXT_CALLSET_E(SFUN,TP) \ +\ +FLEXT_CALLSET_(SFUN,TP) + +//! Declare a set function for a symbol attribute +#define FLEXT_CALLSET_S(FUN) \ +static bool FLEXT_SET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \ +{ FLEXT_CAST(c)->FUN(arg); return true; } + +//! Declare a set function for a variable list attribute +#define FLEXT_CALLSET_V(FUN) \ +static bool FLEXT_SET_PRE(FUN)(flext_base *c,AtomList *&arg) \ +{ FLEXT_CAST(c)->FUN(*arg); return true; } + +//! @} FLEXT_DA_CALLSET + +/*! \defgroup FLEXT_DA_CALLGET Definition of attribute get handlers + @{ +*/ + +//! Declare a get function for a float attribute +#define FLEXT_CALLGET_F(GFUN) \ +\ +FLEXT_CALLGET_(GFUN,float) + +//! Declare a get function for an integer attribute +#define FLEXT_CALLGET_I(GFUN) \ +\ +FLEXT_CALLGET_(GFUN,int) + +//! Declare a get function for a boolean attribute +#define FLEXT_CALLGET_B(FUN) \ +static bool FLEXT_GET_PRE(FUN)(flext_base *c,int &arg) \ +{ bool b; FLEXT_CAST(c)->FUN(b); arg = b?1:0; return true; } + +//! Declare a get function for an enum attribute +#define FLEXT_CALLGET_E(GFUN,TP) \ +\ +FLEXT_CALLGET_(GFUN,TP) + +//! Declare a get function for a symbol attribute +#define FLEXT_CALLGET_S(FUN) \ +static bool FLEXT_GET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \ +{ FLEXT_CAST(c)->FUN(arg); return true; } + +//! Declare a get function for a variable list attribute +#define FLEXT_CALLGET_V(FUN) \ +static bool FLEXT_GET_PRE(FUN)(flext_base *c,AtomList *&arg) \ +{ FLEXT_CAST(c)->FUN(*arg); return true; } + +//! @} FLEXT_DA_CALLGET + + +/*! \defgroup FLEXT_DA_CALLVAR Definition of attribute transfer handlers (both get and set) + @{ +*/ + +//! Declare both get and set functions for a float attribute +#define FLEXT_CALLVAR_F(GFUN,SFUN) \ +\ +FLEXT_CALLGET_F(GFUN) FLEXT_CALLSET_F(SFUN) + +//! Declare both get and set functions for an integer attribute +#define FLEXT_CALLVAR_I(GFUN,SFUN) \ +\ +FLEXT_CALLGET_I(GFUN) FLEXT_CALLSET_I(SFUN) + +//! Declare both get and set functions for a symbol attribute +#define FLEXT_CALLVAR_S(GFUN,SFUN) \ +\ +FLEXT_CALLGET_S(GFUN) FLEXT_CALLSET_S(SFUN) + +//! Declare both get and set functions for a boolean attribute +#define FLEXT_CALLVAR_B(GFUN,SFUN) \ +\ +FLEXT_CALLGET_B(GFUN) FLEXT_CALLSET_B(SFUN) + +//! Declare both get and set functions for an enum attribute +#define FLEXT_CALLVAR_E(GFUN,SFUN,TP) \ +\ +FLEXT_CALLGET_E(GFUN,TP) FLEXT_CALLSET_E(SFUN,TP) + +//! Declare both get and set functions for a variable list attribute +#define FLEXT_CALLVAR_V(GFUN,SFUN) \ +\ +FLEXT_CALLGET_V(GFUN) FLEXT_CALLSET_V(SFUN) + +//! @} FLEXT_DA_CALLVAR + + +#endif -- cgit v1.2.1