15 #ifndef __HOM_Module_h__
16 #define __HOM_Module_h__
37 #include <hboost/any.hpp>
40 class STORUI_OrboltURLHandler;
191 #define HOM_SESSION_MODULE_NAME "hou.session"
202 static void setHOMCreator(
void (*homCreator)());
206 virtual std::vector<std::string> _getArgumentAutoComplete(
207 const char *method_name,
const char *arguments,
208 bool meta_info_only =
false) = 0;
213 virtual void setRelativeNodeForAutoComplete(
OP_Node *node) = 0;
219 virtual bool isUIAvailable() = 0;
220 virtual bool _isExperimentalActive() = 0;
221 virtual bool _isCurrentThreadHoldingHOMLock() = 0;
247 virtual bool _assertWrapper(
248 const char *file,
int linenum,
const char *
function,
249 const char *condition,
const char *reason) = 0;
251 virtual void exit(
int exit_code=0,
bool suppress_save_prompt=
false) = 0;
256 virtual bool isExiting() = 0;
258 virtual void addPreloadIcon(
const char *
name,
int w,
int h) = 0;
259 virtual void rasterizePreloadIcons() = 0;
261 virtual std::string applicationName() = 0;
262 virtual std::vector<int> applicationVersion(
bool include_patch=
false) = 0;
263 virtual std::string applicationVersionString() = 0;
264 virtual std::string applicationCompilationDate() = 0;
265 virtual std::string applicationPlatformInfo() = 0;
266 virtual std::map<std::string, std::string> vdbVersionInfo() = 0;
267 virtual int hdkAPIVersion() = 0;
269 virtual bool isApprentice() = 0;
270 virtual void releaseLicense() = 0;
273 virtual int maxThreads() = 0;
274 virtual void setMaxThreads(
int max_threads) = 0;
281 virtual void setPwd(
HOM_Node &newpwd) = 0;
282 virtual void cd(
const char *
path) = 0;
288 virtual HOM_Node* currentDopNet() = 0;
289 virtual void setCurrentDopNet(
HOM_Node &dopnet) = 0;
292 virtual bool simulationEnabled() = 0;
293 virtual void setSimulationEnabled(
bool enabled) = 0;
300 virtual std::vector<HOM_ElemPtr<HOM_Node> > nodes(
const std::vector<std::string> &paths) = 0;
301 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > items(
const std::vector<std::string> &paths) = 0;
303 virtual HOM_Node *nodeBySessionId(
int session_id) = 0;
304 virtual HOM_NetworkBox *networkBoxBySessionId(
int session_id) = 0;
305 virtual HOM_StickyNote *stickyNoteBySessionId(
int session_id) = 0;
307 int64 session_id) = 0;
308 virtual HOM_NetworkDot *networkDotBySessionId(
int session_id) = 0;
312 int node_session_id,
int input_index) = 0;
316 virtual HOM_UniNode *uniContainerConnectNodeBySessionId(
317 int64 session_id,
bool is_container_inputs) = 0;
319 int64 session_id) = 0;
321 int64 session_id) = 0;
326 int64 session_id) = 0;
328 int64 session_id) = 0;
330 int64 session_id) = 0;
337 virtual std::vector<HOM_ElemPtr<HOM_Node> > selectedNodes(
338 bool include_hidden =
false) = 0;
339 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > selectedItems(
340 bool include_hidden =
false) = 0;
341 virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> > selectedConnections() = 0;
342 virtual void clearAllSelected() = 0;
345 virtual void copyNodesToClipboard(
const std::vector<HOM_Node *> &nodes) = 0;
346 virtual void pasteNodesFromClipboard(
HOM_Node &destination_node) = 0;
352 virtual HOM_Parm* newParm(
OP_Node &node,
int parm_index,
int vector_index) = 0;
354 virtual HOM_Parm *evaluatingParm() = 0;
389 virtual std::vector< std::map<std::string, std::string> >
390 parmClipboardContents() = 0;
421 const char *category_name) = 0;
423 virtual std::map<std::string, HOM_NodeTypeCategory *> nodeTypeCategories(
424 bool include_uni_categories =
false,
425 bool include_op_categories =
true) = 0;
427 virtual std::vector<HOM_ElemPtr<HOM_Node> > copyNodesTo(
428 const std::vector<HOM_Node *> &nodes,
430 virtual std::vector<HOM_ElemPtr<HOM_Node> > moveNodesTo(
431 const std::vector<HOM_Node *> &nodes,
435 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > nodeBundles() = 0;
436 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > selectedNodeBundles() = 0;
441 const char *file_path) = 0;
444 virtual fpreal getTimeWithoutAddingDependency() = 0;
445 virtual double time() = 0;
446 virtual void setTime(
double time) = 0;
447 virtual double frame(
bool full_precision=
false) = 0;
448 virtual int intFrame() = 0;
449 virtual void setFrame(
double frame) = 0;
450 virtual double fps() = 0;
453 bool modify_frame_count =
true,
454 bool preserve_keyframes =
false,
455 bool preserve_frame_start =
false)
457 virtual double timeToFrame(
double time,
bool full_precision=
false) = 0;
458 virtual double frameToTime(
double frame) = 0;
460 virtual double timeTolerance() = 0;
461 virtual double frameTolerance() = 0;
466 virtual void _syncFromMainContext() = 0;
467 virtual void _syncToMainContext() = 0;
470 virtual fpreal scaleFromMKS(
const char *
units) = 0;
473 virtual double bezier() = 0;
474 virtual double constant() = 0;
475 virtual double cubic() = 0;
476 virtual double cycle(
double start_frame,
double end_frame) = 0;
477 virtual double cyclet(
double start_time,
double end_time) = 0;
478 virtual double cycleoffset(
double start_frame,
double end_frame) = 0;
479 virtual double cycleoffsett(
double start_time,
double end_time) = 0;
480 virtual double ease() = 0;
481 virtual double easein() = 0;
482 virtual double easeinp(
double ease_speed) = 0;
483 virtual double easeout() = 0;
484 virtual double easeoutp(
double ease_speed) = 0;
485 virtual double easep(
double ease_bias) = 0;
486 virtual double linear() = 0;
487 virtual double match() = 0;
488 virtual double matchin() = 0;
489 virtual double matchout() = 0;
490 virtual double qlinear() = 0;
491 virtual double quintic() = 0;
492 virtual double repeat(
double start_frame,
double end_frame) = 0;
493 virtual double repeatt(
double start_time,
double end_time) = 0;
494 virtual double spline() = 0;
495 virtual double vmatch() = 0;
496 virtual double vmatchin() = 0;
497 virtual double vmatchout() = 0;
499 virtual std::string chopExportConflictResolutionPattern() = 0;
500 virtual void setChopExportConflictResolutionPattern(
const char *
pattern) = 0;
502 virtual std::vector<HOM_ElemPtr<HOM_VexContext> >
510 virtual std::string helpServerUrl() = 0;
512 virtual std::string hscriptCommandHelp(
const char *command_name) = 0;
516 virtual std::vector<std::string> hscript(
const char *command) = 0;
519 virtual bool almostEqual(
double x,
double y) = 0;
521 virtual std::vector<std::pair<HOM_ElemPtr<HOM_Parm>, std::string> >
523 const char *project_dir_variable=
"HIP",
bool include_all_refs=
true) = 0;
526 virtual std::string findFile(
const char *file_name) = 0;
527 virtual std::vector<std::string> findFiles(
528 const char *file_name) = 0;
529 virtual std::vector<std::string> findFilesWithExtension(
530 const char *file_extension,
const char *subdirectory = NULL) = 0;
533 virtual std::string findDirectory(
const char *directory_name) = 0;
534 virtual std::vector<std::string> findDirectories(
535 const char *directory_name) = 0;
537 virtual std::vector<std::string> houdiniPath(
const char *pathvar =
nullptr) = 0;
539 virtual std::string homeHoudiniDirectory() = 0;
541 virtual std::string
readFile(
const char *file_path) = 0;
544 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromString(
547 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromFile(
548 const char *file_path) = 0;
551 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
553 virtual void saveIndexDataToFile(
554 const char *file_path,
555 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
559 virtual std::vector<std::pair<std::string, HOM_BinaryString> >
560 loadCPIODataFromString(
const char *
data,
int length) = 0;
563 const std::vector<std::pair<std::string, HOM_BinaryString> >
572 virtual void forceUpdateFromSessionModuleSource() = 0;
573 virtual void forceSetSessionModuleSource(
const char *
source) = 0;
575 virtual void setSessionModuleSource(
const char *
source) = 0;
576 virtual void appendSessionModuleSource(
const char *
source) = 0;
577 virtual std::string sessionModuleSource() = 0;
579 virtual int sessionModuleSourceChangeCount() = 0;
585 {
return theImplementation != NULL; }
588 virtual std::string chsop(
const char *
path) = 0;
591 virtual std::string chsoplist(
const char *
path) = 0;
594 virtual std::vector<std::string>
595 sortedNodePaths(
const std::vector<std::string> &paths) = 0;
598 virtual std::vector<HOM_ElemPtr<HOM_Node> >
599 sortedNodes(
const std::vector<HOM_Node*> &nodes) = 0;
602 virtual int patternMatch(
603 const char *
pattern,
const char *str,
605 bool path_match =
false) = 0;
609 virtual hboost::any hscriptExpression(
const char *expression) = 0;
610 virtual double hscriptFloatExpression(
const char *expression) = 0;
611 virtual std::string hscriptStringExpression(
const char *expression) = 0;
612 virtual std::vector<double>hscriptVectorExpression(
613 const char *expression) = 0;
614 virtual std::vector<std::vector<double> > hscriptMatrixExpression(
615 const char *expression) = 0;
619 virtual char *getEnvConfigValue(
620 const char *
name,
const char *default_value=NULL) = 0;
622 virtual char *
getenv(
const char *
name,
const char *default_value=NULL) = 0;
624 virtual void putenv(
const char *
name,
const char *
value) = 0;
626 virtual void unsetenv(
const char *
name) = 0;
628 virtual void allowEnvironmentToOverwriteVariable(
629 const char *
name,
bool onoff) = 0;
631 virtual void *expressionGlobals() = 0;
636 virtual bool updateProgressAndCheckForInterrupt(
int percentage=-1) = 0;
638 virtual std::map<std::string, hboost::any> runVex(
639 const char *vex_file,
640 const std::map<std::string, hboost::any> &inputs,
645 virtual void saveImageDataToFile(
646 const std::vector<float> &color_and_alpha_data,
648 const char *file_name,
649 bool flip_vertical =
false) = 0;
651 virtual void saveImageDataToFile(
652 const std::string &color_and_alpha_data,
654 const char *file_name,
655 bool flip_vertical =
false) = 0;
658 const char *image_file_name,
661 virtual std::vector<HOM_BinaryString> _loadImageDataFromFileWithAllPlanes(
662 const char *image_file_name,
665 virtual std::vector<int> imageResolution(
const char *image_file_name) = 0;
667 virtual std::vector<std::string> _imagePlanes(
668 const char *image_file_name) = 0;
681 virtual void *opaqueRunCallbackAndCatchCrashes(
void *opaque_callback) = 0;
687 virtual void pushAccessPrivilege(
const char *key) = 0;
688 virtual void popAccessPrivilege(
const char *key) = 0;
690 virtual std::string currentPythonModuleKey() = 0;
692 virtual void registerAccessPrivilegePyClient(
void *opaque_python_object) = 0;
702 const std::vector<double> &default_value,
704 bool min_is_strict,
bool max_is_strict,
707 const char *disable_when,
709 bool is_label_hidden,
712 const char *script_callback,
714 const std::map<std::string, std::string> &tags,
715 const std::map<HOM_EnumValue *, std::string> &conditionals,
716 const std::vector<std::string> &default_expression,
717 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
723 const std::vector<int64> &default_value,
725 bool min_is_strict,
bool max_is_strict,
728 const std::vector<std::string> &menu_items,
729 const std::vector<std::string> &menu_labels,
730 const std::vector<std::string> &icon_names,
731 const std::string &item_generator_script,
735 const char *disable_when,
737 bool is_label_hidden,
740 const char *script_callback,
742 const std::map<std::string, std::string> &tags,
743 const std::map<HOM_EnumValue *, std::string> &conditionals,
744 const std::vector<std::string> &default_expression,
745 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
751 const std::vector<std::string> &default_value,
755 const std::vector<std::string> &menu_items,
756 const std::vector<std::string> &menu_labels,
757 const std::vector<std::string> &icon_names,
758 const std::string &item_generator_script,
761 const char *disable_when,
763 bool is_label_hidden,
766 const char *script_callback,
768 const std::map<std::string, std::string> &tags,
769 const std::map<HOM_EnumValue *, std::string> &conditionals,
770 const std::vector<std::string> &default_expression,
771 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
780 const char *disable_when,
782 bool is_label_hidden,
785 const char *script_callback,
787 const std::map<std::string, std::string> &tags,
788 const std::map<HOM_EnumValue *, std::string> &conditionals,
789 const std::vector<std::string> &default_expression,
790 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
796 const char *disable_when,
798 bool is_label_hidden,
801 const char *script_callback,
803 const std::map<std::string, std::string> &tags,
804 const std::map<HOM_EnumValue *, std::string> &conditionals,
805 const std::string &default_expression,
811 const std::vector<std::string> &menu_items,
812 const std::vector<std::string> &menu_labels,
814 const std::vector<std::string> &icon_names,
815 const std::string &item_generator_script,
819 const char *disable_when,
821 bool is_label_hidden,
824 const char *script_callback,
826 const std::map<std::string, std::string> &tags,
827 const std::map<HOM_EnumValue *, std::string> &conditionals,
828 const std::string &default_expression,
830 bool store_default_value_as_string,
831 bool is_button_strip,
832 bool strip_uses_icons,
839 const std::vector<std::string> &menu_items,
840 const std::vector<std::string> &menu_labels,
841 const std::vector<std::string> &icon_names,
842 const std::string &item_generator_script,
846 const char *disable_when,
848 bool is_label_hidden,
851 const char *script_callback,
853 const std::map<std::string, std::string> &tags,
854 const std::map<HOM_EnumValue *, std::string> &conditionals ) = 0;
859 const std::vector<std::string> &column_labels,
862 bool is_label_hidden,
865 const std::map<std::string, std::string> &tags,
866 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
871 const std::map<std::string, std::string> &tags,
872 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
876 const std::vector<std::string> &folder_names,
878 const std::map<std::string, std::string> &tags) = 0;
883 const std::vector<HOM_ParmTemplate *> &parm_templates,
888 const char *script_callback,
890 const std::map<std::string, std::string> &tags,
891 const std::map<HOM_EnumValue *, std::string> &conditionals,
892 const std::map<HOM_EnumValue *, std::string> &tab_conditionals) = 0;
902 const char *disable_when,
905 const char *script_callback,
907 const std::map<std::string, std::string> &tags,
908 const std::map<HOM_EnumValue *, std::string> &conditionals,
909 const std::string &default_expression,
913 const std::vector<HOM_ParmTemplate *> &parm_templates) = 0;
916 bool cook_stats,
bool pdg_cook_stats,
bool solve_stats,
917 bool draw_stats,
bool gpu_draw_stats,
bool viewport_stats,
918 bool script_stats,
bool render_stats,
bool thread_stats,
919 bool frame_stats,
bool memory_stats,
bool errors,
920 bool pane_stats) = 0;
941 const char *
pattern =
nullptr) = 0;
944 const char *operation_name,
const char *long_operation_name,
945 bool open_interrupt_dialog,
int timeout_ms) = 0;
958 const std::vector<HOM_EnumValue *> &selection_types,
961 const std::vector<HOM_Prim *> &prims) = 0;
963 const std::vector<HOM_Point *> &
points) = 0;
965 const std::vector<HOM_Vertex *> &vertices) = 0;
967 const std::vector<HOM_Edge *> &edges) = 0;
971 bool clone_data_ids =
false) = 0;
992 bool keep_external_ref,
bool delay_load) = 0;
1003 const char *
name) = 0;
1008 const char *prim_path,
1011 virtual HOM_AgentRig *newAgentRig(
const char *
path,
bool keep_external_ref) = 0;
1014 const char *
name,
const std::vector<std::string> &transform_names,
1015 const std::vector<std::vector<int>> &hierarchy) = 0;
1019 bool keep_external_ref =
true) = 0;
1022 const char *
name,
const std::vector<int> &transforms,
1023 const HOM_AgentRig &rig,
const std::vector<double> &weights,
1024 const std::vector<int> &
channels) = 0;
1030 const char *
path,
bool keep_external_ref) = 0;
1034 bool deforming,
double bounds_scale) = 0;
1042 newAgentShapeDeformer(
const char *
name) = 0;
1045 newAgentShapeDeformer(
const HOM_EnumValue &deformer_type) = 0;
1050 const std::vector<HOM_AgentShapeBinding *> &shape_bindings,
1056 bool keep_external_ref =
true) = 0;
1060 bool keep_external_ref =
true) = 0;
1062 const std::map<std::string, hboost::any> &
data) = 0;
1064 virtual bool compareNode(
const char *
path,
const char *dest = NULL) = 0;
1065 virtual bool compareNodeBackup(
const char *
path,
int index,
1066 const char *dest = NULL) = 0;
1067 virtual bool compareHDA(
const char *path_left,
const char *path_right,
1068 const char *dest = NULL) = 0;
1069 virtual bool compareHDABackup(
const char *
path,
int index,
1070 const char *dest = NULL) = 0;
1071 virtual bool compareHip(
const char *dest = NULL) = 0;
1072 virtual bool compareHipBackup(
int index,
const char *dest = NULL) = 0;
1074 virtual bool hasContextOption(
const char *opt) = 0;
1076 virtual std::vector<std::string> contextOptionNames() = 0;
1077 virtual void setContextOption(
const char *opt,
const char *
value) =0;
1078 virtual void setContextOption(
const char *opt,
double value) = 0;
1079 virtual void removeContextOption(
const char *opt) = 0;
1080 virtual std::string contextOptionConfig(
const char *opt) = 0;
1081 virtual void setContextOptionConfig(
const char *opt,
1082 const char *config) = 0;
1083 virtual bool isAutoContextOption(
const char *opt) = 0;
1084 virtual bool isAutoContextOptionOverridden(
const char *opt) = 0;
1087 virtual void addOpaqueContextOptionChangeCallback(
void *callback) = 0;
1089 virtual void removeOpaqueContextOptionChangeCallback(
void *callback) = 0;
1090 virtual void removeAllContextOptionChangeCallbacks() = 0;
1092 virtual std::vector<void *> opaqueContextOptionChangeCallbacks() = 0;
1097 virtual void setOrboltURLHandler(
1098 STORUI_OrboltURLHandler &orbolt_url_handler) = 0;
1104 virtual void constructObject(
void *
pointer,
const std::type_info &
type) = 0;
1105 virtual void destructObject(
void *
pointer,
const std::type_info &
type) = 0;
1106 virtual std::map<std::string, int> objectCounts() = 0;
1109 virtual std::vector<std::string> getPreferenceNames() = 0;
1110 SWIGOUT(%kwargs getPreference;)
1111 virtual std::string getPreference(
const char *
name,
const char* registry_name =
nullptr) = 0;
1112 SWIGOUT(%kwargs setPreference;)
1113 virtual bool setPreference(
const char *
name,
const char*
value,
const char* registry_name =
nullptr) = 0;
1114 virtual bool addPreference(
const char *
name,
const char*
value) = 0;
1115 virtual bool removePreference(
const char *
name) = 0;
1116 virtual void refreshPreferences() = 0;
1117 virtual void savePreferences(
const char* registry_name) = 0;
1118 virtual void loadPreferences(
const char* registry_name) = 0;
1119 SWIGOUT(%kwargs createPreferenceRegistry;)
1120 virtual void createPreferenceRegistry(
const char* registry_name,
const char* file_name,
1121 std::map<std::string, hboost::any> prefs,
const char* prefix_name =
nullptr,
bool binary =
false) = 0;
1122 SWIGOUT(%kwargs refreshPreferenceRegistry;)
1123 virtual void refreshPreferenceRegistry(
const char* registry_name, std::map<std::string, hboost::any> new_prefs,
1124 bool clear_existing =
false) = 0;
1128 std::string
const &
label,
1130 std::vector<HOM_NodeTypeCategory*>
const & contexts) = 0;
1134 std::string
const &
label,
1135 std::vector<HOM_NodeTypeCategory*>
const & categories) = 0;
1142 std::string
const &
name, std::string
const &
label,
bool pickable,
bool fixed_size,
1143 std::map<std::string, hboost::any>
const &
params) = 0;
1165 std::string
const &
name,
1166 std::map<std::string, hboost::any>
const &
params,
1167 std::string
const &
label) = 0;
1172 std::string
const &
name,
1174 std::map<std::string, hboost::any>
const &
params,
1175 std::string
const &
label) = 0;
1181 virtual void startHoudiniEngineDebugger(
unsigned short port) = 0;
1182 virtual void startHoudiniEngineDebugger(
const char *pipe_name) = 0;
1192 bool from_blosc_compression,
1194 bool to_blosc_compression) = 0;
1197 const std::map<std::string, std::vector<HOM_Keyframe *>> &keyframe_map,
1198 bool binary =
true,
bool use_blosc_compression =
true) = 0;
1201 bool blosc_compressed =
true) = 0;
1203 virtual std::vector<HOM_ElemPtr<HOM_Node> > _nodesFromOPNodeList(
int64 val) = 0;
1204 virtual std::vector<HOM_ElemPtr<HOM_DopData> >
1213 virtual std::string userName(
bool alpha=
true) = 0;
1215 virtual std::string machineName(
bool alpha=
true) = 0;
1219 virtual HOM_Node * createAnimationLayers(
const std::string &
path) = 0;
1220 virtual HOM_Node * addAnimationLayer(
HOM_Node &layermixer,
const std::string &layername) = 0;
1221 virtual bool removeAnimationLayer(
HOM_Node &layermixer,
const std::string &layername,
bool merge=
false) = 0;
1222 virtual HOM_Node* createAnimationClip(
const std::string &
path,
bool set_export) = 0;
1224 virtual void* _sceneViewerWindow(
int64 val) = 0;
1232 virtual std::vector<std::string> _prioritizePatternMatches(
1233 const std::vector<std::string> & items,
1234 const std::vector<std::string> & patterns)
const = 0;
1236 virtual void registerOpdefPath(
1237 const std::string &
path,
1238 const std::string &server_name,
1239 const std::string &port_name)
1242 virtual std::vector<std::string> videoEncoders(
1243 HOM_EnumValue const &driver,
const bool available=
false) = 0;
1245 virtual void refreshStartupPathCacheDirectory(
const std::string &dir_path) = 0;
1247 void _debugAssert(
bool v,
const std::string &
message);
1251 static void (*theHOMCreator)();
1257 friend class HOMF_Module;
1258 static void setImplementation(
HOM_Module* implementation);
1271 template <
typename T>
1294 if (!HOM_theHOMLock)
1392 #define HOM_CONSTRUCT_OBJECT(pointer) \
1393 HOM().constructObject(pointer, typeid(*pointer));
1394 #define HOM_DESTRUCT_OBJECT(pointer) \
1395 HOM().destructObject(pointer, typeid(*pointer));
1397 #define HOM_CONSTRUCT_OBJECT(pointer)
1398 #define HOM_DESTRUCT_OBJECT(pointer)
1416 #endif //__HOM_Module_h__
GLuint GLsizei const GLchar * message
std::string ignore_case(std::string item)
Helper function to allow ignore_case to be passed to IsMember or Transform.
GLuint GLsizei const GLchar * label
GLdouble GLdouble GLint GLint const GLdouble * points
#define SYS_VISIBILITY_EXPORT
UT_TaskRootLock & HOMgetLock()
GT_API const UT_StringHolder time
GLsizei const GLfloat * value
const GLuint GLenum const void * binary
GLsizei const GLchar *const * path
UT_UniquePtr< T > HOMdel(T *hom_object)
GLuint GLsizei GLsizei * length
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 Quat< T > spline(const Quat< T > &q0, const Quat< T > &q1, const Quat< T > &q2, const Quat< T > &q3, T t) IMATH_NOEXCEPT
GLenum GLenum GLsizei const GLuint GLboolean enabled
std::string help(const App *app, const Error &e)
Printout the full help string on error (if this fn is set, the old default for CLI11) ...
GLenum const GLfloat * params
GLenum GLuint GLint GLint layer
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
GLint GLsizei GLsizei height
GLint GLint GLsizei GLint GLenum GLenum type
UT_TaskLockT< false > UT_TaskRootLock
HOM_API UT_TaskRootLock * HOM_theHOMLock
bool any(const vbool4 &v)
void ignore(T const &) VULKAN_HPP_NOEXCEPT
constexpr std::enable_if< I< type_count_base< T >::value, int >::type tuple_type_size(){return subtype_count< typename std::tuple_element< I, T >::type >::value+tuple_type_size< T, I+1 >);}template< typename T > struct type_count< T, typename std::enable_if< is_tuple_like< T >::value >::type >{static constexpr int value{tuple_type_size< T, 0 >)};};template< typename T > struct subtype_count{static constexpr int value{is_mutable_container< T >::value?expected_max_vector_size:type_count< T >::value};};template< typename T, typename Enable=void > struct type_count_min{static const int value{0};};template< typename T >struct type_count_min< T, typename std::enable_if<!is_mutable_container< T >::value &&!is_tuple_like< T >::value &&!is_wrapper< T >::value &&!is_complex< T >::value &&!std::is_void< T >::value >::type >{static constexpr int value{type_count< T >::value};};template< typename T > struct type_count_min< T, typename std::enable_if< is_complex< T >::value >::type >{static constexpr int value{1};};template< typename T >struct type_count_min< T, typename std::enable_if< is_wrapper< T >::value &&!is_complex< T >::value &&!is_tuple_like< T >::value >::type >{static constexpr int value{subtype_count_min< typename T::value_type >::value};};template< typename T, std::size_t I >constexpr typename std::enable_if< I==type_count_base< T >::value, int >::type tuple_type_size_min(){return 0;}template< typename T, std::size_t I > constexpr typename std::enable_if< I< type_count_base< T >::value, int >::type tuple_type_size_min(){return subtype_count_min< typename std::tuple_element< I, T >::type >::value+tuple_type_size_min< T, I+1 >);}template< typename T > struct type_count_min< T, typename std::enable_if< is_tuple_like< T >::value >::type >{static constexpr int value{tuple_type_size_min< T, 0 >)};};template< typename T > struct subtype_count_min{static constexpr int value{is_mutable_container< T >::value?((type_count< T >::value< expected_max_vector_size)?type_count< T >::value:0):type_count_min< T >::value};};template< typename T, typename Enable=void > struct expected_count{static const int value{0};};template< typename T >struct expected_count< T, typename std::enable_if<!is_mutable_container< T >::value &&!is_wrapper< T >::value &&!std::is_void< T >::value >::type >{static constexpr int value{1};};template< typename T > struct expected_count< T, typename std::enable_if< is_mutable_container< T >::value >::type >{static constexpr int value{expected_max_vector_size};};template< typename T >struct expected_count< T, typename std::enable_if<!is_mutable_container< T >::value &&is_wrapper< T >::value >::type >{static constexpr int value{expected_count< typename T::value_type >::value};};enum class object_category:int{char_value=1, integral_value=2, unsigned_integral=4, enumeration=6, boolean_value=8, floating_point=10, number_constructible=12, double_constructible=14, integer_constructible=16, string_assignable=23, string_constructible=24, other=45, wrapper_value=50, complex_number=60, tuple_value=70, container_value=80,};template< typename T, typename Enable=void > struct classify_object{static constexpr object_category value{object_category::other};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_integral< T >::value &&!std::is_same< T, char >::value &&std::is_signed< T >::value &&!is_bool< T >::value &&!std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::integral_value};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_integral< T >::value &&std::is_unsigned< T >::value &&!std::is_same< T, char >::value &&!is_bool< T >::value >::type >{static constexpr object_category value{object_category::unsigned_integral};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_same< T, char >::value &&!std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::char_value};};template< typename T > struct classify_object< T, typename std::enable_if< is_bool< T >::value >::type >{static constexpr object_category value{object_category::boolean_value};};template< typename T > struct classify_object< T, typename std::enable_if< std::is_floating_point< T >::value >::type >{static constexpr object_category value{object_category::floating_point};};template< typename T >struct classify_object< T, typename std::enable_if<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&std::is_assignable< T &, std::string >::value >::type >{static constexpr object_category value{object_category::string_assignable};};template< typename T >struct classify_object< T, typename std::enable_if<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&!std::is_assignable< T &, std::string >::value &&(type_count< T >::value==1)&&std::is_constructible< T, std::string >::value >::type >{static constexpr object_category value{object_category::string_constructible};};template< typename T > struct classify_object< T, typename std::enable_if< std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::enumeration};};template< typename T > struct classify_object< T, typename std::enable_if< is_complex< T >::value >::type >{static constexpr object_category value{object_category::complex_number};};template< typename T > struct uncommon_type{using type=typename std::conditional<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&!std::is_assignable< T &, std::string >::value &&!std::is_constructible< T, std::string >::value &&!is_complex< T >::value &&!is_mutable_container< T >::value &&!std::is_enum< T >::value, std::true_type, std::false_type >::type;static constexpr bool value=type::value;};template< typename T >struct classify_object< T, typename std::enable_if<(!is_mutable_container< T >::value &&is_wrapper< T >::value &&!is_tuple_like< T >::value &&uncommon_type< T >::value)>::type >{static constexpr object_category value{object_category::wrapper_value};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&is_direct_constructible< T, double >::value &&is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::number_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&!is_direct_constructible< T, double >::value &&is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::integer_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&is_direct_constructible< T, double >::value &&!is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::double_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< is_tuple_like< T >::value &&((type_count< T >::value >=2 &&!is_wrapper< T >::value)||(uncommon_type< T >::value &&!is_direct_constructible< T, double >::value &&!is_direct_constructible< T, int >::value)||(uncommon_type< T >::value &&type_count< T >::value >=2))>::type >{static constexpr object_category value{object_category::tuple_value};};template< typename T > struct classify_object< T, typename std::enable_if< is_mutable_container< T >::value >::type >{static constexpr object_category value{object_category::container_value};};template< typename T, enable_if_t< classify_object< T >::value==object_category::char_value, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"CHAR";}template< typename T, enable_if_t< classify_object< T >::value==object_category::integral_value||classify_object< T >::value==object_category::integer_constructible, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"INT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::unsigned_integral, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"UINT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::floating_point||classify_object< T >::value==object_category::number_constructible||classify_object< T >::value==object_category::double_constructible, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"FLOAT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::enumeration, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"ENUM";}template< typename T, enable_if_t< classify_object< T >::value==object_category::boolean_value, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"BOOLEAN";}template< typename T, enable_if_t< classify_object< T >::value==object_category::complex_number, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"COMPLEX";}template< typename T, enable_if_t< classify_object< T >::value >=object_category::string_assignable &&classify_object< T >::value<=object_category::other, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"TEXT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value >=2, detail::enabler >=detail::dummy >std::string type_name();template< typename T, enable_if_t< classify_object< T >::value==object_category::container_value||classify_object< T >::value==object_category::wrapper_value, detail::enabler >=detail::dummy >std::string type_name();template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value==1, detail::enabler >=detail::dummy >inline std::string type_name(){return type_name< typename std::decay< typename std::tuple_element< 0, T >::type >::type >);}template< typename T, std::size_t I >inline typename std::enable_if< I==type_count_base< T >::value, std::string >::type tuple_name(){return std::string{};}template< typename T, std::size_t I >inline typename std::enable_if<(I< type_count_base< T >::value), std::string >::type tuple_name(){auto str=std::string{type_name< typename std::decay< typename std::tuple_element< I, T >::type >::type >)}+ ','+tuple_name< T, I+1 >);if(str.back()== ',') str.pop_back();return str;}template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value >=2, detail::enabler > > std::string type_name()
Recursively generate the tuple type name.
GLsizei GLsizei GLchar * source
GLfloat GLfloat GLfloat alpha
GLuint const GLchar * name
GA_API const UT_StringHolder transform
Attempt to access an object that no longer exists in Houdini Invalid output Invalid type The attempted operation failed Node initialization script failed Failed to modify node or parameter because of a permission error Possible causes include locked takes
GLenum GLint GLint * precision
std::map< HOM_EnumValue *, std::string > HOM_StdMapEnumString
std::string OIIO_UTIL_API repeat(string_view str, int n)
Repeat a string formed by concatenating str n times.
OIIO_API string_view getenv(string_view name, string_view defaultval)
GLfloat GLfloat GLfloat GLfloat h
SYS_VISIBILITY_EXPORT void HOMextendLibrary()
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
virtual bool readFile(GA_Detail &g, const char *filename, const GA_LoadOptions *opts, UT_StringArray *errors) const
Class which defines an I/O interface to save/load geometry.
GLubyte GLubyte GLubyte GLubyte w
SYS_VISIBILITY_EXPORT void newHandle(BM_ResourceManager *m)
HOM_API HOM_Module & HOM()
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T clip(const T &p, const Box< T > &box) IMATH_NOEXCEPT
static bool isImplementationSet()
std::map< std::string, std::string > HOM_StdMapStringString
UT_UniquePtr< UT_OptionEntry > UT_OptionEntryPtr
ImageBuf OIIO_API channels(const ImageBuf &src, int nchannels, cspan< int > channelorder, cspan< float > channelvalues={}, cspan< std::string > newchannelnames={}, bool shuffle_channel_names=false, int nthreads=0)