// Copyright (C) 2002-2003 Gideon May (gideon@computer.org) // // Permission to copy, use, sell and distribute this software is granted // provided this copyright notice appears in all copies. // Permission to modify the code and to distribute modified code is granted // provided this copyright notice appears in all copies, and a notice // that the code was modified is included with the copyright notice. // // This software is provided "as is" without express or implied warranty, // and with no claim as to its suitability for any purpose. // #ifndef PYOSG_STATE_ATTRIBUTE #define PYOSG_STATE_ATTRIBUTE 1 #include "held_ptr.hpp" #include #include #include #include namespace PyOSG { using namespace boost::python; typedef class_, bases, boost::noncopyable > class_StateAttribute; extern class_StateAttribute * StateAttributeClass; template void register_castStateAttribute(const char * name, F f) { if (StateAttributeClass) { StateAttributeClass->def(name, f, boost::python::return_value_policy()); } } } #define DEFINE_STATEATTRIBUTE_CAST(NAME) osg::NAME * as##NAME(osg::StateAttribute * self) { return dynamic_cast(self); } #define REGISTER_STATEATTRIBUTE_CAST(NAME) register_castStateAttribute("as" #NAME, &as##NAME); #endif