15 #ifndef __HOM_Module_h__
16 #define __HOM_Module_h__
37 #include <hboost/any.hpp>
40 class STORUI_OrboltURLHandler;
180 #define HOM_SESSION_MODULE_NAME "hou.session"
191 static void setHOMCreator(
void (*homCreator)());
195 virtual std::vector<std::string> _getArgumentAutoComplete(
196 const char *method_name,
const char *arguments,
197 bool meta_info_only =
false) = 0;
202 virtual void setRelativeNodeForAutoComplete(
OP_Node *node) = 0;
208 virtual bool isUIAvailable() = 0;
209 virtual bool _isExperimentalActive() = 0;
210 virtual bool _isCurrentThreadHoldingHOMLock() = 0;
235 virtual bool _assertWrapper(
236 const char *file,
int linenum,
const char *
function,
237 const char *condition,
const char *reason) = 0;
239 virtual void exit(
int exit_code=0,
bool suppress_save_prompt=
false) = 0;
244 virtual bool isExiting() = 0;
246 virtual void addPreloadIcon(
const char *
name,
int w,
int h) = 0;
247 virtual void rasterizePreloadIcons() = 0;
249 virtual std::string applicationName() = 0;
250 virtual std::vector<int> applicationVersion(
bool include_patch=
false) = 0;
251 virtual std::string applicationVersionString() = 0;
252 virtual std::string applicationCompilationDate() = 0;
253 virtual std::string applicationPlatformInfo() = 0;
254 virtual std::map<std::string, std::string> vdbVersionInfo() = 0;
255 virtual int hdkAPIVersion() = 0;
257 virtual bool isApprentice() = 0;
258 virtual void releaseLicense() = 0;
261 virtual int maxThreads() = 0;
262 virtual void setMaxThreads(
int max_threads) = 0;
269 virtual void setPwd(
HOM_Node &newpwd) = 0;
270 virtual void cd(
const char *
path) = 0;
276 virtual HOM_Node* currentDopNet() = 0;
277 virtual void setCurrentDopNet(
HOM_Node &dopnet) = 0;
280 virtual bool simulationEnabled() = 0;
281 virtual void setSimulationEnabled(
bool enabled) = 0;
288 virtual std::vector<HOM_ElemPtr<HOM_Node> > nodes(
const std::vector<std::string> &paths) = 0;
289 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > items(
const std::vector<std::string> &paths) = 0;
291 virtual HOM_Node *nodeBySessionId(
int session_id) = 0;
292 virtual HOM_NetworkBox *networkBoxBySessionId(
int session_id) = 0;
293 virtual HOM_StickyNote *stickyNoteBySessionId(
int session_id) = 0;
295 int64 session_id) = 0;
296 virtual HOM_NetworkDot *networkDotBySessionId(
int session_id) = 0;
300 int node_session_id,
int input_index) = 0;
305 int64 session_id) = 0;
307 int64 session_id) = 0;
309 int64 session_id) = 0;
316 virtual std::vector<HOM_ElemPtr<HOM_Node> > selectedNodes(
317 bool include_hidden =
false) = 0;
318 virtual std::vector<HOM_ElemPtr<HOM_NetworkMovableItem> > selectedItems(
319 bool include_hidden =
false) = 0;
320 virtual std::vector<HOM_ElemPtr<HOM_NodeConnection> > selectedConnections() = 0;
321 virtual void clearAllSelected() = 0;
324 virtual void copyNodesToClipboard(
const std::vector<HOM_Node *> &nodes) = 0;
325 virtual void pasteNodesFromClipboard(
HOM_Node &destination_node) = 0;
331 virtual HOM_Parm* newParm(
OP_Node &node,
int parm_index,
int vector_index) = 0;
333 virtual HOM_Parm *evaluatingParm() = 0;
368 virtual std::vector< std::map<std::string, std::string> >
369 parmClipboardContents() = 0;
398 virtual std::map<std::string, HOM_NodeTypeCategory *>
399 nodeTypeCategories() = 0;
402 virtual std::vector<HOM_ElemPtr<HOM_Node> > copyNodesTo(
403 const std::vector<HOM_Node *> &nodes,
405 virtual std::vector<HOM_ElemPtr<HOM_Node> > moveNodesTo(
406 const std::vector<HOM_Node *> &nodes,
410 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > nodeBundles() = 0;
411 virtual std::vector<HOM_ElemPtr<HOM_NodeBundle> > selectedNodeBundles() = 0;
416 const char *file_path) = 0;
419 virtual fpreal getTimeWithoutAddingDependency() = 0;
420 virtual double time() = 0;
421 virtual void setTime(
double time) = 0;
422 virtual double frame(
bool full_precision=
false) = 0;
423 virtual int intFrame() = 0;
424 virtual void setFrame(
double frame) = 0;
425 virtual double fps() = 0;
428 bool modify_frame_count =
true,
429 bool preserve_keyframes =
false,
430 bool preserve_frame_start =
false)
432 virtual double timeToFrame(
double time,
bool full_precision=
false) = 0;
433 virtual double frameToTime(
double frame) = 0;
438 virtual void _syncFromMainContext() = 0;
439 virtual void _syncToMainContext() = 0;
442 virtual fpreal scaleFromMKS(
const char *
units) = 0;
445 virtual double bezier() = 0;
446 virtual double constant() = 0;
447 virtual double cubic() = 0;
448 virtual double cycle(
double start_frame,
double end_frame) = 0;
449 virtual double cyclet(
double start_time,
double end_time) = 0;
450 virtual double cycleoffset(
double start_frame,
double end_frame) = 0;
451 virtual double cycleoffsett(
double start_time,
double end_time) = 0;
452 virtual double ease() = 0;
453 virtual double easein() = 0;
454 virtual double easeinp(
double ease_speed) = 0;
455 virtual double easeout() = 0;
456 virtual double easeoutp(
double ease_speed) = 0;
457 virtual double easep(
double ease_bias) = 0;
458 virtual double linear() = 0;
459 virtual double match() = 0;
460 virtual double matchin() = 0;
461 virtual double matchout() = 0;
462 virtual double qlinear() = 0;
463 virtual double quintic() = 0;
464 virtual double repeat(
double start_frame,
double end_frame) = 0;
465 virtual double repeatt(
double start_time,
double end_time) = 0;
466 virtual double spline() = 0;
467 virtual double vmatch() = 0;
468 virtual double vmatchin() = 0;
469 virtual double vmatchout() = 0;
471 virtual std::string chopExportConflictResolutionPattern() = 0;
472 virtual void setChopExportConflictResolutionPattern(
const char *
pattern) = 0;
474 virtual std::vector<HOM_ElemPtr<HOM_VexContext> >
482 virtual std::string helpServerUrl() = 0;
484 virtual std::string hscriptCommandHelp(
const char *command_name) = 0;
488 virtual std::vector<std::string> hscript(
const char *command) = 0;
491 virtual bool almostEqual(
double x,
double y) = 0;
493 virtual std::vector<std::pair<HOM_ElemPtr<HOM_Parm>, std::string> >
495 const char *project_dir_variable=
"HIP",
bool include_all_refs=
true) = 0;
498 virtual std::string findFile(
const char *file_name) = 0;
499 virtual std::vector<std::string> findFiles(
500 const char *file_name) = 0;
501 virtual std::vector<std::string> findFilesWithExtension(
502 const char *file_extension,
const char *subdirectory = NULL) = 0;
505 virtual std::string findDirectory(
const char *directory_name) = 0;
506 virtual std::vector<std::string> findDirectories(
507 const char *directory_name) = 0;
509 virtual std::vector<std::string> houdiniPath(
const char *pathvar =
nullptr) = 0;
511 virtual std::string homeHoudiniDirectory() = 0;
513 virtual std::string
readFile(
const char *file_path) = 0;
516 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromString(
519 virtual std::map<std::string, HOM_BinaryString> loadIndexDataFromFile(
520 const char *file_path) = 0;
523 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
525 virtual void saveIndexDataToFile(
526 const char *file_path,
527 const std::map<std::string, HOM_BinaryString> &index_data) = 0;
531 virtual std::vector<std::pair<std::string, HOM_BinaryString> >
532 loadCPIODataFromString(
const char *
data,
int length) = 0;
535 const std::vector<std::pair<std::string, HOM_BinaryString> >
544 virtual void forceUpdateFromSessionModuleSource() = 0;
545 virtual void forceSetSessionModuleSource(
const char *
source) = 0;
547 virtual void setSessionModuleSource(
const char *
source) = 0;
548 virtual void appendSessionModuleSource(
const char *
source) = 0;
549 virtual std::string sessionModuleSource() = 0;
551 virtual int sessionModuleSourceChangeCount() = 0;
557 {
return theImplementation != NULL; }
560 virtual std::string chsop(
const char *
path) = 0;
563 virtual std::string chsoplist(
const char *
path) = 0;
566 virtual std::vector<std::string>
567 sortedNodePaths(
const std::vector<std::string> &paths) = 0;
570 virtual std::vector<HOM_ElemPtr<HOM_Node> >
571 sortedNodes(
const std::vector<HOM_Node*> &nodes) = 0;
574 virtual int patternMatch(
575 const char *
pattern,
const char *str,
577 bool path_match =
false) = 0;
581 virtual hboost::any hscriptExpression(
const char *expression) = 0;
582 virtual double hscriptFloatExpression(
const char *expression) = 0;
583 virtual std::string hscriptStringExpression(
const char *expression) = 0;
584 virtual std::vector<double>hscriptVectorExpression(
585 const char *expression) = 0;
586 virtual std::vector<std::vector<double> > hscriptMatrixExpression(
587 const char *expression) = 0;
591 virtual char *getEnvConfigValue(
592 const char *
name,
const char *default_value=NULL) = 0;
594 virtual char *
getenv(
const char *
name,
const char *default_value=NULL) = 0;
596 virtual void putenv(
const char *
name,
const char *
value) = 0;
598 virtual void unsetenv(
const char *
name) = 0;
600 virtual void allowEnvironmentToOverwriteVariable(
601 const char *
name,
bool onoff) = 0;
603 virtual void *expressionGlobals() = 0;
608 virtual bool updateProgressAndCheckForInterrupt(
int percentage=-1) = 0;
610 virtual std::map<std::string, hboost::any> runVex(
611 const char *vex_file,
612 const std::map<std::string, hboost::any> &inputs,
617 virtual void saveImageDataToFile(
618 const std::vector<float> &color_and_alpha_data,
620 const char *file_name,
621 bool flip_vertical =
false) = 0;
623 virtual void saveImageDataToFile(
624 const std::string &color_and_alpha_data,
626 const char *file_name,
627 bool flip_vertical =
false) = 0;
630 const char *image_file_name,
633 virtual std::vector<int> imageResolution(
const char *image_file_name) = 0;
646 virtual void *opaqueRunCallbackAndCatchCrashes(
void *opaque_callback) = 0;
652 virtual void pushAccessPrivilege(
const char *key) = 0;
653 virtual void popAccessPrivilege(
const char *key) = 0;
655 virtual std::string currentPythonModuleKey() = 0;
657 virtual void registerAccessPrivilegePyClient(
void *opaque_python_object) = 0;
667 const std::vector<double> &default_value,
669 bool min_is_strict,
bool max_is_strict,
672 const char *disable_when,
674 bool is_label_hidden,
677 const char *script_callback,
679 const std::map<std::string, std::string> &tags,
680 const std::map<HOM_EnumValue *, std::string> &conditionals,
681 const std::vector<std::string> &default_expression,
682 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
688 const std::vector<int64> &default_value,
690 bool min_is_strict,
bool max_is_strict,
693 const std::vector<std::string> &menu_items,
694 const std::vector<std::string> &menu_labels,
695 const std::vector<std::string> &icon_names,
696 const std::string &item_generator_script,
700 const char *disable_when,
702 bool is_label_hidden,
705 const char *script_callback,
707 const std::map<std::string, std::string> &tags,
708 const std::map<HOM_EnumValue *, std::string> &conditionals,
709 const std::vector<std::string> &default_expression,
710 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
716 const std::vector<std::string> &default_value,
720 const std::vector<std::string> &menu_items,
721 const std::vector<std::string> &menu_labels,
722 const std::vector<std::string> &icon_names,
723 const std::string &item_generator_script,
726 const char *disable_when,
728 bool is_label_hidden,
731 const char *script_callback,
733 const std::map<std::string, std::string> &tags,
734 const std::map<HOM_EnumValue *, std::string> &conditionals,
735 const std::vector<std::string> &default_expression,
736 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
745 const char *disable_when,
747 bool is_label_hidden,
750 const char *script_callback,
752 const std::map<std::string, std::string> &tags,
753 const std::map<HOM_EnumValue *, std::string> &conditionals,
754 const std::vector<std::string> &default_expression,
755 const std::vector<HOM_EnumValue *> &default_expression_language) = 0;
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::string &default_expression,
776 const std::vector<std::string> &menu_items,
777 const std::vector<std::string> &menu_labels,
779 const std::vector<std::string> &icon_names,
780 const std::string &item_generator_script,
784 const char *disable_when,
786 bool is_label_hidden,
789 const char *script_callback,
791 const std::map<std::string, std::string> &tags,
792 const std::map<HOM_EnumValue *, std::string> &conditionals,
793 const std::string &default_expression,
795 bool store_default_value_as_string,
796 bool is_button_strip,
797 bool strip_uses_icons
803 const char *disable_when,
805 bool is_label_hidden,
808 const char *script_callback,
810 const std::map<std::string, std::string> &tags,
811 const std::map<HOM_EnumValue *, std::string> &conditionals ) = 0;
816 const std::vector<std::string> &column_labels,
819 bool is_label_hidden,
822 const std::map<std::string, std::string> &tags,
823 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
828 const std::map<std::string, std::string> &tags,
829 const std::map<HOM_EnumValue *, std::string> &conditionals) = 0;
833 const std::vector<std::string> &folder_names,
835 const std::map<std::string, std::string> &tags) = 0;
840 const std::vector<HOM_ParmTemplate *> &parm_templates,
845 const char *script_callback,
847 const std::map<std::string, std::string> &tags,
848 const std::map<HOM_EnumValue *, std::string> &conditionals,
849 const std::map<HOM_EnumValue *, std::string> &tab_conditionals) = 0;
859 const char *disable_when,
862 const char *script_callback,
864 const std::map<std::string, std::string> &tags,
865 const std::map<HOM_EnumValue *, std::string> &conditionals,
866 const std::string &default_expression,
870 const std::vector<HOM_ParmTemplate *> &parm_templates) = 0;
873 bool cook_stats,
bool pdg_cook_stats,
bool solve_stats,
874 bool draw_stats,
bool gpu_draw_stats,
bool viewport_stats,
875 bool script_stats,
bool render_stats,
bool thread_stats,
876 bool frame_stats,
bool memory_stats,
bool errors,
877 bool pane_stats) = 0;
898 const char *
pattern =
nullptr) = 0;
901 const char *operation_name,
const char *long_operation_name,
902 bool open_interrupt_dialog,
int timeout_ms) = 0;
915 const std::vector<HOM_EnumValue *> &selection_types,
918 const std::vector<HOM_Prim *> &prims) = 0;
920 const std::vector<HOM_Point *> &
points) = 0;
922 const std::vector<HOM_Vertex *> &vertices) = 0;
924 const std::vector<HOM_Edge *> &edges) = 0;
928 bool clone_data_ids =
false) = 0;
945 bool keep_external_ref,
bool delay_load) = 0;
956 const char *
name) = 0;
961 const char *prim_path,
964 virtual HOM_AgentRig *newAgentRig(
const char *
path,
bool keep_external_ref) = 0;
967 const char *
name,
const std::vector<std::string> &transform_names,
968 const std::vector<std::vector<int>> &hierarchy) = 0;
972 bool keep_external_ref =
true) = 0;
975 const char *
name,
const std::vector<int> &transforms,
976 const HOM_AgentRig &rig,
const std::vector<double> &weights,
977 const std::vector<int> &
channels) = 0;
983 const char *
path,
bool keep_external_ref) = 0;
987 bool deforming,
double bounds_scale) = 0;
995 newAgentShapeDeformer(
const char *
name) = 0;
998 newAgentShapeDeformer(
const HOM_EnumValue &deformer_type) = 0;
1003 const std::vector<HOM_AgentShapeBinding *> &shape_bindings,
1009 bool keep_external_ref =
true) = 0;
1013 bool keep_external_ref =
true) = 0;
1015 const std::map<std::string, hboost::any> &
data) = 0;
1017 virtual bool compareNode(
const char *
path,
const char *dest = NULL) = 0;
1018 virtual bool compareNodeBackup(
const char *
path,
int index,
1019 const char *dest = NULL) = 0;
1020 virtual bool compareHDA(
const char *path_left,
const char *path_right,
1021 const char *dest = NULL) = 0;
1022 virtual bool compareHDABackup(
const char *
path,
int index,
1023 const char *dest = NULL) = 0;
1024 virtual bool compareHip(
const char *dest = NULL) = 0;
1025 virtual bool compareHipBackup(
int index,
const char *dest = NULL) = 0;
1027 virtual bool hasContextOption(
const char *opt) = 0;
1029 virtual std::vector<std::string> contextOptionNames() = 0;
1030 virtual void setContextOption(
const char *opt,
const char *
value) =0;
1031 virtual void setContextOption(
const char *opt,
double value) = 0;
1032 virtual void removeContextOption(
const char *opt) = 0;
1033 virtual std::string contextOptionConfig(
const char *opt) = 0;
1034 virtual void setContextOptionConfig(
const char *opt,
1035 const char *config) = 0;
1036 virtual bool isAutoContextOption(
const char *opt) = 0;
1037 virtual bool isAutoContextOptionOverridden(
const char *opt) = 0;
1040 virtual void addOpaqueContextOptionChangeCallback(
void *callback) = 0;
1042 virtual void removeOpaqueContextOptionChangeCallback(
void *callback) = 0;
1043 virtual void removeAllContextOptionChangeCallbacks() = 0;
1045 virtual std::vector<void *> opaqueContextOptionChangeCallbacks() = 0;
1050 virtual void setOrboltURLHandler(
1051 STORUI_OrboltURLHandler &orbolt_url_handler) = 0;
1057 virtual void constructObject(
void *
pointer,
const std::type_info &
type) = 0;
1058 virtual void destructObject(
void *
pointer,
const std::type_info &
type) = 0;
1059 virtual std::map<std::string, int> objectCounts() = 0;
1062 virtual std::vector<std::string> getPreferenceNames() = 0;
1063 SWIGOUT(%kwargs getPreference;)
1064 virtual std::string getPreference(
const char *
name,
const char* registry_name =
nullptr) = 0;
1065 SWIGOUT(%kwargs setPreference;)
1066 virtual bool setPreference(
const char *
name,
const char*
value,
const char* registry_name =
nullptr) = 0;
1067 virtual bool addPreference(
const char *
name,
const char*
value) = 0;
1068 virtual bool removePreference(
const char *
name) = 0;
1069 virtual void refreshPreferences() = 0;
1070 virtual void savePreferences(
const char* registry_name) = 0;
1071 virtual void loadPreferences(
const char* registry_name) = 0;
1072 SWIGOUT(%kwargs createPreferenceRegistry;)
1073 virtual void createPreferenceRegistry(
const char* registry_name,
const char* file_name,
1074 std::map<std::string, hboost::any> prefs,
const char* prefix_name =
nullptr,
bool binary =
false) = 0;
1075 SWIGOUT(%kwargs refreshPreferenceRegistry;)
1076 virtual void refreshPreferenceRegistry(
const char* registry_name, std::map<std::string, hboost::any> new_prefs,
1077 bool clear_existing =
false) = 0;
1081 std::string
const &
label,
1083 std::vector<HOM_NodeTypeCategory*>
const & contexts) = 0;
1087 std::string
const &
label,
1088 std::vector<HOM_NodeTypeCategory*>
const & categories) = 0;
1095 std::string
const &
name, std::string
const &
label,
bool pickable,
1096 std::map<std::string, hboost::any>
const &
params) = 0;
1116 std::string
const &
name,
1117 std::map<std::string, hboost::any>
const &
params,
1118 std::string
const &
label) = 0;
1123 std::string
const &
name,
1125 std::map<std::string, hboost::any>
const &
params,
1126 std::string
const &
label) = 0;
1132 virtual void startHoudiniEngineDebugger(
unsigned short port) = 0;
1133 virtual void startHoudiniEngineDebugger(
const char *pipe_name) = 0;
1143 bool from_blosc_compression,
1145 bool to_blosc_compression) = 0;
1148 const std::map<std::string, std::vector<HOM_Keyframe *>> &keyframe_map,
1149 bool binary =
true,
bool use_blosc_compression =
true) = 0;
1152 bool blosc_compressed =
true) = 0;
1154 virtual std::vector<HOM_ElemPtr<HOM_Node> > _nodesFromOPNodeList(
int64 val) = 0;
1155 virtual std::vector<HOM_ElemPtr<HOM_DopData> >
1164 virtual std::string userName(
bool alpha=
true) = 0;
1166 virtual std::string machineName(
bool alpha=
true) = 0;
1170 virtual HOM_Node * createAnimationLayers(
const std::string &
path) = 0;
1171 virtual HOM_Node * addAnimationLayer(
HOM_Node &layermixer,
const std::string &layername) = 0;
1172 virtual bool removeAnimationLayer(
HOM_Node &layermixer,
const std::string &layername,
bool merge=
false) = 0;
1173 virtual HOM_Node* createAnimationClip(
const std::string &
path,
bool set_export) = 0;
1175 virtual void* _sceneViewerWindow(
int64 val) = 0;
1182 virtual std::vector<std::string> _prioritizePatternMatches(
1183 const std::vector<std::string> & items,
1184 const std::vector<std::string> & patterns)
const = 0;
1186 virtual void registerOpdefPath(
1187 const std::string &
path,
1188 const std::string &server_name,
1189 const std::string &port_name)
1192 virtual std::vector<std::string> videoEncoders(
1193 HOM_EnumValue const &driver,
const bool available=
false) = 0;
1195 virtual void refreshStartupPathCacheDirectory(
const std::string &dir_path) = 0;
1197 void _debugAssert(
bool v,
const std::string &
message);
1201 static void (*theHOMCreator)();
1207 friend class HOMF_Module;
1208 static void setImplementation(
HOM_Module* implementation);
1221 template <
typename T>
1244 if (!HOM_theHOMLock)
1342 #define HOM_CONSTRUCT_OBJECT(pointer) \
1343 HOM().constructObject(pointer, typeid(*pointer));
1344 #define HOM_DESTRUCT_OBJECT(pointer) \
1345 HOM().destructObject(pointer, typeid(*pointer));
1347 #define HOM_CONSTRUCT_OBJECT(pointer)
1348 #define HOM_DESTRUCT_OBJECT(pointer)
1366 #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)