PyObject *pFunc = PyObject_GetAttrString( pModule, const_cast< char* >( sFunction.latin1() ) ); if( pFunc && PyCallable_Check( pFunc ) ) {  PyObject *p_args = PyTuple_New( 2 ); if( isItemSerial( destSer ) ) PyTuple_SetItem( p_args, 0, PyGetItemObject( FindItemBySerial( destSer ) ) ); else if( isCharSerial( destSer ) ) PyTuple_SetItem( p_args, 0, PyGetCharObject( FindCharBySerial( destSer ) ) ); else PyTuple_SetItem( p_args, 0, PyFalse );  PyTuple_SetItem( p_args, 1, args );  PyEval_CallObject( pFunc, p_args );  if( PyErr_Occurred() ) PyErr_Print(); }
PyEval_CallObject( pFunc, args );  if( PyErr_Occurred() ) PyErr_Print();
	void Expire()	{		// Get everything before the last dot		if( functionName.contains( "." ) )		{			// Find the last dot			INT32 position = functionName.findRev( "." );			QString sModule = functionName.left( position );			QString sFunction = functionName.right( functionName.length() - (position+1) );			PyObject *pModule = PyImport_ImportModule( const_cast< char* >( sModule.latin1() ) );			if( pModule )			{				PyObject *pFunc = PyObject_GetAttrString( pModule, const_cast< char* >( sFunction.latin1() ) );				if( pFunc && PyCallable_Check( pFunc ) )				{					// Create our Argument list					PyObject *p_args = PyTuple_New( 2 );					if( isItemSerial( destSer ) )						PyTuple_SetItem( p_args, 0, PyGetItemObject( FindItemBySerial( destSer ) ) );					else if( isCharSerial( destSer ) )						PyTuple_SetItem( p_args, 0, PyGetCharObject( FindCharBySerial( destSer ) ) );					else						PyTuple_SetItem( p_args, 0, PyFalse );					PyTuple_SetItem( p_args, 1, args );					PyEval_CallObject( pFunc, p_args );										if( PyErr_Occurred() )						PyErr_Print();				}			}		}		tuple_decref( args );	}