00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __HOM_Defines_h__
00017 #define __HOM_Defines_h__
00018
00019 #include <UT/UT_Assert.h>
00020
00021
00022
00023
00024 #if UT_ASSERT_LEVEL >= 2
00025 #define HOM_DEBUG
00026 #endif
00027
00028 #ifdef SWIG
00029 #define SWIGOUT(x) x
00030 #else
00031 #define SWIGOUT(x)
00032 #endif
00033
00034 #if defined(SWIG) && defined(SWIGPYTHON)
00035 #define SWIGPYTHONOUT(x) x
00036 #else
00037 #define SWIGPYTHONOUT(x)
00038 #endif
00039
00040 #ifdef SWIG
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 %{
00056 #ifdef SWIGPYTHON
00057 typedef PyObject *InterpreterObject;
00058 #endif
00059 %}
00060
00061
00062
00063 typedef PyObject *InterpreterObject;
00064
00065
00066
00067 %{
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 template <typename T> InterpreterObject
00079 HOMconvertValueForInterpreter(const T &value, int own);
00080
00081
00082 template <> InterpreterObject
00083 HOMconvertValueForInterpreter<int>(const int& value, int )
00084 { return SWIG_From_int(value); }
00085
00086 template <> InterpreterObject
00087 HOMconvertValueForInterpreter<float>(const float& value, int )
00088 { return SWIG_From_float(value); }
00089
00090 template <> InterpreterObject
00091 HOMconvertValueForInterpreter<double>(const double& value, int )
00092 { return SWIG_From_double(value); }
00093
00094 template <> InterpreterObject
00095 HOMconvertValueForInterpreter<std::string>(
00096 const std::string& value, int )
00097 { return SWIG_From_std_string(value); }
00098
00099
00100
00101 template <> InterpreterObject
00102 HOMconvertValueForInterpreter<HOM_Node*>(HOM_Node *const &node, int own)
00103 {
00104 OBJ_OBJECT_TYPE objtype;
00105 OP_OpTypeId optypeid;
00106
00107 if (!node)
00108 return SWIG_NewPointerObj(node, SWIGTYPE_p_HOM_Node, own);
00109
00110 optypeid = (OP_OpTypeId)node->opTypeIdAsInt();
00111 switch (optypeid)
00112 {
00113 case OBJ_OPTYPE_ID:
00114
00115
00116
00117
00118 objtype = (OBJ_OBJECT_TYPE)node->objTypeAsInt();
00119 return SWIG_NewPointerObj(
00120 (void*)dynamic_cast<const HOM_ObjNode* const>(node),
00121 SWIGTYPE_p_HOM_ObjNode, own);
00122
00123 case SOP_OPTYPE_ID:
00124
00125
00126
00127
00128 return SWIG_NewPointerObj(
00129 (void*)dynamic_cast<const HOM_SopNode* const>(node),
00130 SWIGTYPE_p_HOM_SopNode, own);
00131
00132 case CHOP_OPTYPE_ID:
00133
00134
00135
00136
00137 return SWIG_NewPointerObj(
00138 (void*)dynamic_cast<const HOM_ChopNode* const>(node),
00139 SWIGTYPE_p_HOM_ChopNode, own);
00140
00141 case COP2_OPTYPE_ID:
00142
00143
00144
00145
00146 return SWIG_NewPointerObj(
00147 (void*)dynamic_cast<const HOM_CopNode* const>(node),
00148 SWIGTYPE_p_HOM_CopNode, own);
00149
00150 case DOP_OPTYPE_ID:
00151
00152
00153
00154
00155 return SWIG_NewPointerObj(
00156 (void*)dynamic_cast<const HOM_DopNode* const>(node),
00157 SWIGTYPE_p_HOM_DopNode, own);
00158
00159 case POP_OPTYPE_ID:
00160
00161
00162
00163
00164 return SWIG_NewPointerObj(
00165 (void*)dynamic_cast<const HOM_PopNode* const>(node),
00166 SWIGTYPE_p_HOM_PopNode, own);
00167
00168 case POPNET_OPTYPE_ID:
00169
00170
00171
00172
00173 return SWIG_NewPointerObj(
00174 (void*)dynamic_cast<const HOM_PopNetNode* const>(node),
00175 SWIGTYPE_p_HOM_PopNetNode, own);
00176
00177 case SHOP_OPTYPE_ID:
00178
00179
00180
00181
00182 return SWIG_NewPointerObj(
00183 (void*)dynamic_cast<const HOM_ShopNode* const>(node),
00184 SWIGTYPE_p_HOM_ShopNode, own);
00185
00186 case VOPNET_OPTYPE_ID:
00187
00188
00189
00190
00191 return SWIG_NewPointerObj(
00192 (void*)dynamic_cast<const HOM_VopNetNode* const>(node),
00193 SWIGTYPE_p_HOM_VopNetNode, own);
00194
00195 case ROP_OPTYPE_ID:
00196
00197
00198
00199
00200 return SWIG_NewPointerObj(
00201 (void*)dynamic_cast<const HOM_RopNode* const>(node),
00202 SWIGTYPE_p_HOM_RopNode, own);
00203
00204 case VOP_OPTYPE_ID:
00205
00206
00207
00208
00209 return SWIG_NewPointerObj(
00210 (void*)dynamic_cast<const HOM_VopNode* const>(node),
00211 SWIGTYPE_p_HOM_VopNode, own);
00212
00213 default:
00214 break;
00215 };
00216
00217 return SWIG_NewPointerObj(node, SWIGTYPE_p_HOM_Node, own);
00218 }
00219
00220 template <> InterpreterObject
00221 HOMconvertValueForInterpreter<HOM_NodeType*>(
00222 HOM_NodeType *const &nodetype, int own)
00223 {
00224 OP_OpTypeId optypeid;
00225
00226 if (!nodetype)
00227 return SWIG_NewPointerObj(nodetype, SWIGTYPE_p_HOM_NodeType, own);
00228
00229 if( !nodetype->managerFlag() )
00230 {
00231 optypeid = (OP_OpTypeId)nodetype->opTypeIdAsInt();
00232 switch (optypeid)
00233 {
00234 case SOP_OPTYPE_ID:
00235
00236
00237
00238
00239 return SWIG_NewPointerObj(
00240 (void*)dynamic_cast<const HOM_SopNodeType* const>(nodetype),
00241 SWIGTYPE_p_HOM_SopNodeType, own);
00242
00243 case SHOP_OPTYPE_ID:
00244
00245
00246
00247
00248 return SWIG_NewPointerObj(
00249 (void*)dynamic_cast<const HOM_ShopNodeType* const>(nodetype),
00250 SWIGTYPE_p_HOM_ShopNodeType, own);
00251
00252 default:
00253 break;
00254 }
00255 }
00256
00257 return SWIG_NewPointerObj(nodetype, SWIGTYPE_p_HOM_NodeType, own);
00258 }
00259
00260 template <> InterpreterObject
00261 HOMconvertValueForInterpreter<HOM_BaseKeyframe*>(
00262 HOM_BaseKeyframe *const &keyframe, int own)
00263 {
00264 if (!keyframe)
00265 return SWIG_NewPointerObj(keyframe, SWIGTYPE_p_HOM_BaseKeyframe, own);
00266
00267 if (keyframe->evaluatedType() == HOM_parmData::Float)
00268 {
00269
00270
00271
00272
00273 return SWIG_NewPointerObj(
00274 (void*)dynamic_cast<const HOM_Keyframe* const>(keyframe),
00275 SWIGTYPE_p_HOM_Keyframe, own);
00276 };
00277
00278 return SWIG_NewPointerObj(keyframe, SWIGTYPE_p_HOM_BaseKeyframe, own);
00279 }
00280
00281 template <> InterpreterObject
00282 HOMconvertValueForInterpreter<HOM_Prim*>(HOM_Prim *const &prim, int own)
00283 {
00284 if (!prim)
00285 return SWIG_NewPointerObj(prim, SWIGTYPE_p_HOM_Prim, own);
00286
00287
00288
00289
00290
00291
00292 switch (prim->type().id())
00293 {
00294 case HOM_primType::Polygon_Id:
00295 return SWIG_NewPointerObj(
00296 (void*)dynamic_cast<const HOM_Polygon* const>(prim),
00297 SWIGTYPE_p_HOM_Polygon, own);
00298
00299 case HOM_primType::NURBSCurve_Id:
00300 case HOM_primType::BezierCurve_Id:
00301 return SWIG_NewPointerObj(
00302 (void*)dynamic_cast<const HOM_Face* const>(prim),
00303 SWIGTYPE_p_HOM_Face, own);
00304
00305 case HOM_primType::Mesh_Id:
00306 case HOM_primType::NURBSSurface_Id:
00307 case HOM_primType::BezierSurface_Id:
00308 return SWIG_NewPointerObj(
00309 (void*)dynamic_cast<const HOM_Surface* const>(prim),
00310 SWIGTYPE_p_HOM_Surface, own);
00311
00312 case HOM_primType::Circle_Id:
00313 case HOM_primType::Sphere_Id:
00314 case HOM_primType::Tube_Id:
00315 return SWIG_NewPointerObj(
00316 (void*)dynamic_cast<const HOM_Quadric* const>(prim),
00317 SWIGTYPE_p_HOM_Quadric, own);
00318
00319 case HOM_primType::Volume_Id:
00320 return SWIG_NewPointerObj(
00321 (void*)dynamic_cast<const HOM_Volume* const>(prim),
00322 SWIGTYPE_p_HOM_Volume, own);
00323
00324
00325 }
00326
00327 return SWIG_NewPointerObj(prim, SWIGTYPE_p_HOM_Prim, own);
00328 }
00329
00330 template <> InterpreterObject
00331 HOMconvertValueForInterpreter<HOM_ParmTemplate*>(
00332 HOM_ParmTemplate *const &parm_template, int own)
00333 {
00334 if (!parm_template)
00335 return SWIG_NewPointerObj(
00336 parm_template, SWIGTYPE_p_HOM_ParmTemplate, own);
00337
00338
00339
00340
00341 switch (parm_template->type().id())
00342 {
00343 case HOM_parmTemplateType::Int_Id:
00344 return SWIG_NewPointerObj(
00345 (void*)dynamic_cast<const HOM_IntParmTemplate* const>(
00346 parm_template),
00347 SWIGTYPE_p_HOM_IntParmTemplate, own);
00348
00349 case HOM_parmTemplateType::Float_Id:
00350 return SWIG_NewPointerObj(
00351 (void*)dynamic_cast<const HOM_FloatParmTemplate* const>(
00352 parm_template),
00353 SWIGTYPE_p_HOM_FloatParmTemplate, own);
00354
00355 case HOM_parmTemplateType::String_Id:
00356 return SWIG_NewPointerObj(
00357 (void*)dynamic_cast<const HOM_StringParmTemplate* const>(
00358 parm_template),
00359 SWIGTYPE_p_HOM_StringParmTemplate, own);
00360
00361 case HOM_parmTemplateType::Toggle_Id:
00362 return SWIG_NewPointerObj(
00363 (void*)dynamic_cast<const HOM_ToggleParmTemplate* const>(
00364 parm_template),
00365 SWIGTYPE_p_HOM_ToggleParmTemplate, own);
00366
00367 case HOM_parmTemplateType::Menu_Id:
00368 return SWIG_NewPointerObj(
00369 (void*)dynamic_cast<const HOM_MenuParmTemplate* const>(
00370 parm_template),
00371 SWIGTYPE_p_HOM_MenuParmTemplate, own);
00372
00373 case HOM_parmTemplateType::Button_Id:
00374 return SWIG_NewPointerObj(
00375 (void*)dynamic_cast<const HOM_ButtonParmTemplate* const>(
00376 parm_template),
00377 SWIGTYPE_p_HOM_ButtonParmTemplate, own);
00378
00379 case HOM_parmTemplateType::Label_Id:
00380 return SWIG_NewPointerObj(
00381 (void*)dynamic_cast<const HOM_LabelParmTemplate* const>(
00382 parm_template),
00383 SWIGTYPE_p_HOM_LabelParmTemplate, own);
00384
00385 case HOM_parmTemplateType::Separator_Id:
00386 return SWIG_NewPointerObj(
00387 (void*)dynamic_cast<const HOM_SeparatorParmTemplate* const>(
00388 parm_template),
00389 SWIGTYPE_p_HOM_SeparatorParmTemplate, own);
00390
00391 case HOM_parmTemplateType::FolderSet_Id:
00392 return SWIG_NewPointerObj(
00393 (void*)dynamic_cast<const HOM_FolderSetParmTemplate* const>(
00394 parm_template),
00395 SWIGTYPE_p_HOM_FolderSetParmTemplate, own);
00396
00397 case HOM_parmTemplateType::Folder_Id:
00398 return SWIG_NewPointerObj(
00399 (void*)dynamic_cast<const HOM_FolderParmTemplate* const>(
00400 parm_template),
00401 SWIGTYPE_p_HOM_FolderParmTemplate, own);
00402
00403 case HOM_parmTemplateType::Ramp_Id:
00404 return SWIG_NewPointerObj(
00405 (void*)dynamic_cast<const HOM_RampParmTemplate* const>(
00406 parm_template),
00407 SWIGTYPE_p_HOM_RampParmTemplate, own);
00408 };
00409
00410 UT_ASSERT(!"Unknown parm template type");
00411 return SWIG_NewPointerObj(parm_template, SWIGTYPE_p_HOM_ParmTemplate, own);
00412 }
00413
00414 template <> InterpreterObject
00415 HOMconvertValueForInterpreter<HOM_PaneTab*>(
00416 HOM_PaneTab *const &pane_tab, int own)
00417 {
00418 if (!pane_tab)
00419 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
00420
00421
00422
00423
00424
00425 switch (pane_tab->type().id())
00426 {
00427 case HOM_paneTabType::ContextViewer_Id:
00428 return SWIG_NewPointerObj(
00429 (void*)dynamic_cast<const HOM_ContextViewer* const>(pane_tab),
00430 SWIGTYPE_p_HOM_ContextViewer, own);
00431
00432 case HOM_paneTabType::SceneViewer_Id:
00433 return SWIG_NewPointerObj(
00434 (void*)dynamic_cast<const HOM_SceneViewer* const>(pane_tab),
00435 SWIGTYPE_p_HOM_SceneViewer, own);
00436
00437 case HOM_paneTabType::CompositorViewer_Id:
00438 return SWIG_NewPointerObj(
00439 (void*)dynamic_cast<const HOM_CompositorViewer* const>(pane_tab),
00440 SWIGTYPE_p_HOM_CompositorViewer, own);
00441
00442 case HOM_paneTabType::ParticleViewer_Id:
00443 return SWIG_NewPointerObj(
00444 (void*)dynamic_cast<const HOM_ParticleViewer* const>(pane_tab),
00445 SWIGTYPE_p_HOM_ParticleViewer, own);
00446
00447 case HOM_paneTabType::NetworkEditor_Id:
00448 return SWIG_NewPointerObj(
00449 (void*)dynamic_cast<const HOM_NetworkEditor* const>(pane_tab),
00450 SWIGTYPE_p_HOM_NetworkEditor, own);
00451
00452 case HOM_paneTabType::HelpBrowser_Id:
00453 return SWIG_NewPointerObj(
00454 (void*)dynamic_cast<const HOM_HelpBrowser* const>(pane_tab),
00455 SWIGTYPE_p_HOM_HelpBrowser, own);
00456
00457 case HOM_paneTabType::IPRViewer_Id:
00458 return SWIG_NewPointerObj(
00459 (void*)dynamic_cast<const HOM_IPRViewer* const>(pane_tab),
00460 SWIGTYPE_p_HOM_IPRViewer, own);
00461
00462 case HOM_paneTabType::ChannelViewer_Id:
00463 case HOM_paneTabType::OutputViewer_Id:
00464 case HOM_paneTabType::ShaderViewer_Id:
00465 case HOM_paneTabType::Parm_Id:
00466 case HOM_paneTabType::DetailsView_Id:
00467 case HOM_paneTabType::TreeView_Id:
00468 return SWIG_NewPointerObj(
00469 (void*)dynamic_cast<const HOM_PathBasedPaneTab* const>(pane_tab),
00470 SWIGTYPE_p_HOM_PathBasedPaneTab, own);
00471
00472 case HOM_paneTabType::ChannelEditor_Id:
00473 case HOM_paneTabType::ChannelList_Id:
00474 case HOM_paneTabType::Textport_Id:
00475 case HOM_paneTabType::PythonShell_Id:
00476 case HOM_paneTabType::HandleList_Id:
00477 case HOM_paneTabType::BundleList_Id:
00478 case HOM_paneTabType::TakeList_Id:
00479 case HOM_paneTabType::ParmSpreadsheet_Id:
00480 case HOM_paneTabType::LightLinker_Id:
00481 case HOM_paneTabType::MaterialPalette_Id:
00482 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
00483 };
00484
00485 UT_ASSERT(!"Unknown pane tab type");
00486 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
00487 }
00488
00489 template <> InterpreterObject
00490 HOMconvertValueForInterpreter<
00491 std::vector<HOM_ElemPtr<HOM_NodeConnection> >*>(
00492 std::vector<HOM_ElemPtr<HOM_NodeConnection> > *const &list,
00493 int own)
00494 {
00495 return swig::from(*list);
00496 }
00497
00498 template <> InterpreterObject
00499 HOMconvertValueForInterpreter<HOM_DopData*>(HOM_DopData *const &data, int own)
00500 {
00501 const HOM_DopObject *const dop_object =
00502 dynamic_cast<const HOM_DopObject *const>(data);
00503 if (dop_object)
00504 return SWIG_NewPointerObj(
00505 (void *)dop_object, SWIGTYPE_p_HOM_DopObject, own);
00506
00507 const HOM_DopRelationship *const dop_relationship =
00508 dynamic_cast<const HOM_DopRelationship *const>(data);
00509 if (dop_relationship)
00510 return SWIG_NewPointerObj(
00511 (void *)dop_relationship, SWIGTYPE_p_HOM_DopRelationship, own);
00512
00513 return SWIG_NewPointerObj(data, SWIGTYPE_p_HOM_DopData, own);
00514 }
00515
00516
00517
00518 #define HOM_PROVIDE_SWIG_LOOKUP(type) \
00519 template <> InterpreterObject HOMconvertValueForInterpreter<type*>( \
00520 type* const& value, int own) \
00521 { return SWIG_NewPointerObj(SWIG_as_voidptr(value), \
00522 SWIGTYPE_p_ ## type, own); }
00523
00524 HOM_PROVIDE_SWIG_LOOKUP(HOM_Attrib)
00525 HOM_PROVIDE_SWIG_LOOKUP(HOM_Desktop)
00526 HOM_PROVIDE_SWIG_LOOKUP(HOM_Dialog)
00527 HOM_PROVIDE_SWIG_LOOKUP(HOM_DopRecord)
00528 HOM_PROVIDE_SWIG_LOOKUP(HOM_FloatingPanel)
00529 HOM_PROVIDE_SWIG_LOOKUP(HOM_Gallery)
00530 HOM_PROVIDE_SWIG_LOOKUP(HOM_GalleryEntry)
00531 HOM_PROVIDE_SWIG_LOOKUP(HOM_GeometrySelection)
00532 HOM_PROVIDE_SWIG_LOOKUP(HOM_GeometryViewport)
00533 HOM_PROVIDE_SWIG_LOOKUP(HOM_HDADefinition)
00534 HOM_PROVIDE_SWIG_LOOKUP(HOM_HDASection)
00535 HOM_PROVIDE_SWIG_LOOKUP(HOM_Matrix3)
00536 HOM_PROVIDE_SWIG_LOOKUP(HOM_Matrix4)
00537 HOM_PROVIDE_SWIG_LOOKUP(HOM_NetworkBox)
00538 HOM_PROVIDE_SWIG_LOOKUP(HOM_NodeBundle)
00539 HOM_PROVIDE_SWIG_LOOKUP(HOM_NodeConnection)
00540 HOM_PROVIDE_SWIG_LOOKUP(HOM_NodeGroup)
00541 HOM_PROVIDE_SWIG_LOOKUP(HOM_Pane)
00542 HOM_PROVIDE_SWIG_LOOKUP(HOM_Parm)
00543 HOM_PROVIDE_SWIG_LOOKUP(HOM_ParmTuple)
00544 HOM_PROVIDE_SWIG_LOOKUP(HOM_Point)
00545 HOM_PROVIDE_SWIG_LOOKUP(HOM_PointGroup)
00546 HOM_PROVIDE_SWIG_LOOKUP(HOM_PrimGroup)
00547 HOM_PROVIDE_SWIG_LOOKUP(HOM_Quaternion)
00548 HOM_PROVIDE_SWIG_LOOKUP(HOM_Ramp)
00549 HOM_PROVIDE_SWIG_LOOKUP(HOM_Selector)
00550 HOM_PROVIDE_SWIG_LOOKUP(HOM_Shelf)
00551 HOM_PROVIDE_SWIG_LOOKUP(HOM_ShelfSet)
00552 HOM_PROVIDE_SWIG_LOOKUP(HOM_StickyNote)
00553 HOM_PROVIDE_SWIG_LOOKUP(HOM_SubnetIndirectInput)
00554 HOM_PROVIDE_SWIG_LOOKUP(HOM_Tool)
00555 HOM_PROVIDE_SWIG_LOOKUP(HOM_Track)
00556 HOM_PROVIDE_SWIG_LOOKUP(HOM_Vector2)
00557 HOM_PROVIDE_SWIG_LOOKUP(HOM_Vector3)
00558 HOM_PROVIDE_SWIG_LOOKUP(HOM_Vector4)
00559 HOM_PROVIDE_SWIG_LOOKUP(HOM_Vertex)
00560 HOM_PROVIDE_SWIG_LOOKUP(HOM_VexContext)
00561 HOM_PROVIDE_SWIG_LOOKUP(HOM_ViewerState)
00562
00563 %}
00564
00565
00566
00567
00568
00569 %typemap(out) HOM_Prim* {
00570 $result = HOMconvertValueForInterpreter($1, $owner);
00571 }
00572
00573 %typemap(out) HOM_Node* {
00574 $result = HOMconvertValueForInterpreter($1, $owner);
00575 }
00576
00577 %typemap(out) HOM_NodeType* {
00578 $result = HOMconvertValueForInterpreter($1, $owner);
00579 }
00580
00581 %typemap(out) HOM_BaseKeyframe* {
00582 $result = HOMconvertValueForInterpreter($1, $owner);
00583 }
00584
00585 %typemap(out) HOM_ParmTemplate* {
00586 $result = HOMconvertValueForInterpreter($1, $owner);
00587 }
00588
00589 %typemap(out) HOM_Pane* {
00590 $result = HOMconvertValueForInterpreter($1, $owner);
00591 }
00592
00593 %typemap(out) HOM_PaneTab* {
00594 $result = HOMconvertValueForInterpreter($1, $owner);
00595 }
00596
00597 %typemap(out) HOM_DopData* {
00598 $result = HOMconvertValueForInterpreter($1, $owner);
00599 }
00600
00601 %typemap(out) std::vector<HOM_ElemPtr<HOM_NodeConnection> > * {
00602 $result = HOMconvertValueForInterpreter($1, $owner);
00603 }
00604
00605
00606
00607
00608
00609 %typemap(throws) HOM_TypeError %{
00610 SWIG_exception_fail(SWIG_TypeError, $1.instanceMessage().c_str());
00611 %}
00612
00613 %typemap(throws) HOM_ValueError %{
00614 SWIG_exception_fail(SWIG_ValueError, $1.instanceMessage().c_str());
00615 %}
00616
00617 #ifdef SWIGPYTHON
00618 %typemap(throws) HOM_SystemExit %{
00619 PyErr_SetObject(PyExc_SystemExit, SWIG_From_int($1.code()));
00620 SWIG_fail;
00621 %}
00622 #endif
00623
00624
00625
00626
00627
00628
00629 %typemap(in) boost::any {
00630
00631
00632 HOMinterpreterObjectToBoostAny($input, $1);
00633 }
00634
00635
00636 %typemap(out) boost::any {
00637 $result = HOMboostAnyToInterpreterObject($1);
00638 }
00639
00640 %{
00641
00642
00643
00644
00645
00646
00647
00648 bool
00649 HOMinterpreterObjectToBoostAny(InterpreterObject input, boost::any &result)
00650 {
00651 #ifdef SWIGPYTHON
00652 if (input == Py_None)
00653 {
00654 result = (void *)NULL;
00655 return true;
00656 }
00657
00658
00659
00660 if (input == Py_True)
00661 {
00662 result = true;
00663 return true;
00664 }
00665
00666 if (input == Py_False)
00667 {
00668 result = false;
00669 return true;
00670 }
00671 #endif
00672
00673 int int_result;
00674 if (SWIG_IsOK(SWIG_AsVal_int(input, &int_result)))
00675 {
00676 result = int_result;
00677 return true;
00678 }
00679
00680 double double_result;
00681 if (SWIG_IsOK(SWIG_AsVal_double(input, &double_result)))
00682 {
00683 result = double_result;
00684 return true;
00685 }
00686
00687 std::string string_result;
00688 if (SWIG_IsOK(SWIG_AsVal_std_string(input, &string_result)))
00689 {
00690 result = string_result;
00691 return true;
00692 }
00693
00694 std::vector<int> *int_vector_ptr = NULL;
00695 if (SWIG_IsOK(swig::asptr(input, (std::vector<int> **)NULL)) &&
00696 SWIG_IsOK(swig::asptr(input, &int_vector_ptr)))
00697 {
00698 result = *int_vector_ptr;
00699 delete int_vector_ptr;
00700 return true;
00701 }
00702
00703 std::vector<double> *double_vector_ptr = NULL;
00704 if (SWIG_IsOK(swig::asptr(input, (std::vector<double> **)NULL)) &&
00705 SWIG_IsOK(swig::asptr(input, &double_vector_ptr)))
00706 {
00707 result = *double_vector_ptr;
00708 delete double_vector_ptr;
00709 return true;
00710 }
00711
00712 std::vector<std::string> *string_vector_ptr = NULL;
00713 if (SWIG_IsOK(swig::asptr(input, (std::vector<std::string> **)NULL)) &&
00714 SWIG_IsOK(swig::asptr(input, &string_vector_ptr)))
00715 {
00716 result = *string_vector_ptr;
00717 delete string_vector_ptr;
00718 return true;
00719 }
00720
00721 std::vector<HOM_Vector3> *vector3_vector_ptr = NULL;
00722 if (SWIG_IsOK(swig::asptr(input, (std::vector<HOM_Vector3> **)NULL)) &&
00723 SWIG_IsOK(swig::asptr(input, &vector3_vector_ptr)))
00724 {
00725 result = *vector3_vector_ptr;
00726 delete vector3_vector_ptr;
00727 return true;
00728 }
00729
00730 std::vector<HOM_Vector4> *vector4_vector_ptr = NULL;
00731 if (SWIG_IsOK(swig::asptr(input, (std::vector<HOM_Vector4> **)NULL)) &&
00732 SWIG_IsOK(swig::asptr(input, &vector4_vector_ptr)))
00733 {
00734 result = *vector4_vector_ptr;
00735 delete vector4_vector_ptr;
00736 return true;
00737 }
00738
00739 std::vector<HOM_Matrix3> *matrix3_vector_ptr = NULL;
00740 if (SWIG_IsOK(swig::asptr(input, (std::vector<HOM_Matrix3> **)NULL)) &&
00741 SWIG_IsOK(swig::asptr(input, &matrix3_vector_ptr)))
00742 {
00743 result = *matrix3_vector_ptr;
00744 delete matrix3_vector_ptr;
00745 return true;
00746 }
00747
00748 std::vector<HOM_Matrix4> *matrix4_vector_ptr = NULL;
00749 if (SWIG_IsOK(swig::asptr(input, (std::vector<HOM_Matrix4> **)NULL)) &&
00750 SWIG_IsOK(swig::asptr(input, &matrix4_vector_ptr)))
00751 {
00752 result = *matrix4_vector_ptr;
00753 delete matrix4_vector_ptr;
00754 return true;
00755 }
00756
00757 UT_ASSERT(result.empty());
00758 return false;
00759 }
00760
00761
00762
00763
00764 namespace swig {
00765 template <>
00766 struct traits_asptr<boost::any>
00767 {
00768 static int asptr(InterpreterObject obj, boost::any **val)
00769 {
00770
00771 boost::any *p = new boost::any();
00772 HOMinterpreterObjectToBoostAny(obj, *p);
00773 if (val)
00774 *val = p;
00775 return SWIG_NEWOBJ;
00776 }
00777 };
00778 }
00779
00780
00781
00782 static InterpreterObject
00783 HOMboostAnyToInterpreterObject(const boost::any &result)
00784 {
00785 if (result.empty())
00786 return SWIG_Py_Void();
00787
00788 if (result.type() == typeid(int))
00789 return SWIG_From_int(boost::any_cast<int>(result));
00790
00791 if (result.type() == typeid(float))
00792 return SWIG_From_float(boost::any_cast<float>(result));
00793
00794 if (result.type() == typeid(double))
00795 return SWIG_From_double(boost::any_cast<double>(result));
00796
00797 if (result.type() == typeid(std::string))
00798 return SWIG_From_std_string(boost::any_cast<std::string>(result));
00799
00800 if (result.type() == typeid(std::vector<int>))
00801 return swig::from(boost::any_cast<std::vector<int> >(result));
00802
00803 if (result.type() == typeid(std::vector<float>))
00804 return swig::from(boost::any_cast<std::vector<float> >(result));
00805
00806 if (result.type() == typeid(std::vector<std::string>))
00807 return swig::from(boost::any_cast<std::vector<std::string> >(result));
00808
00809 if (result.type() == typeid(std::vector<double>))
00810 return swig::from(boost::any_cast<std::vector<double> >(result));
00811
00812 if (result.type() == typeid(std::vector<std::vector<float> >))
00813 return swig::from(
00814 boost::any_cast<std::vector<std::vector<float> > >(result));
00815
00816 if (result.type() == typeid(std::vector<std::vector<double> >))
00817 return swig::from(
00818 boost::any_cast<std::vector<std::vector<double> > >(result));
00819
00820
00821
00822 if (result.type() == typeid(HOM_Vector3 *))
00823 return HOMconvertValueForInterpreter(
00824 boost::any_cast<HOM_Vector3 *>(result), SWIG_POINTER_OWN);
00825
00826 if (result.type() == typeid(HOM_Vector4 *))
00827 return HOMconvertValueForInterpreter(
00828 boost::any_cast<HOM_Vector4 *>(result), SWIG_POINTER_OWN);
00829
00830 if (result.type() == typeid(HOM_Matrix3 *))
00831 return HOMconvertValueForInterpreter(
00832 boost::any_cast<HOM_Matrix3 *>(result), SWIG_POINTER_OWN);
00833
00834 if (result.type() == typeid(HOM_Matrix4 *))
00835 return HOMconvertValueForInterpreter(
00836 boost::any_cast<HOM_Matrix4 *>(result), SWIG_POINTER_OWN);
00837
00838 if (result.type() == typeid(std::vector<HOM_ElemPtr<HOM_Vector3> >))
00839 return swig::from(
00840 boost::any_cast<std::vector<HOM_ElemPtr<HOM_Vector3> > >(result));
00841
00842 if (result.type() == typeid(std::vector<HOM_ElemPtr<HOM_Vector4> >))
00843 return swig::from(
00844 boost::any_cast<std::vector<HOM_ElemPtr<HOM_Vector4> > >(result));
00845
00846 if (result.type() == typeid(std::vector<HOM_ElemPtr<HOM_Matrix3> >))
00847 return swig::from(
00848 boost::any_cast<std::vector<HOM_ElemPtr<HOM_Matrix3> > >(result));
00849
00850 if (result.type() == typeid(std::vector<HOM_ElemPtr<HOM_Matrix4> >))
00851 return swig::from(
00852 boost::any_cast<std::vector<HOM_ElemPtr<HOM_Matrix4> > >(result));
00853
00854 #if UT_ASSERT_LEVEL > 0
00855 cout << "Unknown data type: "
00856 << UTunmangleClassNameFromTypeIdName(result.type().name()) << endl;
00857 #endif
00858 UT_ASSERT(!"Unknown data type");
00859 return SWIG_Py_Void();
00860 }
00861
00862 namespace swig {
00863
00864
00865 template <>
00866 struct traits_from<boost::any>
00867 {
00868 static PyObject *from(const boost::any &val)
00869 { return HOMboostAnyToInterpreterObject(val); }
00870 };
00871 }
00872
00873 static InterpreterObject
00874 HOMoptionEntryToInterpreterObject(const UT_OptionEntry &option_entry)
00875 {
00876 InterpreterObject result = NULL;
00877
00878 switch (option_entry.getType())
00879 {
00880 case UT_OPTION_INT:
00881 return SWIG_From_int(
00882 ((const UT_OptionInt &)option_entry).getValue());
00883
00884 case UT_OPTION_BOOL:
00885 return SWIG_From_bool(
00886 ((const UT_OptionBool &)option_entry).getValue());
00887
00888 case UT_OPTION_FPREAL:
00889 return SWIG_From_double(
00890 ((const UT_OptionFpreal &)option_entry).getValue());
00891
00892 case UT_OPTION_STRING:
00893 case UT_OPTION_STRINGRAW:
00894 return SWIG_From_std_string(
00895 ((const UT_OptionString &)option_entry).getValue());
00896
00897 case UT_OPTION_VECTOR2:
00898 return HOMconvertValueForInterpreter(
00899 new HOM_Vector2(
00900 ((const UT_OptionVector2 &)option_entry).getValue()),
00901 SWIG_POINTER_OWN);
00902
00903 case UT_OPTION_VECTOR3:
00904 return HOMconvertValueForInterpreter(
00905 new HOM_Vector3(
00906 ((const UT_OptionVector3 &)option_entry).getValue()),
00907 SWIG_POINTER_OWN);
00908
00909 case UT_OPTION_VECTOR4:
00910 return HOMconvertValueForInterpreter(
00911 new HOM_Vector4(
00912 ((const UT_OptionVector4 &)option_entry).getValue()),
00913 SWIG_POINTER_OWN);
00914
00915 case UT_OPTION_QUATERNION:
00916 return HOMconvertValueForInterpreter(
00917 new HOM_Quaternion(
00918 ((const UT_OptionQuaternion &)option_entry).getValue()),
00919 SWIG_POINTER_OWN);
00920
00921 case UT_OPTION_MATRIX3:
00922 return HOMconvertValueForInterpreter(
00923 new HOM_Matrix3(UT_DMatrix3(
00924 ((const UT_OptionMatrix3 &)option_entry).getValue())),
00925 SWIG_POINTER_OWN);
00926
00927 case UT_OPTION_MATRIX4:
00928 return HOMconvertValueForInterpreter(
00929 new HOM_Matrix4(UT_DMatrix4(
00930 ((const UT_OptionMatrix4 &)option_entry).getValue())),
00931 SWIG_POINTER_OWN);
00932
00933 case UT_OPTION_UV:
00934 return HOMconvertValueForInterpreter(
00935 new HOM_Vector2(
00936 ((const UT_OptionUV &)option_entry).getValue()),
00937 SWIG_POINTER_OWN);
00938
00939 case UT_OPTION_UVW:
00940 return HOMconvertValueForInterpreter(
00941 new HOM_Vector3(
00942 ((const UT_OptionUVW &)option_entry).getValue()),
00943 SWIG_POINTER_OWN);
00944
00945 case UT_OPTION_INVALID:
00946 case UT_OPTION_NUM_TYPES:
00947
00948 break;
00949 }
00950
00951 return result ? result : SWIG_Py_Void();
00952 }
00953
00954 #ifdef SWIGPYTHON
00955 static InterpreterObject
00956 HOMoptionsToInterpreterObject(UT_Options &options)
00957 {
00958 InterpreterObject result = PyDict_New();
00959
00960 for (int i=0; i < options.getNumOptions(); ++i)
00961 {
00962
00963
00964 InterpreterObject value = HOMoptionEntryToInterpreterObject(
00965 *options.getOptionEntry(i));
00966 PyDict_SetItemString(result, options.getOptionName(i), value);
00967 Py_DECREF(value);
00968 }
00969
00970 return result;
00971 }
00972 #endif
00973
00974
00975
00976
00977
00978
00979 template <typename T>
00980 InterpreterObject
00981 HOMattribValue(T &geo_element, HOM_Attrib &hom_attrib)
00982 throw(HOM_OperationFailed, HOM_ObjectWasDeleted, HOM_Error)
00983 {
00984 InterpreterObject result = NULL;
00985 switch (hom_attrib.dataType().id())
00986 {
00987 case HOM_attribData::Int_Id:
00988 if (hom_attrib.size() == 1)
00989 result = SWIG_From_int(geo_element.intAttribValue(hom_attrib));
00990 else
00991 result = swig::from(geo_element.intListAttribValue(hom_attrib));
00992 break;
00993
00994 case HOM_attribData::Float_Id:
00995 if (hom_attrib.size() == 1)
00996 result = SWIG_From_double(geo_element.floatAttribValue(hom_attrib));
00997 else
00998 result = swig::from(geo_element.floatListAttribValue(hom_attrib));
00999 break;
01000
01001 case HOM_attribData::String_Id:
01002 if (hom_attrib.size() == 1)
01003 result = SWIG_From_std_string(
01004 geo_element.stringAttribValue(hom_attrib));
01005 else
01006 result = swig::from(geo_element.stringListAttribValue(hom_attrib));
01007 break;
01008 }
01009 UT_ASSERT(result);
01010 return result;
01011 }
01012
01013
01014
01015
01016 template <typename T> HOM_Attrib*
01017 HOMlookUpAttrib(T &geo_element, const char *name)
01018 throw(HOM_ObjectWasDeleted, HOM_Error);
01019
01020 template <> HOM_Attrib*
01021 HOMlookUpAttrib(HOM_Point &point, const char *name)
01022 throw(HOM_ObjectWasDeleted, HOM_Error)
01023 { return HOMdel(point.geometry())->findPointAttrib(name); }
01024
01025 template <> HOM_Attrib*
01026 HOMlookUpAttrib(HOM_Prim &prim, const char *name)
01027 throw(HOM_ObjectWasDeleted, HOM_Error)
01028 { return HOMdel(prim.geometry())->findPrimAttrib(name); }
01029
01030 template <> HOM_Attrib*
01031 HOMlookUpAttrib(HOM_Vertex &vertex, const char *name)
01032 throw(HOM_ObjectWasDeleted, HOM_Error)
01033 { return HOMdel(vertex.geometry())->findVertexAttrib(name); }
01034
01035 template <> HOM_Attrib*
01036 HOMlookUpAttrib(HOM_Geometry &geometry, const char *name)
01037 throw(HOM_ObjectWasDeleted, HOM_Error)
01038 { return geometry.findGlobalAttrib(name); }
01039
01040 template <typename T>
01041 InterpreterObject
01042 HOMattribValue(T &geo_element, const char *name)
01043 throw(HOM_OperationFailed, HOM_ObjectWasDeleted, HOM_Error)
01044 {
01045 HOM_Attrib *hom_attrib = HOMlookUpAttrib(geo_element, name);
01046 if (!hom_attrib)
01047 throw HOM_OperationFailed();
01048
01049 InterpreterObject result = HOMattribValue(geo_element, *hom_attrib);
01050 delete hom_attrib;
01051 return result;
01052 }
01053 %}
01054
01055
01056
01057 %{
01058
01059 static InterpreterObject
01060 HOMevalParm(HOM_Parm &parm) throw(HOM_ObjectWasDeleted, HOM_Error)
01061 {
01062 switch (parm.parmDataTypeEnumId())
01063 {
01064 case HOM_parmData::Int_Id:
01065 return SWIG_From_int(parm.evalAsInt());
01066 case HOM_parmData::Float_Id:
01067 return SWIG_From_double(parm.evalAsFloat());
01068 case HOM_parmData::String_Id:
01069 return SWIG_From_std_string(parm.evalAsString());
01070 case HOM_parmData::Ramp_Id:
01071 return SWIG_NewPointerObj(
01072 (void*)parm.evalAsRamp(), SWIGTYPE_p_HOM_Ramp, SWIG_POINTER_OWN);
01073 }
01074
01075 UT_ASSERT(!"Unknown parm data type");
01076 return SWIG_Py_Void();
01077 }
01078
01079 static InterpreterObject
01080 HOMevalParmAtFrame(HOM_Parm &parm, double frame)
01081 throw(HOM_ObjectWasDeleted, HOM_Error)
01082 {
01083 switch (parm.parmDataTypeEnumId())
01084 {
01085 case HOM_parmData::Int_Id:
01086 return SWIG_From_int(parm.evalAsIntAtFrame(frame));
01087 case HOM_parmData::Float_Id:
01088 return SWIG_From_double(parm.evalAsFloatAtFrame(frame));
01089 case HOM_parmData::String_Id:
01090 return SWIG_From_std_string(parm.evalAsStringAtFrame(frame));
01091 case HOM_parmData::Ramp_Id:
01092 return SWIG_NewPointerObj(
01093 (void*)parm.evalAsRampAtFrame(frame),
01094 SWIGTYPE_p_HOM_Ramp, SWIG_POINTER_OWN);
01095 }
01096
01097 UT_ASSERT(!"Unknown parm data type");
01098 return SWIG_Py_Void();
01099 }
01100
01101 static InterpreterObject
01102 HOMevalParmTuple(HOM_ParmTuple &parm_tuple)
01103 throw(HOM_ObjectWasDeleted, HOM_Error)
01104 {
01105 switch (parm_tuple.parmDataTypeEnumId())
01106 {
01107 case HOM_parmData::Int_Id:
01108 return swig::from(parm_tuple.evalAsInts());
01109 case HOM_parmData::Float_Id:
01110 return swig::from(parm_tuple.evalAsFloats());
01111 case HOM_parmData::String_Id:
01112 return swig::from(parm_tuple.evalAsStrings());
01113 case HOM_parmData::Ramp_Id:
01114 return swig::from(parm_tuple.evalAsRamps());
01115 }
01116
01117 UT_ASSERT(!"Unknown parm data type");
01118 return SWIG_Py_Void();
01119 }
01120
01121 static InterpreterObject
01122 HOMevalParmTupleAtFrame(HOM_ParmTuple &parm_tuple, double frame)
01123 throw(HOM_ObjectWasDeleted, HOM_Error)
01124 {
01125 switch (parm_tuple.parmDataTypeEnumId())
01126 {
01127 case HOM_parmData::Int_Id:
01128 return swig::from(parm_tuple.evalAsIntsAtFrame(frame));
01129 case HOM_parmData::Float_Id:
01130 return swig::from(parm_tuple.evalAsFloatsAtFrame(frame));
01131 case HOM_parmData::String_Id:
01132 return swig::from(parm_tuple.evalAsStringsAtFrame(frame));
01133 case HOM_parmData::Ramp_Id:
01134 return swig::from(parm_tuple.evalAsRampsAtFrame(frame));
01135 }
01136
01137 UT_ASSERT(!"Unknown parm data type");
01138 return SWIG_Py_Void();
01139 }
01140
01141
01142
01143 %}
01144 #endif
01145
01146 #endif