[wpdev-commits] wolfpack/python char.cpp,1.183,1.184
Brought to you by:
rip,
thiagocorrea
From: Jorge P. <ke...@us...> - 2004-08-26 00:51:22
|
Update of /cvsroot/wpdev/wolfpack/python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11736 Modified Files: char.cpp Log Message: Create-once for python objects: char.account, char.region, char.socket, char.skill, char.skillcap, char.skilllock. Index: char.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/python/char.cpp,v retrieving revision 1.183 retrieving revision 1.184 diff -C2 -d -r1.183 -r1.184 *** char.cpp 25 Aug 2004 17:01:33 -0000 1.183 --- char.cpp 26 Aug 2004 00:51:11 -0000 1.184 *************** *** 59,62 **** --- 59,69 ---- PyObject_HEAD; P_CHAR pChar; + + PyObject * py_account; + PyObject * py_region; + PyObject * py_socket; + PyObject * py_skill; + PyObject * py_skillcap; + PyObject * py_skilllock; } wpChar; *************** *** 76,79 **** --- 83,100 ---- } + + + static void wpChar_Dealloc( wpChar * self ) + { + Py_XDECREF( self->py_account ); + Py_XDECREF( self->py_region ); + Py_XDECREF( self->py_socket ); + Py_XDECREF( self->py_skill ); + Py_XDECREF( self->py_skillcap ); + Py_XDECREF( self->py_skilllock); + + wpDealloc( (PyObject*) self ); + } + /*! The typedef for Wolfpack Python chars *************** *** 86,91 **** sizeof( wpCharType ), 0, ! // FreeCharObject, ! wpDealloc, 0, ( getattrfunc ) wpChar_getAttr, --- 107,111 ---- sizeof( wpCharType ), 0, ! ( destructor ) wpChar_Dealloc, 0, ( getattrfunc ) wpChar_getAttr, *************** *** 131,134 **** --- 151,156 ---- }; + + PyObject* PyGetCharObject( P_CHAR pChar ) { *************** *** 141,144 **** --- 163,174 ---- wpChar* returnVal = PyObject_New( wpChar, &wpCharType ); returnVal->pChar = pChar; + + returnVal->py_account = NULL; + returnVal->py_region = NULL; + returnVal->py_socket = NULL; + returnVal->py_skill = NULL; + returnVal->py_skillcap = NULL; + returnVal->py_skilllock = NULL; + return ( PyObject * ) returnVal; } *************** *** 2482,2486 **** } else if ( !strcmp( "region", name ) ) ! return PyGetRegionObject( self->pChar->region() ); /* --- 2512,2521 ---- } else if ( !strcmp( "region", name ) ) ! { ! if ( !self->py_region ) ! self->py_region = PyGetRegionObject( self->pChar->region() ); ! Py_INCREF( self->py_region ); ! return self->py_region; ! } /* *************** *** 2496,2500 **** Py_RETURN_NONE; } ! return PyGetAccountObject( player->account() ); } /* --- 2531,2538 ---- Py_RETURN_NONE; } ! if ( !self->py_account ) ! self->py_account = PyGetAccountObject( player->account() ); ! Py_INCREF( self->py_account ); ! return self->py_account; } /* *************** *** 2511,2515 **** Py_RETURN_NONE; } ! return PyGetSocketObject( player->socket() ); } /* --- 2549,2556 ---- Py_RETURN_NONE; } ! if ( !self->py_socket ) ! self->py_socket = PyGetSocketObject( player->socket() ); ! Py_INCREF( self->py_socket ); ! return self->py_socket; } /* *************** *** 2519,2526 **** else if ( !strcmp( "skill", name ) ) { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 0; ! return ( PyObject * ) ( skills ); } --- 2560,2572 ---- else if ( !strcmp( "skill", name ) ) { ! if ( !self->py_skill ) ! { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 0; ! self->py_skill = (PyObject *) skills; ! } ! Py_INCREF( self->py_skill ); ! return self->py_skill; } *************** *** 2531,2538 **** else if ( !strcmp( "skillcap", name ) ) { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 1; ! return ( PyObject * ) ( skills ); } /* --- 2577,2589 ---- else if ( !strcmp( "skillcap", name ) ) { ! if ( !self->py_skillcap ) ! { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 1; ! self->py_skillcap = (PyObject *) skills; ! } ! Py_INCREF( self->py_skillcap ); ! return self->py_skillcap; } /* *************** *** 2542,2549 **** else if ( !strcmp( "skilllock", name ) ) { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 2; ! return ( PyObject * ) ( skills ); } /* --- 2593,2605 ---- else if ( !strcmp( "skilllock", name ) ) { ! if ( !self->py_skilllock ) ! { ! wpSkills* skills = PyObject_New( wpSkills, &wpSkillsType ); ! skills->pChar = self->pChar; ! skills->type = 2; ! self->py_skilllock = (PyObject *) skills; ! } ! Py_INCREF( self->py_skilllock ); ! return self->py_skilllock; } /* *************** *** 2595,2611 **** PyList_SetItem( list, i, PyString_FromString( scripts[i].latin1() ) ); return list; - /* - \rproperty char.npc True if this character is a npc, false otherwise. - This property is exclusive to python scripts and overrides normal properties with the same name. - */ } else if ( !strcmp( "npc", name ) ) { return self->pChar->objectType() == enNPC ? PyTrue() : PyFalse(); - /* - \rproperty char.player True if this character is a player, false otherwise. - This property is exclusive to python scripts and overrides normal properties with the same name. - */ } else if ( !strcmp( "player", name ) ) { --- 2651,2667 ---- PyList_SetItem( list, i, PyString_FromString( scripts[i].latin1() ) ); return list; } + /* + \rproperty char.npc True if this character is a npc, false otherwise. + This property is exclusive to python scripts and overrides normal properties with the same name. + */ else if ( !strcmp( "npc", name ) ) { return self->pChar->objectType() == enNPC ? PyTrue() : PyFalse(); } + /* + \rproperty char.player True if this character is a player, false otherwise. + This property is exclusive to python scripts and overrides normal properties with the same name. + */ else if ( !strcmp( "player", name ) ) { |