// g2p2g_smob header file // //////////////////////////////////////////////////////////////////////// #ifndef G2P2G_SMOB_H #define G2P2G_SMOB_H //////////////////////////////////////////////////////////////////////// // // Copyright (C) 2008 Omer Zak. // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this library, in a file named COPYING; if not, write to the // Free Software Foundation, Inc., 59 Temple Place, Suite 330, // Boston, MA 02111-1307 USA // // For licensing issues, contact . // //////////////////////////////////////////////////////////////////////// // // Declares the G2P2G_SMOB type, which encapsulates g2p and p2g conversion // routines, for use in defining templates for converting arguments and // results of Python functions. #include // Must be first header file #include // The following are the ones to be used in validating conversion // templates. extern int IS_G2P_SMOBP(SCM sobj); extern int IS_P2G_SMOBP(SCM sobj); typedef PyObject *(*g2p_func_ptr)(SCM,SCM); extern g2p_func_ptr get_g2p_function(SCM smob); // The name must start with 'g' which is used as part of the // real name (which by convention always starts with 'g2p_'). // The function does NOT take over ownership of the name, so the // caller must ensure it continues to exist. // // This function creates a g2p2g_smob pointing at the g2p function, // and also defines (in the current environment) a symbol // whose value is the g2p2g_smob. extern SCM bind_g2p_function(g2p_func_ptr, const char* name); typedef SCM (*p2g_func_ptr)(PyObject *,SCM); extern p2g_func_ptr get_p2g_function(SCM smob); // The name must start with 'p' which is used as part of the // real name (which by convention always starts with 'p2g_'). // The function does NOT take over ownership of the name, so the // caller must ensure it continues to exist. // // This function creates a g2p2g_smob pointing at the p2g function, // and also defines (in the current environment) a symbol // whose value is the g2p2g_smob. extern SCM bind_p2g_function(p2g_func_ptr, const char* name); extern void init_g2p2g_smob_type(void); //////////////////////////////////////////////////////////////////////// // The following functions are defined in autogenerated *.inc files. extern void bind_g2p_functions(void); extern void bind_p2g_functions(void); #endif /* G2P2G_SMOB_H */ //////////////////////////////////////////////////////////////////////// // End of g2p2g_smob.h