// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. #ifndef INCLUDED_GRAS_ELEMENT_I #define INCLUDED_GRAS_ELEMENT_I %module (package="gras") GRAS_Element %{ #include %} namespace gras { %ignore Element::set_container; %ignore Callable::x; %ignore Callable::register_call; } //////////////////////////////////////////////////////////////////////// // remove base class warning -- boost::shared_ptr //////////////////////////////////////////////////////////////////////// #pragma SWIG nowarn=401 //////////////////////////////////////////////////////////////////////// // Export swig element comprehension //////////////////////////////////////////////////////////////////////// %include %import %include %include %include %include %include //////////////////////////////////////////////////////////////////////// // Operator overloads for Element //////////////////////////////////////////////////////////////////////// %pythoncode %{ from PMC import * %} %extend gras::Element { %insert("python") %{ def x(self, name, *args): pmcargs = PMC_M(list(args)) pmcret = self._handle_call(name, pmcargs) return pmcret() def __getattr__(self, name): return lambda *args: self.x(name, *args) def __eq__(self, rhs): if not isinstance(rhs, Element): return False return self.equals(rhs) def __str__(self): return self.to_string() %} } #endif /*INCLUDED_GRAS_ELEMENT_I*/