9 #ifndef __HOM_Defines_h__
10 #define __HOM_Defines_h__
17 #if UT_ASSERT_LEVEL >= 2
27 #if defined(SWIG) && defined(SWIGPYTHON)
28 #define SWIGPYTHONOUT(x) x
30 #define SWIGPYTHONOUT(x)
36 #include <hboost/any.hpp>
53 #define HOM_MIN_NEGATIVE_DOUBLE -1 * std::numeric_limits<double>::max()
72 typedef PyObject *InterpreterObject;
74 PyObject *HOMincRef(PyObject *
object)
86 typedef PyObject *InterpreterObject;
105 template <
typename T> InterpreterObject
106 HOMconvertValueForInterpreter(
const T &
value,
int own);
109 template <> InterpreterObject
110 HOMconvertValueForInterpreter<int>(
const int&
value,
int )
111 {
return SWIG_From_int(value); }
113 template <> InterpreterObject
114 HOMconvertValueForInterpreter<float>(
const float&
value,
int )
115 {
return SWIG_From_float(value); }
117 template <> InterpreterObject
118 HOMconvertValueForInterpreter<double>(
const double&
value,
int )
119 {
return SWIG_From_double(value); }
121 template <> InterpreterObject
122 HOMconvertValueForInterpreter<std::string>(
123 const std::string&
value,
int )
124 {
return SWIG_From_std_string(value); }
128 template <> InterpreterObject
129 HOMconvertValueForInterpreter<HOM_Node*>(
HOM_Node *
const &node,
int own)
136 bool isnetwork =
false;
138 if (!node || (!opnode && !apexnode && !uninode))
139 return SWIG_NewPointerObj(node, SWIGTYPE_p_HOM_Node, own);
142 return SWIG_NewPointerObj(apexnode, SWIGTYPE_p_HOM_ApexNode, own);
145 return SWIG_NewPointerObj(uninode, SWIGTYPE_p_HOM_UniNode, own);
155 return SWIG_NewPointerObj(
156 (
void*)dynamic_cast<HOM_ObjNode* const>(node),
157 SWIGTYPE_p_HOM_ObjNode, own);
164 return SWIG_NewPointerObj(
165 (
void*)dynamic_cast<HOM_SopNode* const>(node),
166 SWIGTYPE_p_HOM_SopNode, own);
173 return SWIG_NewPointerObj(
174 (
void*)dynamic_cast<HOM_ChopNode* const>(node),
175 SWIGTYPE_p_HOM_ChopNode, own);
182 return SWIG_NewPointerObj(
183 (
void*)dynamic_cast<HOM_Cop2Node* const>(node),
184 SWIGTYPE_p_HOM_Cop2Node, own);
191 return SWIG_NewPointerObj(
192 (
void*)dynamic_cast<HOM_CopNode* const>(node),
193 SWIGTYPE_p_HOM_CopNode, own);
200 return SWIG_NewPointerObj(
201 (
void*)dynamic_cast<HOM_DopNode* const>(node),
202 SWIGTYPE_p_HOM_DopNode, own);
209 return SWIG_NewPointerObj(
210 (
void*)dynamic_cast<HOM_ShopNode* const>(node),
211 SWIGTYPE_p_HOM_ShopNode, own);
218 return SWIG_NewPointerObj(
219 (
void*)dynamic_cast<HOM_VopNetNode* const>(node),
220 SWIGTYPE_p_HOM_VopNetNode, own);
227 return SWIG_NewPointerObj(
228 (
void*)dynamic_cast<HOM_RopNode* const>(node),
229 SWIGTYPE_p_HOM_RopNode, own);
236 return SWIG_NewPointerObj(
237 (
void*)dynamic_cast<HOM_VopNode* const>(node),
238 SWIGTYPE_p_HOM_VopNode, own);
245 return SWIG_NewPointerObj(
246 (
void*)dynamic_cast<HOM_TopNode* const>(node),
247 SWIGTYPE_p_HOM_TopNode, own);
257 nodetype = node->type();
258 isnetwork = (nodetype && nodetype->
isManager(
true));
261 return SWIG_NewPointerObj(
262 (
void*)dynamic_cast<HOM_LopNetwork* const>(node),
263 SWIGTYPE_p_HOM_LopNetwork, own);
265 return SWIG_NewPointerObj(
266 (
void*)dynamic_cast<HOM_LopNode* const>(node),
267 SWIGTYPE_p_HOM_LopNode, own);
277 if (
HOM().lopNodeTypeCategory() == node->childTypeCategory())
278 return SWIG_NewPointerObj(
280 SWIGTYPE_p_HOM_LopNetwork, own);
286 return SWIG_NewPointerObj(opnode, SWIGTYPE_p_HOM_OpNode, own);
289 template <> InterpreterObject
290 HOMconvertValueForInterpreter<HOM_UniNode*>(
HOM_UniNode *
const &node,
int own)
292 return HOMconvertValueForInterpreter<HOM_Node*>(node, own);
295 template <> InterpreterObject
296 HOMconvertValueForInterpreter<HOM_NodeType*>(
306 if (!nodetype || (!opnodetype && !uninodetype && !apexnodetype))
307 return SWIG_NewPointerObj(nodetype, SWIGTYPE_p_HOM_NodeType, own);
310 return SWIG_NewPointerObj(apexnodetype,
311 SWIGTYPE_p_HOM_ApexNodeType, own);
314 return SWIG_NewPointerObj(uninodetype,
315 SWIGTYPE_p_HOM_UniNodeType, own);
317 if( !nodetype->isManager() )
327 return SWIG_NewPointerObj(
328 (
void*)dynamic_cast<const HOM_SopNodeType* const>(nodetype),
329 SWIGTYPE_p_HOM_SopNodeType, own);
336 return SWIG_NewPointerObj(
337 (
void*)dynamic_cast<const HOM_ShopNodeType* const>(nodetype),
338 SWIGTYPE_p_HOM_ShopNodeType, own);
345 return SWIG_NewPointerObj(
346 (
void*)dynamic_cast<const HOM_VopNodeType* const>(nodetype),
347 SWIGTYPE_p_HOM_VopNodeType, own);
353 return SWIG_NewPointerObj(nodetype, SWIGTYPE_p_HOM_OpNodeType, own);
356 template <> InterpreterObject
357 HOMconvertValueForInterpreter<HOM_NodeTypeCategory*>(
367 if (!nodetypecategory || (!opnodetypecategory && !uninodetypecategory &&
368 !apexnodetypecategory))
369 return SWIG_NewPointerObj(nodetypecategory,
370 SWIGTYPE_p_HOM_NodeTypeCategory, own);
372 if (apexnodetypecategory)
373 return SWIG_NewPointerObj(apexnodetypecategory,
374 SWIGTYPE_p_HOM_ApexNodeTypeCategory, own);
376 if (uninodetypecategory)
377 return SWIG_NewPointerObj(uninodetypecategory,
378 SWIGTYPE_p_HOM_UniNodeTypeCategory, own);
380 return SWIG_NewPointerObj(nodetypecategory,
381 SWIGTYPE_p_HOM_OpNodeTypeCategory, own);
384 template <> InterpreterObject
385 HOMconvertValueForInterpreter<HOM_NodeTypeCategory&>(
395 if (!opnodetypecategory && !uninodetypecategory && !apexnodetypecategory)
396 return SWIG_NewPointerObj(&nodetypecategory,
397 SWIGTYPE_p_HOM_NodeTypeCategory, own);
399 if (apexnodetypecategory)
400 return SWIG_NewPointerObj(&apexnodetypecategory,
401 SWIGTYPE_p_HOM_ApexNodeTypeCategory, own);
403 if (uninodetypecategory)
404 return SWIG_NewPointerObj(&uninodetypecategory,
405 SWIGTYPE_p_HOM_UniNodeTypeCategory, own);
407 return SWIG_NewPointerObj(&nodetypecategory,
408 SWIGTYPE_p_HOM_OpNodeTypeCategory, own);
424 result = HOMconvertValueForInterpreter(val, 0);
440 template <> InterpreterObject
441 HOMconvertValueForInterpreter<HOM_NetworkBox*>(
447 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_NetworkBox, own);
449 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_OpNetworkBox, own);
452 template <> InterpreterObject
453 HOMconvertValueForInterpreter<HOM_NetworkDot*>(
459 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_NetworkDot, own);
461 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_OpNetworkDot, own);
464 template <> InterpreterObject
465 HOMconvertValueForInterpreter<HOM_NodeConnection*>(
472 if (!obj || (!opobj && !uniobj && !apexobj))
473 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_NodeConnection, own);
476 return SWIG_NewPointerObj(apexobj, SWIGTYPE_p_HOM_ApexNodeConnection, own);
479 return SWIG_NewPointerObj(uniobj, SWIGTYPE_p_HOM_UniNodeConnection, own);
481 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_OpNodeConnection, own);
484 template <> InterpreterObject
485 HOMconvertValueForInterpreter<HOM_UniNodeConnection*>(
488 return HOMconvertValueForInterpreter<HOM_NodeConnection*>(obj, own);
491 template <> InterpreterObject
492 HOMconvertValueForInterpreter<HOM_StickyNote*>(
499 if (!obj || (!opobj && !uniobj && !apexobj))
500 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_StickyNote, own);
503 return SWIG_NewPointerObj(apexobj, SWIGTYPE_p_HOM_ApexStickyNote, own);
506 return SWIG_NewPointerObj(uniobj, SWIGTYPE_p_HOM_UniStickyNote, own);
508 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_OpStickyNote, own);
511 template <> InterpreterObject
512 HOMconvertValueForInterpreter<HOM_SubnetIndirectInput*>(
518 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_SubnetIndirectInput, own);
520 return SWIG_NewPointerObj(obj, SWIGTYPE_p_HOM_OpSubnetIndirectInput, own);
523 template <> InterpreterObject
524 HOMconvertValueForInterpreter<HOM_BaseKeyframe*>(
528 return SWIG_NewPointerObj(keyframe, SWIGTYPE_p_HOM_BaseKeyframe, own);
536 return SWIG_NewPointerObj(
537 (
void*)dynamic_cast<const HOM_Keyframe* const>(keyframe),
538 SWIGTYPE_p_HOM_Keyframe, own);
546 return SWIG_NewPointerObj(
547 (
void*)dynamic_cast<const HOM_StringKeyframe* const>(keyframe),
548 SWIGTYPE_p_HOM_StringKeyframe, own);
551 return SWIG_NewPointerObj(keyframe, SWIGTYPE_p_HOM_BaseKeyframe, own);
554 template <> InterpreterObject
555 HOMconvertValueForInterpreter<HOM_PackedPrim*>(
HOM_PackedPrim *
const &prim,
int own)
558 return SWIG_NewPointerObj(prim, SWIGTYPE_p_HOM_PackedPrim, own);
565 switch (prim->type().id())
567 case HOM_primType::Agent_Id:
568 return SWIG_NewPointerObj(
569 (
void *)dynamic_cast<HOM_Agent *const>(prim),
570 SWIGTYPE_p_HOM_Agent, own);
572 case HOM_primType::PackedFragment_Id:
573 return SWIG_NewPointerObj(
574 (
void *)dynamic_cast<HOM_PackedFragment *const>(prim),
575 SWIGTYPE_p_HOM_PackedFragment, own);
577 case HOM_primType::PackedGeometry_Id:
578 return SWIG_NewPointerObj(
579 (
void *)dynamic_cast<HOM_PackedGeometry *const>(prim),
580 SWIGTYPE_p_HOM_PackedGeometry, own);
584 return SWIG_NewPointerObj((
void *)prim, SWIGTYPE_p_HOM_PackedPrim, own);
587 template <> InterpreterObject
588 HOMconvertValueForInterpreter<HOM_Prim*>(
HOM_Prim *
const &prim,
int own)
591 return SWIG_NewPointerObj(prim, SWIGTYPE_p_HOM_Prim, own);
599 return HOMconvertValueForInterpreter(packed, own);
601 switch (prim->type().id())
603 case HOM_primType::Polygon_Id:
604 return SWIG_NewPointerObj(
605 (
void*)dynamic_cast<const HOM_Polygon* const>(prim),
606 SWIGTYPE_p_HOM_Polygon, own);
608 case HOM_primType::NURBSCurve_Id:
609 case HOM_primType::BezierCurve_Id:
610 return SWIG_NewPointerObj(
611 (
void*)dynamic_cast<const HOM_Face* const>(prim),
612 SWIGTYPE_p_HOM_Face, own);
614 case HOM_primType::Mesh_Id:
615 case HOM_primType::NURBSSurface_Id:
616 case HOM_primType::BezierSurface_Id:
617 return SWIG_NewPointerObj(
618 (
void*)dynamic_cast<const HOM_Surface* const>(prim),
619 SWIGTYPE_p_HOM_Surface, own);
621 case HOM_primType::Circle_Id:
622 case HOM_primType::Sphere_Id:
623 case HOM_primType::Tube_Id:
624 case HOM_primType::Plane_Id:
625 return SWIG_NewPointerObj(
626 (
void*)dynamic_cast<const HOM_Quadric* const>(prim),
627 SWIGTYPE_p_HOM_Quadric, own);
629 case HOM_primType::Volume_Id:
630 return SWIG_NewPointerObj(
631 (
void*)dynamic_cast<const HOM_Volume* const>(prim),
632 SWIGTYPE_p_HOM_Volume, own);
634 case HOM_primType::VDB_Id:
635 return SWIG_NewPointerObj(
636 (
void*)dynamic_cast<const HOM_VDB* const>(prim),
637 SWIGTYPE_p_HOM_VDB, own);
639 case HOM_primType::ChannelPrim_Id:
640 return SWIG_NewPointerObj(
641 (
void*)dynamic_cast<const HOM_ChannelPrim* const>(prim),
642 SWIGTYPE_p_HOM_ChannelPrim, own);
644 case HOM_primType::CameraPrim_Id:
645 return SWIG_NewPointerObj(
646 (
void*)dynamic_cast<const HOM_CameraPrim* const>(prim),
647 SWIGTYPE_p_HOM_CameraPrim, own);
652 return SWIG_NewPointerObj(prim, SWIGTYPE_p_HOM_Prim, own);
655 template <> InterpreterObject
656 HOMconvertValueForInterpreter<HOM_ParmTemplate*>(
660 return SWIG_NewPointerObj(
661 parm_template, SWIGTYPE_p_HOM_ParmTemplate, own);
666 switch (parm_template->type().id())
668 case HOM_parmTemplateType::Int_Id:
669 return SWIG_NewPointerObj(
670 (
void*)dynamic_cast<const HOM_IntParmTemplate* const>(
672 SWIGTYPE_p_HOM_IntParmTemplate, own);
674 case HOM_parmTemplateType::Float_Id:
675 return SWIG_NewPointerObj(
676 (
void*)dynamic_cast<const HOM_FloatParmTemplate* const>(
678 SWIGTYPE_p_HOM_FloatParmTemplate, own);
680 case HOM_parmTemplateType::String_Id:
681 return SWIG_NewPointerObj(
682 (
void*)dynamic_cast<const HOM_StringParmTemplate* const>(
684 SWIGTYPE_p_HOM_StringParmTemplate, own);
686 case HOM_parmTemplateType::Data_Id:
687 return SWIG_NewPointerObj(
688 (
void*)dynamic_cast<const HOM_DataParmTemplate* const>(
690 SWIGTYPE_p_HOM_DataParmTemplate, own);
692 case HOM_parmTemplateType::Toggle_Id:
693 return SWIG_NewPointerObj(
694 (
void*)dynamic_cast<const HOM_ToggleParmTemplate* const>(
696 SWIGTYPE_p_HOM_ToggleParmTemplate, own);
698 case HOM_parmTemplateType::Menu_Id:
699 return SWIG_NewPointerObj(
700 (
void*)dynamic_cast<const HOM_MenuParmTemplate* const>(
702 SWIGTYPE_p_HOM_MenuParmTemplate, own);
704 case HOM_parmTemplateType::Button_Id:
705 return SWIG_NewPointerObj(
706 (
void*)dynamic_cast<const HOM_ButtonParmTemplate* const>(
708 SWIGTYPE_p_HOM_ButtonParmTemplate, own);
710 case HOM_parmTemplateType::Label_Id:
711 return SWIG_NewPointerObj(
712 (
void*)dynamic_cast<const HOM_LabelParmTemplate* const>(
714 SWIGTYPE_p_HOM_LabelParmTemplate, own);
716 case HOM_parmTemplateType::Separator_Id:
717 return SWIG_NewPointerObj(
718 (
void*)dynamic_cast<const HOM_SeparatorParmTemplate* const>(
720 SWIGTYPE_p_HOM_SeparatorParmTemplate, own);
722 case HOM_parmTemplateType::FolderSet_Id:
723 return SWIG_NewPointerObj(
724 (
void*)dynamic_cast<const HOM_FolderSetParmTemplate* const>(
726 SWIGTYPE_p_HOM_FolderSetParmTemplate, own);
728 case HOM_parmTemplateType::Folder_Id:
729 return SWIG_NewPointerObj(
730 (
void*)dynamic_cast<const HOM_FolderParmTemplate* const>(
732 SWIGTYPE_p_HOM_FolderParmTemplate, own);
734 case HOM_parmTemplateType::Ramp_Id:
735 return SWIG_NewPointerObj(
736 (
void*)dynamic_cast<const HOM_RampParmTemplate* const>(
738 SWIGTYPE_p_HOM_RampParmTemplate, own);
741 UT_ASSERT(!
"Unknown parm template type");
742 return SWIG_NewPointerObj(parm_template, SWIGTYPE_p_HOM_ParmTemplate, own);
745 template <> InterpreterObject
746 HOMconvertValueForInterpreter<HOM_PaneTab*>(
750 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
756 switch (pane_tab->type().id())
758 case HOM_paneTabType::ContextViewer_Id:
759 return SWIG_NewPointerObj(
760 (
void*)dynamic_cast<const HOM_ContextViewer* const>(pane_tab),
761 SWIGTYPE_p_HOM_ContextViewer, own);
763 case HOM_paneTabType::SceneViewer_Id:
764 return SWIG_NewPointerObj(
765 (
void*)dynamic_cast<const HOM_SceneViewer* const>(pane_tab),
766 SWIGTYPE_p_HOM_SceneViewer, own);
768 case HOM_paneTabType::CompositorViewer_Id:
769 return SWIG_NewPointerObj(
770 (
void*)dynamic_cast<const HOM_CompositorViewer* const>(pane_tab),
771 SWIGTYPE_p_HOM_CompositorViewer, own);
773 case HOM_paneTabType::NetworkEditor_Id:
774 case HOM_paneTabType::ApexEditor_Id:
775 case HOM_paneTabType::UsdShadeEditor_Id:
776 case HOM_paneTabType::GenericGraphEditor_Id:
777 return SWIG_NewPointerObj(
778 (
void*)dynamic_cast<const HOM_NetworkEditor* const>(pane_tab),
779 SWIGTYPE_p_HOM_NetworkEditor, own);
781 case HOM_paneTabType::HelpBrowser_Id:
782 return SWIG_NewPointerObj(
783 (
void*)dynamic_cast<const HOM_HelpBrowser* const>(pane_tab),
784 SWIGTYPE_p_HOM_HelpBrowser, own);
786 case HOM_paneTabType::PythonPanel_Id:
787 return SWIG_NewPointerObj(
788 (
void*)dynamic_cast<const HOM_PythonPanel* const>(pane_tab),
789 SWIGTYPE_p_HOM_PythonPanel, own);
791 case HOM_paneTabType::IPRViewer_Id:
792 return SWIG_NewPointerObj(
793 (
void*)dynamic_cast<const HOM_IPRViewer* const>(pane_tab),
794 SWIGTYPE_p_HOM_IPRViewer, own);
796 case HOM_paneTabType::AssetBrowser_Id:
797 return SWIG_NewPointerObj(
798 (
void*)dynamic_cast<const HOM_AssetBrowser* const>(pane_tab),
799 SWIGTYPE_p_HOM_AssetBrowser, own);
801 case HOM_paneTabType::PerformanceMonitor_Id:
802 return SWIG_NewPointerObj(
803 (
void*)dynamic_cast<const HOM_PerformanceMonitor* const>(pane_tab),
804 SWIGTYPE_p_HOM_PerformanceMonitor, own);
806 case HOM_paneTabType::ChannelEditor_Id:
807 return SWIG_NewPointerObj(
808 (
void*)dynamic_cast<const HOM_ChannelEditorPane* const>(pane_tab),
809 SWIGTYPE_p_HOM_ChannelEditorPane, own);
811 case HOM_paneTabType::DataTree_Id:
812 return SWIG_NewPointerObj(
813 (
void*)dynamic_cast<const HOM_DataTree* const>(pane_tab),
814 SWIGTYPE_p_HOM_DataTree, own);
816 case HOM_paneTabType::SceneGraphTree_Id:
817 return SWIG_NewPointerObj(
818 (
void*)dynamic_cast<const HOM_SceneGraphTree* const>(pane_tab),
819 SWIGTYPE_p_HOM_SceneGraphTree, own);
821 case HOM_paneTabType::Parm_Id:
822 return SWIG_NewPointerObj(
823 (
void*)dynamic_cast<const HOM_ParameterEditor* const>(pane_tab),
824 SWIGTYPE_p_HOM_ParameterEditor, own);
826 case HOM_paneTabType::DetailsView_Id:
827 return SWIG_NewPointerObj(
828 (
void*)dynamic_cast<const HOM_GeometrySpreadsheet * const>(pane_tab),
829 SWIGTYPE_p_HOM_GeometrySpreadsheet, own);
831 case HOM_paneTabType::RenderGallery_Id:
832 return SWIG_NewPointerObj(
833 (
void*)dynamic_cast<const HOM_RenderGallery* const>(pane_tab),
834 SWIGTYPE_p_HOM_RenderGallery, own);
836 case HOM_paneTabType::ChannelViewer_Id:
837 case HOM_paneTabType::OutputViewer_Id:
838 case HOM_paneTabType::ShaderViewer_Id:
839 case HOM_paneTabType::TreeView_Id:
840 return SWIG_NewPointerObj(
841 (
void*)dynamic_cast<const HOM_PathBasedPaneTab* const>(pane_tab),
842 SWIGTYPE_p_HOM_PathBasedPaneTab, own);
844 case HOM_paneTabType::ChannelList_Id:
845 return SWIG_NewPointerObj(
846 (
void*)dynamic_cast<const HOM_ChannelListPaneTab* const>(pane_tab),
847 SWIGTYPE_p_HOM_ChannelListPaneTab, own);
849 case HOM_paneTabType::Textport_Id:
850 case HOM_paneTabType::PythonShell_Id:
851 case HOM_paneTabType::HandleList_Id:
852 case HOM_paneTabType::BundleList_Id:
853 case HOM_paneTabType::TakeList_Id:
854 case HOM_paneTabType::ParmSpreadsheet_Id:
855 case HOM_paneTabType::LightLinker_Id:
856 case HOM_paneTabType::MaterialPalette_Id:
857 case HOM_paneTabType::EngineSessionSync_Id:
858 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
862 return SWIG_NewPointerObj(pane_tab, SWIGTYPE_p_HOM_PaneTab, own);
865 template <> InterpreterObject
866 HOMconvertValueForInterpreter<HOM_OpVerb*>(
870 return SWIG_NewPointerObj(opverb, SWIGTYPE_p_HOM_OpVerb, own);
879 return SWIG_NewPointerObj(
880 (
void*)dynamic_cast<HOM_CopVerb* const>(opverb),
881 SWIGTYPE_p_HOM_CopVerb, own);
887 return SWIG_NewPointerObj(
888 (
void*)dynamic_cast<HOM_SopVerb* const>(opverb),
889 SWIGTYPE_p_HOM_SopVerb, own);
895 return SWIG_NewPointerObj(opverb,
896 SWIGTYPE_p_HOM_OpVerb, own);
900 template <> InterpreterObject
901 HOMconvertValueForInterpreter<HOM_CopVerb*>(
904 return SWIG_NewPointerObj(verb, SWIGTYPE_p_HOM_CopVerb, own);
907 template <> InterpreterObject
908 HOMconvertValueForInterpreter<HOM_SopVerb*>(
911 return SWIG_NewPointerObj(verb, SWIGTYPE_p_HOM_SopVerb, own);
914 template <> InterpreterObject
915 HOMconvertValueForInterpreter<HOM_Geometry*>(
918 return SWIG_NewPointerObj(geo, SWIGTYPE_p_HOM_Geometry, own);
921 template <> InterpreterObject
922 HOMconvertValueForInterpreter<HOM_ImageLayer*>(
925 return SWIG_NewPointerObj(layer, SWIGTYPE_p_HOM_ImageLayer, own);
928 template <> InterpreterObject
929 HOMconvertValueForInterpreter<HOM_NanoVDB*>(
932 return SWIG_NewPointerObj(layer, SWIGTYPE_p_HOM_NanoVDB, own);
935 template <> InterpreterObject
936 HOMconvertValueForInterpreter<HOM_DetachedAttrib*>(
939 return SWIG_NewPointerObj(layer, SWIGTYPE_p_HOM_DetachedAttrib, own);
942 template <> InterpreterObject
943 HOMconvertValueForInterpreter<HOM_NetworkItem*>(
951 switch (item->networkItemType().id())
953 case HOM_networkItemType::Node_Id:
954 return HOMconvertValueForInterpreter(
955 dynamic_cast<HOM_Node* const>(item), own);
957 case HOM_networkItemType::NetworkBox_Id:
958 return HOMconvertValueForInterpreter(
959 dynamic_cast<HOM_NetworkBox* const>(item), own);
961 case HOM_networkItemType::StickyNote_Id:
962 return HOMconvertValueForInterpreter(
963 dynamic_cast<HOM_StickyNote* const>(item), own);
965 case HOM_networkItemType::SubnetIndirectInput_Id:
966 return HOMconvertValueForInterpreter(
967 dynamic_cast<HOM_SubnetIndirectInput* const>(item), own);
969 case HOM_networkItemType::Connection_Id:
970 return HOMconvertValueForInterpreter(
971 dynamic_cast<HOM_NodeConnection* const>(item), own);
973 case HOM_networkItemType::NetworkDot_Id:
974 return HOMconvertValueForInterpreter(
975 dynamic_cast<HOM_NetworkDot* const>(item), own);
982 return SWIG_NewPointerObj(item, SWIGTYPE_p_HOM_NetworkItem, own);
985 template <> InterpreterObject
986 HOMconvertValueForInterpreter<HOM_NetworkMovableItem*>(
990 return SWIG_NewPointerObj(item, SWIGTYPE_p_HOM_NetworkMovableItem, own);
992 return HOMconvertValueForInterpreter<HOM_NetworkItem *>(item, own);
995 template <> InterpreterObject
996 HOMconvertValueForInterpreter<
997 std::vector<HOM_ElemPtr<HOM_NodeConnection> >*>(
998 std::vector<HOM_ElemPtr<HOM_NodeConnection> > *
const &list,
1001 return swig::from(*list);
1004 template <> InterpreterObject
1005 HOMconvertValueForInterpreter<HOM_DopData*>(
HOM_DopData *
const &
data,
int own)
1010 return SWIG_NewPointerObj(
1011 (
void *)dop_object, SWIGTYPE_p_HOM_DopObject, own);
1015 if (dop_relationship)
1016 return SWIG_NewPointerObj(
1017 (
void *)dop_relationship, SWIGTYPE_p_HOM_DopRelationship, own);
1019 return SWIG_NewPointerObj(data, SWIGTYPE_p_HOM_DopData, own);
1022 template <> InterpreterObject
1023 HOMconvertValueForInterpreter<HOM_RadialItem*>(
1028 switch (item->type().id())
1030 case HOM_radialItemType::Script_Id:
1031 return SWIG_NewPointerObj(
1032 (
void*)dynamic_cast<const HOM_RadialScriptItem* const>(item),
1033 SWIGTYPE_p_HOM_RadialScriptItem, own);
1035 case HOM_radialItemType::Submenu_Id:
1036 return SWIG_NewPointerObj(
1037 (
void*)dynamic_cast<const HOM_RadialSubmenu* const>(item),
1038 SWIGTYPE_p_HOM_RadialSubmenu, own);
1045 return SWIG_NewPointerObj(item, SWIGTYPE_p_HOM_RadialItem, own);
1048 template <> InterpreterObject
1049 HOMconvertValueForInterpreter<HOM_EnumValue*>(
1057 return SWIG_NewPointerObj((
void*)item, SWIGTYPE_p_HOM_EnumValue, 0);
1062 #define HOM_PROVIDE_SWIG_LOOKUP(type) \
1063 template <> InterpreterObject HOMconvertValueForInterpreter<type*>( \
1064 type* const& value, int own) \
1066 return SWIG_NewPointerObj(SWIG_as_voidptr(value), \
1067 SWIGTYPE_p_ ## type, own); \
1164 #define HOM_CONVERT_AND_CATCH \
1167 $result = HOMconvertValueForInterpreter($1, $owner); \
1171 (void)hom::raise_swig_exception(); \
1172 $result = nullptr; \
1177 HOM_CONVERT_AND_CATCH
1181 HOM_CONVERT_AND_CATCH
1185 HOM_CONVERT_AND_CATCH
1189 HOM_CONVERT_AND_CATCH
1193 HOM_CONVERT_AND_CATCH
1197 HOM_CONVERT_AND_CATCH
1201 HOM_CONVERT_AND_CATCH
1205 HOM_CONVERT_AND_CATCH
1209 HOM_CONVERT_AND_CATCH
1213 HOM_CONVERT_AND_CATCH
1217 HOM_CONVERT_AND_CATCH
1221 HOM_CONVERT_AND_CATCH
1225 HOM_CONVERT_AND_CATCH
1229 HOM_CONVERT_AND_CATCH
1233 HOM_CONVERT_AND_CATCH
1237 HOM_CONVERT_AND_CATCH
1241 HOM_CONVERT_AND_CATCH
1245 HOM_CONVERT_AND_CATCH
1249 HOM_CONVERT_AND_CATCH
1253 HOM_CONVERT_AND_CATCH
1257 HOM_CONVERT_AND_CATCH
1261 HOM_CONVERT_AND_CATCH
1265 HOM_CONVERT_AND_CATCH
1272 %typemap(
throws) HOM_TypeError %{
1273 SWIG_exception_fail(SWIG_TypeError, $1.instanceMessage().
c_str());
1276 %typemap(
throws) HOM_ValueError %{
1277 SWIG_exception_fail(SWIG_ValueError, $1.instanceMessage().
c_str());
1282 PyErr_SetObject(PyExc_SystemExit, SWIG_From_int($1.code()));
1292 %typemap(
in) hboost::
any {
1297 HOMinterpreterObjectToBoostAny($input, $1);
1301 (
void)hom::raise_swig_exception();
1313 HOMinterpreterObjectToUTOptionAny($input, $1);
1317 (
void)hom::raise_swig_exception();
1322 %typemap(out) hboost::any {
1325 $result = HOMboostAnyToInterpreterObject($1);
1329 (
void)hom::raise_swig_exception();
1336 $result = HOMDDSourceAnyToInterpreterObject($1);
1340 (
void)hom::raise_swig_exception();
1350 if ($input != Py_None)
1354 if (SWIG_IsOK(SWIG_AsVal_double($input, &res)))
1362 (
void)hom::raise_swig_exception();
1370 if ($input != Py_None)
1374 if (SWIG_IsOK(SWIG_AsVal_int($input, &res)))
1382 (
void)hom::raise_swig_exception();
1386 %typemap(out) HOM_OptionalInt {
1390 $result = SWIG_From_int($1.
value());
1392 $result = SWIG_Py_Void();
1396 (
void)hom::raise_swig_exception();
1401 %fragment(
"HOMIntIntervalFromPython",
"header") %{
1405 const bool is_list = PyList_Check(input);
1406 if ((!is_list && !PyTuple_Check(input)) || PySequence_Size(input) != 2)
1408 int min_val, max_val;
1411 ok = SWIG_IsOK(SWIG_AsVal_int(PyList_GET_ITEM(input, 0), &min_val))
1412 && SWIG_IsOK(SWIG_AsVal_int(PyList_GET_ITEM(input, 1), &max_val));
1414 ok = SWIG_IsOK(SWIG_AsVal_int(PyTuple_GET_ITEM(input, 0), &min_val))
1415 && SWIG_IsOK(SWIG_AsVal_int(PyTuple_GET_ITEM(input, 1), &max_val));
1429 if (!HOMIntIntervalFromPython($input, interval))
1431 SWIG_exception(SWIG_TypeError,
1432 "expected a list or tuple of 2 ints");
1439 (
void)hom::raise_swig_exception();
1447 if ($input != Py_None)
1450 if (!HOMIntIntervalFromPython($input, interval))
1452 SWIG_exception(SWIG_TypeError,
1453 "expected a list or tuple of 2 ints, or None");
1461 (
void)hom::raise_swig_exception();
1470 $result = PyTuple_New(2);
1471 PyTuple_SetItem($result, 0, SWIG_From_int($1->
min));
1472 PyTuple_SetItem($result, 1, SWIG_From_int($1->
max));
1475 $result = SWIG_Py_Void();
1479 (
void)hom::raise_swig_exception();
1487 $result = HOMincRef((InterpreterObject)$1.opaqueObject());
1497 struct traits_from<PY_OpaqueObject>
1499 static PyObject *from(
const PY_OpaqueObject &
val)
1501 return HOMincRef((InterpreterObject)val.
opaqueObject());
1507 template <
typename T>
1510 swig_type_info *descriptor)
1513 int res = SWIG_ConvertPtr(input, &t_ptr, descriptor, 0);;
1514 if (SWIG_IsOK(res) && t_ptr)
1517 result =
reinterpret_cast<T*
>(t_ptr);
1528 template <
typename Seq,
typename T =
typename Seq::value_type>
1530 HOMinterpreterObjectConvertSeq(InterpreterObject input,
hboost::any &result)
1532 swig::SwigPySequence_Cont<T> swigpyseq(input);
1533 if (!swigpyseq.check())
1536 auto n = swigpyseq.size();
1539 for (
auto i=0;i<
n; ++i)
1540 seq[i] = swigpyseq[i];
1542 result = std::move(seq);
1547 template <
typename T>
1549 HOMinterpreterObjectConvertVal(InterpreterObject input,
hboost::any &result)
1554 swig_type_info *descriptor = swig::type_info<T>();
1559 int res = SWIG_ConvertPtr(input, (
void**)&t_ptr, descriptor, 0);
1561 if (!SWIG_IsOK(res) || !t_ptr)
1569 result = std::move(*t_ptr);
1570 if (SWIG_IsNewObj(res))
1576 template <
typename T>
1578 HOMinterpreterObjectConvertAsPtr(InterpreterObject input,
hboost::any &result)
1582 int res = swig::asptr(input, (T**)NULL);
1583 if (!SWIG_IsOK(res))
1588 res = swig::asptr(input, &t_ptr);
1589 if (!SWIG_IsOK(res) || !t_ptr)
1597 result = std::move(*t_ptr);
1598 if (SWIG_IsNewObj(res))
1604 #define CONVERT_PTR(X) \
1605 if (HOMinterpreterObjectConvertPtr<X>(\
1606 swig_input,result,SWIGTYPE_p_##X))\
1609 #define CONVERT_VAL(X) \
1610 if (HOMinterpreterObjectConvertVal<X>(swig_input,result))\
1613 #define CONVERT_ASPTR(X) \
1614 if (HOMinterpreterObjectConvertAsPtr<X>(input,result))\
1617 #define CONVERT_SEQ(X) \
1618 if (HOMinterpreterObjectConvertSeq<X>(input,result))\
1622 typedef std::map<std::string,hboost::any> std__map_std__string_hboost__any_;
1623 typedef std::vector<std::map<std::string,hboost::any>> std__vector_std__map_std__string_hboost__any__;
1644 HOMinterpreterObjectToBoostAny(InterpreterObject input,
hboost::any &result)
1647 if (input == Py_None)
1649 result = (
void *)NULL;
1655 if (input == Py_True)
1661 if (input == Py_False)
1669 if (SWIG_IsOK(SWIG_AsVal_int(input, &int_result)))
1671 result = int_result;
1675 double double_result;
1676 if (SWIG_IsOK(SWIG_AsVal_double(input, &double_result)))
1678 result = double_result;
1683 char*
buf = 0 ;
size_t size = 0;
int alloc = SWIG_OLDOBJ;
1684 if (SWIG_IsOK((SWIG_AsCharPtrAndSize(input, &buf, &size, &alloc))))
1688 result = std::string(buf, size - 1);
1689 if (alloc == SWIG_NEWOBJ)
1694 result = std::string();
1703 const int res = SWIG_AsPtr_HOM_BinaryString(input, &val);
1708 result = std::move(*val);
1709 if (SWIG_IsNewObj(res))
1721 bool is_seq = PyList_Check(input) || PyTuple_Check(input);
1722 bool is_dict = PyDict_Check(input);
1725 CONVERT_SEQ(std::vector<int>);
1726 CONVERT_SEQ(std::vector<double>);
1727 CONVERT_SEQ(std::vector<std::string>);
1728 CONVERT_SEQ(std::vector<HOM_Quaternion>);
1729 CONVERT_SEQ(std::vector<HOM_Vector2>);
1730 CONVERT_SEQ(std::vector<HOM_Vector3>);
1731 CONVERT_SEQ(std::vector<HOM_Vector4>);
1732 CONVERT_SEQ(std::vector<HOM_Matrix2>);
1733 CONVERT_SEQ(std::vector<HOM_Matrix3>);
1734 CONVERT_SEQ(std::vector<HOM_Matrix4>);
1735 CONVERT_SEQ(std__vector_std__map_std__string_hboost__any__);
1739 CONVERT_ASPTR(std__map_std__string_hboost__any_);
1746 InterpreterObject swig_input =
1747 (InterpreterObject)SWIG_Python_GetSwigThis(input);
1749 CONVERT_VAL(std::string);
1768 CONVERT_VAL(std::vector<int>);
1769 CONVERT_VAL(std::vector<double>);
1770 CONVERT_VAL(std::vector<std::string>);
1771 CONVERT_VAL(std::vector<HOM_Quaternion>);
1772 CONVERT_VAL(std::vector<HOM_Vector2>);
1773 CONVERT_VAL(std::vector<HOM_Vector3>);
1774 CONVERT_VAL(std::vector<HOM_Vector4>);
1775 CONVERT_VAL(std::vector<HOM_Matrix2>);
1776 CONVERT_VAL(std::vector<HOM_Matrix3>);
1777 CONVERT_VAL(std::vector<HOM_Matrix4>);
1778 CONVERT_VAL(std__map_std__string_hboost__any_);
1779 CONVERT_VAL(std__vector_std__map_std__string_hboost__any__);
1792 HOMinterpreterObjectToUTOptionAny(InterpreterObject input,
1793 HOM_UTOptionAny &result)
1795 return HOMinterpreterObjectToBoostAny(input, result);
1803 struct traits_asptr<hboost::any>
1805 static int asptr(InterpreterObject obj,
hboost::any **val)
1809 HOMinterpreterObjectToBoostAny(obj, *p);
1819 static InterpreterObject
1820 HOMboostAnyToInterpreterObject(
const hboost::any &result)
1823 return SWIG_Py_Void();
1825 namespace ti = hboost::typeindex;
1827 if (result.type() == ti::type_id<int>())
1828 return SWIG_From_int(hboost::any_cast<int>(result));
1830 if (result.type() == ti::type_id<long>())
1831 return SWIG_From_long(hboost::any_cast<long>(result));
1833 if (result.type() == ti::type_id<int64>())
1834 return swig::from(hboost::any_cast<int64>(result));
1836 if (result.type() == ti::type_id<float>())
1837 return SWIG_From_float(hboost::any_cast<float>(result));
1839 if (result.type() == ti::type_id<double>())
1840 return SWIG_From_double(hboost::any_cast<double>(result));
1842 if (result.type() == ti::type_id<bool>())
1843 return SWIG_From_bool(hboost::any_cast<bool>(result));
1845 if (result.type() == ti::type_id<std::string>())
1846 return SWIG_From_std_string(hboost::any_cast<std::string>(result));
1848 if (result.type() == ti::type_id<HOM_BinaryString>())
1849 return SWIG_From_HOM_BinaryString(hboost::any_cast<HOM_BinaryString>(result));
1851 if (result.type() == ti::type_id<std::map<std::string, hboost::any>>())
1853 hboost::any_cast<std::map<std::string, hboost::any> >(result));
1855 if (result.type() == ti::type_id<std::vector<int>>())
1856 return swig::from(hboost::any_cast<std::vector<int> >(result));
1858 if (result.type() == ti::type_id<std::vector<int64>>())
1859 return swig::from(hboost::any_cast<std::vector<int64> >(result));
1861 if (result.type() == ti::type_id<std::vector<float>>())
1862 return swig::from(hboost::any_cast<std::vector<float> >(result));
1864 if (result.type() == ti::type_id<std::vector<std::string>>())
1865 return swig::from(hboost::any_cast<std::vector<std::string> >(result));
1867 if (result.type() == ti::type_id<std::vector<double>>())
1868 return swig::from(hboost::any_cast<std::vector<double> >(result));
1870 if (result.type() == ti::type_id<std::vector<std::vector<float> >>())
1872 hboost::any_cast<std::vector<std::vector<float> > >(result));
1874 if (result.type() == ti::type_id<std::vector<std::vector<double> >>())
1876 hboost::any_cast<std::vector<std::vector<double> > >(result));
1878 if (result.type() == ti::type_id<std::vector<std::map<std::string, hboost::any> >>())
1880 hboost::any_cast<std::vector<std::map<std::string, hboost::any> > >(result));
1884 if (result.type() == ti::type_id<HOM_Vector2 *>())
1885 return HOMconvertValueForInterpreter(
1886 hboost::any_cast<HOM_Vector2 *>(result), SWIG_POINTER_OWN);
1888 if (result.type() == ti::type_id<HOM_Vector3 *>())
1889 return HOMconvertValueForInterpreter(
1890 hboost::any_cast<HOM_Vector3 *>(result), SWIG_POINTER_OWN);
1892 if (result.type() == ti::type_id<HOM_Vector4 *>())
1893 return HOMconvertValueForInterpreter(
1894 hboost::any_cast<HOM_Vector4 *>(result), SWIG_POINTER_OWN);
1896 if (result.type() == ti::type_id<HOM_Matrix2 *>())
1897 return HOMconvertValueForInterpreter(
1898 hboost::any_cast<HOM_Matrix2 *>(result), SWIG_POINTER_OWN);
1900 if (result.type() == ti::type_id<HOM_Matrix3 *>())
1901 return HOMconvertValueForInterpreter(
1902 hboost::any_cast<HOM_Matrix3 *>(result), SWIG_POINTER_OWN);
1904 if (result.type() == ti::type_id<HOM_Matrix4 *>())
1905 return HOMconvertValueForInterpreter(
1906 hboost::any_cast<HOM_Matrix4 *>(result), SWIG_POINTER_OWN);
1908 if (result.type() == ti::type_id<HOM_Quaternion *>())
1909 return HOMconvertValueForInterpreter(
1910 hboost::any_cast<HOM_Quaternion *>(result), SWIG_POINTER_OWN);
1912 if (result.type() == ti::type_id<HOM_NodeType *>())
1913 return HOMconvertValueForInterpreter(
1914 hboost::any_cast<HOM_NodeType *>(result), SWIG_POINTER_OWN);
1916 if (result.type() == ti::type_id<HOM_Ramp *>())
1917 return HOMconvertValueForInterpreter(
1918 hboost::any_cast<HOM_Ramp *>(result), SWIG_POINTER_OWN);
1920 if (result.type() == ti::type_id<HOM_Color *>())
1921 return HOMconvertValueForInterpreter(
1922 hboost::any_cast<HOM_Color *>(result), SWIG_POINTER_OWN);
1924 if (result.type() == ti::type_id<HOM_Parm *>())
1925 return HOMconvertValueForInterpreter(
1926 hboost::any_cast<HOM_Parm *>(result), SWIG_POINTER_OWN);
1928 if (result.type() == ti::type_id<HOM_EnumValue *>())
1929 return HOMconvertValueForInterpreter(
1930 hboost::any_cast<HOM_EnumValue *>(result), 0);
1932 if (result.type() == ti::type_id<HOM_Geometry *>())
1933 return HOMconvertValueForInterpreter(
1934 hboost::any_cast<HOM_Geometry *>(result), SWIG_POINTER_OWN);
1936 if (result.type() == ti::type_id<HOM_ImageLayer *>())
1937 return HOMconvertValueForInterpreter(
1938 hboost::any_cast<HOM_ImageLayer *>(result), SWIG_POINTER_OWN);
1940 if (result.type() == ti::type_id<HOM_NanoVDB *>())
1941 return HOMconvertValueForInterpreter(
1942 hboost::any_cast<HOM_NanoVDB *>(result), SWIG_POINTER_OWN);
1944 if (result.type() == ti::type_id<HOM_DetachedAttrib *>())
1945 return HOMconvertValueForInterpreter(
1946 hboost::any_cast<HOM_DetachedAttrib *>(result), SWIG_POINTER_OWN);
1948 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Vector2> >>())
1952 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Vector3> >>())
1956 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Vector4> >>())
1960 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Matrix2> >>())
1964 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Matrix3> >>())
1968 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Matrix4> >>())
1972 if (result.type() == ti::type_id<std::vector<HOM_ElemPtr<HOM_Quaternion> >>())
1976 #if UT_ASSERT_LEVEL > 0
1977 std::cout <<
"Unknown data type: "
1981 return SWIG_Py_Void();
1986 static InterpreterObject
1987 HOMDDSourceAnyToInterpreterObject(
const HOM_DDSourceAny &result)
1989 namespace ti = hboost::typeindex;
1991 if (result.type() == ti::type_id<HOM_Node *>())
1993 return HOMconvertValueForInterpreter(
1994 hboost::any_cast<HOM_Node *>(result), SWIG_POINTER_OWN);
1996 if (result.type() == ti::type_id<HOM_Parm *>())
1998 return HOMconvertValueForInterpreter(
1999 hboost::any_cast<HOM_Parm *>(result), SWIG_POINTER_OWN);
2001 if (result.type() == ti::type_id<HOM_GalleryEntry *>())
2003 return HOMconvertValueForInterpreter(
2004 hboost::any_cast<HOM_GalleryEntry *>(result), SWIG_POINTER_OWN);
2007 return HOMboostAnyToInterpreterObject(result);
2014 struct traits_from<hboost::any>
2017 {
return HOMboostAnyToInterpreterObject(val); }
2021 static InterpreterObject
2022 HOMoptionsToInterpreterObject(
const UT_Options &options);
2024 static InterpreterObject
2025 HOMoptionEntryToInterpreterObject(
const UT_OptionEntry &option_entry)
2031 InterpreterObject result = NULL;
2033 switch (option_entry.
getType())
2040 return SWIG_From_bool(
2044 return SWIG_From_double(
2051 return SWIG_From_std_string(
2056 return HOMconvertValueForInterpreter(
2062 return HOMconvertValueForInterpreter(
2068 return HOMconvertValueForInterpreter(
2074 return HOMconvertValueForInterpreter(
2080 return HOMconvertValueForInterpreter(
2086 return HOMconvertValueForInterpreter(
2092 return HOMconvertValueForInterpreter(
2098 return HOMconvertValueForInterpreter(
2104 return HOMconvertValueForInterpreter(
2111 std::vector<int64> int_vector;
2113 static_cast<const UT_OptionInt64Array &>(option_entry)
2115 return swig::from(int_vector);
2120 std::vector<double> double_vector;
2122 static_cast<const UT_OptionFpreal64Array &>(option_entry)
2124 return swig::from(double_vector);
2131 std::vector<std::string> str_vector;
2132 UTarrayToStdVectorOfStrings(
2133 static_cast<const UT_OptionStringArray &>(option_entry)
2135 return swig::from(str_vector);
2142 return HOMoptionsToInterpreterObject(*opt.
options());
2148 InterpreterObject result = PyList_New(0);
2150 for (
auto && opt : optlist)
2152 PyList_Append(result, HOMoptionsToInterpreterObject(*opt.
options()));
2163 return result ? result : SWIG_Py_Void();
2167 static InterpreterObject
2168 HOMoptionsToInterpreterObject(
const UT_Options &options)
2174 InterpreterObject result = PyDict_New();
2180 InterpreterObject value=HOMoptionEntryToInterpreterObject(*it.entry());
2181 PyDict_SetItemString(result, it.name(),
value);
2188 static InterpreterObject
2189 HOMoptionsListToInterpreterObject(
const std::vector<UT_Options>& options)
2191 auto pysize = options.size();
2197 InterpreterObject list = PyList_New(pysize);
2198 for (
int i = 0; i < pysize; ++i)
2200 auto value = HOMoptionsToInterpreterObject(options[i]);
2202 PyList_SET_ITEM(list, i, value);
2213 template<
typename T>
2214 PyObject* HOMgetattr(T* hom_object,
const char *
name)
2222 PyObject *dict = context
2225 ? PyDict_GetItemString(dict, name) : NULL;
2228 if (!attribute && dict)
2231 attribute = name ? PyDict_GetItemString(dict, name) : NULL;
2237 return HOMincRef(attribute);
2243 error_message.
sprintf(
"'module' object has no attribute '%s'", name);
2244 PyErr_SetString(PyExc_AttributeError, error_message.
buffer());
2258 HOM_PyBuffer(InterpreterObject py_object)
2260 #if PY_VERSION_HEX >= 0x03000000
2261 myBytesObj =
nullptr;
2266 PyObject *obj = py_object;
2268 #if PY_VERSION_HEX >= 0x03000000
2270 if (PyUnicode_Check(obj))
2273 PyUnicode_AsEncodedString(obj,
"utf-8",
"surrogateescape");
2279 #if PY_VERSION_HEX >= 0x02060000
2280 myUseNewAPI =
false;
2281 if (PyObject_CheckBuffer(obj))
2283 if (PyObject_GetBuffer(obj, &myPyBuffer, PyBUF_SIMPLE) < 0)
2285 #if PY_VERSION_HEX >= 0x03000000
2286 cleanBytesObject_();
2288 throw HOM_TypeError(
"failed to get readable buffer");
2292 myData = myPyBuffer.buf;
2293 myLength = myPyBuffer.len;
2298 #if PY_VERSION_HEX >= 0x03000000
2299 cleanBytesObject_();
2300 throw HOM_TypeError(
"failed to get readable buffer");
2304 if (!PyObject_CheckReadBuffer(obj))
2305 throw HOM_TypeError(
"expected a readable buffer");
2307 if (PyObject_AsReadBuffer(obj, &myData, &myLength) < 0)
2308 throw HOM_TypeError(
"failed to get readable buffer");
2314 #if PY_VERSION_HEX >= 0x03000000
2315 cleanBytesObject_();
2318 #if PY_VERSION_HEX >= 0x02060000
2320 PyBuffer_Release(&myPyBuffer);
2324 #if PY_VERSION_HEX >= 0x03000000
2325 void cleanBytesObject_()
2330 Py_DECREF(myBytesObj);
2331 myBytesObj =
nullptr;
2335 #if PY_VERSION_HEX >= 0x03000000
2336 PyObject *myBytesObj;
2339 #if PY_VERSION_HEX >= 0x02060000
2341 Py_buffer myPyBuffer;
2344 Py_ssize_t myLength;
2354 template <
typename T,
typename A>
2356 HOMattribValue(T &geo_element,
A &hom_attrib,
2362 InterpreterObject result = NULL;
2363 const bool scalar = (attr_size == 1 && !is_array_type);
2364 switch (array_data_type)
2366 case HOM_attribData::Int_Id:
2368 result = swig::from(
2369 hboost::any_cast<int64>(geo_element.intAttribValue(hom_attrib)));
2371 result = swig::from(
2372 hboost::any_cast<std::vector<int64> >(
2373 geo_element.intListAttribValue(hom_attrib)));
2376 case HOM_attribData::Float_Id:
2378 result = SWIG_From_double(geo_element.floatAttribValue(hom_attrib));
2380 result = swig::from(geo_element.floatListAttribValue(hom_attrib));
2383 case HOM_attribData::String_Id:
2385 result = SWIG_From_std_string(
2386 geo_element.stringAttribValue(hom_attrib));
2388 result = swig::from(geo_element.stringListAttribValue(hom_attrib));
2391 case HOM_attribData::Dict_Id:
2393 result = swig::from(geo_element.dictAttribValue(hom_attrib));
2395 result = swig::from(geo_element.dictListAttribValue(hom_attrib));
2402 template <
typename T>
2404 HOMattribValue(T &geo_element,
HOM_Attrib &hom_attrib)
2406 return HOMattribValue(geo_element,
2413 template <
typename T>
2415 HOMattribValue(T &geo_element,
const char *name)
2418 bool is_array_type =
false;
2419 int attr_data_type = 0;
2420 geo_element._attribInfo(name,attr_data_type,attr_size,is_array_type);
2421 return HOMattribValue(geo_element,name, attr_size, is_array_type,
2430 static InterpreterObject
2435 case HOM_parmData::Int_Id:
2436 return swig::from(hboost::any_cast<int64>(parm.
evalAsInt()));
2437 case HOM_parmData::Float_Id:
2439 case HOM_parmData::String_Id:
2441 case HOM_parmData::Ramp_Id:
2442 return SWIG_NewPointerObj(
2443 (
void*)parm.
evalAsRamp(), SWIGTYPE_p_HOM_Ramp, SWIG_POINTER_OWN);
2444 case HOM_parmData::Data_Id:
2448 return SWIG_NewPointerObj(
2449 (
void*)parm.
evalAsGeometry(), SWIGTYPE_p_HOM_Geometry, SWIG_POINTER_OWN);
2453 return SWIG_Py_Void();
2456 static InterpreterObject
2457 HOMevalParmAtFrame(
HOM_Parm &parm,
double frame)
2461 case HOM_parmData::Int_Id:
2463 case HOM_parmData::Float_Id:
2465 case HOM_parmData::String_Id:
2467 case HOM_parmData::Ramp_Id:
2468 return SWIG_NewPointerObj(
2470 SWIGTYPE_p_HOM_Ramp, SWIG_POINTER_OWN);
2471 case HOM_parmData::Data_Id:
2475 return SWIG_NewPointerObj(
2477 SWIGTYPE_p_HOM_Geometry, SWIG_POINTER_OWN);
2481 return SWIG_Py_Void();
2484 static InterpreterObject
2489 case HOM_parmData::Int_Id:
2491 case HOM_parmData::Float_Id:
2493 case HOM_parmData::String_Id:
2495 case HOM_parmData::Ramp_Id:
2497 case HOM_parmData::Data_Id:
2499 == HOM_dataParmType::KeyValueDictionary_Id)
2508 return SWIG_Py_Void();
2511 static InterpreterObject
2512 HOMevalParmTupleAtFrame(
HOM_ParmTuple &parm_tuple,
double frame)
2516 case HOM_parmData::Int_Id:
2518 case HOM_parmData::Float_Id:
2520 case HOM_parmData::String_Id:
2522 case HOM_parmData::Ramp_Id:
2524 case HOM_parmData::Data_Id:
2526 == HOM_dataParmType::KeyValueDictionary_Id)
2535 return SWIG_Py_Void();
2538 static InterpreterObject
2543 case HOM_parmData::Int_Id:
2544 return swig::from(hboost::any_cast<int64>(visualizer.
evalParmAsInt(parm_name)));
2545 case HOM_parmData::Float_Id:
2547 case HOM_parmData::String_Id:
2549 case HOM_parmData::Ramp_Id:
2550 return SWIG_NewPointerObj(
2551 (
void*)visualizer.
evalParmAsRamp(parm_name), SWIGTYPE_p_HOM_Ramp,
2556 return SWIG_Py_Void();
UT_Matrix4T< double > UT_DMatrix4
virtual std::vector< HOM_ElemPtr< HOM_Geometry > > evalAsGeometries()=0
GLenum GLuint GLenum GLsizei const GLchar * buf
UT_Matrix3T< double > UT_DMatrix3
virtual std::vector< int > evalAsIntsAtFrame(double frame)=0
virtual std::string evalParmAsString(const char *parm_name)=0
virtual bool isArrayType()=0
virtual std::vector< HOM_ElemPtr< HOM_Ramp > > evalAsRampsAtFrame(double frame)=0
hboost::any HOM_UTOptionAny
void * opaqueObject() const noexcept
GLsizei const GLfloat * value
virtual int parmDataTypeEnumId()=0
virtual double evalAsFloat()=0
virtual int opTypeIdAsInt()=0
virtual std::vector< int > evalAsInts()=0
SYS_FORCE_INLINE const char * buffer() const
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
**But if you need a result
UT_Optional< HOM_IntInterval > HOM_OptionalIntInterval
constexpr auto in(type t, int set) -> bool
__hostdev__ float getValue(uint32_t i) const
std::optional< T > UT_Optional
virtual HOM_Ramp * evalParmAsRamp(const char *parm_name)=0
GLenum GLuint GLint GLint layer
virtual HOM_Ramp * evalAsRampAtFrame(double frame)=0
virtual std::vector< std::string > evalAsStrings()=0
UT_API std::string UTunmangleClassNameFromTypeIdName(const std::string &name)
virtual double evalAsFloatAtFrame(double frame)=0
virtual std::vector< std::map< std::string, std::string > > evalAsJSONMaps()=0
virtual int dataParmTypeEnumId()=0
bool any(const vbool4 &v)
virtual std::map< std::string, std::string > evalAsJSONMapAtFrame(double frame)=0
virtual HOM_Geometry * evalAsGeometryAtFrame(double frame)=0
virtual UT_OptionType getType() const
UT_Matrix2T< double > UT_DMatrix2
virtual std::vector< std::map< std::string, std::string > > evalAsJSONMapsAtFrame(double frame)=0
virtual std::map< std::string, std::string > evalAsJSONMap()=0
virtual int64 evalAsInt()=0
UT_Optional< int > HOM_OptionalInt
GLuint const GLchar * name
VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t packed(VULKAN_HPP_NAMESPACE::Format format)
virtual int parmDataTypeEnumId()=0
virtual std::string evalAsStringAtFrame(double frame)=0
virtual std::vector< HOM_ElemPtr< HOM_Geometry > > evalAsGeometriesAtFrame(double frame)=0
virtual std::vector< double > evalAsFloatsAtFrame(double frame)=0
virtual HOM_Ramp * evalAsRamp()=0
int sprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
UT_IntervalT< int > HOM_IntInterval
virtual int dataParmTypeEnumId()=0
hboost::any HOM_DDSourceAny
virtual std::vector< double > evalAsFloats()=0
A map of string to various well defined value types.
virtual int opTypeIdAsInt()=0
virtual double evalParmAsFloat(const char *parm_name)=0
virtual int parmDataTypeEnumId(const char *parm_name)=0
SYS_FORCE_INLINE const UT_Options * options() const
virtual bool isManager(bool include_management_types=true)=0
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
OIIO_API bool attribute(string_view name, TypeDesc type, const void *val)
virtual HOM_EnumValue & dataType()=0
OIIO_UTIL_API const char * c_str(string_view str)
UT_Optional< double > HOM_OptionalDouble
Adaptors between UT and std classes.
virtual std::vector< HOM_ElemPtr< HOM_Ramp > > evalAsRamps()=0
virtual int evalParmAsInt(const char *parm_name)=0
HOM_API HOM_Module & HOM()
virtual std::vector< std::string > evalAsStringsAtFrame(double frame)=0
virtual std::string evalAsString()=0
virtual int64 evalAsIntAtFrame(double frame)=0
virtual HOM_Geometry * evalAsGeometry()=0