made libdata iterator types use existing function from BPY_interface - ID_asPyObject(*id)

This commit is contained in:
2007-03-02 05:47:14 +00:00
parent 585edac6d2
commit 335f3424ca
3 changed files with 87 additions and 85 deletions

View File

@@ -59,12 +59,31 @@
#include "api2_2x/Blender.h"
#include "api2_2x/Camera.h"
#include "api2_2x/Draw.h"
#include "api2_2x/Lamp.h"
#include "api2_2x/NMesh.h"
#include "api2_2x/Object.h"
#include "api2_2x/Registry.h"
#include "api2_2x/Scene.h"
/* ID_asPyObject */
#include "api2_2x/Object.h"
#include "api2_2x/Camera.h"
#include "api2_2x/Armature.h"
#include "api2_2x/Lamp.h"
/*#include "api2_2x/ CurNurb.h" do we need this ? */
#include "api2_2x/Curve.h"
#include "api2_2x/NMesh.h"
#include "api2_2x/Mesh.h"
#include "api2_2x/Lattice.h"
#include "api2_2x/Metaball.h"
#include "api2_2x/Text3d.h"
#include "api2_2x/Font.h"
#include "api2_2x/Group.h"
#include "api2_2x/World.h"
#include "api2_2x/Texture.h"
#include "api2_2x/Ipo.h"
#include "api2_2x/Text.h"
#include "api2_2x/Sound.h"
#include "api2_2x/NLA.h"
#include "api2_2x/Main.h"
#include "api2_2x/Scene.h"
/* bpy_registryDict is declared in api2_2x/Registry.h and defined
* in api2_2x/Registry.c
@@ -1334,25 +1353,68 @@ static ScriptLink *ID_getScriptlink( ID * id )
}
}
static PyObject *ID_asPyObject( ID * id )
PyObject *ID_asPyObject( ID * id )
{
switch ( MAKE_ID2( id->name[0], id->name[1] ) ) {
case ID_OB:
return Object_CreatePyObject( ( Object * ) id );
case ID_LA:
return Lamp_CreatePyObject( ( Lamp * ) id );
case ID_CA:
return Camera_CreatePyObject( ( Camera * ) id );
case ID_MA:
return Material_CreatePyObject( ( Material * ) id );
case ID_WO:
return World_CreatePyObject( ( World * ) id );
case ID_SCE:
return Scene_CreatePyObject( ( Scene * ) id );
default:
Py_INCREF( Py_None );
return Py_None;
return Scene_CreatePyObject( ( Scene *) id );
break;
case ID_OB:
return Object_CreatePyObject( (Object *) id );
break;
case ID_ME:
return Mesh_CreatePyObject( (Mesh *)id, NULL );
break;
case ID_CU: /*todo, support curnurbs?*/
return Curve_CreatePyObject((Curve *)id);
break;
case ID_MB:
return Metaball_CreatePyObject((MetaBall *)id);
break;
case ID_MA:
return Material_CreatePyObject((Material *)id);
break;
case ID_TE:
return Texture_CreatePyObject((Tex *)id);
break;
case ID_IM:
return Image_CreatePyObject((Image *)id);
break;
case ID_LT:
return Lattice_CreatePyObject((Lattice *)id);
break;
case ID_LA:
return Lamp_CreatePyObject((Lamp *)id);
break;
case ID_CA:
return Camera_CreatePyObject((Camera *)id);
break;
case ID_IP:
return Ipo_CreatePyObject((Ipo *)id);
break;
case ID_WO:
return World_CreatePyObject((World *)id);
break;
case ID_VF:
return Font_CreatePyObject((VFont *)id);
break;
case ID_TXT:
return Text_CreatePyObject((Text *)id);
break;
case ID_SO:
return Sound_CreatePyObject((bSound *)id);
break;
case ID_GR:
return Group_CreatePyObject((Group *)id);
break;
case ID_AR:
return Armature_CreatePyObject((bArmature *)id);
break;
case ID_AC:
return Action_CreatePyObject((bAction *)id);
break;
}
Py_RETURN_NONE;
}
int BPY_has_onload_script( void )

View File

@@ -67,7 +67,7 @@
#include "BIF_drawtext.h" /* unlink_text */
/* python types */
#include "../BPY_extern.h" /* clearing scriptlinks */
#include "../BPY_extern.h" /* clearing scriptlinks and ID_asPyObject */
#include "gen_utils.h"
@@ -101,69 +101,6 @@ static PyObject *MainSeq_CreatePyObject( Link *iter, int type )
return (PyObject *)seq;
}
static PyObject *Link_as_BPyData( Link *link, short type )
{
switch (type) {
case ID_SCE:
return Scene_CreatePyObject( ( Scene *) link );
break;
case ID_OB:
return Object_CreatePyObject( (Object *) link );
break;
case ID_ME:
return Mesh_CreatePyObject( (Mesh *)link, NULL );
break;
case ID_CU: /*todo, support curnurbs?*/
return Curve_CreatePyObject((Curve *)link);
break;
case ID_MB:
return Metaball_CreatePyObject((MetaBall *)link);
break;
case ID_MA:
return Material_CreatePyObject((Material *)link);
break;
case ID_TE:
return Texture_CreatePyObject((Tex *)link);
break;
case ID_IM:
return Image_CreatePyObject((Image *)link);
break;
case ID_LT:
return Lattice_CreatePyObject((Lattice *)link);
break;
case ID_LA:
return Lamp_CreatePyObject((Lamp *)link);
break;
case ID_CA:
return Camera_CreatePyObject((Camera *)link);
break;
case ID_IP:
return Ipo_CreatePyObject((Ipo *)link);
break;
case ID_WO:
return World_CreatePyObject((World *)link);
break;
case ID_VF:
return Font_CreatePyObject((VFont *)link);
break;
case ID_TXT:
return Text_CreatePyObject((Text *)link);
break;
case ID_SO:
return Sound_CreatePyObject((bSound *)link);
break;
case ID_GR:
return Group_CreatePyObject((Group *)link);
break;
case ID_AR:
return Armature_CreatePyObject((bArmature *)link);
break;
case ID_AC:
return Action_CreatePyObject((bAction *)link);
break;
}
Py_RETURN_NONE;
}
static int MainSeq_len( BPy_MainSeq * self )
{
@@ -221,7 +158,7 @@ static PyObject * MainSeq_subscript(BPy_MainSeq * self, PyObject *key)
(lib && use_lib && id->lib && (!strcmp( id->lib->name, lib))) /* only external lib */
)
{
return Link_as_BPyData((Link *)id, self->type);
return ID_asPyObject(id);
}
}
}
@@ -280,7 +217,7 @@ static PyObject *MainSeq_nextIter( BPy_MainSeq * self )
"iterator at end" );
}
object = Link_as_BPyData(self->iter, self->type);
object = ID_asPyObject((ID *)self->iter);
link= self->iter->next;
self->iter= link;

View File

@@ -38,6 +38,9 @@
/* The Main PyType Object defined in Main.c */
extern PyTypeObject MainSeq_Type;
/* BPY_interface.c */
extern PyObject *ID_asPyObject( ID * id );
#define BPy_MainSeq_Check(v) \
((v)->ob_type == &MainSeq_Type)