15 #ifndef __HOM_Module_h__
16 #define __HOM_Module_h__
37 #include <hboost/any.hpp>
40 class STORUI_OrboltURLHandler;
178 #define HOM_SESSION_MODULE_NAME "hou.session"
189 static void setHOMCreator(
void (*homCreator)());
193 virtual std::vector<std::string> _getArgumentAutoComplete(
194 const char *method_name,
const char *arguments,
195 bool meta_info_only =
false) = 0;
200 virtual void setRelativeNodeForAutoComplete(
OP_Node *node) = 0;
206 virtual bool isUIAvailable() = 0;
207 virtual bool _isExperimentalActive() = 0;
208 virtual bool _isCurrentThreadHoldingHOMLock() = 0;
233 virtual bool _assertWrapper(
234 const char *file,
int linenum,
const char *
function,
235 const char *condition,
const char *reason) = 0;
237 virtual void exit(
int exit_code=0,
bool suppress_save_prompt=
false) = 0;
242 virtual bool isExiting() = 0;
244 virtual void addPreloadIcon(
const char *
name,
int w,
int h) = 0;
245 virtual void rasterizePreloadIcons() = 0;
247 virtual std::string applicationName() = 0;
248 virtual std::vector<int> applicationVersion(
bool include_patch=
false) = 0;
249 virtual std::string applicationVersionString() = 0;
250 virtual std::string applicationCompilationDate() = 0;
251 virtual std::string applicationPlatformInfo() = 0;
252 virtual std::map<std::string, std::string> vdbVersionInfo() = 0;
253 virtual int hdkAPIVersion() = 0;
255 virtual bool isApprentice() = 0;
256 virtual void releaseLicense() = 0;
259 virtual int maxThreads() = 0;
260 virtual void setMaxThreads(
int max_threads) = 0;
267 virtual void setPwd(
HOM_Node &newpwd) = 0;
268 virtual void cd(
const char *
path) = 0;
274 virtual HOM_Node* currentDopNet() = 0;
275 virtual void setCurrentDopNet(
HOM_Node &dopnet) = 0;
278 virtual bool simulationEnabled() = 0;
279 virtual void setSimulationEnabled(
bool enabled) = 0;
286 virtual std::vector<HOM_ElemPtr<HOM_Node> > nodes(
const std::vector<std::string> &paths) = 0;
287 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > items(
const std::vector<std::string> &paths) = 0;
289 virtual HOM_Node *nodeBySessionId(
int session_id) = 0;
290 virtual HOM_NetworkBox *networkBoxBySessionId(
int session_id) = 0;
291 virtual HOM_StickyNote *stickyNoteBySessionId(
int session_id) = 0;
293 int64 session_id) = 0;
294 virtual HOM_NetworkDot *networkDotBySessionId(
int session_id) = 0;
298 int node_session_id,
int input_index) = 0;
303 int64 session_id) = 0;
305 int64 session_id) = 0;
307 int64 session_id) = 0;
314 virtual std::vector<HOM_ElemPtr<HOM_Node> > selectedNodes(
315 bool include_hidden =
false) = 0;
316 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > selectedItems(
317 bool include_hidden =
false) = 0;
318 virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> > selectedConnections() = 0;
319 virtual void clearAllSelected() = 0;
322 virtual void copyNodesToClipboard(
const std::vector<HOM_Node *> &nodes) = 0;
323 virtual void pasteNodesFromClipboard(
HOM_Node &destination_node) = 0;
329 virtual HOM_Parm* newParm(
OP_Node &node,
int parm_index,
int vector_index) = 0;
331 virtual HOM_Parm *evaluatingParm() = 0;
366 virtual std::vector< std::map<std::string, std::string> >
367 parmClipboardContents() = 0;
396 virtual std::map<std::string, HOM_NodeTypeCategory *>
397 nodeTypeCategories() = 0;
400 virtual std::vector<HOM_ElemPtr<HOM_Node> > copyNodesTo(
401 const std::vector<HOM_Node *> &nodes,
403 virtual std::vector<HOM_ElemPtr<HOM_Node> > moveNodesTo(
404 const std::vector<HOM_Node *> &nodes,
408 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > nodeBundles() = 0;
409 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > selectedNodeBundles() = 0;
414 const char *file_path) = 0;
417 virtual fpreal getTimeWithoutAddingDependency() = 0;
418 virtual double time() = 0;
419 virtual void setTime(
double time) = 0;
420 virtual double frame(
bool full_precision=
false) = 0;
421 virtual int intFrame() = 0;
422 virtual void setFrame(
double frame) = 0;
423 virtual double fps() = 0;
426 bool modify_frame_count =
true,
427 bool preserve_keyframes =
false,
428 bool preserve_frame_start =
false)
430 virtual double timeToFrame(
double time,
bool full_precision=
false) = 0;
431 virtual double frameToTime(
double frame) = 0;
436 virtual void _syncFromMainContext() = 0;
437 virtual void _syncToMainContext() = 0;
440 virtual fpreal scaleFromMKS(
const char *
units) = 0;
443 virtual double bezier() = 0;
444 virtual double constant() = 0;
445 virtual double cubic() = 0;
446 virtual double cycle(
double start_frame,
double end_frame) = 0;
447 virtual double cyclet(
double start_time,
double end_time) = 0;
448 virtual double cycleoffset(
double start_frame,
double end_frame) = 0;
449 virtual double cycleoffsett(
double start_time,
double end_time) = 0;
450 virtual double ease() = 0;
451 virtual double easein() = 0;
452 virtual double easeinp(
double ease_speed) = 0;
453 virtual double easeout() = 0;
454 virtual double easeoutp(
double ease_speed) = 0;
455 virtual double easep(
double ease_bias) = 0;
456 virtual double linear() = 0;
457 virtual double match() = 0;
458 virtual double matchin() = 0;
459 virtual double matchout() = 0;
460 virtual double qlinear() = 0;
461 virtual double quintic() = 0;
462 virtual double repeat(
double start_frame,
double end_frame) = 0;
463 virtual double repeatt(
double start_time,
double end_time) = 0;
464 virtual double spline() = 0;
465 virtual double vmatch() = 0;
466 virtual double vmatchin() = 0;
467 virtual double vmatchout() = 0;
469 virtual std::string chopExportConflictResolutionPattern() = 0;
470 virtual void setChopExportConflictResolutionPattern(
const char *
pattern) = 0;
472 virtual std::vector<HOM_ElemPtr<HOM_VexContext> >
480 virtual std::string helpServerUrl() = 0;
482 virtual std::string hscriptCommandHelp(
const char *command_name) = 0;
486 virtual std::vector<std::string> hscript(
const char *command) = 0;
489 virtual bool almostEqual(
double x,
double y) = 0;
491 virtual std::vector<std::pair<HOM_ElemPtr<HOM_Parm>, std::string> >
493 const char *project_dir_variable=
"HIP",
bool include_all_refs=
true) = 0;
496 virtual std::string findFile(
const char *file_name) = 0;
497 virtual std::vector<std::string> findFiles(
498 const char *file_name) = 0;
499 virtual std::vector<std::string> findFilesWithExtension(
500 const char *file_extension,
const char *subdirectory = NULL) = 0;
503 virtual std::string findDirectory(
const char *directory_name) = 0;
504 virtual std::vector<std::string> findDirectories(
505 const char *directory_name) = 0;
507 virtual std::vector<std::string> houdiniPath(
const char *pathvar =
nullptr) = 0;
509 virtual std::string homeHoudiniDirectory() = 0;
511 virtual std::string
readFile(
const char *file_path) = 0;
514 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromString(
517 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromFile(
518 const char *file_path) = 0;
521 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
523 virtual void saveIndexDataToFile(
524 const char *file_path,
525 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
529 virtual std::vector<std::pair<std::string, HOM_BinaryString> >
530 loadCPIODataFromString(
const char *
data,
int length) = 0;
533 const std::vector<std::pair<std::string, HOM_BinaryString> >
542 virtual void forceUpdateFromSessionModuleSource() = 0;
543 virtual void forceSetSessionModuleSource(
const char *
source) = 0;
545 virtual void setSessionModuleSource(
const char *
source) = 0;
546 virtual void appendSessionModuleSource(
const char *
source) = 0;
547 virtual std::string sessionModuleSource() = 0;
549 virtual int sessionModuleSourceChangeCount() = 0;
555 {
return theImplementation != NULL; }
558 virtual std::string chsop(
const char *
path) = 0;
561 virtual std::string chsoplist(
const char *
path) = 0;
564 virtual std::vector<std::string>
565 sortedNodePaths(
const std::vector<std::string> &paths) = 0;
568 virtual std::vector<HOM_ElemPtr<HOM_Node> >
569 sortedNodes(
const std::vector<HOM_Node*> &nodes) = 0;
572 virtual int patternMatch(
573 const char *
pattern,
const char *str,
575 bool path_match =
false) = 0;
579 virtual hboost::any hscriptExpression(
const char *expression) = 0;
580 virtual double hscriptFloatExpression(
const char *expression) = 0;
581 virtual std::string hscriptStringExpression(
const char *expression) = 0;
582 virtual std::vector<double>hscriptVectorExpression(
583 const char *expression) = 0;
584 virtual std::vector<std::vector<double> > hscriptMatrixExpression(
585 const char *expression) = 0;
589 virtual char *getEnvConfigValue(
590 const char *
name,
const char *default_value=NULL) = 0;
592 virtual char *
getenv(
const char *
name,
const char *default_value=NULL) = 0;
594 virtual void putenv(
const char *
name,
const char *
value) = 0;
596 virtual void unsetenv(
const char *
name) = 0;
598 virtual void allowEnvironmentToOverwriteVariable(
599 const char *
name,
bool onoff) = 0;
601 virtual void *expressionGlobals() = 0;
606 virtual bool updateProgressAndCheckForInterrupt(
int percentage=-1) = 0;
608 virtual std::map<std::string, hboost::any> runVex(
609 const char *vex_file,
610 const std::map<std::string, hboost::any> &inputs,
615 virtual void saveImageDataToFile(
616 const std::vector<float> &color_and_alpha_data,
618 const char *file_name,
619 bool flip_vertical =
false) = 0;
621 virtual void saveImageDataToFile(
622 const std::string &color_and_alpha_data,
624 const char *file_name,
625 bool flip_vertical =
false) = 0;
628 const char *image_file_name,
631 virtual std::vector<int> imageResolution(
const char *image_file_name) = 0;
644 virtual void *opaqueRunCallbackAndCatchCrashes(
void *opaque_callback) = 0;
650 virtual void pushAccessPrivilege(
const char *key) = 0;
651 virtual void popAccessPrivilege(
const char *key) = 0;
653 virtual std::string currentPythonModuleKey() = 0;
655 virtual void registerAccessPrivilegePyClient(
void *opaque_python_object) = 0;
665 const std::vector<double> &default_value,
667 bool min_is_strict,
bool max_is_strict,
670 const char *disable_when,
672 bool is_label_hidden,
675 const char *script_callback,
677 const std::map<std::string, std::string> &tags,
678 const std::map<HOM_EnumValue *, std::string> &conditionals,
679 const std::vector<std::string> &default_expression,
680 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
686 const std::vector<int64> &default_value,
688 bool min_is_strict,
bool max_is_strict,
691 const std::vector<std::string> &menu_items,
692 const std::vector<std::string> &menu_labels,
693 const std::vector<std::string> &icon_names,
694 const std::string &item_generator_script,
698 const char *disable_when,
700 bool is_label_hidden,
703 const char *script_callback,
705 const std::map<std::string, std::string> &tags,
706 const std::map<HOM_EnumValue *, std::string> &conditionals,
707 const std::vector<std::string> &default_expression,
708 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
714 const std::vector<std::string> &default_value,
718 const std::vector<std::string> &menu_items,
719 const std::vector<std::string> &menu_labels,
720 const std::vector<std::string> &icon_names,
721 const std::string &item_generator_script,
724 const char *disable_when,
726 bool is_label_hidden,
729 const char *script_callback,
731 const std::map<std::string, std::string> &tags,
732 const std::map<HOM_EnumValue *, std::string> &conditionals,
733 const std::vector<std::string> &default_expression,
734 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
743 const char *disable_when,
745 bool is_label_hidden,
748 const char *script_callback,
750 const std::map<std::string, std::string> &tags,
751 const std::map<HOM_EnumValue *, std::string> &conditionals,
752 const std::vector<std::string> &default_expression,
753 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
759 const char *disable_when,
761 bool is_label_hidden,
764 const char *script_callback,
766 const std::map<std::string, std::string> &tags,
767 const std::map<HOM_EnumValue *, std::string> &conditionals,
768 const std::string &default_expression,
774 const std::vector<std::string> &menu_items,
775 const std::vector<std::string> &menu_labels,
777 const std::vector<std::string> &icon_names,
778 const std::string &item_generator_script,
782 const char *disable_when,
784 bool is_label_hidden,
787 const char *script_callback,
789 const std::map<std::string, std::string> &tags,
790 const std::map<HOM_EnumValue *, std::string> &conditionals,
791 const std::string &default_expression,
793 bool store_default_value_as_string,
794 bool is_button_strip,
795 bool strip_uses_icons
801 const char *disable_when,
803 bool is_label_hidden,
806 const char *script_callback,
808 const std::map<std::string, std::string> &tags,
809 const std::map<HOM_EnumValue *, std::string> &conditionals ) = 0;
814 const std::vector<std::string> &column_labels,
817 bool is_label_hidden,
820 const std::map<std::string, std::string> &tags,
821 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
826 const std::map<std::string, std::string> &tags,
827 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
831 const std::vector<std::string> &folder_names,
833 const std::map<std::string, std::string> &tags) = 0;
838 const std::vector<HOM_ParmTemplate *> &parm_templates,
843 const char *script_callback,
845 const std::map<std::string, std::string> &tags,
846 const std::map<HOM_EnumValue *, std::string> &conditionals,
847 const std::map<HOM_EnumValue *, std::string> &tab_conditionals) = 0;
857 const char *disable_when,
860 const char *script_callback,
862 const std::map<std::string, std::string> &tags,
863 const std::map<HOM_EnumValue *, std::string> &conditionals,
864 const std::string &default_expression,
868 const std::vector<HOM_ParmTemplate *> &parm_templates) = 0;
871 bool cook_stats,
bool pdg_cook_stats,
bool solve_stats,
872 bool draw_stats,
bool gpu_draw_stats,
bool viewport_stats,
873 bool script_stats,
bool render_stats,
bool thread_stats,
874 bool frame_stats,
bool memory_stats,
bool errors,
875 bool pane_stats) = 0;
896 const char *
pattern =
nullptr) = 0;
899 const char *operation_name,
const char *long_operation_name,
900 bool open_interrupt_dialog,
int timeout_ms) = 0;
913 const std::vector<HOM_EnumValue *> &selection_types,
916 const std::vector<HOM_Prim *> &prims) = 0;
918 const std::vector<HOM_Point *> &
points) = 0;
920 const std::vector<HOM_Vertex *> &vertices) = 0;
922 const std::vector<HOM_Edge *> &edges) = 0;
926 bool clone_data_ids =
false) = 0;
943 bool keep_external_ref,
bool delay_load) = 0;
954 const char *
name) = 0;
959 const char *prim_path,
962 virtual HOM_AgentRig *newAgentRig(
const char *
path,
bool keep_external_ref) = 0;
965 const char *
name,
const std::vector<std::string> &transform_names,
966 const std::vector<std::vector<int>> &hierarchy) = 0;
970 bool keep_external_ref =
true) = 0;
973 const char *
name,
const std::vector<int> &transforms,
974 const HOM_AgentRig &rig,
const std::vector<double> &weights,
975 const std::vector<int> &
channels) = 0;
981 const char *
path,
bool keep_external_ref) = 0;
985 bool deforming,
double bounds_scale) = 0;
993 newAgentShapeDeformer(
const char *
name) = 0;
996 newAgentShapeDeformer(
const HOM_EnumValue &deformer_type) = 0;
1001 const std::vector<HOM_AgentShapeBinding *> &shape_bindings,
1007 bool keep_external_ref =
true) = 0;
1011 bool keep_external_ref =
true) = 0;
1013 const std::map<std::string, hboost::any> &
data) = 0;
1015 virtual bool compareNode(
const char *
path,
const char *dest = NULL) = 0;
1016 virtual bool compareNodeBackup(
const char *
path,
int index,
1017 const char *dest = NULL) = 0;
1018 virtual bool compareHDA(
const char *path_left,
const char *path_right,
1019 const char *dest = NULL) = 0;
1020 virtual bool compareHDABackup(
const char *
path,
int index,
1021 const char *dest = NULL) = 0;
1022 virtual bool compareHip(
const char *dest = NULL) = 0;
1023 virtual bool compareHipBackup(
int index,
const char *dest = NULL) = 0;
1025 virtual bool hasContextOption(
const char *opt) = 0;
1027 virtual std::vector<std::string> contextOptionNames() = 0;
1028 virtual void setContextOption(
const char *opt,
const char *
value) =0;
1029 virtual void setContextOption(
const char *opt,
double value) = 0;
1030 virtual void removeContextOption(
const char *opt) = 0;
1031 virtual std::string contextOptionConfig(
const char *opt) = 0;
1032 virtual void setContextOptionConfig(
const char *opt,
1033 const char *config) = 0;
1034 virtual bool isAutoContextOption(
const char *opt) = 0;
1035 virtual bool isAutoContextOptionOverridden(
const char *opt) = 0;
1038 virtual void addOpaqueContextOptionChangeCallback(
void *callback) = 0;
1040 virtual void removeOpaqueContextOptionChangeCallback(
void *callback) = 0;
1041 virtual void removeAllContextOptionChangeCallbacks() = 0;
1043 virtual std::vector<void *> opaqueContextOptionChangeCallbacks() = 0;
1048 virtual void setOrboltURLHandler(
1049 STORUI_OrboltURLHandler &orbolt_url_handler) = 0;
1055 virtual void constructObject(
void *
pointer,
const std::type_info &
type) = 0;
1056 virtual void destructObject(
void *
pointer,
const std::type_info &
type) = 0;
1057 virtual std::map<std::string, int> objectCounts() = 0;
1060 virtual std::vector<std::string> getPreferenceNames() = 0;
1061 SWIGOUT(%kwargs getPreference;)
1062 virtual std::string getPreference(
const char *
name,
const char* registry_name =
nullptr) = 0;
1063 SWIGOUT(%kwargs setPreference;)
1064 virtual bool setPreference(
const char *
name,
const char*
value,
const char* registry_name =
nullptr) = 0;
1065 virtual bool addPreference(
const char *
name,
const char*
value) = 0;
1066 virtual bool removePreference(
const char *
name) = 0;
1067 virtual void refreshPreferences() = 0;
1068 virtual void savePreferences(
const char* registry_name) = 0;
1069 virtual void loadPreferences(
const char* registry_name) = 0;
1070 SWIGOUT(%kwargs createPreferenceRegistry;)
1071 virtual void createPreferenceRegistry(
const char* registry_name,
const char* file_name,
1072 std::map<std::string, hboost::any> prefs,
const char* prefix_name =
nullptr,
bool binary =
false) = 0;
1073 SWIGOUT(%kwargs refreshPreferenceRegistry;)
1074 virtual void refreshPreferenceRegistry(
const char* registry_name, std::map<std::string, hboost::any> new_prefs,
1075 bool clear_existing =
false) = 0;
1079 std::string
const &
label,
1081 std::vector<HOM_NodeTypeCategory*>
const & contexts) = 0;
1085 std::string
const &
label,
1086 std::vector<HOM_NodeTypeCategory*>
const & categories) = 0;
1093 std::string
const &
name, std::string
const &
label,
bool pickable,
1094 std::map<std::string, hboost::any>
const &
params) = 0;
1113 std::string
const &
name,
1114 std::map<std::string, hboost::any>
const &
params,
1115 std::string
const &
label) = 0;
1120 std::string
const &
name,
1122 std::map<std::string, hboost::any>
const &
params,
1123 std::string
const &
label) = 0;
1129 virtual void startHoudiniEngineDebugger(
unsigned short port) = 0;
1130 virtual void startHoudiniEngineDebugger(
const char *pipe_name) = 0;
1140 bool from_blosc_compression,
1142 bool to_blosc_compression) = 0;
1145 const std::map<std::string, std::vector<HOM_Keyframe *>> &keyframe_map,
1146 bool binary =
true,
bool use_blosc_compression =
true) = 0;
1149 bool blosc_compressed =
true) = 0;
1151 virtual std::vector<HOM_ElemPtr<HOM_Node> > _nodesFromOPNodeList(
int64 val) = 0;
1152 virtual std::vector<HOM_ElemPtr<HOM_DopData> >
1161 virtual std::string userName(
bool alpha=
true) = 0;
1163 virtual std::string machineName(
bool alpha=
true) = 0;
1167 virtual HOM_Node * createAnimationLayers(
const std::string &
path) = 0;
1168 virtual HOM_Node * addAnimationLayer(
HOM_Node &layermixer,
const std::string &layername) = 0;
1169 virtual bool removeAnimationLayer(
HOM_Node &layermixer,
const std::string &layername,
bool merge=
false) = 0;
1170 virtual HOM_Node* createAnimationClip(
const std::string &
path,
bool set_export) = 0;
1172 virtual void* _sceneViewerWindow(
int64 val) = 0;
1179 virtual std::vector<std::string> _prioritizePatternMatches(
1180 const std::vector<std::string> & items,
1181 const std::vector<std::string> & patterns)
const = 0;
1183 virtual void registerOpdefPath(
1184 const std::string &
path,
1185 const std::string &server_name,
1186 const std::string &port_name)
1189 virtual std::vector<std::string> videoEncoders(
1190 HOM_EnumValue const &driver,
const bool available=
false) = 0;
1192 void _debugAssert(
bool v,
const std::string &
message);
1196 static void (*theHOMCreator)();
1202 friend class HOMF_Module;
1203 static void setImplementation(
HOM_Module* implementation);
1216 template <
typename T>
1239 if (!HOM_theHOMLock)
1337 #define HOM_CONSTRUCT_OBJECT(pointer) \
1338 HOM().constructObject(pointer, typeid(*pointer));
1339 #define HOM_DESTRUCT_OBJECT(pointer) \
1340 HOM().destructObject(pointer, typeid(*pointer));
1342 #define HOM_CONSTRUCT_OBJECT(pointer)
1343 #define HOM_DESTRUCT_OBJECT(pointer)
1361 #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)