bool ParticleParser::put(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) { if(xmlHasProp(cur, (const xmlChar *) "file")) { const char* fname =(const char*)(xmlGetProp(cur, (const xmlChar *) "file")); string pformat = getExtension(fname); if(pformat == "xml") { XMLParticleParser aHandle(ref_); return aHandle.put(fname); } else { WARNMSG("Using old formats") ifstream fin(fname); if(fin) { ParticleInputFactory::createParticle(ref_,fin); } else { ERRORMSG("File " << fname << "is not found."); } return true; } } XMLParticleParser aHandle(ref_); aHandle.put(doc,ns,cur); return false; }
virtual void fire() { boost::python::handle<> aHandle( PyEval_EvalCode( reinterpret_cast< PyCodeObject* >( theCompiledExpression.get() ), theGlobalNamespace.ptr(), theLocalNamespace.ptr() ) ); boost::python::object aResultObject( aHandle ); // do not use extract<double> for efficiency if( ! PyFloat_Check( aResultObject.ptr() ) ) { THROW_EXCEPTION_INSIDE( SimulationError, asString() + ": " "The expression gave a non-float object." ); } const Real aFlux( PyFloat_AS_DOUBLE( aResultObject.ptr() ) ); setFlux( aFlux ); }