HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HAPI.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * COMMENTS:
7  * For parsing help, there is a variable naming convention we maintain:
8  * strings: char * and does not end in "buffer"
9  * binary: char * and is either exactly "buffer" or ends
10  * with "_buffer"
11  * single values: don't end with "_array" or "_buffer"
12  * arrays: <type> * and is either "array" or ends
13  * with "_array". Use "_fixed_array" to skip resize using
14  * tupleSize for the thrift generator.
15  * array length: is either "length", "count", or ends with
16  * "_length" or "_count". Use "_fixed_array" to skip resize
17  * using tupleSize for the thrift generator.
18  */
19 
20 #ifndef __HAPI_h__
21 #define __HAPI_h__
22 
23 #include "HAPI_API.h"
24 #include "HAPI_Common.h"
25 #include "HAPI_Helpers.h"
26 
27 /// @defgroup Sessions
28 /// Functions for creating and inspecting HAPI session state.
29 
30 /// @brief Creates a new in-process session. There can only be
31 /// one such session per host process.
32 ///
33 /// @ingroup Sessions
34 ///
35 /// @param[out] session
36 /// A ::HAPI_Session struct to receive the session id,
37 /// in this case always 0.
38 ///
39 /// @param[in] session_info
40 /// A ::HAPI_SessionInfo struct to specify session configurations.
41 ///
43  const HAPI_SessionInfo * session_info );
44 
45 /// @brief Starts a Thrift RPC server process on the local host serving
46 /// clients on a TCP socket and waits for it to start serving.
47 /// It is safe to create an RPC session on local host using the
48 /// specified port after this call succeeds.
49 ///
50 /// @ingroup Sessions
51 /// @param[in] options
52 /// Options to configure the server being started.
53 ///
54 /// @param[in] port
55 /// The TCP socket to create on the server.
56 ///
57 /// @param[out] process_id
58 /// The process id of the server, if started successfully.
59 ///
60 /// @param[in] log_file
61 /// When a filepath is provided for this argument, all logs will
62 /// be appended to the specified file. The specfied path must be
63 /// an absolute path. The server will create any intermediate
64 /// directories in the filepath that do not already exist. When
65 /// this argument is NULL/nullptr, logging will be directed to
66 /// the standard streams.
67 ///
69  const HAPI_ThriftServerOptions * options,
70  int port,
71  HAPI_ProcessId * process_id,
72  const char * log_file );
73 
74 /// @brief Creates a Thrift RPC session using a TCP socket as transport.
75 ///
76 /// @ingroup Sessions
77 /// @param[out] session
78 /// A ::HAPI_Session struct to receive the unique session id
79 /// of the new session.
80 ///
81 /// @param[in] host_name
82 /// The name of the server host.
83 ///
84 /// @param[in] port
85 /// The server port to connect to.
86 ///
87 /// @param[in] session_info
88 /// A ::HAPI_SessionInfo struct to specify session configurations.
89 ///
91  const char * host_name,
92  int port,
93  const HAPI_SessionInfo * session_info );
94 
95 /// @brief Starts a Thrift RPC server process on the local host serving
96 /// clients on a Windows named pipe or a Unix domain socket and
97 /// waits for it to start serving. It is safe to create an RPC
98 /// session using the specified pipe or socket after this call
99 /// succeeds.
100 ///
101 /// @ingroup Sessions
102 ///
103 /// @param[in] options
104 /// Options to configure the server being started.
105 ///
106 /// @param[in] pipe_name
107 /// The name of the pipe or socket.
108 ///
109 /// @param[out] process_id
110 /// The process id of the server, if started successfully.
111 ///
112 /// @param[in] log_file
113 /// When a filepath is provided for this argument, all logs will
114 /// be appended to the specified file. The specfied path must be
115 /// an absolute path. The server will create any intermediate
116 /// directories in the filepath that do not already exist. When
117 /// this argument is NULL/nullptr, logging will be directed to
118 /// the standard streams.
119 ///
121  const HAPI_ThriftServerOptions * options,
122  const char * pipe_name,
123  HAPI_ProcessId * process_id,
124  const char * log_file );
125 
126 /// @brief Creates a Thrift RPC session using a Windows named pipe
127 /// or a Unix domain socket as transport.
128 ///
129 /// @ingroup Sessions
130 ///
131 /// @param[out] session
132 /// A ::HAPI_Session struct to receive the unique session id
133 /// of the new session.
134 ///
135 /// @param[in] pipe_name
136 /// The name of the pipe or socket.
137 ///
138 /// @param[in] session_info
139 /// A ::HAPI_SessionInfo struct to specify session configurations.
140 ///
142  const char * pipe_name,
143  const HAPI_SessionInfo * session_info );
144 
145 /// @brief Starts a Thrift RPC server process on the localhost serving clients
146 /// by utilizing shared memory to transfer data between the client and
147 /// server and waits for it to start serving.
148 ///
149 /// @ingroup Sessions
150 ///
151 /// @param[in] options
152 /// Options to configure the server being started.
153 ///
154 /// @param[in] shared_mem_name
155 /// The name of the memory buffer. This must be unique to the
156 /// server in order to avoid any conflicts.
157 ///
158 /// @param[out] process_id
159 /// The process id of the server, if started successfully.
160 ///
161 /// @param[in] log_file
162 /// When a filepath is provided for this argument, all logs will
163 /// be appended to the specified file. The specified path must
164 /// be an absolute path. The server will create any intermediate
165 /// directories in the filepath that do not already exist. When
166 /// this argument is NULL/nullptr, logging will be directed to
167 /// the standard streams.
169  const HAPI_ThriftServerOptions * options,
170  const char * shared_mem_name,
171  HAPI_ProcessId * process_id,
172  const char * log_file);
173 
174 /// @brief Creates a Thrift RPC session using a shared memory buffer as the
175 /// transport mechanism.
176 ///
177 /// @ingroup Sessions
178 ///
179 /// @param[out] session
180 /// A ::HAPI_Session struct to receive the unique session id
181 /// of the new session.
182 ///
183 /// @param[in] shared_mem_name
184 /// The name of the memory buffer. This must match the name of
185 /// the shared memory buffer of the server that you are wishing
186 /// to connect to.
187 ///
188 /// @param[in] session_info
189 /// A ::HAPI_SessionInfo struct to specify session configurations.
190 ///
192  const char * shared_mem_name,
193  const HAPI_SessionInfo * session_info );
194 
195 /// @brief Binds a new implementation DLL to one of the custom session
196 /// slots.
197 ///
198 /// @ingroup Sessions
199 ///
200 /// @param[in] session_type
201 /// Which custom implementation slot to bind the
202 /// DLL to. Must be one of ::HAPI_SESSION_CUSTOM1,
203 /// ::HAPI_SESSION_CUSTOM2, or ::HAPI_SESSION_CUSTOM3.
204 ///
205 /// @param[in] dll_path
206 /// The path to the custom implementation DLL.
207 ///
209  const char * dll_path );
210 
211 /// @brief Creates a new session using a custom implementation.
212 /// Note that the implementation DLL must already have
213 /// been bound to the session via calling
214 /// ::HAPI_BindCustomImplementation().
215 ///
216 /// @ingroup Sessions
217 ///
218 /// @param[in] session_type
219 /// session_type indicates which custom session
220 /// slot to create the session on.
221 ///
222 /// @param[in,out] session_info
223 /// Any data required by the custom implementation to
224 /// create its session.
225 ///
226 /// @param[out] session
227 /// A ::HAPI_Session struct to receive the session id,
228 /// The sessionType parameter of the struct should
229 /// also match the session_type parameter passed in.
230 ///
232  void * session_info,
233  HAPI_Session * session );
234 
235 /// @brief Checks whether the session identified by ::HAPI_Session::id is
236 /// a valid session opened in the implementation identified by
237 /// ::HAPI_Session::type.
238 ///
239 /// @ingroup Sessions
240 ///
241 /// @param[in] session
242 /// The ::HAPI_Session to check.
243 ///
244 /// @return ::HAPI_RESULT_SUCCESS if the session is valid.
245 /// Otherwise, the session is invalid and passing it to
246 /// other HAPI calls may result in undefined behavior.
247 ///
248 HAPI_DECL HAPI_IsSessionValid( const HAPI_Session * session );
249 
250 /// @brief Closes a session. If the session has been established using
251 /// RPC, then the RPC connection is closed.
252 ///
253 /// @ingroup Sessions
254 ///
255 /// @param[in] session
256 /// The HAPI_Session to close. After this call, this
257 /// session is invalid and passing it to HAPI calls other
258 /// than ::HAPI_IsSessionValid() may result in undefined
259 /// behavior.
260 ///
261 HAPI_DECL HAPI_CloseSession( const HAPI_Session * session );
262 
263 // INITIALIZATION / CLEANUP -------------------------------------------------
264 
265 /// @brief Check whether the runtime has been initialized yet using
266 /// ::HAPI_Initialize(). Function will return ::HAPI_RESULT_SUCCESS
267 /// if the runtime has been initialized and ::HAPI_RESULT_NOT_INITIALIZED
268 /// otherwise.
269 ///
270 /// @ingroup Sessions
271 ///
272 /// @param[in] session
273 /// The session of Houdini you are interacting with.
274 /// See @ref HAPI_Sessions for more on sessions.
275 /// Pass NULL to just use the default in-process session.
276 /// <!-- default NULL -->
277 ///
278 HAPI_DECL HAPI_IsInitialized( const HAPI_Session * session );
279 
280 /// @brief Create the asset manager, set up environment variables, and
281 /// initialize the main Houdini scene. No license check is done
282 /// during this step. Only when you try to load an asset library
283 /// (OTL) do we actually check for licenses.
284 ///
285 /// @ingroup Sessions
286 ///
287 /// @param[in] session
288 /// The session of Houdini you are interacting with.
289 /// See @ref HAPI_Sessions for more on sessions.
290 /// Pass NULL to just use the default in-process session.
291 /// <!-- default NULL -->
292 ///
293 /// @param[in] cook_options
294 /// Global cook options used by subsequent default cooks.
295 /// This can be overwritten by individual cooks but if
296 /// you choose to instantiate assets with cook_on_load
297 /// set to true then these cook options will be used.
298 ///
299 /// @param[in] use_cooking_thread
300 /// Use a separate thread for cooking of assets. This
301 /// allows for asynchronous cooking and larger stack size.
302 /// <!-- default true -->
303 ///
304 /// @param[in] cooking_thread_stack_size
305 /// Set the stack size of the cooking thread. Use -1 to
306 /// set the stack size to the Houdini default. This
307 /// value is in bytes.
308 /// <!-- default -1 -->
309 ///
310 /// @param[in] houdini_environment_files
311 /// A list of paths, separated by a ";" on Windows and a ":"
312 /// on Linux and Mac, to .env files that follow the same
313 /// syntax as the houdini.env file in Houdini's user prefs
314 /// folder. These will be applied after the default
315 /// houdini.env file and will overwrite the process'
316 /// environment variable values. You an use this to enforce
317 /// a stricter environment when running engine.
318 /// For more info, see:
319 /// http://www.sidefx.com/docs/houdini/basics/config_env
320 /// <!-- default NULL -->
321 ///
322 /// @param[in] otl_search_path
323 /// The directory where OTLs are searched for. You can
324 /// pass NULL here which will only use the default
325 /// Houdini OTL search paths. You can also pass in
326 /// multiple paths separated by a ";" on Windows and a ":"
327 /// on Linux and Mac. If something other than NULL is
328 /// passed the default Houdini search paths will be
329 /// appended to the end of the path string.
330 /// <!-- default NULL -->
331 ///
332 /// @param[in] dso_search_path
333 /// The directory where generic DSOs (custom plugins) are
334 /// searched for. You can pass NULL here which will
335 /// only use the default Houdini DSO search paths. You
336 /// can also pass in multiple paths separated by a ";"
337 /// on Windows and a ":" on Linux and Mac. If something
338 /// other than NULL is passed the default Houdini search
339 /// paths will be appended to the end of the path string.
340 /// <!-- default NULL -->
341 ///
342 /// @param[in] image_dso_search_path
343 /// The directory where image DSOs (custom plugins) are
344 /// searched for. You can pass NULL here which will
345 /// only use the default Houdini DSO search paths. You
346 /// can also pass in multiple paths separated by a ";"
347 /// on Windows and a ":" on Linux and Mac. If something
348 /// other than NULL is passed the default Houdini search
349 /// paths will be appended to the end of the path string.
350 /// <!-- default NULL -->
351 ///
352 /// @param[in] audio_dso_search_path
353 /// The directory where audio DSOs (custom plugins) are
354 /// searched for. You can pass NULL here which will
355 /// only use the default Houdini DSO search paths. You
356 /// can also pass in multiple paths separated by a ";"
357 /// on Windows and a ":" on Linux and Mac. If something
358 /// other than NULL is passed the default Houdini search
359 /// paths will be appended to the end of the path string.
360 /// <!-- default NULL -->
361 ///
362 HAPI_DECL HAPI_Initialize( const HAPI_Session * session,
363  const HAPI_CookOptions * cook_options,
364  HAPI_Bool use_cooking_thread,
365  int cooking_thread_stack_size,
366  const char * houdini_environment_files,
367  const char * otl_search_path,
368  const char * dso_search_path,
369  const char * image_dso_search_path,
370  const char * audio_dso_search_path );
371 
372 /// @brief Clean up memory. This will unload all assets and you will
373 /// need to call ::HAPI_Initialize() again to be able to use any
374 /// HAPI methods again.
375 ///
376 /// @note This does not release any licenses. The license will be returned when
377 /// the process terminates.
378 ///
379 /// @ingroup Sessions
380 ///
381 /// @param[in] session
382 /// The session of Houdini you are interacting with.
383 /// See @ref HAPI_Sessions for more on sessions.
384 /// Pass NULL to just use the default in-process session.
385 /// <!-- default NULL -->
386 ///
387 HAPI_DECL HAPI_Cleanup( const HAPI_Session * session );
388 
389 /// @brief When using an in-process session, this method **must** be called in
390 /// order for the host process to shutdown cleanly. This method should
391 /// be called before ::HAPI_CloseSession().
392 ///
393 /// @note This method should only be called before exiting the program,
394 /// because HAPI can no longer be used by the process once this method
395 /// has been called.
396 ///
397 /// @ingroup Sessions
398 ///
399 /// @param[in] session
400 /// The session of Houdini you are interacting with.
401 /// See @ref HAPI_Sessions for more on sessions.
402 /// Pass NULL to just use the default in-process session.
403 /// <!-- default NULL -->
404 ///
405 HAPI_DECL HAPI_Shutdown( const HAPI_Session * session );
406 
407 /// @brief Start a Houdini Performance Monitor profile.
408 /// A profile records time and memory statistics from events
409 /// that occur in the Houdini session. A profile records node cooks
410 /// for example; how long it takes to cook a node and how many times
411 /// a node is cooked. Return ::HAPI_RESULT_INVALID_ARGUMENT if NULL
412 /// is passed in for the `profile_id` parameter.
413 ///
414 /// @ingroup Sessions
415 ///
416 /// @param[in] session
417 /// The session of Houdini you are interacting with.
418 /// See @ref HAPI_Sessions for more on sessions.
419 /// Pass NULL to just use the default in-process session.
420 /// <!-- default NULL -->
421 ///
422 /// @param[in] title
423 /// The title of the profile. If NULL is passed into this
424 /// parameter, then a default title will be chosen for the
425 /// profile.
426 ///
427 /// @param[out] profile_id
428 /// The id of the profile. You can pass the id to
429 /// ::HAPI_StopPerformanceMonitorProfile to stop the profile.
430 ///
431 ///
433  const char * title,
434  int * profile_id );
435 
436 /// @brief Stop the Performance Monitor profile that matches the given
437 /// profile id and save out the profile's statistics to the specified
438 /// file path on disk. The profile is cleared from memory after its
439 /// statistics are saved to disk. Return ::HAPI_RESULT_INVALID_ARGUMENT
440 /// if no profile exists for the given id. Return ::HAPI_RESULT_FAILURE
441 /// if the profile statistics could not be saved out to the specified
442 /// file path. In this case, the profile is stopped but is not cleared
443 /// from memory. You can call
444 /// ::HAPI_StopPerformanceMonitorProfile to attempt saving the
445 /// profile to disk again.
446 ///
447 /// @ingroup Sessions
448 ///
449 /// @param[in] session
450 /// The session of Houdini you are interacting with.
451 /// See @ref HAPI_Sessions for more on sessions.
452 /// Pass NULL to just use the default in-process session.
453 /// <!-- default NULL -->
454 ///
455 /// @param[in] profile_id
456 /// The id of the profile to stop.
457 ///
458 /// @param[in] file_path
459 /// The path to the file where the profile statistics should be
460 /// written to. Use the Performance Monitor file extension,
461 /// .hperf, in the file name (i.e. /path/to/myProfile.hperf).
462 ///
464  int profile_id,
465  const char * file_path );
466 
467 /// @defgroup Environment
468 /// Functions for reading and writing to the session environment
469 
470 /// @brief Gives back a certain environment integers like version number.
471 /// Note that you do not need a session for this. These constants
472 /// are hard-coded in all HAPI implementations, including HARC and
473 /// HAPIL. This should be the first API you call to determine if
474 /// any future API calls will mismatch implementation.
475 ///
476 /// @ingroup Environment
477 ///
478 /// @param[in] int_type
479 /// One of ::HAPI_EnvIntType.
480 ///
481 /// @param[out] value
482 /// Int value.
483 ///
484 HAPI_DECL HAPI_GetEnvInt( HAPI_EnvIntType int_type, int * value );
485 
486 /// @brief Gives back a certain session-specific environment integers
487 /// like current license type being used.
488 ///
489 /// @ingroup Environment
490 ///
491 /// @param[in] session
492 /// The session of Houdini you are interacting with.
493 /// See @ref HAPI_Sessions for more on sessions.
494 /// Pass NULL to just use the default in-process session.
495 /// <!-- default NULL -->
496 ///
497 /// @param[in] int_type
498 /// One of ::HAPI_SessionEnvIntType.
499 ///
500 /// @param[out] value
501 /// Int value.
502 ///
504  HAPI_SessionEnvIntType int_type,
505  int * value );
506 
507 /// @brief Get environment variable from the server process as an integer.
508 ///
509 /// @ingroup Environment
510 ///
511 /// @param[in] session
512 /// The session of Houdini you are interacting with.
513 /// See @ref HAPI_Sessions for more on sessions.
514 /// Pass NULL to just use the default in-process session.
515 /// <!-- default NULL -->
516 ///
517 /// @param[in] variable_name
518 /// Name of the environmnet variable.
519 ///
520 /// @param[out] value
521 /// The int pointer to return the value in.
522 ///
524  const char * variable_name,
525  int * value );
526 
527 /// @brief Get environment variable from the server process as a string.
528 ///
529 /// @ingroup Environment
530 ///
531 /// @param[in] session
532 /// The session of Houdini you are interacting with.
533 /// See @ref HAPI_Sessions for more on sessions.
534 /// Pass NULL to just use the default in-process session.
535 /// <!-- default NULL -->
536 ///
537 /// @param[in] variable_name
538 /// Name of the environmnet variable.
539 ///
540 /// @param[out] value
541 /// The HAPI_StringHandle pointer to return the value in.
542 ///
544  const char * variable_name,
546 
547 /// @brief Provides the number of environment variables that are in
548 /// the server environment's process
549 ///
550 /// Note that ::HAPI_GetServerEnvVarList() should be called directly after
551 /// this method, otherwise there is the possibility that the environment
552 /// variable count of the server will have changed by the time that
553 /// ::HAPI_GetServerEnvVarList() is called.
554 ///
555 /// @ingroup Environment
556 ///
557 /// @param[in] session
558 /// The session of Houdini you are interacting with.
559 /// See @ref HAPI_Sessions for more on sessions.
560 /// Pass NULL to just use the default in-process session.
561 /// <!-- default NULL -->
562 ///
563 /// @param[out] env_count
564 /// A pointer to an int to return the value in
566  int * env_count );
567 
568 /// @brief Provides a list of all of the environment variables
569 /// in the server's process
570 ///
571 /// @ingroup Environment
572 ///
573 /// @param[in] session
574 /// The session of Houdini you are interacting with.
575 /// See @ref HAPI_Sessions for more on sessions.
576 /// Pass NULL to just use the default in-process session.
577 /// <!-- default NULL -->
578 ///
579 /// @param[out] values_array
580 /// An ::HAPI_StringHandle array at least the size of length
581 ///
582 /// @param[in] start
583 /// First index of range. Must be at least @c 0 and at most
584 /// @c env_count - 1 where @c env_count is the count returned by
585 /// ::HAPI_GetServerEnvVarCount()
586 /// <!-- min 0 -->
587 /// <!-- max ::HAPI_GetServerEnvVarCount -->
588 /// <!-- default 0 -->
589 ///
590 /// @param[in] length
591 /// Given @c env_count returned by ::HAPI_GetServerEnvVarCount(),
592 /// length should be at least @c 0 and at most <tt>env_count - start.</tt>
593 /// <!-- default 0 -->
595  HAPI_StringHandle * values_array,
596  int start,
597  int length );
598 
599 /// @brief Set environment variable for the server process as an integer.
600 ///
601 /// Note that this may affect other sessions on the same server
602 /// process. The session parameter is mainly there to identify the
603 /// server process, not the specific session.
604 ///
605 /// For in-process sessions, this will affect the current process's
606 /// environment.
607 ///
608 /// @ingroup Environment
609 ///
610 /// @param[in] session
611 /// The session of Houdini you are interacting with.
612 /// See @ref HAPI_Sessions for more on sessions.
613 /// Pass NULL to just use the default in-process session.
614 /// <!-- default NULL -->
615 ///
616 /// @param[in] variable_name
617 /// Name of the environment variable.
618 ///
619 /// @param[in] value
620 /// The integer value.
621 ///
623  const char * variable_name,
624  int value );
625 
626 /// @brief Set environment variable for the server process as a string.
627 ///
628 /// Note that this may affect other sessions on the same server
629 /// process. The session parameter is mainly there to identify the
630 /// server process, not the specific session.
631 ///
632 /// For in-process sessions, this will affect the current process's
633 /// environment.
634 ///
635 /// @ingroup Environment
636 ///
637 /// @param[in] session
638 /// The session of Houdini you are interacting with.
639 /// See @ref HAPI_Sessions for more on sessions.
640 /// Pass NULL to just use the default in-process session.
641 /// <!-- default NULL -->
642 ///
643 /// @param[in] variable_name
644 /// Name of the environmnet variable.
645 ///
646 /// @param[in] value
647 /// The string value.
648 ///
650  const char * variable_name,
651  const char * value );
652 
653 /// @defgroup Status
654 /// Functions for reading session connection and cook status.
655 
656 /// @brief Gives back the status code for a specific status type.
657 ///
658 /// @ingroup Status
659 ///
660 /// @param[in] session
661 /// The session of Houdini you are interacting with.
662 /// See @ref HAPI_Sessions for more on sessions.
663 /// Pass NULL to just use the default in-process session.
664 /// <!-- default NULL -->
665 ///
666 /// @param[in] status_type
667 /// One of ::HAPI_StatusType.
668 ///
669 /// @param[out] status
670 /// Actual status code for the status type given. That is,
671 /// if you pass in ::HAPI_STATUS_CALL_RESULT as
672 /// status_type, you'll get back a ::HAPI_Result for this
673 /// argument. If you pass in ::HAPI_STATUS_COOK_STATE
674 /// as status_type, you'll get back a ::HAPI_State enum
675 /// for this argument.
676 ///
677 HAPI_DECL HAPI_GetStatus( const HAPI_Session * session,
678  HAPI_StatusType status_type,
679  int * status );
680 
681 /// @brief Return length of string buffer storing status string message.
682 ///
683 /// If called with ::HAPI_STATUS_COOK_RESULT this will actually
684 /// parse the node networks for the previously cooked asset(s)
685 /// and aggregate all node errors, warnings, and messages
686 /// (depending on the @c verbosity level set). Usually this is done
687 /// just for the last cooked single asset but if you load a whole
688 /// Houdini scene using ::HAPI_LoadHIPFile() then you'll have
689 /// multiple "previously cooked assets".
690 ///
691 /// You MUST call ::HAPI_GetStatusStringBufLength() before calling
692 /// ::HAPI_GetStatusString() because ::HAPI_GetStatusString() will
693 /// not return the real status string and instead return a
694 /// cached version of the string that was created inside
695 /// ::HAPI_GetStatusStringBufLength(). The reason for this is that
696 /// the length of the real status string may change between
697 /// the call to ::HAPI_GetStatusStringBufLength() and the call to
698 /// ::HAPI_GetStatusString().
699 ///
700 /// @ingroup Status
701 ///
702 /// @param[in] session
703 /// The session of Houdini you are interacting with.
704 /// See @ref HAPI_Sessions for more on sessions.
705 /// Pass NULL to just use the default in-process session.
706 /// <!-- default NULL -->
707 ///
708 /// @param[in] status_type
709 /// One of ::HAPI_StatusType.
710 ///
711 /// @param[in] verbosity
712 /// Preferred verbosity level.
713 ///
714 /// @param[out] buffer_length
715 /// Length of buffer char array ready to be filled.
716 ///
718  HAPI_StatusType status_type,
719  HAPI_StatusVerbosity verbosity,
720  int * buffer_length );
721 
722 /// @brief Return status string message.
723 ///
724 /// You MUST call ::HAPI_GetStatusStringBufLength() before calling
725 /// ::HAPI_GetStatusString() because ::HAPI_GetStatusString() will
726 /// not return the real status string and instead return a
727 /// cached version of the string that was created inside
728 /// ::HAPI_GetStatusStringBufLength(). The reason for this is that
729 /// the length of the real status string may change between
730 /// the call to ::HAPI_GetStatusStringBufLength() and the call to
731 /// ::HAPI_GetStatusString().
732 ///
733 /// @ingroup Status
734 ///
735 /// @param[in] session
736 /// The session of Houdini you are interacting with.
737 /// See @ref HAPI_Sessions for more on sessions.
738 /// Pass NULL to just use the default in-process session.
739 /// <!-- default NULL -->
740 ///
741 /// @param[in] status_type
742 /// One of ::HAPI_StatusType.
743 ///
744 /// @param[out] string_value
745 /// Buffer char array ready to be filled.
746 ///
747 /// @param[in] length
748 /// Length of the string buffer (must match size of
749 /// @p string_value - so including NULL terminator).
750 /// <!-- source ::HAPI_GetStatusStringBufLength -->
751 ///
753  HAPI_StatusType status_type,
754  char * string_value,
755  int length );
756 
757 /// @brief Compose the cook result string (errors and warnings) of a
758 /// specific node.
759 ///
760 /// This will actually parse the node network inside the given
761 /// node and return ALL errors/warnings/messages of all child nodes,
762 /// combined into a single string. If you'd like a more narrowed
763 /// search, call this function on one of the child nodes.
764 ///
765 /// You MUST call ::HAPI_ComposeNodeCookResult() before calling
766 /// ::HAPI_GetComposedNodeCookResult() because
767 /// ::HAPI_GetComposedNodeCookResult() will
768 /// not return the real result string and instead return a
769 /// cached version of the string that was created inside
770 /// ::HAPI_ComposeNodeCookResult(). The reason for this is that
771 /// the length of the real status string may change between
772 /// the call to ::HAPI_ComposeNodeCookResult() and the call to
773 /// ::HAPI_GetComposedNodeCookResult().
774 ///
775 /// @ingroup Status
776 ///
777 /// @param[in] session
778 /// The session of Houdini you are interacting with.
779 /// See @ref HAPI_Sessions for more on sessions.
780 /// Pass NULL to just use the default in-process session.
781 /// <!-- default NULL -->
782 ///
783 /// @param[in] node_id
784 /// The node id.
785 ///
786 /// @param[in] verbosity
787 /// Preferred verbosity level.
788 ///
789 /// @param[out] buffer_length
790 /// Length of buffer char array ready to be filled.
791 ///
793  HAPI_NodeId node_id,
794  HAPI_StatusVerbosity verbosity,
795  int * buffer_length );
796 
797 /// @brief Return cook result string message on a single node.
798 ///
799 /// You MUST call ::HAPI_ComposeNodeCookResult() before calling
800 /// ::HAPI_GetComposedNodeCookResult() because
801 /// ::HAPI_GetComposedNodeCookResult() will
802 /// not return the real result string and instead return a
803 /// cached version of the string that was created inside
804 /// ::HAPI_ComposeNodeCookResult(). The reason for this is that
805 /// the length of the real status string may change between
806 /// the call to ::HAPI_ComposeNodeCookResult() and the call to
807 /// ::HAPI_GetComposedNodeCookResult().
808 ///
809 /// @ingroup Status
810 ///
811 /// @param[in] session
812 /// The session of Houdini you are interacting with.
813 /// See @ref HAPI_Sessions for more on sessions.
814 /// Pass NULL to just use the default in-process session.
815 /// <!-- default NULL -->
816 ///
817 /// @param[out] string_value
818 /// Buffer char array ready to be filled.
819 ///
820 /// @param[in] length
821 /// Length of the string buffer (must match size of
822 /// @p string_value - so including NULL terminator).
823 /// <!-- source ::HAPI_ComposeNodeCookResult -->
824 ///
826  char * string_value,
827  int length );
828 
829 /// @brief Gets the length of the cook result string (errors and warnings) of
830 /// a specific node.
831 ///
832 /// Unlike ::HAPI_ComposeNodeCookResult(), this node does not parse
833 /// inside the node network. Only errors, warnings, and messages that
834 /// appear on the specified node will be a part of the cook result
835 /// string.
836 ///
837 /// You MUST call ::HAPI_GetNodeCookResultLength() before calling
838 /// ::HAPI_GetNodeCookResult() because ::HAPI_GetNodeCookResult() will
839 /// not return the real result and instead returns a cached version of
840 /// the string that was created during the call to
841 /// ::HAPI_GetNodeCookResultLength(). The reason for this is that the
842 /// length of the real status string may change between the call to
843 /// ::HAPI_GetNodeCookResultLength() and ::HAPI_GetNodeCookResult().
844 ///
845 /// @ingroup Status
846 ///
847 /// @param[in] session
848 /// The session of Houdini you are interacting with.
849 /// See @ref HAPI_Sessions for more on sessions.
850 /// Pass NULL to just use the default in-process session.
851 /// <!-- default NULL -->
852 ///
853 /// @param[in] node_id
854 /// The node id.
855 ///
856 /// @param[in] verbosity
857 /// Preferred verbosity level.
858 ///
859 /// @param[out] buffer_length
860 /// Lenght of buffer char array ready to be filled.
861 ///
863  HAPI_NodeId node_id,
864  HAPI_StatusVerbosity verbosity,
865  int * buffer_length );
866 
867 /// @brief Return the cook result string that was composed during a call to
868 /// ::HAPI_GetNodeCookResultLength().
869 ///
870 /// You MUST call ::HAPI_GetNodeCookResultLength() before calling
871 /// ::HAPI_GetNodeCookResult() because ::HAPI_GetNodeCookResult() will
872 /// not return the real result and instead returns a cached version of
873 /// the string that was created during the call to
874 /// ::HAPI_GetNodeCookResultLength(). The reason for this is that the
875 /// length of the real status string may change between the call to
876 /// ::HAPI_GetNodeCookResultLength() and ::HAPI_GetNodeCookResult().
877 ///
878 /// @ingroup Status
879 ///
880 /// @param[in] session
881 /// The session of Houdini you are interacting with.
882 /// See @ref HAPI_Sessions for more on sessions.
883 /// Pass NULL to just use the default in-process session.
884 /// <!-- default NULL -->
885 ///
886 /// @param[out] string_value
887 /// Buffer char array that will be filled with the cook result
888 /// string.
889 ///
890 /// @param[in] length
891 /// Length of the char buffer (must match size of
892 /// @p string_value - so include NULL terminator).
893 /// <!-- source ::HAPI_GetNodeCookResultLength -->
894 ///
896  char * string_value,
897  int length );
898 
899 /// @brief Get the number of message nodes set in "Type Properties".
900 ///
901 /// @ingroup Status
902 ///
903 /// @param[in] session
904 /// The session of Houdini you are interacting with.
905 /// See @ref HAPI_Sessions for more on sessions.
906 /// Pass NULL to just use the default in-process session.
907 /// <!-- default NULL -->
908 ///
909 /// @param[in] node_id
910 /// The node id.
911 ///
912 /// @param[out] count
913 /// The number of message nodes.
914 ///
916  HAPI_NodeId node_id,
917  int * count );
918 
919 /// @brief Get the ids of message nodes set in the "Type Properties".
920 ///
921 /// @ingroup Status
922 ///
923 /// @param[in] session
924 /// The session of Houdini you are interacting with.
925 /// See @ref HAPI_Sessions for more on sessions.
926 /// Pass NULL to just use the default in-process session.
927 /// <!-- default NULL -->
928 ///
929 /// @param[in] node_id
930 /// The node id.
931 ///
932 /// @param[out] message_node_ids_array
933 /// The array of node IDs to be filled.
934 ///
935 /// @param[in] count
936 /// The number of message nodes.
937 ///
939  HAPI_NodeId node_id,
940  HAPI_NodeId * message_node_ids_array,
941  int count );
942 
943 /// @brief Recursively check for specific errors by error code on a node.
944 ///
945 /// Note that checking for errors can be expensive because it checks
946 /// ALL child nodes within a node and then tries to do a string match
947 /// for the errors being looked for. This is why such error checking
948 /// is part of a standalone function and not done during the cooking
949 /// step.
950 ///
951 /// @ingroup Status
952 ///
953 /// @param[in] session
954 /// The session of Houdini you are interacting with.
955 /// See @ref HAPI_Sessions for more on sessions.
956 /// Pass NULL to just use the default in-process session.
957 /// <!-- default NULL -->
958 ///
959 /// @param[in] node_id
960 /// The node id.
961 ///
962 /// @param[in] errors_to_look_for
963 /// The HAPI_ErrorCode error codes (as a bitfield) to look for.
964 ///
965 /// @param[out] errors_found
966 /// Returned HAPI_ErrorCode bitfield indicating which of the
967 /// looked for errors have been found.
968 ///
970  HAPI_NodeId node_id,
971  HAPI_ErrorCodeBits errors_to_look_for,
972  HAPI_ErrorCodeBits * errors_found );
973 
974 /// @brief Clears the connection error. Should be used before starting
975 /// or creating Thrift server.
976 ///
977 /// Only available when using Thrift connections.
978 ///
979 /// @ingroup Status
980 ///
982 
983 /// @brief Return the length of string buffer storing connection error
984 /// message.
985 ///
986 /// @ingroup Status
987 ///
988 /// Only available when using Thrift connections.
989 ///
990 /// @param[out] buffer_length
991 /// Length of buffer char array ready to be filled.
992 ///
993 HAPI_DECL HAPI_GetConnectionErrorLength( int * buffer_length );
994 
995 /// @brief Return the connection error message.
996 ///
997 /// You MUST call ::HAPI_GetConnectionErrorLength() before calling
998 /// this to get the correct string length.
999 ///
1000 /// Only available when using Thrift connections.
1001 ///
1002 /// @ingroup Status
1003 ///
1004 /// @param[out] string_value
1005 /// Buffer char array ready to be filled.
1006 ///
1007 /// @param[in] length
1008 /// Length of the string buffer (must match size of
1009 /// string_value - so including NULL terminator).
1010 /// Use ::HAPI_GetConnectionErrorLength to get this length.
1011 ///
1012 /// @param[in] clear
1013 /// If true, will clear the error when HAPI_RESULT_SUCCESS
1014 /// is returned.
1015 ///
1017  int length,
1018  HAPI_Bool clear );
1019 
1020 /// @brief Get total number of nodes that need to cook in the current
1021 /// session.
1022 ///
1023 /// @ingroup Status
1024 ///
1025 /// @param[in] session
1026 /// The session of Houdini you are interacting with.
1027 /// See @ref HAPI_Sessions for more on sessions.
1028 /// Pass NULL to just use the default in-process session.
1029 /// <!-- default NULL -->
1030 ///
1031 /// @param[out] count
1032 /// Total cook count.
1033 ///
1035  int * count );
1036 
1037 /// @brief Get current number of nodes that have already cooked in the
1038 /// current session. Note that this is a very crude approximation
1039 /// of the cooking progress - it may never make it to 100% or it
1040 /// might spend another hour at 100%. Use ::HAPI_GetStatusString
1041 /// to get a better idea of progress if this number gets stuck.
1042 ///
1043 /// @ingroup Status
1044 ///
1045 /// @param[in] session
1046 /// The session of Houdini you are interacting with.
1047 /// See @ref HAPI_Sessions for more on sessions.
1048 /// Pass NULL to just use the default in-process session.
1049 /// <!-- default NULL -->
1050 ///
1051 /// @param[out] count
1052 /// Current cook count.
1053 ///
1055  int * count );
1056 
1057 /// @brief Interrupt a cook or load operation.
1058 ///
1059 /// @ingroup Status
1060 ///
1061 /// @param[in] session
1062 /// The session of Houdini you are interacting with.
1063 /// See @ref HAPI_Sessions for more on sessions.
1064 /// Pass NULL to just use the default in-process session.
1065 /// <!-- default NULL -->
1066 ///
1067 HAPI_DECL HAPI_Interrupt( const HAPI_Session * session );
1068 
1069 /// @defgroup Utility
1070 /// Utility math and other functions
1071 
1072 /// @brief Converts the transform described by a ::HAPI_TransformEuler
1073 /// struct into a different transform and rotation order.
1074 ///
1075 /// @ingroup Utility
1076 ///
1077 /// @param[in] session
1078 /// The session of Houdini you are interacting with.
1079 /// See @ref HAPI_Sessions for more on sessions.
1080 /// Pass NULL to just use the default in-process session.
1081 /// <!-- default NULL -->
1082 ///
1083 /// @param[in] transform_in
1084 /// The transform to be converted.
1085 ///
1086 /// @param[in] rst_order
1087 /// The desired transform order of the output.
1088 ///
1089 /// @param[in] rot_order
1090 /// The desired rotation order of the output.
1091 ///
1092 /// @param[out] transform_out
1093 /// The converted transform.
1094 ///
1096  const HAPI_TransformEuler * transform_in,
1097  HAPI_RSTOrder rst_order,
1098  HAPI_XYZOrder rot_order,
1099  HAPI_TransformEuler * transform_out );
1100 
1101 /// @brief Converts a 4x4 matrix into its TRS form.
1102 ///
1103 /// @ingroup Utility
1104 ///
1105 /// @param[in] session
1106 /// The session of Houdini you are interacting with.
1107 /// See @ref HAPI_Sessions for more on sessions.
1108 /// Pass NULL to just use the default in-process session.
1109 /// <!-- default NULL -->
1110 ///
1111 /// @param[in] matrix
1112 /// A 4x4 matrix expressed in a 16 element float array.
1113 ///
1114 /// @param[in] rst_order
1115 /// The desired transform order of the output.
1116 ///
1117 /// @param[out] transform_out
1118 /// Used for the output.
1119 ///
1121  const float * matrix,
1122  HAPI_RSTOrder rst_order,
1123  HAPI_Transform * transform_out );
1124 
1125 /// @brief Converts a 4x4 matrix into its TRS form.
1126 ///
1127 /// @ingroup Utility
1128 ///
1129 /// @param[in] session
1130 /// The session of Houdini you are interacting with.
1131 /// See @ref HAPI_Sessions for more on sessions.
1132 /// Pass NULL to just use the default in-process session.
1133 /// <!-- default NULL -->
1134 ///
1135 /// @param[in] matrix
1136 /// A 4x4 matrix expressed in a 16 element float array.
1137 ///
1138 /// @param[in] rst_order
1139 /// The desired transform order of the output.
1140 ///
1141 /// @param[in] rot_order
1142 /// The desired rotation order of the output.
1143 ///
1144 /// @param[out] transform_out
1145 /// Used for the output.
1146 ///
1148  const float * matrix,
1149  HAPI_RSTOrder rst_order,
1150  HAPI_XYZOrder rot_order,
1151  HAPI_TransformEuler * transform_out );
1152 
1153 /// @brief Converts ::HAPI_Transform into a 4x4 transform matrix.
1154 ///
1155 /// @ingroup Utility
1156 ///
1157 /// @param[in] session
1158 /// The session of Houdini you are interacting with.
1159 /// See @ref HAPI_Sessions for more on sessions.
1160 /// Pass NULL to just use the default in-process session.
1161 /// <!-- default NULL -->
1162 ///
1163 /// @param[in] transform
1164 /// The ::HAPI_Transform you wish to convert.
1165 ///
1166 /// @param[out] matrix
1167 /// A 16 element float array that will contain the result.
1168 ///
1170  const HAPI_Transform * transform,
1171  float * matrix );
1172 
1173 /// @brief Converts ::HAPI_TransformEuler into a 4x4 transform matrix.
1174 ///
1175 /// @ingroup Utility
1176 ///
1177 /// @param[in] session
1178 /// The session of Houdini you are interacting with.
1179 /// See @ref HAPI_Sessions for more on sessions.
1180 /// Pass NULL to just use the default in-process session.
1181 /// <!-- default NULL -->
1182 ///
1183 /// @param[in] transform
1184 /// The ::HAPI_TransformEuler you wish to convert.
1185 ///
1186 /// @param[out] matrix
1187 /// A 16 element float array that will contain the result.
1188 ///
1190  const HAPI_Session * session,
1192  float * matrix );
1193 
1194 /// @brief Acquires or releases the Python interpreter lock. This is
1195 /// needed if HAPI is called from Python and HAPI is in threaded
1196 /// mode (see ::HAPI_Initialize()).
1197 ///
1198 /// The problem arises when async functions like
1199 /// ::HAPI_CreateNode() may start a cooking thread that
1200 /// may try to run Python code. That is, we would now have
1201 /// Python running on two different threads - something not
1202 /// allowed by Python by default.
1203 ///
1204 /// We need to tell Python to explicitly "pause" the Python state
1205 /// on the client thread while we run Python in our cooking thread.
1206 ///
1207 /// You must call this function first with locked == true before
1208 /// any async HAPI call. Then, after the async call finished,
1209 /// detected via calls to ::HAPI_GetStatus(), call this method
1210 /// again to release the lock with locked == false.
1211 ///
1212 /// @ingroup Utility
1213 ///
1214 /// @param[in] session
1215 /// The session of Houdini you are interacting with.
1216 /// See @ref HAPI_Sessions for more on sessions.
1217 /// Pass NULL to just use the default in-process session.
1218 /// <!-- default NULL -->
1219 ///
1220 /// @param[in] locked
1221 /// True will acquire the interpreter lock to use it for
1222 /// the HAPI cooking thread. False will release the lock
1223 /// back to the client thread.
1224 ///
1226  HAPI_Bool locked );
1227 
1228 /// @defgroup Strings
1229 /// Functions for handling strings.
1230 
1231 /// @brief Gives back the string length of the string with the
1232 /// given handle.
1233 ///
1234 /// @ingroup Strings
1235 ///
1236 /// @param[in] session
1237 /// The session of Houdini you are interacting with.
1238 /// See @ref HAPI_Sessions for more on sessions.
1239 /// Pass NULL to just use the default in-process session.
1240 /// <!-- default NULL -->
1241 ///
1242 /// @param[in] string_handle
1243 /// Handle of the string to query.
1244 ///
1245 /// @param[out] buffer_length
1246 /// Buffer length of the queried string (including NULL
1247 /// terminator).
1248 ///
1250  HAPI_StringHandle string_handle,
1251  int * buffer_length );
1252 
1253 /// @brief Gives back the string value of the string with the
1254 /// given handle.
1255 ///
1256 /// @ingroup Strings
1257 ///
1258 /// @param[in] session
1259 /// The session of Houdini you are interacting with.
1260 /// See @ref HAPI_Sessions for more on sessions.
1261 /// Pass NULL to just use the default in-process session.
1262 /// <!-- default NULL -->
1263 ///
1264 /// @param[in] string_handle
1265 /// Handle of the string to query.
1266 ///
1267 /// @param[out] string_value
1268 /// Actual string value (character array).
1269 ///
1270 /// @param[in] length
1271 /// Length of the string buffer (must match size of
1272 /// @p string_value - so including NULL terminator).
1273 ///
1274 HAPI_DECL HAPI_GetString( const HAPI_Session * session,
1275  HAPI_StringHandle string_handle,
1276  char * string_value,
1277  int length );
1278 
1279 /// @brief Adds the given string to the string table and returns
1280 /// the handle. It is the responsibility of the caller to
1281 /// manage access to the string. The intended use for custom strings
1282 /// is to allow structs that reference strings to be passed in to HAPI
1283 ///
1284 /// @ingroup Strings
1285 ///
1286 /// @param[in] session
1287 /// The session of Houdini you are interacting with.
1288 /// See @ref HAPI_Sessions for more on sessions.
1289 /// Pass NULL to just use the default in-process session.
1290 /// <!-- default NULL -->
1291 ///
1292 /// @param[in] string_value
1293 /// Actual string value (character array).
1294 ///
1295 /// @param[out] handle_value
1296 /// Handle of the string that was added
1297 ///
1299  const char * string_value,
1300  HAPI_StringHandle * handle_value );
1301 
1302 /// @brief Removes the specified string from the server
1303 /// and invalidates the handle
1304 ///
1305 /// @ingroup Strings
1306 ///
1307 /// @param[in] session
1308 /// The session of Houdini you are interacting with.
1309 /// See @ref HAPI_Sessions for more on sessions.
1310 /// Pass NULL to just use the default in-process session.
1311 /// <!-- default NULL -->
1312 ///
1313 /// @param[in] string_handle
1314 /// Handle of the string that was added
1315 ///
1317  const HAPI_StringHandle string_handle );
1318 
1319 /// @brief Gives back the length of the buffer needed to hold
1320 /// all the values null-separated for the given string
1321 /// handles. Used with ::HAPI_GetStringBatch().
1322 ///
1323 /// @ingroup Strings
1324 ///
1325 /// @param[in] session
1326 /// The session of Houdini you are interacting with.
1327 /// See @ref HAPI_Sessions for more on sessions.
1328 /// Pass NULL to just use the default in-process session.
1329 /// <!-- default NULL -->
1330 ///
1331 /// @param[in] string_handle_array
1332 /// Array of string handles to be read.
1333 ///
1334 /// @param[in] string_handle_count
1335 /// Length of @p string_handle_array
1336 ///
1337 /// @param[out] string_buffer_size
1338 /// Buffer length required for subsequent call to
1339 /// HAPI_GetStringBatch to hold all the given
1340 /// string values null-terminated
1341 ///
1343  const int * string_handle_array,
1344  int string_handle_count,
1345  int * string_buffer_size );
1346 
1347 /// @brief Gives back the values of the given string handles.
1348 /// The given char array is filled with null-separated
1349 /// values, and the final value is null-terminated.
1350 /// Used with ::HAPI_GetStringBatchSize(). Using this function
1351 /// instead of repeated calls to ::HAPI_GetString() can be more
1352 /// more efficient for a large number of strings.
1353 ///
1354 /// @ingroup Strings
1355 ///
1356 /// @param[in] session
1357 /// The session of Houdini you are interacting with.
1358 /// See @ref HAPI_Sessions for more on sessions.
1359 /// Pass NULL to just use the default in-process session.
1360 /// <!-- default NULL -->
1361 ///
1362 /// @param[out] char_buffer
1363 /// Array of characters to hold string values.
1364 ///
1365 /// @param[in] char_array_length
1366 /// Length of @p char_array. Must be large enough to hold
1367 /// all the string values including null separators.
1368 /// <!-- min ::HAPI_GetStringBatchSize -->
1369 /// <!-- source ::HAPI_GetStringBatchSize -->
1370 ///
1371 HAPI_DECL HAPI_GetStringBatch( const HAPI_Session * session,
1372  char * char_buffer,
1373  int char_array_length );
1374 
1375 
1376 /// @defgroup Time
1377 /// Time related functions
1378 
1379 /// @brief Gets the global time of the scene. All API calls deal with
1380 /// this time to cook.
1381 ///
1382 /// @ingroup Time
1383 ///
1384 /// @param[in] session
1385 /// The session of Houdini you are interacting with.
1386 /// See @ref HAPI_Sessions for more on sessions.
1387 /// Pass NULL to just use the default in-process session.
1388 /// <!-- default NULL -->
1389 ///
1390 /// @param[out] time
1391 /// Time as a double in seconds.
1392 ///
1393 HAPI_DECL HAPI_GetTime( const HAPI_Session * session, double * time );
1394 
1395 /// @brief Sets the global time of the scene. All API calls will deal
1396 /// with this time to cook.
1397 ///
1398 /// @ingroup Time
1399 ///
1400 /// @param[in] session
1401 /// The session of Houdini you are interacting with.
1402 /// See @ref HAPI_Sessions for more on sessions.
1403 /// Pass NULL to just use the default in-process session.
1404 /// <!-- default NULL -->
1405 ///
1406 /// @param[in] time
1407 /// Time as a double in seconds.
1408 ///
1409 HAPI_DECL HAPI_SetTime( const HAPI_Session * session, double time );
1410 
1411 /// @brief Returns whether the Houdini session will use the current time in
1412 /// Houdini when cooking and retrieving data. By default this is
1413 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1414 /// In SessionSync, it is enabled by default, but can be overridden.
1415 /// Note that this function will ALWAYS return
1416 /// ::HAPI_RESULT_SUCCESS.
1417 ///
1418 /// @ingroup Time
1419 ///
1420 /// @param[in] session
1421 /// The session of Houdini you are interacting with.
1422 /// See @ref HAPI_Sessions for more on sessions.
1423 /// Pass NULL to just use the default in-process session.
1424 /// <!-- default NULL -->
1425 ///
1426 /// @param[out] enabled
1427 /// Whether use Houdini time is enabled or not.
1428 ///
1430  HAPI_Bool * enabled );
1431 
1432 /// @brief Sets whether the Houdini session should use the current time in
1433 /// Houdini when cooking and retrieving data. By default this is
1434 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1435 /// In SessionSync, it is enabled by default, but can be overridden.
1436 /// Note that this function will ALWAYS return
1437 /// ::HAPI_RESULT_SUCCESS.
1438 ///
1439 /// @ingroup Time
1440 ///
1441 /// @param[in] session
1442 /// The session of Houdini you are interacting with.
1443 /// See @ref HAPI_Sessions for more on sessions.
1444 /// Pass NULL to just use the default in-process session.
1445 /// <!-- default NULL -->
1446 ///
1447 /// @param[in] enabled
1448 /// Set to true to use Houdini time.
1449 ///
1451  HAPI_Bool enabled );
1452 
1453 /// @brief Gets the current global timeline options.
1454 ///
1455 /// @ingroup Time
1456 ///
1457 /// @param[in] session
1458 /// The session of Houdini you are interacting with.
1459 /// See @ref HAPI_Sessions for more on sessions.
1460 /// Pass NULL to just use the default in-process session.
1461 /// <!-- default NULL -->
1462 ///
1463 /// @param[out] timeline_options
1464 /// The global timeline options struct.
1465 ///
1467  HAPI_TimelineOptions * timeline_options );
1468 
1469 /// @brief Sets the global timeline options.
1470 ///
1471 /// @ingroup Time
1472 ///
1473 /// @param[in] session
1474 /// The session of Houdini you are interacting with.
1475 /// See @ref HAPI_Sessions for more on sessions.
1476 /// Pass NULL to just use the default in-process session.
1477 /// <!-- default NULL -->
1478 ///
1479 /// @param[in] timeline_options
1480 /// The global timeline options struct.
1481 ///
1483  const HAPI_Session * session,
1484  const HAPI_TimelineOptions * timeline_options );
1485 
1486 /// @brief Gets the global compositor options.
1487 ///
1488 /// @param[in] session
1489 /// The session of Houdini you are interacting with.
1490 /// See @ref HAPI_Sessions for more on sessions.
1491 /// Pass NULL to just use the default in-process session.
1492 /// <!-- default NULL -->
1493 ///
1494 /// @param[out] compositor_options
1495 /// The compositor options struct.
1496 ///
1498  const HAPI_Session * session,
1499  HAPI_CompositorOptions * compositor_options);
1500 
1501 /// @brief Sets the global compositor options.
1502 ///
1503 /// @param[in] session
1504 /// The session of Houdini you are interacting with.
1505 /// See @ref HAPI_Sessions for more on sessions.
1506 /// Pass NULL to just use the default in-process session.
1507 /// <!-- default NULL -->
1508 ///
1509 /// @param[in] compositor_options
1510 /// The compositor options.
1511 ///
1513  const HAPI_Session * session,
1514  const HAPI_CompositorOptions * compositor_options);
1515 
1516 /// @defgroup Assets
1517 /// Functions for managing asset libraries
1518 
1519 /// @brief Loads a Houdini asset library (OTL) from a .otl file.
1520 /// It does NOT create anything inside the Houdini scene.
1521 ///
1522 /// @note This is when we actually check for valid licenses.
1523 ///
1524 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1525 /// to get the number of assets contained in the library using the
1526 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1527 /// to get the list of available assets by name. Use the asset
1528 /// names with ::HAPI_CreateNode() to actually create
1529 /// one of these nodes in the Houdini scene and get back
1530 /// an asset_id.
1531 ///
1532 /// @note The HIP file saved using ::HAPI_SaveHIPFile() will only
1533 /// have an absolute path reference to the loaded OTL meaning
1534 /// that if the OTL is moved or renamed the HIP file won't
1535 /// load properly. It also means that if you change the OTL
1536 /// using the saved HIP scene the same OTL file will change
1537 /// as the one used with Houdini Engine.
1538 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1539 ///
1540 /// @ingroup Assets
1541 ///
1542 /// @param[in] session
1543 /// The session of Houdini you are interacting with.
1544 /// See @ref HAPI_Sessions for more on sessions.
1545 /// Pass NULL to just use the default in-process session.
1546 /// <!-- default NULL -->
1547 ///
1548 /// @param[in] file_path
1549 /// Absolute path to the .otl file.
1550 ///
1551 /// @param[in] allow_overwrite
1552 /// With this true, if the library file being loaded
1553 /// contains asset definitions that have already been
1554 /// loaded they will overwrite the existing definitions.
1555 /// Otherwise, a library containing asset definitions that
1556 /// already exist will fail to load, returning a
1557 /// ::HAPI_Result of
1558 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1559 ///
1560 /// @param[out] library_id
1561 /// Newly loaded otl id to be used with
1562 /// ::HAPI_GetAvailableAssetCount() and
1563 /// ::HAPI_GetAvailableAssets().
1564 ///
1566  const char * file_path,
1567  HAPI_Bool allow_overwrite,
1568  HAPI_AssetLibraryId * library_id );
1569 
1570 /// @brief Loads a Houdini asset library (OTL) from memory.
1571 /// It does NOT create anything inside the Houdini scene.
1572 ///
1573 /// @note This is when we actually check for valid licenses.
1574 ///
1575 /// Please note that the performance benefit of loading a library
1576 /// from memory are negligible at best. Due to limitations of
1577 /// Houdini's library manager, there is still some disk access
1578 /// and file writes because every asset library needs to be
1579 /// saved to a real file. Use this function only as a convenience
1580 /// if you already have the library file in memory and don't wish
1581 /// to have to create your own temporary library file and then
1582 /// call ::HAPI_LoadAssetLibraryFromFile().
1583 ///
1584 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1585 /// to get the number of assets contained in the library using the
1586 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1587 /// to get the list of available assets by name. Use the asset
1588 /// names with ::HAPI_CreateNode() to actually create
1589 /// one of these nodes in the Houdini scene and get back
1590 /// an asset_id.
1591 ///
1592 /// @note The saved HIP file using ::HAPI_SaveHIPFile() will
1593 /// @a contain the OTL loaded as part of its @b Embedded OTLs.
1594 /// This means that you can safely move or rename the original
1595 /// OTL file and the HIP will continue to work but if you make
1596 /// changes to the OTL while using the saved HIP the changes
1597 /// won't be saved to the original OTL.
1598 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1599 ///
1600 /// @ingroup Assets
1601 ///
1602 /// @param[in] session
1603 /// The session of Houdini you are interacting with.
1604 /// See @ref HAPI_Sessions for more on sessions.
1605 /// Pass NULL to just use the default in-process session.
1606 /// <!-- default NULL -->
1607 ///
1608 /// @param[in] library_buffer
1609 /// The memory buffer containing the asset definitions
1610 /// in the same format as a standard Houdini .otl file.
1611 ///
1612 /// @param[in] library_buffer_length
1613 /// The size of the OTL memory buffer.
1614 ///
1615 /// @param[in] allow_overwrite
1616 /// With this true, if the library file being loaded
1617 /// contains asset definitions that have already been
1618 /// loaded they will overwrite the existing definitions.
1619 /// Otherwise, a library containing asset definitions that
1620 /// already exist will fail to load, returning a
1621 /// ::HAPI_Result of
1622 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1623 ///
1624 /// @param[out] library_id
1625 /// Newly loaded otl id to be used with
1626 /// ::HAPI_GetAvailableAssetCount() and
1627 /// ::HAPI_GetAvailableAssets().
1628 ///
1630  const char * library_buffer,
1631  int library_buffer_length,
1632  HAPI_Bool allow_overwrite,
1633  HAPI_AssetLibraryId * library_id );
1634 
1635 /// @brief Get the number of assets contained in an asset library.
1636 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1637 /// get a library_id.
1638 ///
1639 /// @ingroup Assets
1640 ///
1641 /// @param[in] session
1642 /// The session of Houdini you are interacting with.
1643 /// See @ref HAPI_Sessions for more on sessions.
1644 /// Pass NULL to just use the default in-process session.
1645 /// <!-- default NULL -->
1646 ///
1647 /// @param[in] library_id
1648 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1649 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1650 ///
1651 /// @param[out] asset_count
1652 /// The number of assets contained in this asset library.
1653 ///
1655  HAPI_AssetLibraryId library_id,
1656  int * asset_count );
1657 
1658 /// @brief Get the names of the assets contained in an asset library.
1659 ///
1660 /// The asset names will contain additional information about
1661 /// the type of asset, namespace, and version, along with the
1662 /// actual asset name. For example, if you have an Object type
1663 /// asset, in the "hapi" namespace, of version 2.0, named
1664 /// "foo", the asset name returned here will be:
1665 /// hapi::Object/foo::2.0
1666 ///
1667 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1668 /// get a library_id. Then, you should call
1669 /// ::HAPI_GetAvailableAssetCount() to get the number of assets to
1670 /// know how large of a string handles array you need to allocate.
1671 ///
1672 /// @ingroup Assets
1673 ///
1674 /// @param[in] session
1675 /// The session of Houdini you are interacting with.
1676 /// See @ref HAPI_Sessions for more on sessions.
1677 /// Pass NULL to just use the default in-process session.
1678 /// <!-- default NULL -->
1679 ///
1680 /// @param[in] library_id
1681 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1682 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1683 ///
1684 /// @param[out] asset_names_array
1685 /// Array of string handles (integers) that should be
1686 /// at least the size of asset_count.
1687 ///
1688 /// @param[in] asset_count
1689 /// Should be the same or less than the value returned by
1690 /// ::HAPI_GetAvailableAssetCount().
1691 /// <!-- max ::HAPI_GetAvailableAssetCount -->
1692 /// <!-- source ::HAPI_GetAvailableAssetCount -->
1693 ///
1695  HAPI_AssetLibraryId library_id,
1696  HAPI_StringHandle * asset_names_array,
1697  int asset_count );
1698 
1699 /// @brief Fill an asset_info struct from a node.
1700 ///
1701 /// @ingroup Assets
1702 ///
1703 /// @param[in] session
1704 /// The session of Houdini you are interacting with.
1705 /// See @ref HAPI_Sessions for more on sessions.
1706 /// Pass NULL to just use the default in-process session.
1707 /// <!-- default NULL -->
1708 ///
1709 /// @param[in] node_id
1710 /// The node id.
1711 ///
1712 /// @param[out] asset_info
1713 /// Returned ::HAPI_AssetInfo struct.
1714 ///
1715 HAPI_DECL HAPI_GetAssetInfo( const HAPI_Session * session,
1716  HAPI_NodeId node_id,
1717  HAPI_AssetInfo * asset_info );
1718 
1719 /// @brief Get the number of asset parameters contained in an asset
1720 /// library, as well as the number of parameter int, float,
1721 /// string, and choice values.
1722 ///
1723 /// This does not create the asset in the session.
1724 /// Use this for faster querying of asset parameters compared to
1725 /// creating the asset node and querying the node's parameters.
1726 ///
1727 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1728 /// called prior, in order to load the asset library and
1729 /// acquire library_id. Then ::HAPI_GetAvailableAssetCount and
1730 /// ::HAPI_GetAvailableAssets should be called to get the
1731 /// asset_name.
1732 ///
1733 /// @ingroup Assets
1734 ///
1735 /// @param[in] session
1736 /// The session of Houdini you are interacting with.
1737 /// See @ref HAPI_Sessions for more on sessions.
1738 /// Pass NULL to just use the default in-process session.
1739 /// <!-- default NULL -->
1740 ///
1741 /// @param[in] library_id
1742 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1743 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1744 ///
1745 /// @param[in] asset_name
1746 /// Name of the asset to get the parm counts for.
1747 ///
1748 /// @param[out] parm_count
1749 /// The number of parameters in the asset library.
1750 ///
1751 /// @param[out] int_value_count
1752 /// The number of int values for parameters in the asset
1753 /// library.
1754 ///
1755 /// @param[out] float_value_count
1756 /// The number of float values for parameters in the asset
1757 /// library.
1758 ///
1759 /// @param[out] string_value_count
1760 /// The number of string values for parameters in the asset
1761 /// library.
1762 ///
1763 /// @param[out] choice_value_count
1764 /// The number of choice values for parameters in the asset
1765 /// library.
1766 ///
1768  HAPI_AssetLibraryId library_id,
1769  const char * asset_name,
1770  int * parm_count,
1771  int * int_value_count,
1772  int * float_value_count,
1773  int * string_value_count,
1774  int * choice_value_count );
1775 
1776 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
1777 /// information for the specified asset in the specified asset
1778 /// library.
1779 ///
1780 /// This does not create the asset in the session.
1781 /// Use this for faster querying of asset parameters compared to
1782 /// creating the asset node and querying the node's parameters.
1783 ///
1784 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1785 /// called prior, in order to load the asset library and
1786 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1787 /// be called prior to acquire the count for the size of
1788 /// parm_infos_array.
1789 ///
1790 /// @ingroup Assets
1791 ///
1792 /// @param[in] session
1793 /// The session of Houdini you are interacting with.
1794 /// See @ref HAPI_Sessions for more on sessions.
1795 /// Pass NULL to just use the default in-process session.
1796 /// <!-- default NULL -->
1797 ///
1798 /// @param[in] library_id
1799 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1800 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1801 ///
1802 /// @param[in] asset_name
1803 /// Name of the asset to get the parm counts for.
1804 ///
1805 /// @param[out] parm_infos_array
1806 /// Array of ::HAPI_ParmInfo at least the size of
1807 /// length.
1808 ///
1809 /// @param[in] start
1810 /// First index of range. Must be at least 0 and at
1811 /// most parm_count - 1 acquired from
1812 /// ::HAPI_GetAssetInfo.
1813 /// <!-- min 0 -->
1814 /// <!-- max ::HAPI_GetAssetInfo::parm_count - 1 -->
1815 /// <!-- default 0 -->
1816 ///
1817 /// @param[in] length
1818 /// Must be at least 1 and at most parm_count - start acquired
1819 /// from ::HAPI_GetAssetInfo
1820 /// <!-- min 1 -->
1821 /// <!-- max ::HAPI_GetAssetInfo::parm_count - start -->
1822 /// <!-- source ::HAPI_GetAssetInfo::parm_count -->
1823 ///
1825  HAPI_AssetLibraryId library_id,
1826  const char * asset_name,
1827  HAPI_ParmInfo * parm_infos_array,
1828  int start,
1829  int length );
1830 
1831 /// @brief Fill arrays of parameter int values, float values, string values,
1832 /// and choice values for parameters in the specified asset in the
1833 /// specified asset library.
1834 ///
1835 /// This does not create the asset in the session.
1836 /// Use this for faster querying of asset parameters compared to
1837 /// creating the asset node and querying the node's parameters.
1838 /// Note that only default values are retrieved.
1839 ///
1840 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1841 /// called prior, in order to load the asset library and
1842 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1843 /// be called prior to acquire the counts for the sizes of
1844 /// the values arrays.
1845 ///
1846 /// @ingroup Assets
1847 ///
1848 /// @param[in] session
1849 /// The session of Houdini you are interacting with.
1850 /// See @ref HAPI_Sessions for more on sessions.
1851 /// Pass NULL to just use the default in-process session.
1852 /// <!-- default NULL -->
1853 ///
1854 /// @param[in] library_id
1855 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1856 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1857 ///
1858 /// @param[in] asset_name
1859 /// Name of the asset to get the parm counts for.
1860 ///
1861 /// @param[out] int_values_array
1862 /// Array of ints at least the size of int_length.
1863 ///
1864 /// @param[in] int_start
1865 /// First index of range for int_values_array. Must be at
1866 /// least 0 and at most int_value_count - 1 acquired from
1867 /// ::HAPI_GetAssetDefinitionParmCounts.
1868 /// <!-- min 0 -->
1869 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - 1 -->
1870 /// <!-- default 0 -->
1871 ///
1872 /// @param[in] int_length
1873 /// Must be at least 0 and at most int_value_count - int_start
1874 /// acquired from ::HAPI_GetAssetDefinitionParmCounts.
1875 /// <!-- min 0 -->
1876 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1877 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1878 ///
1879 /// @param[out] float_values_array
1880 /// Array of floats at least the size of float_length.
1881 ///
1882 /// @param[in] float_start
1883 /// First index of range for float_values_array. Must be at
1884 /// least 0 and at most float_value_count - 1 acquired from
1885 /// ::HAPI_GetAssetDefinitionParmCounts.
1886 /// <!-- min 0 -->
1887 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - 1 -->
1888 /// <!-- default 0 -->
1889 ///
1890 /// @param[in] float_length
1891 /// Must be at least 0 and at most float_value_count -
1892 /// float_start acquired from
1893 /// ::HAPI_GetAssetDefinitionParmCounts.
1894 /// <!-- min 0 -->
1895 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1896 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1897 ///
1898 /// @param[in] string_evaluate
1899 /// Whether or not to evaluate the string expressions.
1900 /// For example, the string "$F" would evaluate to the
1901 /// current frame number. So, passing in evaluate = false
1902 /// would give you back the string "$F" and passing
1903 /// in evaluate = true would give you back "1" (assuming
1904 /// the current frame is 1).
1905 /// <!-- default true -->
1906 ///
1907 /// @param[out] string_values_array
1908 /// Array of HAPI_StringHandle at least the size of
1909 /// string_length.
1910 ///
1911 /// @param[in] string_start
1912 /// First index of range for string_values_array. Must be at
1913 /// least 0 and at most string_value_count - 1 acquired from
1914 /// ::HAPI_GetAssetDefinitionParmCounts.
1915 /// <!-- min 0 -->
1916 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - 1 -->
1917 /// <!-- default 0 -->
1918 ///
1919 /// @param[in] string_length
1920 /// Must be at least 0 and at most string_value_count -
1921 /// string_start acquired from
1922 /// ::HAPI_GetAssetDefinitionParmCounts.
1923 /// <!-- min 0 -->
1924 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1925 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1926 ///
1927 /// @param[out] choice_values_array
1928 /// Array of ::HAPI_ParmChoiceInfo at least the size of
1929 /// choice_length.
1930 ///
1931 /// @param[in] choice_start
1932 /// First index of range for choice_values_array. Must be at
1933 /// least 0 and at most choice_value_count - 1 acquired from
1934 /// ::HAPI_GetAssetDefinitionParmCounts.
1935 /// <!-- min 0 -->
1936 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - 1 -->
1937 /// <!-- default 0 -->
1938 ///
1939 /// @param[in] choice_length
1940 /// Must be at least 0 and at most choice_value_count -
1941 /// choice_start acquired from
1942 /// ::HAPI_GetAssetDefinitionParmCounts.
1943 /// <!-- min 0 -->
1944 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
1945 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
1946 ///
1948  const HAPI_Session * session,
1949  HAPI_AssetLibraryId library_id,
1950  const char * asset_name,
1951  int * int_values_array,
1952  int int_start,
1953  int int_length,
1954  float * float_values_array,
1955  int float_start,
1956  int float_length,
1957  HAPI_Bool string_evaluate,
1958  HAPI_StringHandle * string_values_array,
1959  int string_start,
1960  int string_length,
1961  HAPI_ParmChoiceInfo * choice_values_array,
1962  int choice_start,
1963  int choice_length );
1964 
1965 /// @brief
1966 ///
1967 /// @ingroup Assets
1968 ///
1969 /// @param[in] session
1970 /// The session of Houdini you are interacting with.
1971 /// See @ref HAPI_Sessions for more on sessions.
1972 /// Pass NULL to just use the default in-process session.
1973 /// <!-- default NULL -->
1974 ///
1975 /// @param[in] library_id
1976 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1977 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1978 ///
1979 /// @param[in] asset_name
1980 /// Name of the asset that the parm tag is being retrieved from.
1981 ///
1982 /// @param[in] parm_id
1983 /// Id of the parm that the tag belongs to.
1984 ///
1985 /// @param[in] tag_index
1986 /// The index of the parm tag to retrieve the name of.
1987 ///
1988 /// @param[out] tag_name
1989 /// The string handle for the specified parm tag's name.
1990 ///
1992  const HAPI_Session * session,
1993  HAPI_AssetLibraryId library_id,
1994  const char * asset_name,
1995  HAPI_ParmId parm_id,
1996  int tag_index,
1997  HAPI_StringHandle * tag_name );
1998 
1999 /// @brief
2000 ///
2001 /// @ingroup Assets
2002 ///
2003 /// @param[in] session
2004 /// The session of Houdini you are interacting with.
2005 /// See @ref HAPI_Sessions for more on sessions.
2006 /// Pass NULL to just use the default in-process session.
2007 /// <!-- default NULL -->
2008 ///
2009 /// @param[in] library_id
2010 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
2011 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
2012 ///
2013 /// @param[in] asset_name
2014 /// Name of the asset that the parm tag is being retrieved from.
2015 ///
2016 /// @param[in] parm_id
2017 /// Id of the parm that the tag belongs to.
2018 ///
2019 /// @param[in] tag_name
2020 /// The name of the parm tag to retrieve the value of.
2021 ///
2022 /// @param[out] tag_value
2023 /// The string handle for the specified parm tag's value.
2024 ///
2026  const HAPI_Session * session,
2027  HAPI_AssetLibraryId library_id,
2028  const char * asset_name,
2029  HAPI_ParmId parm_id,
2030  const char * tag_name,
2031  HAPI_StringHandle * tag_value );
2032 
2033 /// @brief Gets the number of HDAs that have been loaded by Houdini.
2034 ///
2035 /// @note This only includes HDAs that have been loaded from disk.
2036 /// Embedded HDAs will be excluded.
2037 ///
2038 /// @ingroup Assets
2039 ///
2040 /// @param[in] session
2041 /// The session of Houdini you are interacting with.
2042 /// See @ref HAPI_Sessions for more on sessions.
2043 /// Pass NULL to just use the default in-process session.
2044 /// <!-- default NULL -->
2045 ///
2046 /// @param[out] count
2047 /// The returned number of loaded HDAs.
2048 ///
2050  const HAPI_Session * session,
2051  int * count);
2052 
2053 /// @brief Gets the HAPI_AssetLibraryId's for HDAs that are loaded in Houdini.
2054 ///
2055 /// @ingroup Assets
2056 ///
2057 /// @param[in] session
2058 /// The session of Houdini you are interacting with.
2059 /// See @ref HAPI_Sessions for more on sessions.
2060 /// Pass NULL to just use the default in-process session.
2061 /// <!-- default NULL -->
2062 ///
2063 /// @param[out] asset_library_ids_array
2064 /// Array of HAPI_AssetLibraryId's at least the size of length.
2065 ///
2066 /// @param[in] start
2067 /// First index from the list of HAPI_AssetLibraryId's to
2068 /// return. Must be at least 0 and at most count - 1 where count
2069 /// is the value returned by ::HAPI_GetLoadedAssetLibraryCount.
2070 ///
2071 /// @param[in] length
2072 /// The number of HAPI_AssetLibraryId's to return. Must be at
2073 /// least 0 and at most count - start where count is the value
2074 /// returned by HAPI_GetLoadedAssetLibraryCount.
2075 ///
2077  const HAPI_Session * session,
2078  HAPI_AssetLibraryId * asset_library_ids_array,
2079  int start,
2080  int length);
2081 
2082 /// @brief Gets the HAPI_StringHandle for the file path of a loaded asset
2083 /// library.
2084 ///
2085 /// @ingroup Assets
2086 ///
2087 /// @param[in] session
2088 /// The session of Houdini you are interacting with.
2089 /// See @ref HAPI_Sessions for more on sessions.
2090 /// Pass NULL to just use the default in-process session.
2091 ///
2092 /// @param[in] asset_library_id
2093 /// The HAPI_AssetLibraryId of the asset library.
2094 ///
2095 /// @param[out] file_path_sh
2096 /// The returned HAPI_StringHandle of the asset's file path on
2097 /// disk.
2098 ///
2100  const HAPI_Session * session,
2101  HAPI_AssetLibraryId asset_library_id,
2102  HAPI_StringHandle * file_path_sh);
2103 
2104 /// @defgroup HipFiles Hip Files
2105 /// Functions for managing hip files
2106 
2107 /// @brief Loads a .hip file into the main Houdini scene.
2108 ///
2109 /// @note In threaded mode, this is an _async call_!
2110 ///
2111 /// @note This method will load the HIP file into the scene. This means
2112 /// that any registered `hou.hipFile` event callbacks will be triggered
2113 /// with the `hou.hipFileEventType.BeforeMerge` and
2114 /// `hou.hipFileEventType.AfterMerge` events.
2115 ///
2116 /// @note This method loads a HIP file, completely overwriting
2117 /// everything that already exists in the scene. Therefore, any HAPI ids
2118 /// (node ids, part ids, etc.) that were obtained before calling this
2119 /// method will be invalidated.
2120 ///
2121 /// @ingroup HipFiles
2122 ///
2123 /// @param[in] session
2124 /// The session of Houdini you are interacting with.
2125 /// See @ref HAPI_Sessions for more on sessions.
2126 /// Pass NULL to just use the default in-process session.
2127 /// <!-- default NULL -->
2128 ///
2129 /// @param[in] file_name
2130 /// Absolute path to the .hip file to load.
2131 ///
2132 /// @param[in] cook_on_load
2133 /// Set to true if you wish the nodes to cook as soon
2134 /// as they are created. Otherwise, you will have to
2135 /// call ::HAPI_CookNode() explicitly for each after you
2136 /// call this function.
2137 /// <!-- default false -->
2138 ///
2139 HAPI_DECL HAPI_LoadHIPFile( const HAPI_Session * session,
2140  const char * file_name,
2141  HAPI_Bool cook_on_load );
2142 
2143 /// @brief Loads a .hip file into the main Houdini scene.
2144 ///
2145 /// @note In threaded mode, this is an _async call_!
2146 ///
2147 /// @note This method will merge the HIP file into the scene. This means
2148 /// that any registered `hou.hipFile` event callbacks will be triggered
2149 /// with the `hou.hipFileEventType.BeforeMerge` and
2150 /// `hou.hipFileEventType.AfterMerge` events.
2151 ///
2152 /// @ingroup HipFiles
2153 ///
2154 /// @param[in] session
2155 /// The session of Houdini you are interacting with.
2156 /// See @ref HAPI_Sessions for more on sessions.
2157 /// Pass NULL to just use the default in-process session.
2158 ///
2159 /// @param[in] file_name
2160 /// Absolute path to the .hip file to load.
2161 ///
2162 /// @param[in] cook_on_load
2163 /// Set to true if you wish the nodes to cook as soon
2164 /// as they are created. Otherwise, you will have to
2165 /// call ::HAPI_CookNode() explicitly for each after you
2166 /// call this function.
2167 ///
2168 /// @param[out] file_id
2169 /// This parameter will be set to the HAPI_HIPFileId of the
2170 /// loaded HIP file. This can be used to lookup nodes that were
2171 /// created as a result of loading this HIP file.
2172 ///
2173 HAPI_DECL HAPI_MergeHIPFile(const HAPI_Session * session,
2174  const char * file_name,
2175  HAPI_Bool cook_on_load,
2176  HAPI_HIPFileId * file_id);
2177 
2178 /// @brief Saves a .hip file of the current Houdini scene.
2179 ///
2180 /// @ingroup HipFiles
2181 ///
2182 /// @param[in] session
2183 /// The session of Houdini you are interacting with.
2184 /// See @ref HAPI_Sessions for more on sessions.
2185 /// Pass NULL to just use the default in-process session.
2186 /// <!-- default NULL -->
2187 ///
2188 /// @param[in] file_path
2189 /// Absolute path to the .hip file to save to.
2190 ///
2191 /// @param[in] lock_nodes
2192 /// Specify whether to lock all SOP nodes before saving
2193 /// the scene file. This way, when you load the scene
2194 /// file you can see exactly the state of each SOP at
2195 /// the time it was saved instead of relying on the
2196 /// re-cook to accurately reproduce the state. It does,
2197 /// however, take a lot more space and time locking all
2198 /// nodes like this.
2199 /// <!-- default false -->
2200 ///
2201 HAPI_DECL HAPI_SaveHIPFile( const HAPI_Session * session,
2202  const char * file_path,
2203  HAPI_Bool lock_nodes );
2204 
2205 /// @brief Gets the number of nodes that were created as a result of loading a
2206 /// .hip file
2207 ///
2208 /// @ingroup HipFiles
2209 ///
2210 /// @param[in] session
2211 /// The session of Houdini you are interacting with.
2212 /// See @ref HAPI_Sessions for more on sessions.
2213 /// Pass NULL to just use the default in-process session.
2214 ///
2215 /// @param[in] id
2216 /// The HIP file id.
2217 ///
2218 /// @param[out] count
2219 /// Pointer to an int where the HIP file node count will be
2220 /// stored.
2222  HAPI_HIPFileId id,
2223  int * count);
2224 
2225 /// @brief Fills an array of ::HAPI_NodeId of nodes that were created as a
2226 /// result of loading the HIP file specified by the ::HAPI_HIPFileId
2227 ///
2228 /// @ingroup HipFiles
2229 ///
2230 /// @param[in] session
2231 /// The session of Houdini you are interacting with.
2232 /// See @ref HAPI_Sessions for more on sessions.
2233 /// Pass NULL to just use the default in-process session.
2234 ///
2235 /// @param[in] id
2236 /// The HIP file id.
2237 ///
2238 /// @param[out] node_ids
2239 /// Array of ::HAPI_NodeId at least the size of length.
2240 ///
2241 /// @param[in] length
2242 /// The number of ::HAPI_NodeId to be stored. This should be at
2243 /// least 0 and at most the count provided by
2244 /// HAPI_GetHIPFileNodeCount
2246  HAPI_HIPFileId id,
2247  HAPI_NodeId * node_ids,
2248  int length);
2249 
2250 /// @defgroup Nodes
2251 /// Functions for working with nodes
2252 
2253 /// @brief Determine if your instance of the node actually still exists
2254 /// inside the Houdini scene. This is what can be used to
2255 /// determine when the Houdini scene needs to be re-populated
2256 /// using the host application's instances of the nodes.
2257 /// Note that this function will ALWAYS return
2258 /// ::HAPI_RESULT_SUCCESS.
2259 ///
2260 /// @ingroup Nodes
2261 ///
2262 /// @param[in] session
2263 /// The session of Houdini you are interacting with.
2264 /// See @ref HAPI_Sessions for more on sessions.
2265 /// Pass NULL to just use the default in-process session.
2266 /// <!-- default NULL -->
2267 ///
2268 /// @param[in] node_id
2269 /// The node id.
2270 ///
2271 /// @param[in] unique_node_id
2272 /// The unique node id from
2273 /// ::HAPI_NodeInfo::uniqueHoudiniNodeId.
2274 /// <!-- source ::HAPI_NodeInfo::uniqueHoudiniNodeId -->
2275 ///
2276 /// @param[out] answer
2277 /// Answer to the question.
2278 ///
2279 HAPI_DECL HAPI_IsNodeValid( const HAPI_Session * session,
2280  HAPI_NodeId node_id,
2281  int unique_node_id,
2282  HAPI_Bool * answer );
2283 
2284 /// @brief Fill an ::HAPI_NodeInfo struct.
2285 ///
2286 /// @ingroup Nodes
2287 ///
2288 /// @param[in] session
2289 /// The session of Houdini you are interacting with.
2290 /// See @ref HAPI_Sessions for more on sessions.
2291 /// Pass NULL to just use the default in-process session.
2292 /// <!-- default NULL -->
2293 ///
2294 /// @param[in] node_id
2295 /// The node id.
2296 ///
2297 /// @param[out] node_info
2298 /// Return value - contains things like asset id.
2299 ///
2300 HAPI_DECL HAPI_GetNodeInfo( const HAPI_Session * session,
2301  HAPI_NodeId node_id,
2302  HAPI_NodeInfo * node_info );
2303 
2304 /// @brief Get the node absolute path in the Houdini node network or a
2305 /// relative path any other node.
2306 ///
2307 /// @ingroup Nodes
2308 ///
2309 /// @param[in] session
2310 /// The session of Houdini you are interacting with.
2311 /// See @ref HAPI_Sessions for more on sessions.
2312 /// Pass NULL to just use the default in-process session.
2313 /// <!-- default NULL -->
2314 ///
2315 /// @param[in] node_id
2316 /// The node id.
2317 ///
2318 /// @param[in] relative_to_node_id
2319 /// Set this to -1 to get the absolute path of the node_id.
2320 /// Otherwise, the path will be relative to this node id.
2321 ///
2322 /// @param[out] path
2323 /// The returned path string, valid until the next call to
2324 /// this function.
2325 ///
2326 HAPI_DECL HAPI_GetNodePath( const HAPI_Session * session,
2327  HAPI_NodeId node_id,
2328  HAPI_NodeId relative_to_node_id,
2329  HAPI_StringHandle * path );
2330 
2331 /// @brief Get the root node of a particular network type (ie. OBJ).
2332 ///
2333 /// @ingroup Nodes
2334 ///
2335 /// @param[in] session
2336 /// The session of Houdini you are interacting with.
2337 /// See @ref HAPI_Sessions for more on sessions.
2338 /// Pass NULL to just use the default in-process session.
2339 /// <!-- default NULL -->
2340 ///
2341 /// @param[in] node_type
2342 /// The node network type.
2343 ///
2344 /// @param[out] node_id
2345 /// The node id of the root node network.
2346 ///
2348  HAPI_NodeType node_type,
2349  HAPI_NodeId * node_id );
2350 
2351 /// @brief Compose a list of child nodes based on given filters.
2352 ///
2353 /// This function will only compose the list of child nodes. It will
2354 /// not return this list. After your call to this function, call
2355 /// HAPI_GetComposedChildNodeList() to get the list of child node ids.
2356 ///
2357 /// Note: When looking for all Display SOP nodes using this function,
2358 /// and using recursive mode, the recursion will stop as soon as a
2359 /// display SOP is found within each OBJ geometry network. It is
2360 /// almost never useful to get a list of ALL display SOP nodes
2361 /// recursively as they would all containt the same geometry. Even so,
2362 /// this special case only comes up if the display SOP itself is a
2363 /// subnet.
2364 ///
2365 /// @ingroup Nodes
2366 ///
2367 /// @param[in] session
2368 /// The session of Houdini you are interacting with.
2369 /// See @ref HAPI_Sessions for more on sessions.
2370 /// Pass NULL to just use the default in-process session.
2371 /// <!-- default NULL -->
2372 ///
2373 /// @param[in] parent_node_id
2374 /// The node id of the parent node.
2375 ///
2376 /// @param[in] node_type_filter
2377 /// The node type by which to filter the children.
2378 ///
2379 /// @param[in] node_flags_filter
2380 /// The node flags by which to filter the children.
2381 ///
2382 /// @param[in] recursive
2383 /// Whether or not to compose the list recursively.
2384 ///
2385 /// @param[out] count
2386 /// The number of child nodes composed. Use this as the
2387 /// argument to ::HAPI_GetComposedChildNodeList().
2388 ///
2390  HAPI_NodeId parent_node_id,
2391  HAPI_NodeTypeBits node_type_filter,
2392  HAPI_NodeFlagsBits node_flags_filter,
2393  HAPI_Bool recursive,
2394  int * count );
2395 
2396 /// @brief Get the composed list of child node ids from the previous call
2397 /// to HAPI_ComposeChildNodeList().
2398 ///
2399 /// @ingroup Nodes
2400 ///
2401 /// @param[in] session
2402 /// The session of Houdini you are interacting with.
2403 /// See @ref HAPI_Sessions for more on sessions.
2404 /// Pass NULL to just use the default in-process session.
2405 /// <!-- default NULL -->
2406 ///
2407 /// @param[in] parent_node_id
2408 /// The node id of the parent node.
2409 ///
2410 /// @param[out] child_node_ids_array
2411 /// The array of ::HAPI_NodeId for the child nodes.
2412 ///
2413 /// @param[in] count
2414 /// The number of children in the composed list. MUST match
2415 /// the count returned by HAPI_ComposeChildNodeList().
2416 /// <!-- source ::HAPI_ComposeChildNodeList -->
2417 /// <!-- min ::HAPI_ComposeChildNodeList -->
2418 /// <!-- max ::HAPI_ComposeChildNodeList -->
2419 ///
2421  HAPI_NodeId parent_node_id,
2422  HAPI_NodeId * child_node_ids_array,
2423  int count );
2424 
2425 /// @brief Create a node inside a node network. Nodes created this way
2426 /// will have their ::HAPI_NodeInfo::createdPostAssetLoad set
2427 /// to true.
2428 ///
2429 /// @note In threaded mode, this is an _async call_!
2430 ///
2431 /// @note This is also when we actually check for valid licenses.
2432 ///
2433 /// This API will invoke the cooking thread if threading is
2434 /// enabled. This means it will return immediately with a call
2435 /// result of ::HAPI_RESULT_SUCCESS, even if fed garbage. Use
2436 /// the status and cooking count APIs under DIAGNOSTICS to get
2437 /// a sense of the progress. All other API calls will block
2438 /// until the creation (and, optionally, the first cook)
2439 /// of the node has finished.
2440 ///
2441 /// Also note that the cook result won't be of type
2442 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2443 /// Whenever the threading cook is done it will fill the
2444 /// @a cook result which is queried using
2445 /// ::HAPI_STATUS_COOK_RESULT.
2446 ///
2447 /// @ingroup Nodes
2448 ///
2449 /// @param[in] session
2450 /// The session of Houdini you are interacting with.
2451 /// See @ref HAPI_Sessions for more on sessions.
2452 /// Pass NULL to just use the default in-process session.
2453 /// <!-- default NULL -->
2454 ///
2455 /// @param[in] parent_node_id
2456 /// The parent node network's node id or -1 if the parent
2457 /// network is the manager (top-level) node. In that case,
2458 /// the manager must be identified by the table name in the
2459 /// operator_name.
2460 /// <!-- min -1 -->
2461 /// <!-- default -1 -->
2462 ///
2463 /// @param[in] operator_name
2464 /// The name of the node operator type.
2465 ///
2466 /// If you are creating an Object or SOP node, you can pass
2467 /// parent_node_id == -1 as long as you include the table name
2468 /// (ie. Object/ or Sop/) as a prefix to the operator_name.
2469 /// This covenience is only available for Object or SOP nodes.
2470 /// This is the common case for when creating asset nodes
2471 /// from a loaded asset library. In that case, just pass
2472 /// whatever ::HAPI_GetAvailableAssets() returns.
2473 ///
2474 /// If you have a parent_node_id then you should
2475 /// include only the namespace, name, and version.
2476 ///
2477 /// For example, lets say you have an Object type asset, in
2478 /// the "hapi" namespace, of version 2.0, named "foo". If
2479 /// you pass parent_node_id == -1, then set the operator_name
2480 /// as "Object/hapi::foo::2.0". Otherwise, if you have a valid
2481 /// parent_node_id, then just pass operator_name as
2482 /// "hapi::foo::2.0".
2483 ///
2484 /// @param[in] node_label
2485 /// (Optional) The label of the newly created node.
2486 /// <!-- default NULL -->
2487 ///
2488 /// @param[in] cook_on_creation
2489 /// Set whether the node should cook once created or not.
2490 /// <!-- default false -->
2491 ///
2492 /// @param[out] new_node_id
2493 /// The returned node id of the just-created node.
2494 ///
2495 HAPI_DECL HAPI_CreateNode( const HAPI_Session * session,
2496  HAPI_NodeId parent_node_id,
2497  const char * operator_name,
2498  const char * node_label,
2499  HAPI_Bool cook_on_creation,
2500  HAPI_NodeId * new_node_id );
2501 
2502 /// @brief Creates a simple geometry SOP node that can accept geometry input.
2503 /// Inside the specified parent node, this will create a Null SOP
2504 /// you can set the geometry of using the geometry SET APIs.
2505 /// You can then connect this node to any other node as a geometry
2506 /// input.
2507 ///
2508 /// Note that when saving the Houdini scene using
2509 /// ::HAPI_SaveHIPFile() the nodes created with this
2510 /// method will be green and will start with the name "input".
2511 ///
2512 /// @ingroup Nodes
2513 ///
2514 /// @param[in] session
2515 /// The session of Houdini you are interacting with.
2516 /// See @ref HAPI_Sessions for more on sessions.
2517 /// Pass NULL to just use the default in-process session.
2518 /// <!-- default NULL -->
2519 ///
2520 /// @param[in] parent_node_id
2521 /// The node id of the parent OBJ node or SOP subnetwork node in
2522 /// which the input node should be created, or -1 to create a
2523 /// new dummy parent OBJ node for this input node.
2524 /// <!-- min -1 -->
2525 /// <!-- default -1 -->
2526 ///
2527 /// @param[out] node_id
2528 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2529 /// to get more information about the node.
2530 ///
2531 /// @param[in] name
2532 /// Give this input node a name for easy debugging.
2533 /// The node's parent OBJ node and the Null SOP node will both
2534 /// get this given name with "input_" prepended.
2535 /// You can also pass NULL in which case the name will
2536 /// be "input#" where # is some number.
2537 /// <!-- default NULL -->
2538 ///
2540  HAPI_NodeId parent_node_id,
2541  HAPI_NodeId * node_id,
2542  const char * name );
2543 
2544 /// @brief Helper for creating specifically creating a curve input geometry SOP.
2545 /// Inside the specified parent node, this will create a Null SOP that
2546 /// contains the the HAPI_ATTRIB_INPUT_CURVE_COORDS attribute.
2547 /// It will setup the node as a curve part with no points.
2548 /// In addition to creating the input node, it will also commit and cook
2549 /// the geometry.
2550 ///
2551 /// Note that when saving the Houdini scene using
2552 /// ::HAPI_SaveHIPFile() the nodes created with this
2553 /// method will be green and will start with the name "input".
2554 ///
2555 /// @ingroup InputCurves
2556 ///
2557 /// @param[in] session
2558 /// The session of Houdini you are interacting with.
2559 /// See @ref HAPI_Sessions for more on sessions.
2560 /// Pass NULL to just use the default in-process session.
2561 /// <!-- default NULL -->
2562 ///
2563 /// @param[in] parent_node_id
2564 /// The node id of the parent OBJ node or SOP subnetwork node in
2565 /// which the input node should be created, or -1 to create a
2566 /// new dummy parent OBJ node for this input node.
2567 /// <!-- min -1 -->
2568 /// <!-- default -1 -->
2569 ///
2570 /// @param[out] node_id
2571 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2572 /// to get more information about the node.
2573 ///
2574 /// @param[in] name
2575 /// Give this input node a name for easy debugging.
2576 /// The node's parent OBJ node and the Null SOP node will both
2577 /// get this given name with "input_" prepended.
2578 /// You can also pass NULL in which case the name will
2579 /// be "input#" where # is some number.
2580 /// <!-- default NULL -->
2581 ///
2583  HAPI_NodeId parent_node_id,
2584  HAPI_NodeId * node_id,
2585  const char * name );
2586 
2587 
2588 /// @defgroup HeightFields Height Fields
2589 /// Functions for creating and inspecting HAPI session state.
2590 
2591 /// @brief Creates the required node hierarchy needed for heightfield inputs.
2592 ///
2593 /// Note that when saving the Houdini scene using
2594 /// ::HAPI_SaveHIPFile() the nodes created with this
2595 /// method will be green and will start with the name "input".
2596 ///
2597 /// @ingroup HeightFields
2598 ///
2599 /// @param[in] session
2600 /// The session of Houdini you are interacting with.
2601 /// See @ref HAPI_Sessions for more on sessions.
2602 /// Pass NULL to just use the default in-process session.
2603 /// <!-- default NULL -->
2604 ///
2605 /// @param[in] parent_node_id
2606 /// The parent node network's node id or -1 if the parent
2607 /// network is the manager (top-level) node. In that case,
2608 /// the manager must be identified by the table name in the
2609 /// operator_name.
2610 /// <!-- min -1 -->
2611 /// <!-- default -1 -->
2612 ///
2613 /// @param[in] name
2614 /// Give this input node a name for easy debugging.
2615 /// The node's parent OBJ node and the Null SOP node will both
2616 /// get this given name with "input_" prepended.
2617 /// You can also pass NULL in which case the name will
2618 /// be "input#" where # is some number.
2619 /// <!-- default NULL -->
2620 ///
2621 /// @param[in] xsize
2622 /// size of the heightfield in X
2623 ///
2624 /// @param[in] ysize
2625 /// size of the heightfield in y
2626 ///
2627 /// @param[in] voxelsize
2628 /// Size of the voxel
2629 ///
2630 /// @param[in] sampling
2631 /// Type of sampling which should be either center or corner.
2632 ///
2633 /// @param[out] heightfield_node_id
2634 /// Newly created node id for the heightfield node.
2635 /// Use ::HAPI_GetNodeInfo() to get more information about
2636 /// the node.
2637 ///
2638 /// @param[out] height_node_id
2639 /// Newly created node id for the height volume.
2640 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2641 ///
2642 /// @param[out] mask_node_id
2643 /// Newly created node id for the mask volume.
2644 /// Use ::HAPI_GetNodeInfo() to get more information about the
2645 /// node.
2646 ///
2647 /// @param[out] merge_node_id
2648 /// Newly created merge node id.
2649 /// The merge node can be used to connect additional input masks.
2650 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2651 ///
2653  HAPI_NodeId parent_node_id,
2654  const char * name,
2655  int xsize,
2656  int ysize,
2657  float voxelsize,
2658  HAPI_HeightFieldSampling sampling,
2659  HAPI_NodeId * heightfield_node_id,
2660  HAPI_NodeId * height_node_id,
2661  HAPI_NodeId * mask_node_id,
2662  HAPI_NodeId * merge_node_id );
2663 
2664 /// @brief Creates a volume input node that can be used with Heightfields
2665 ///
2666 /// Note that when saving the Houdini scene using
2667 /// ::HAPI_SaveHIPFile() the nodes created with this
2668 /// method will be green and will start with the name "input".
2669 ///
2670 /// @ingroup HeightFields
2671 ///
2672 /// @param[in] session
2673 /// The session of Houdini you are interacting with.
2674 /// See @ref HAPI_Sessions for more on sessions.
2675 /// Pass NULL to just use the default in-process session.
2676 /// <!-- default NULL -->
2677 ///
2678 /// @param[in] parent_node_id
2679 /// The parent node network's node id or -1 if the parent
2680 /// network is the manager (top-level) node. In that case,
2681 /// the manager must be identified by the table name in the
2682 /// operator_name.
2683 /// <!-- min -1 -->
2684 /// <!-- default -1 -->
2685 ///
2686 /// @param[out] new_node_id
2687 /// Newly created node id for the volume.
2688 /// Use ::HAPI_GetNodeInfo() to get more information about the
2689 /// node.
2690 ///
2691 /// @param[in] name
2692 /// The name of the volume to create.
2693 /// You can also pass NULL in which case the name will
2694 /// be "input#" where # is some number.
2695 /// <!-- default NULL -->
2696 ///
2697 /// @param[in] xsize
2698 /// size of the heightfield in X
2699 ///
2700 /// @param[in] ysize
2701 /// size of the heightfield in y
2702 ///
2703 /// @param[in] voxelsize
2704 /// Size of the voxel
2705 ///
2707  HAPI_NodeId parent_node_id,
2708  HAPI_NodeId * new_node_id,
2709  const char * name,
2710  int xsize,
2711  int ysize,
2712  float voxelsize );
2713 
2714 /// @brief Initiate a cook on this node. Note that this may trigger
2715 /// cooks on other nodes if they are connected.
2716 ///
2717 /// @note In threaded mode, this is an _async call_!
2718 ///
2719 /// This API will invoke the cooking thread if threading is
2720 /// enabled. This means it will return immediately. Use
2721 /// the status and cooking count APIs under DIAGNOSTICS to get
2722 /// a sense of the progress. All other API calls will block
2723 /// until the cook operation has finished.
2724 ///
2725 /// Also note that the cook result won't be of type
2726 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2727 /// Whenever the threading cook is done it will fill the
2728 /// @a cook result which is queried using
2729 /// ::HAPI_STATUS_COOK_RESULT.
2730 ///
2731 /// @ingroup Nodes
2732 ///
2733 /// @param[in] session
2734 /// The session of Houdini you are interacting with.
2735 /// See @ref HAPI_Sessions for more on sessions.
2736 /// Pass NULL to just use the default in-process session.
2737 /// <!-- default NULL -->
2738 ///
2739 /// @param[in] node_id
2740 /// The node id.
2741 ///
2742 /// @param[in] cook_options
2743 /// The cook options. Pass in NULL to use the global
2744 /// cook options that you specified when calling
2745 /// ::HAPI_Initialize().
2746 /// <!-- default NULL -->
2747 ///
2748 HAPI_DECL HAPI_CookNode( const HAPI_Session * session,
2749  HAPI_NodeId node_id,
2750  const HAPI_CookOptions * cook_options );
2751 
2752 /// @brief Delete a node from a node network. Only nodes with their
2753 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2754 /// deleted this way.
2755 ///
2756 /// @ingroup Nodes
2757 ///
2758 /// @param[in] session
2759 /// The session of Houdini you are interacting with.
2760 /// See @ref HAPI_Sessions for more on sessions.
2761 /// Pass NULL to just use the default in-process session.
2762 /// <!-- default NULL -->
2763 ///
2764 /// @param[in] node_id
2765 /// The node to delete.
2766 ///
2767 HAPI_DECL HAPI_DeleteNode( const HAPI_Session * session,
2768  HAPI_NodeId node_id );
2769 
2770 /// @brief Rename a node that you created. Only nodes with their
2771 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2772 /// renamed this way.
2773 ///
2774 /// @ingroup Nodes
2775 ///
2776 /// @param[in] session
2777 /// The session of Houdini you are interacting with.
2778 /// See @ref HAPI_Sessions for more on sessions.
2779 /// Pass NULL to just use the default in-process session.
2780 /// <!-- default NULL -->
2781 ///
2782 /// @param[in] node_id
2783 /// The node to rename.
2784 ///
2785 /// @param[in] new_name
2786 /// The new node name.
2787 ///
2788 HAPI_DECL HAPI_RenameNode( const HAPI_Session * session,
2789  HAPI_NodeId node_id,
2790  const char * new_name );
2791 
2792 /// @brief Connect two nodes together.
2793 ///
2794 /// @param[in] session
2795 /// The session of Houdini you are interacting with.
2796 /// See @ref HAPI_Sessions for more on sessions.
2797 /// Pass NULL to just use the default in-process session.
2798 /// <!-- default NULL -->
2799 ///
2800 /// @ingroup Nodes
2801 ///
2802 /// @param[in] node_id
2803 /// The node whom's input to connect to.
2804 ///
2805 /// @param[in] input_index
2806 /// The input index. Should be between 0 and the
2807 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2808 /// <!-- min 0 -->
2809 ///
2810 /// @param[in] node_id_to_connect
2811 /// The node to connect to node_id's input.
2812 ///
2813 /// @param[in] output_index
2814 /// The output index. Should be between 0 and the
2815 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
2816 /// <!-- min 0 -->
2817 ///
2819  HAPI_NodeId node_id,
2820  int input_index,
2821  HAPI_NodeId node_id_to_connect,
2822  int output_index );
2823 
2824 /// @brief Disconnect a node input.
2825 ///
2826 /// @param[in] session
2827 /// The session of Houdini you are interacting with.
2828 /// See @ref HAPI_Sessions for more on sessions.
2829 /// Pass NULL to just use the default in-process session.
2830 /// <!-- default NULL -->
2831 ///
2832 /// @ingroup Nodes
2833 ///
2834 /// @param[in] node_id
2835 /// The node whom's input to disconnect.
2836 ///
2837 /// @param[in] input_index
2838 /// The input index. Should be between 0 and the
2839 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2840 /// <!-- min 0 -->
2841 ///
2843  HAPI_NodeId node_id,
2844  int input_index );
2845 
2846 /// @brief Query which node is connected to another node's input.
2847 ///
2848 /// @param[in] session
2849 /// The session of Houdini you are interacting with.
2850 /// See @ref HAPI_Sessions for more on sessions.
2851 /// Pass NULL to just use the default in-process session.
2852 /// <!-- default NULL -->
2853 ///
2854 /// @ingroup Nodes
2855 ///
2856 /// @param[in] node_to_query
2857 /// The node to query.
2858 ///
2859 /// @param[in] input_index
2860 /// The input index. Should be between 0 and the
2861 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2862 /// <!-- min 0 -->
2863 ///
2864 /// @param[out] connected_node_id
2865 /// The node id of the connected node to this input. If
2866 /// nothing is connected then -1 will be returned.
2867 ///
2868 HAPI_DECL HAPI_QueryNodeInput( const HAPI_Session * session,
2869  HAPI_NodeId node_to_query,
2870  int input_index,
2871  HAPI_NodeId * connected_node_id );
2872 
2873 /// @brief Get the name of an node's input. This function will return
2874 /// a string handle for the name which will be valid (persist)
2875 /// until the next call to this function.
2876 ///
2877 /// @ingroup Nodes
2878 ///
2879 /// @param[in] session
2880 /// The session of Houdini you are interacting with.
2881 /// See @ref HAPI_Sessions for more on sessions.
2882 /// Pass NULL to just use the default in-process session.
2883 /// <!-- default NULL -->
2884 ///
2885 /// @param[in] node_id
2886 /// The node id.
2887 ///
2888 /// @param[in] input_idx
2889 /// The input index. Should be between 0 and the
2890 /// node_to_query's ::HAPI_NodeInfo::inputCount - 1.
2891 /// <!-- min 0 -->
2892 ///
2893 /// @param[out] name
2894 /// Input name string handle return value - valid until
2895 /// the next call to this function.
2896 ///
2898  HAPI_NodeId node_id,
2899  int input_idx,
2900  HAPI_StringHandle * name );
2901 
2902 /// @brief Disconnect all of the node's output connections at the output index.
2903 ///
2904 /// @ingroup Nodes
2905 ///
2906 /// @param[in] session
2907 /// The session of Houdini you are interacting with.
2908 /// See @ref HAPI_Sessions for more on sessions.
2909 /// Pass NULL to just use the default in-process session.
2910 /// <!-- default NULL -->
2911 ///
2912 /// @param[in] node_id
2913 /// The node whom's outputs to disconnect.
2914 ///
2915 /// @param[in] output_index
2916 /// The output index. Should be between 0 and the
2917 /// to_node's ::HAPI_NodeInfo::outputCount.
2918 /// <!-- min 0 -->
2919 ///
2921  HAPI_NodeId node_id,
2922  int output_index );
2923 
2924 /// @brief Get the number of nodes currently connected to the given node at
2925 /// the output index.
2926 ///
2927 /// @ingroup Nodes
2928 ///
2929 /// Use the @c count returned by this function to get the
2930 /// ::HAPI_NodeId of connected nodes using
2931 /// ::HAPI_QueryNodeOutputConnectedNodes().
2932 ///
2933 /// @param[in] session
2934 /// The session of Houdini you are interacting with.
2935 /// See @ref HAPI_Sessions for more on sessions.
2936 /// Pass NULL to just use the default in-process session.
2937 /// <!-- default NULL -->
2938 ///
2939 /// @param[in] node_id
2940 /// The node id.
2941 ///
2942 /// @param[in] output_idx
2943 /// The output index. Should be between 0 and the
2944 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
2945 /// <!-- min 0 -->
2946 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
2947 ///
2948 /// @param[in] into_subnets
2949 /// Whether to search by diving into subnets.
2950 /// <!-- default true -->
2951 ///
2952 /// @param[in] through_dots
2953 /// Whether to search through dots.
2954 /// <!-- default true -->
2955 ///
2956 /// @param[out] connected_count
2957 /// The number of nodes currently connected to this node at
2958 /// given output index. Use this count with a call to
2959 /// ::HAPI_QueryNodeOutputConnectedNodes() to get list of
2960 /// connected nodes.
2961 ///
2963  HAPI_NodeId node_id,
2964  int output_idx,
2965  HAPI_Bool into_subnets,
2966  HAPI_Bool through_dots,
2967  int * connected_count );
2968 
2969 /// @brief Get the ids of nodes currently connected to the given node
2970 /// at the output index.
2971 ///
2972 /// Use the @c connected_count returned by
2973 /// ::HAPI_QueryNodeOutputConnectedCount().
2974 ///
2975 /// @ingroup Nodes
2976 ///
2977 /// @param[in] session
2978 /// The session of Houdini you are interacting with.
2979 /// See @ref HAPI_Sessions for more on sessions.
2980 /// Pass NULL to just use the default in-process session.
2981 /// <!-- default NULL -->
2982 ///
2983 /// @param[in] node_id
2984 /// The node id.
2985 ///
2986 /// @param[in] output_idx
2987 /// The output index. Should be between 0 and the
2988 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
2989 /// <!-- min 0 -->
2990 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
2991 ///
2992 /// @param[in] into_subnets
2993 /// Whether to search by diving into subnets.
2994 /// <!-- default true -->
2995 ///
2996 /// @param[in] through_dots
2997 /// Whether to search through dots.
2998 /// <!-- default true -->
2999 ///
3000 /// @param[out] connected_node_ids_array
3001 /// Array of ::HAPI_NodeId at least the size of @c length.
3002 ///
3003 /// @param[in] start
3004 /// At least @c 0 and at most @c connected_count returned by
3005 /// ::HAPI_QueryNodeOutputConnectedCount().
3006 /// <!-- min 0 -->
3007 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount -->
3008 /// <!-- default 0 -->
3009 ///
3010 /// @param[in] length
3011 /// Given @c connected_count returned by
3012 /// ::HAPI_QueryNodeOutputConnectedCount(), @c length should
3013 /// be at least @c 1 and at most <tt>connected_count - start</tt>.
3014 /// <!-- min 1 -->
3015 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount - start -->
3016 /// <!-- source ::HAPI_QueryNodeOutputConnectedCount - start -->
3017 ///
3019  HAPI_NodeId node_id,
3020  int output_idx,
3021  HAPI_Bool into_subnets,
3022  HAPI_Bool through_dots,
3023  HAPI_NodeId * connected_node_ids_array,
3024  int start, int length );
3025 
3026 /// @brief Get the name of an node's output. This function will return
3027 /// a string handle for the name which will be valid (persist)
3028 /// until the next call to this function.
3029 ///
3030 /// @ingroup Nodes
3031 ///
3032 /// @param[in] session
3033 /// The session of Houdini you are interacting with.
3034 /// See @ref HAPI_Sessions for more on sessions.
3035 /// Pass NULL to just use the default in-process session.
3036 /// <!-- default NULL -->
3037 ///
3038 /// @param[in] node_id
3039 /// The node id.
3040 ///
3041 /// @param[in] output_idx
3042 /// The output index. Should be between 0 and the
3043 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3044 /// <!-- min 0 -->
3045 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3046 ///
3047 /// @param[out] name
3048 /// Output name string handle return value - valid until
3049 /// the next call to this function.
3050 ///
3052  HAPI_NodeId node_id,
3053  int output_idx,
3054  HAPI_StringHandle * name );
3055 
3056 /// @brief Get the id of the node with the specified path.
3057 ///
3058 /// @ingroup Nodes
3059 ///
3060 /// @param[in] session
3061 /// The session of Houdini you are interacting with.
3062 /// See @ref HAPI_Sessions for more on sessions.
3063 /// Pass NULL to just use the default in-process session.
3064 /// <!-- default NULL -->
3065 ///
3066 /// @param[in] parent_node_id
3067 /// If @c path does not start with "/", search for the path
3068 /// relative to this node. Provide -1 if @c path is an absolute
3069 /// path.
3070 ///
3071 /// @param[in] path
3072 /// The path of the node. If the path does not start with "/",
3073 /// it is treated as a relative path from the node specified in
3074 /// @c parent_node_id.
3075 ///
3076 /// @param[out] node_id
3077 /// The id of the found node.
3078 ///
3080  const HAPI_NodeId parent_node_id,
3081  const char * path,
3082  HAPI_NodeId * node_id );
3083 
3084 /// @brief Gets the node id of an output node in a SOP network.
3085 ///
3086 /// @ingroup Nodes
3087 ///
3088 /// @param[in] session
3089 /// The session of Houdini you are interacting with.
3090 /// See @ref HAPI_Sessions for more on sessions.
3091 /// Pass NULL to just use the default in-process session.
3092 /// <!-- default NULL -->
3093 ///
3094 /// @param[in] node_id
3095 /// The node id of a SOP node with at least one output node. The
3096 /// total number of node outputs can be found from the node's
3097 /// ::HAPI_NodeInfo::outputCount
3098 ///
3099 /// @param[in] output
3100 /// The output index. Should be between 0 and the node's
3101 /// ::HAPI_NodeInfo::outputCount - 1.
3102 /// <!-- min 0 -->
3103 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3104 ///
3105 /// @param[out] output_node_id
3106 /// Pointer to a HAPI_NodeId where the node id of the output
3107 /// node will be stored.
3109  HAPI_NodeId node_id,
3110  int output,
3111  HAPI_NodeId * output_node_id );
3112 
3113 /// @defgroup Parms Parms
3114 /// Functions for wroking with Node parameters (parms)
3115 
3116 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
3117 /// information from the asset instance node.
3118 ///
3119 /// @ingroup Parms
3120 ///
3121 /// @param[in] session
3122 /// The session of Houdini you are interacting with.
3123 /// See @ref HAPI_Sessions for more on sessions.
3124 /// Pass NULL to just use the default in-process session.
3125 /// <!-- default NULL -->
3126 ///
3127 /// @param[in] node_id
3128 /// The node id.
3129 ///
3130 /// @param[out] parm_infos_array
3131 /// Array of ::HAPI_ParmInfo at least the size of
3132 /// length.
3133 ///
3134 /// @param[in] start
3135 /// First index of range. Must be at least 0 and at
3136 /// most ::HAPI_NodeInfo::parmCount - 1.
3137 /// <!-- min 0 -->
3138 /// <!-- max ::HAPI_NodeInfo::parmCount - 1 -->
3139 /// <!-- default 0 -->
3140 ///
3141 /// @param[in] length
3142 /// Must be at least 1 and at most
3143 /// ::HAPI_NodeInfo::parmCount - start.
3144 /// <!-- min 1 -->
3145 /// <!-- max ::HAPI_NodeInfo::parmCount - start -->
3146 /// <!-- source ::HAPI_NodeInfo::parmCount - start -->
3147 ///
3148 HAPI_DECL HAPI_GetParameters( const HAPI_Session * session,
3149  HAPI_NodeId node_id,
3150  HAPI_ParmInfo * parm_infos_array,
3151  int start, int length );
3152 
3153 /// @brief Get the parm info of a parameter by parm id.
3154 ///
3155 /// @ingroup Parms
3156 ///
3157 /// @param[in] session
3158 /// The session of Houdini you are interacting with.
3159 /// See @ref HAPI_Sessions for more on sessions.
3160 /// Pass NULL to just use the default in-process session.
3161 /// <!-- default NULL -->
3162 ///
3163 /// @param[in] node_id
3164 /// The node id.
3165 ///
3166 /// @param[in] parm_id
3167 /// The parm id.
3168 ///
3169 /// @param[out] parm_info
3170 /// The returned parm info.
3171 ///
3172 HAPI_DECL HAPI_GetParmInfo( const HAPI_Session * session,
3173  HAPI_NodeId node_id,
3174  HAPI_ParmId parm_id,
3175  HAPI_ParmInfo * parm_info );
3176 
3177 /// @brief All parameter APIs require a ::HAPI_ParmId but if you know the
3178 /// parameter you wish to operate on by name than you can use
3179 /// this function to get its ::HAPI_ParmId. If the parameter with
3180 /// the given name is not found the parameter id returned
3181 /// will be -1.
3182 ///
3183 /// @ingroup Parms
3184 ///
3185 /// @param[in] session
3186 /// The session of Houdini you are interacting with.
3187 /// See @ref HAPI_Sessions for more on sessions.
3188 /// Pass NULL to just use the default in-process session.
3189 /// <!-- default NULL -->
3190 ///
3191 /// @param[in] node_id
3192 /// The node id.
3193 ///
3194 /// @param[in] parm_name
3195 /// The parm name.
3196 ///
3197 /// @param[out] parm_id
3198 /// The return value. The parameter's ::HAPI_ParmId. If
3199 /// the parameter with the given name is not found the
3200 /// parameter id returned will be -1.
3201 ///
3203  HAPI_NodeId node_id,
3204  const char * parm_name,
3205  HAPI_ParmId * parm_id );
3206 
3207 /// @brief Get the parm info of a parameter by name.
3208 ///
3209 /// @ingroup Parms
3210 ///
3211 /// @param[in] session
3212 /// The session of Houdini you are interacting with.
3213 /// See @ref HAPI_Sessions for more on sessions.
3214 /// Pass NULL to just use the default in-process session.
3215 /// <!-- default NULL -->
3216 ///
3217 /// @param[in] node_id
3218 /// The node id.
3219 ///
3220 /// @param[in] parm_name
3221 /// The parm name.
3222 ///
3223 /// @param[out] parm_info
3224 /// The returned parm info.
3225 ///
3227  HAPI_NodeId node_id,
3228  const char * parm_name,
3229  HAPI_ParmInfo * parm_info );
3230 
3231 /// @brief Get the tag name on a parameter given an index.
3232 ///
3233 /// @ingroup Parms
3234 ///
3235 /// @param[in] session
3236 /// The session of Houdini you are interacting with.
3237 /// See @ref HAPI_Sessions for more on sessions.
3238 /// Pass NULL to just use the default in-process session.
3239 /// <!-- default NULL -->
3240 ///
3241 /// @param[in] node_id
3242 /// The node id.
3243 ///
3244 /// @param[in] parm_id
3245 /// The parm id.
3246 ///
3247 /// @param[in] tag_index
3248 /// The tag index, which should be between 0 and
3249 /// ::HAPI_ParmInfo::tagCount - 1.
3250 /// @note These indices are invalidated whenever tags are added
3251 /// to parameters. Do not store these or expect them to be the
3252 /// same if the scene is modified.
3253 /// <!-- min 0 -->
3254 /// <!-- max ::HAPI_ParmInfo::tagCount - 1 -->
3255 ///
3256 /// @param[out] tag_name
3257 /// The returned tag name. This string handle will be valid
3258 /// until another call to ::HAPI_GetParmTagName().
3259 ///
3260 HAPI_DECL HAPI_GetParmTagName( const HAPI_Session * session,
3261  HAPI_NodeId node_id,
3262  HAPI_ParmId parm_id,
3263  int tag_index,
3264  HAPI_StringHandle * tag_name );
3265 
3266 /// @brief Get the tag value on a parameter given the tag name.
3267 ///
3268 /// @ingroup Parms
3269 ///
3270 /// @param[in] session
3271 /// The session of Houdini you are interacting with.
3272 /// See @ref HAPI_Sessions for more on sessions.
3273 /// Pass NULL to just use the default in-process session.
3274 /// <!-- default NULL -->
3275 ///
3276 /// @param[in] node_id
3277 /// The node id.
3278 ///
3279 /// @param[in] parm_id
3280 /// The parm id.
3281 ///
3282 /// @param[in] tag_name
3283 /// The tag name, either known or returned by
3284 /// ::HAPI_GetParmTagName().
3285 ///
3286 /// @param[out] tag_value
3287 /// The returned tag value. This string handle will be valid
3288 /// until another call to ::HAPI_GetParmTagValue().
3289 ///
3291  HAPI_NodeId node_id,
3292  HAPI_ParmId parm_id,
3293  const char * tag_name,
3294  HAPI_StringHandle * tag_value );
3295 
3296 /// @brief See if a parameter has a specific tag.
3297 ///
3298 /// @ingroup Parms
3299 ///
3300 /// @param[in] session
3301 /// The session of Houdini you are interacting with.
3302 /// See @ref HAPI_Sessions for more on sessions.
3303 /// Pass NULL to just use the default in-process session.
3304 /// <!-- default NULL -->
3305 ///
3306 /// @param[in] node_id
3307 /// The node id.
3308 ///
3309 /// @param[in] parm_id
3310 /// The parm id.
3311 ///
3312 /// @param[in] tag_name
3313 /// The tag name to look for.
3314 ///
3315 /// @param[out] has_tag
3316 /// True if the tag exists on the parameter, false otherwise.
3317 ///
3318 HAPI_DECL HAPI_ParmHasTag( const HAPI_Session * session,
3319  HAPI_NodeId node_id,
3320  HAPI_ParmId parm_id,
3321  const char * tag_name,
3322  HAPI_Bool * has_tag );
3323 
3324 /// @brief See if a parameter has an expression
3325 ///
3326 /// @ingroup Parms
3327 ///
3328 /// @param[in] session
3329 /// The session of Houdini you are interacting with.
3330 /// See @ref HAPI_Sessions for more on sessions.
3331 /// Pass NULL to just use the default in-process session.
3332 /// <!-- default NULL -->
3333 ///
3334 /// @param[in] node_id
3335 /// The node id.
3336 ///
3337 /// @param[in] parm_name
3338 /// The parm name.
3339 ///
3340 /// @param[in] index
3341 /// The parm index.
3342 ///
3343 /// @param[out] has_expression
3344 /// True if an expression exists on the parameter, false otherwise.
3345 ///
3347  HAPI_NodeId node_id,
3348  const char * parm_name,
3349  int index,
3350  HAPI_Bool * has_expression );
3351 
3352 /// @brief Get the first parm with a specific, ideally unique, tag on it.
3353 /// This is particularly useful for getting the ogl parameters on a
3354 /// material node.
3355 ///
3356 /// @ingroup Parms
3357 ///
3358 /// @param[in] session
3359 /// The session of Houdini you are interacting with.
3360 /// See @ref HAPI_Sessions for more on sessions.
3361 /// Pass NULL to just use the default in-process session.
3362 /// <!-- default NULL -->
3363 ///
3364 /// @param[in] node_id
3365 /// The node id.
3366 ///
3367 /// @param[in] tag_name
3368 /// The tag name to look for.
3369 ///
3370 /// @param[out] parm_id
3371 /// The returned parm id. This will be -1 if no parm was found
3372 /// with this tag.
3373 ///
3374 HAPI_DECL HAPI_GetParmWithTag( const HAPI_Session * session,
3375  HAPI_NodeId node_id,
3376  const char * tag_name,
3377  HAPI_ParmId * parm_id );
3378 
3379 /// @brief Get single integer or float parm expression by name
3380 /// or Null string if no expression is present
3381 ///
3382 /// @ingroup Parms
3383 ///
3384 /// @param[in] session
3385 /// The session of Houdini you are interacting with.
3386 /// See @ref HAPI_Sessions for more on sessions.
3387 /// Pass NULL to just use the default in-process session.
3388 /// <!-- default NULL -->
3389 ///
3390 /// @param[in] node_id
3391 /// The node id.
3392 ///
3393 /// @param[in] parm_name
3394 /// The parm name.
3395 ///
3396 /// @param[in] index
3397 /// Index within the parameter's values tuple.
3398 ///
3399 /// @param[out] value
3400 /// The returned string value.
3401 ///
3403  HAPI_NodeId node_id,
3404  const char * parm_name,
3405  int index,
3407 
3408 /// @brief Revert single parm by name to default
3409 ///
3410 /// @ingroup Parms
3411 ///
3412 /// @param[in] session
3413 /// The session of Houdini you are interacting with.
3414 /// See @ref HAPI_Sessions for more on sessions.
3415 /// Pass NULL to just use the default in-process session.
3416 /// <!-- default NULL -->
3417 ///
3418 /// @param[in] node_id
3419 /// The node id.
3420 ///
3421 /// @param[in] parm_name
3422 /// The parm name.
3423 ///
3424 /// @param[in] index
3425 /// Index within the parameter's values tuple.
3426 ///
3428  HAPI_NodeId node_id,
3429  const char * parm_name,
3430  int index );
3431 
3432 /// @brief Revert all instances of the parm by name to defaults
3433 ///
3434 /// @ingroup Parms
3435 ///
3436 /// @param[in] session
3437 /// The session of Houdini you are interacting with.
3438 /// See @ref HAPI_Sessions for more on sessions.
3439 /// Pass NULL to just use the default in-process session.
3440 /// <!-- default NULL -->
3441 ///
3442 /// @param[in] node_id
3443 /// The node id.
3444 ///
3445 /// @param[in] parm_name
3446 /// The parm name.
3447 ///
3449  HAPI_NodeId node_id,
3450  const char * parm_name );
3451 
3452 /// @brief Set (push) an expression string. We can only set a single value at
3453 /// a time because we want to avoid fixed size string buffers.
3454 ///
3455 /// @note Regardless of the value, when calling this function
3456 /// on a parameter, if that parameter has a callback function
3457 /// attached to it, that callback function will be called. For
3458 /// example, if the parameter is a button the button will be
3459 /// pressed.
3460 ///
3461 /// @note In threaded mode, this is an _async call_!
3462 ///
3463 /// This API will invoke the cooking thread if threading is
3464 /// enabled. This means it will return immediately. Use
3465 /// the status and cooking count APIs under DIAGNOSTICS to get
3466 /// a sense of the progress. All other API calls will block
3467 /// until the cook operation has finished.
3468 ///
3469 /// Also note that the cook result won't be of type
3470 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3471 /// Whenever the threading cook is done it will fill the
3472 /// @a cook result which is queried using
3473 /// ::HAPI_STATUS_COOK_RESULT.
3474 ///
3475 /// @ingroup Parms
3476 ///
3477 /// @param[in] session
3478 /// The session of Houdini you are interacting with.
3479 /// See @ref HAPI_Sessions for more on sessions.
3480 /// Pass NULL to just use the default in-process session.
3481 /// <!-- default NULL -->
3482 ///
3483 /// @param[in] node_id
3484 /// The node id.
3485 ///
3486 /// @param[in] value
3487 /// The expression string.
3488 ///
3489 /// @param[in] parm_id
3490 /// Parameter id of the parameter being updated.
3491 ///
3492 /// @param[in] index
3493 /// Index within the parameter's values tuple.
3494 ///
3496  HAPI_NodeId node_id,
3497  const char * value,
3498  HAPI_ParmId parm_id, int index );
3499 
3500 /// @brief Remove the expression string, leaving the value of the
3501 /// parm at the current value of the expression
3502 ///
3503 /// @note Regardless of the value, when calling this function
3504 /// on a parameter, if that parameter has a callback function
3505 /// attached to it, that callback function will be called. For
3506 /// example, if the parameter is a button the button will be
3507 /// pressed.
3508 ///
3509 /// @note In threaded mode, this is an _async call_!
3510 ///
3511 /// This API will invoke the cooking thread if threading is
3512 /// enabled. This means it will return immediately. Use
3513 /// the status and cooking count APIs under DIAGNOSTICS to get
3514 /// a sense of the progress. All other API calls will block
3515 /// until the cook operation has finished.
3516 ///
3517 /// Also note that the cook result won't be of type
3518 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3519 /// Whenever the threading cook is done it will fill the
3520 /// @a cook result which is queried using
3521 /// ::HAPI_STATUS_COOK_RESULT.
3522 ///
3523 /// @ingroup Parms
3524 ///
3525 /// @param[in] session
3526 /// The session of Houdini you are interacting with.
3527 /// See @ref HAPI_Sessions for more on sessions.
3528 /// Pass NULL to just use the default in-process session.
3529 /// <!-- default NULL -->
3530 ///
3531 /// @param[in] node_id
3532 /// The node id.
3533 ///
3534 /// @param[in] parm_id
3535 /// Parameter id of the parameter being updated.
3536 ///
3537 /// @param[in] index
3538 /// Index within the parameter's values tuple.
3539 ///
3541  HAPI_NodeId node_id,
3542  HAPI_ParmId parm_id, int index );
3543 
3544 /// @brief Get single parm int value by name.
3545 ///
3546 /// @ingroup Parms
3547 ///
3548 /// @param[in] session
3549 /// The session of Houdini you are interacting with.
3550 /// See @ref HAPI_Sessions for more on sessions.
3551 /// Pass NULL to just use the default in-process session.
3552 /// <!-- default NULL -->
3553 ///
3554 /// @param[in] node_id
3555 /// The node id.
3556 ///
3557 /// @param[in] parm_name
3558 /// The parm name.
3559 ///
3560 /// @param[in] index
3561 /// Index within the parameter's values tuple.
3562 ///
3563 /// @param[out] value
3564 /// The returned int value.
3565 ///
3567  HAPI_NodeId node_id,
3568  const char * parm_name,
3569  int index,
3570  int * value );
3571 
3572 /// @brief Fill an array of parameter int values. This is more efficient
3573 /// than calling ::HAPI_GetParmIntValue() individually for each
3574 /// parameter value.
3575 ///
3576 /// @ingroup Parms
3577 ///
3578 /// @param[in] session
3579 /// The session of Houdini you are interacting with.
3580 /// See @ref HAPI_Sessions for more on sessions.
3581 /// Pass NULL to just use the default in-process session.
3582 /// <!-- default NULL -->
3583 ///
3584 /// @param[in] node_id
3585 /// The node id.
3586 ///
3587 /// @param[out] values_array
3588 /// Array of ints at least the size of length.
3589 ///
3590 /// @param[in] start
3591 /// First index of range. Must be at least 0 and at
3592 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
3593 /// <!-- min 0 -->
3594 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
3595 /// <!-- default 0 -->
3596 ///
3597 /// @param[in] length
3598 /// Must be at least 1 and at most
3599 /// ::HAPI_NodeInfo::parmIntValueCount - start.
3600 /// <!-- min 1 -->
3601 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
3602 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
3603 ///
3605  HAPI_NodeId node_id,
3606  int * values_array,
3607  int start, int length );
3608 
3609 /// @brief Get single parm float value by name.
3610 ///
3611 /// @ingroup Parms
3612 ///
3613 /// @param[in] session
3614 /// The session of Houdini you are interacting with.
3615 /// See @ref HAPI_Sessions for more on sessions.
3616 /// Pass NULL to just use the default in-process session.
3617 /// <!-- default NULL -->
3618 ///
3619 /// @param[in] node_id
3620 /// The node id.
3621 ///
3622 /// @param[in] parm_name
3623 /// The parm name.
3624 ///
3625 /// @param[in] index
3626 /// Index within the parameter's values tuple.
3627 ///
3628 /// @param[out] value
3629 /// The returned float value.
3630 ///
3632  HAPI_NodeId node_id,
3633  const char * parm_name,
3634  int index,
3635  float * value );
3636 
3637 /// @brief Fill an array of parameter float values. This is more efficient
3638 /// than calling ::HAPI_GetParmFloatValue() individually for each
3639 /// parameter value.
3640 ///
3641 /// @ingroup Parms
3642 ///
3643 /// @param[in] session
3644 /// The session of Houdini you are interacting with.
3645 /// See @ref HAPI_Sessions for more on sessions.
3646 /// Pass NULL to just use the default in-process session.
3647 /// <!-- default NULL -->
3648 ///
3649 /// @param[in] node_id
3650 /// The node id.
3651 ///
3652 /// @param[out] values_array
3653 /// Array of floats at least the size of length.
3654 ///
3655 /// @param[in] start
3656 /// First index of range. Must be at least 0 and at
3657 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
3658 /// <!-- min 0 -->
3659 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - 1 -->
3660 /// <!-- default 0 -->
3661 ///
3662 /// @param[in] length
3663 /// Must be at least 1 and at most
3664 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
3665 /// <!-- min 1 -->
3666 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - start -->
3667 /// <!-- source ::HAPI_NodeInfo::parmFloatValueCount - start -->
3668 ///
3670  HAPI_NodeId node_id,
3671  float * values_array,
3672  int start, int length );
3673 
3674 /// @brief Get single parm string value by name.
3675 ///
3676 /// @ingroup Parms
3677 ///
3678 /// @param[in] session
3679 /// The session of Houdini you are interacting with.
3680 /// See @ref HAPI_Sessions for more on sessions.
3681 /// Pass NULL to just use the default in-process session.
3682 /// <!-- default NULL -->
3683 ///
3684 /// @param[in] node_id
3685 /// The node id.
3686 ///
3687 /// @param[in] parm_name
3688 /// The name of the parameter.
3689 ///
3690 /// @param[in] index
3691 /// Index within the parameter's values tuple.
3692 ///
3693 /// @param[in] evaluate
3694 /// Whether or not to evaluate the string expression.
3695 /// For example, the string "$F" would evaluate to the
3696 /// current frame number. So, passing in evaluate = false
3697 /// would give you back the string "$F" and passing
3698 /// in evaluate = true would give you back "1" (assuming
3699 /// the current frame is 1).
3700 /// <!-- default true -->
3701 ///
3702 /// @param[out] value
3703 /// The returned string value.
3704 ///
3706  HAPI_NodeId node_id,
3707  const char * parm_name,
3708  int index,
3709  HAPI_Bool evaluate,
3711 
3712 /// @brief Fill an array of parameter string handles. These handles must
3713 /// be used in conjunction with ::HAPI_GetString() to get the
3714 /// actual string values. This is more efficient than calling
3715 /// ::HAPI_GetParmStringValue() individually for each
3716 /// parameter value.
3717 ///
3718 /// @ingroup Parms
3719 ///
3720 /// @param[in] session
3721 /// The session of Houdini you are interacting with.
3722 /// See @ref HAPI_Sessions for more on sessions.
3723 /// Pass NULL to just use the default in-process session.
3724 /// <!-- default NULL -->
3725 ///
3726 /// @param[in] node_id
3727 /// The node id.
3728 ///
3729 /// @param[in] evaluate
3730 /// Whether or not to evaluate the string expression.
3731 /// For example, the string "$F" would evaluate to the
3732 /// current frame number. So, passing in evaluate = false
3733 /// would give you back the string "$F" and passing
3734 /// in evaluate = true would give you back "1" (assuming
3735 /// the current frame is 1).
3736 ///
3737 /// @param[out] values_array
3738 /// Array of integers at least the size of length.
3739 ///
3740 /// @param[in] start
3741 /// First index of range. Must be at least 0 and at
3742 /// most ::HAPI_NodeInfo::parmStringValueCount - 1.
3743 /// <!-- min 0 -->
3744 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - 1 -->
3745 /// <!-- default 0 -->
3746 ///
3747 /// @param[in] length
3748 /// Must be at least 1 and at most
3749 /// ::HAPI_NodeInfo::parmStringValueCount - start.
3750 /// <!-- min 1 -->
3751 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - start -->
3752 /// <!-- source ::HAPI_NodeInfo::parmStringValueCount - start -->
3753 ///
3755  HAPI_NodeId node_id,
3756  HAPI_Bool evaluate,
3757  HAPI_StringHandle * values_array,
3758  int start, int length );
3759 
3760 /// @brief Get a single node id parm value of an Op Path parameter. This is
3761 /// how you see which node is connected as an input for the current
3762 /// node (via parameter).
3763 ///
3764 /// @ingroup Parms
3765 ///
3766 /// @param[in] session
3767 /// The session of Houdini you are interacting with.
3768 /// See @ref HAPI_Sessions for more on sessions.
3769 /// Pass NULL to just use the default in-process session.
3770 /// <!-- default NULL -->
3771 ///
3772 /// @param[in] node_id
3773 /// The node id.
3774 ///
3775 /// @param[in] parm_name
3776 /// The name of the parameter.
3777 ///
3778 /// @param[out] value
3779 /// The node id of the node being pointed to by the parm.
3780 /// If there is no node found, -1 will be returned.
3781 ///
3783  HAPI_NodeId node_id,
3784  const char * parm_name,
3785  HAPI_NodeId * value );
3786 
3787 /// @brief Extract a file specified by path on a parameter. This will copy
3788 /// the file to the destination directory from wherever it might be,
3789 /// inlcuding inside the asset definition or online.
3790 ///
3791 /// @ingroup Parms
3792 ///
3793 /// @param[in] session
3794 /// The session of Houdini you are interacting with.
3795 /// See @ref HAPI_Sessions for more on sessions.
3796 /// Pass NULL to just use the default in-process session.
3797 /// <!-- default NULL -->
3798 ///
3799 /// @param[in] node_id
3800 /// The node id.
3801 ///
3802 /// @param[in] parm_name
3803 /// The name of the parameter.
3804 ///
3805 /// @param[in] destination_directory
3806 /// The destination directory to copy the file to.
3807 ///
3808 /// @param[in] destination_file_name
3809 /// The destination file name.
3810 ///
3811 HAPI_DECL HAPI_GetParmFile( const HAPI_Session * session,
3812  HAPI_NodeId node_id,
3813  const char * parm_name,
3814  const char * destination_directory,
3815  const char * destination_file_name );
3816 
3817 /// @brief Fill an array of ::HAPI_ParmChoiceInfo structs with parameter
3818 /// choice list information from the asset instance node.
3819 ///
3820 /// @ingroup Parms
3821 ///
3822 /// @param[in] session
3823 /// The session of Houdini you are interacting with.
3824 /// See @ref HAPI_Sessions for more on sessions.
3825 /// Pass NULL to just use the default in-process session.
3826 /// <!-- default NULL -->
3827 ///
3828 /// @param[in] node_id
3829 /// The node id.
3830 ///
3831 /// @param[out] parm_choices_array
3832 /// Array of ::HAPI_ParmChoiceInfo exactly the size of
3833 /// length.
3834 ///
3835 /// @param[in] start
3836 /// First index of range. Must be at least 0 and at
3837 /// most ::HAPI_NodeInfo::parmChoiceCount - 1.
3838 /// <!-- min 0 -->
3839 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - 1 -->
3840 /// <!-- default 0 -->
3841 ///
3842 /// @param[in] length
3843 /// Must be at least 1 and at most
3844 /// ::HAPI_NodeInfo::parmChoiceCount - start.
3845 /// <!-- min 1 -->
3846 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - start -->
3847 /// <!-- source ::HAPI_NodeInfo::parmChoiceCount - start -->
3848 ///
3850  HAPI_NodeId node_id,
3851  HAPI_ParmChoiceInfo * parm_choices_array,
3852  int start, int length );
3853 
3854 /// @brief Set single parm int value by name.
3855 ///
3856 /// @note Regardless of the value, when calling this function
3857 /// on a parameter, if that parameter has a callback function
3858 /// attached to it, that callback function will be called. For
3859 /// example, if the parameter is a button the button will be
3860 /// pressed.
3861 ///
3862 /// @note In threaded mode, this is an _async call_!
3863 ///
3864 /// This API will invoke the cooking thread if threading is
3865 /// enabled. This means it will return immediately. Use
3866 /// the status and cooking count APIs under DIAGNOSTICS to get
3867 /// a sense of the progress. All other API calls will block
3868 /// until the cook operation has finished.
3869 ///
3870 /// Also note that the cook result won't be of type
3871 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3872 /// Whenever the threading cook is done it will fill the
3873 /// @a cook result which is queried using
3874 /// ::HAPI_STATUS_COOK_RESULT.
3875 ///
3876 /// @ingroup Parms
3877 ///
3878 /// @param[in] session
3879 /// The session of Houdini you are interacting with.
3880 /// See @ref HAPI_Sessions for more on sessions.
3881 /// Pass NULL to just use the default in-process session.
3882 /// <!-- default NULL -->
3883 ///
3884 /// @param[in] node_id
3885 /// The node id.
3886 ///
3887 /// @param[in] parm_name
3888 /// The parm name.
3889 ///
3890 /// @param[in] index
3891 /// Index within the parameter's values tuple.
3892 ///
3893 /// @param[in] value
3894 /// The int value.
3895 ///
3897  HAPI_NodeId node_id,
3898  const char * parm_name,
3899  int index,
3900  int value );
3901 
3902 /// @brief Set (push) an array of parameter int values.
3903 ///
3904 /// @note Regardless of the values, when calling this function
3905 /// on a set of parameters, if any parameter has a callback
3906 /// function attached to it, that callback function will be called.
3907 /// For example, if the parameter is a button the button will be
3908 /// pressed.
3909 ///
3910 /// @note In threaded mode, this is an _async call_!
3911 ///
3912 /// This API will invoke the cooking thread if threading is
3913 /// enabled. This means it will return immediately. Use
3914 /// the status and cooking count APIs under DIAGNOSTICS to get
3915 /// a sense of the progress. All other API calls will block
3916 /// until the cook operation has finished.
3917 ///
3918 /// Also note that the cook result won't be of type
3919 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3920 /// Whenever the threading cook is done it will fill the
3921 /// @a cook result which is queried using
3922 /// ::HAPI_STATUS_COOK_RESULT.
3923 ///
3924 /// @ingroup Parms
3925 ///
3926 /// @param[in] session
3927 /// The session of Houdini you are interacting with.
3928 /// See @ref HAPI_Sessions for more on sessions.
3929 /// Pass NULL to just use the default in-process session.
3930 /// <!-- default NULL -->
3931 ///
3932 /// @param[in] node_id
3933 /// The node id.
3934 ///
3935 /// @param[in] values_array
3936 /// Array of integers at least the size of length.
3937 /// <!-- min length -->
3938 ///
3939 /// @param[in] start
3940 /// First index of range. Must be at least 0 and at
3941 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
3942 /// <!-- min 0 -->
3943 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
3944 /// <!-- default 0 -->
3945 ///
3946 /// @param[in] length
3947 /// Must be at least 1 and at most
3948 /// ::HAPI_NodeInfo::parmIntValueCount - start.
3949 /// <!-- min 1 -->
3950 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
3951 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
3952 ///
3954  HAPI_NodeId node_id,
3955  const int * values_array,
3956  int start, int length );
3957 
3958 /// @brief Set single parm float value by name.
3959 ///
3960 /// @note Regardless of the value, when calling this function
3961 /// on a parameter, if that parameter has a callback function
3962 /// attached to it, that callback function will be called. For
3963 /// example, if the parameter is a button the button will be
3964 /// pressed.
3965 ///
3966 /// @note In threaded mode, this is an _async call_!
3967 ///
3968 /// This API will invoke the cooking thread if threading is
3969 /// enabled. This means it will return immediately. Use
3970 /// the status and cooking count APIs under DIAGNOSTICS to get
3971 /// a sense of the progress. All other API calls will block
3972 /// until the cook operation has finished.
3973 ///
3974 /// Also note that the cook result won't be of type
3975 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3976 /// Whenever the threading cook is done it will fill the
3977 /// @a cook result which is queried using
3978 /// ::HAPI_STATUS_COOK_RESULT.
3979 ///
3980 /// @ingroup Parms
3981 ///
3982 /// @param[in] session
3983 /// The session of Houdini you are interacting with.
3984 /// See @ref HAPI_Sessions for more on sessions.
3985 /// Pass NULL to just use the default in-process session.
3986 /// <!-- default NULL -->
3987 ///
3988 /// @param[in] node_id
3989 /// The node id.
3990 ///
3991 /// @param[in] parm_name
3992 /// The parm name.
3993 ///
3994 /// @param[in] index
3995 /// Index within the parameter's values tuple.
3996 ///
3997 /// @param[in] value
3998 /// The float value.
3999 ///
4001  HAPI_NodeId node_id,
4002  const char * parm_name,
4003  int index,
4004  float value );
4005 
4006 /// @brief Set (push) an array of parameter float values.
4007 ///
4008 /// @note Regardless of the values, when calling this function
4009 /// on a set of parameters, if any parameter has a callback
4010 /// function attached to it, that callback function will be called.
4011 /// For example, if the parameter is a button the button will be
4012 /// pressed.
4013 ///
4014 /// @note In threaded mode, this is an _async call_!
4015 ///
4016 /// This API will invoke the cooking thread if threading is
4017 /// enabled. This means it will return immediately. Use
4018 /// the status and cooking count APIs under DIAGNOSTICS to get
4019 /// a sense of the progress. All other API calls will block
4020 /// until the cook operation has finished.
4021 ///
4022 /// Also note that the cook result won't be of type
4023 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4024 /// Whenever the threading cook is done it will fill the
4025 /// @a cook result which is queried using
4026 /// ::HAPI_STATUS_COOK_RESULT.
4027 ///
4028 /// @ingroup Parms
4029 ///
4030 /// @param[in] session
4031 /// The session of Houdini you are interacting with.
4032 /// See @ref HAPI_Sessions for more on sessions.
4033 /// Pass NULL to just use the default in-process session.
4034 /// <!-- default NULL -->
4035 ///
4036 /// @param[in] node_id
4037 /// The node id.
4038 ///
4039 /// @param[in] values_array
4040 /// Array of floats at least the size of length.
4041 ///
4042 /// @param[in] start
4043 /// First index of range. Must be at least 0 and at
4044 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
4045 ///
4046 /// @param[in] length
4047 /// Must be at least 1 and at most
4048 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
4049 ///
4051  HAPI_NodeId node_id,
4052  const float * values_array,
4053  int start, int length );
4054 
4055 /// @brief Set (push) a string value. We can only set a single value at
4056 /// a time because we want to avoid fixed size string buffers.
4057 ///
4058 /// @note Regardless of the value, when calling this function
4059 /// on a parameter, if that parameter has a callback function
4060 /// attached to it, that callback function will be called. For
4061 /// example, if the parameter is a button the button will be
4062 /// pressed.
4063 ///
4064 /// @note In threaded mode, this is an _async call_!
4065 ///
4066 /// This API will invoke the cooking thread if threading is
4067 /// enabled. This means it will return immediately. Use
4068 /// the status and cooking count APIs under DIAGNOSTICS to get
4069 /// a sense of the progress. All other API calls will block
4070 /// until the cook operation has finished.
4071 ///
4072 /// Also note that the cook result won't be of type
4073 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4074 /// Whenever the threading cook is done it will fill the
4075 /// @a cook result which is queried using
4076 /// ::HAPI_STATUS_COOK_RESULT.
4077 ///
4078 /// @ingroup Parms
4079 ///
4080 /// @param[in] session
4081 /// The session of Houdini you are interacting with.
4082 /// See @ref HAPI_Sessions for more on sessions.
4083 /// Pass NULL to just use the default in-process session.
4084 /// <!-- default NULL -->
4085 ///
4086 /// @param[in] node_id
4087 /// The node id.
4088 ///
4089 /// @param[in] value
4090 /// The string value.
4091 ///
4092 /// @param[in] parm_id
4093 /// Parameter id of the parameter being updated.
4094 ///
4095 /// @param[in] index
4096 /// Index within the parameter's values tuple.
4097 ///
4099  HAPI_NodeId node_id,
4100  const char * value,
4101  HAPI_ParmId parm_id, int index );
4102 
4103 /// @brief Set a node id parm value of an Op Path parameter. For example,
4104 /// This is how you connect the geometry output of an asset to the
4105 /// geometry input of another asset - whether the input is a parameter
4106 /// or a node input (the top of the node). Node inputs get converted
4107 /// top parameters in HAPI.
4108 ///
4109 /// @ingroup Parms
4110 ///
4111 /// @param[in] session
4112 /// The session of Houdini you are interacting with.
4113 /// See @ref HAPI_Sessions for more on sessions.
4114 /// Pass NULL to just use the default in-process session.
4115 /// <!-- default NULL -->
4116 ///
4117 /// @param[in] node_id
4118 /// The node id.
4119 ///
4120 /// @param[in] parm_name
4121 /// The name of the parameter.
4122 ///
4123 /// @param[in] value
4124 /// The node id of the node being connected. Pass -1 to
4125 /// disconnect.
4126 ///
4128  HAPI_NodeId node_id,
4129  const char * parm_name,
4130  HAPI_NodeId value );
4131 
4132 /// @brief Insert an instance of a multiparm before instance_position.
4133 ///
4134 /// @ingroup Parms
4135 ///
4136 /// @param[in] session
4137 /// The session of Houdini you are interacting with.
4138 /// See @ref HAPI_Sessions for more on sessions.
4139 /// Pass NULL to just use the default in-process session.
4140 /// <!-- default NULL -->
4141 ///
4142 /// @param[in] node_id
4143 /// The node id.
4144 ///
4145 /// @param[in] parm_id
4146 /// A parm id given by a ::HAPI_ParmInfo struct that
4147 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4148 ///
4149 /// @param[in] instance_position
4150 /// The new instance will be inserted at this position
4151 /// index. Do note the multiparms can start at position
4152 /// 1 or 0. Use ::HAPI_ParmInfo::instanceStartOffset to
4153 /// distinguish.
4154 ///
4156  HAPI_NodeId node_id,
4157  HAPI_ParmId parm_id,
4158  int instance_position );
4159 
4160 /// @brief Remove the instance of a multiparm given by instance_position.
4161 ///
4162 /// @ingroup Parms
4163 ///
4164 /// @param[in] session
4165 /// The session of Houdini you are interacting with.
4166 /// See @ref HAPI_Sessions for more on sessions.
4167 /// Pass NULL to just use the default in-process session.
4168 /// <!-- default NULL -->
4169 ///
4170 /// @param[in] node_id
4171 /// The node id.
4172 ///
4173 /// @param[in] parm_id
4174 /// A parm id given by a ::HAPI_ParmInfo struct that
4175 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4176 ///
4177 /// @param[in] instance_position
4178 /// The instance at instance_position will removed.
4179 ///
4181  HAPI_NodeId node_id,
4182  HAPI_ParmId parm_id,
4183  int instance_position );
4184 
4185 // HANDLES ------------------------------------------------------------------
4186 
4187 /// @brief Fill an array of ::HAPI_HandleInfo structs with information
4188 /// about every exposed user manipulation handle on the node.
4189 ///
4190 /// @ingroup Parms
4191 ///
4192 /// @param[in] session
4193 /// The session of Houdini you are interacting with.
4194 /// See @ref HAPI_Sessions for more on sessions.
4195 /// Pass NULL to just use the default in-process session.
4196 /// <!-- default NULL -->
4197 ///
4198 /// @param[in] node_id
4199 /// The node id.
4200 ///
4201 /// @param[out] handle_infos_array
4202 /// Array of ::HAPI_HandleInfo at least the size of length.
4203 ///
4204 /// @param[in] start
4205 /// First index of range. Must be at least 0 and at
4206 /// most ::HAPI_AssetInfo::handleCount - 1.
4207 /// <!-- default 0 -->
4208 ///
4209 /// @param[in] length
4210 /// Must be at least 1 and at most
4211 /// ::HAPI_AssetInfo::handleCount - start.
4212 /// <!-- source ::HAPI_AssetInfo::handleCount - start -->
4213 ///
4214 HAPI_DECL HAPI_GetHandleInfo( const HAPI_Session * session,
4215  HAPI_NodeId node_id,
4216  HAPI_HandleInfo * handle_infos_array,
4217  int start, int length );
4218 
4219 /// @brief Fill an array of ::HAPI_HandleBindingInfo structs with information
4220 /// about the binding of a particular handle on the given node.
4221 ///
4222 /// @ingroup Parms
4223 ///
4224 /// @param[in] session
4225 /// The session of Houdini you are interacting with.
4226 /// See @ref HAPI_Sessions for more on sessions.
4227 /// Pass NULL to just use the default in-process session.
4228 /// <!-- default NULL -->
4229 ///
4230 /// @param[in] node_id
4231 /// The node id.
4232 ///
4233 /// @param[in] handle_index
4234 /// The index of the handle, from 0 to handleCount - 1
4235 /// from the call to ::HAPI_GetAssetInfo().
4236 ///
4237 /// @param[out] handle_binding_infos_array
4238 /// Array of ::HAPI_HandleBindingInfo at least the size
4239 /// of length.
4240 ///
4241 /// @param[in] start
4242 /// First index of range. Must be at least 0 and at
4243 /// most ::HAPI_HandleInfo::bindingsCount - 1.
4244 /// <!-- default 0 -->
4245 ///
4246 /// @param[in] length
4247 /// Must be at least 1 and at most
4248 /// ::HAPI_HandleInfo::bindingsCount - start.
4249 /// <!-- source ::HAPI_AssetInfo::bindingsCount - start -->
4250 ///
4252  const HAPI_Session * session,
4253  HAPI_NodeId node_id,
4254  int handle_index,
4255  HAPI_HandleBindingInfo * handle_binding_infos_array,
4256  int start, int length );
4257 
4258 /// @defgroup Presets Presets
4259 /// Functions for working with Node presets
4260 
4261 /// @brief Generate a preset blob of the current state of all the
4262 /// parameter values, cache it, and return its size in bytes.
4263 ///
4264 /// @ingroup Presets
4265 ///
4266 /// @param[in] session
4267 /// The session of Houdini you are interacting with.
4268 /// See @ref HAPI_Sessions for more on sessions.
4269 /// Pass NULL to just use the default in-process session.
4270 /// <!-- default NULL -->
4271 ///
4272 /// @param[in] node_id
4273 /// The exposed node id.
4274 ///
4275 /// @param[in] preset_type
4276 /// The preset type.
4277 ///
4278 /// @param[in] preset_name
4279 /// Optional. This is only used if the @p preset_type is
4280 /// ::HAPI_PRESETTYPE_IDX. If NULL is given, the preset
4281 /// name will be the same as the name of the node with
4282 /// the given @p node_id.
4283 ///
4284 /// @param[out] buffer_length
4285 /// Size of the buffer.
4286 ///
4288  HAPI_NodeId node_id,
4289  HAPI_PresetType preset_type,
4290  const char * preset_name,
4291  int * buffer_length );
4292 
4293 /// @brief Generates a preset for the given asset.
4294 ///
4295 /// @ingroup Presets
4296 ///
4297 /// @param[in] session
4298 /// The session of Houdini you are interacting with.
4299 /// See @ref HAPI_Sessions for more on sessions.
4300 /// Pass NULL to just use the default in-process session.
4301 /// <!-- default NULL -->
4302 ///
4303 /// @param[in] node_id
4304 /// The exposed node id.
4305 ///
4306 /// @param[out] buffer
4307 /// Buffer to hold the preset data.
4308 ///
4309 /// @param[in] buffer_length
4310 /// Size of the buffer. Should be the same as the length
4311 /// returned by ::HAPI_GetPresetBufLength().
4312 ///
4313 HAPI_DECL HAPI_GetPreset( const HAPI_Session * session,
4314  HAPI_NodeId node_id,
4315  char * buffer,
4316  int buffer_length );
4317 
4318 /// @brief Sets a particular asset to a given preset.
4319 ///
4320 /// @ingroup Presets
4321 ///
4322 /// @param[in] session
4323 /// The session of Houdini you are interacting with.
4324 /// See @ref HAPI_Sessions for more on sessions.
4325 /// Pass NULL to just use the default in-process session.
4326 /// <!-- default NULL -->
4327 ///
4328 /// @param[in] node_id
4329 /// The exposed node id.
4330 ///
4331 /// @param[in] preset_type
4332 /// The preset type.
4333 ///
4334 /// @param[in] preset_name
4335 /// Optional. This is only used if the @p preset_type is
4336 /// ::HAPI_PRESETTYPE_IDX. If NULL is give, the first
4337 /// preset in the IDX file will be chosen.
4338 /// <!-- default NULL -->
4339 ///
4340 /// @param[in] buffer
4341 /// Buffer to hold the preset data.
4342 ///
4343 /// @param[in] buffer_length
4344 /// Size of the buffer.
4345 ///
4346 HAPI_DECL HAPI_SetPreset( const HAPI_Session * session,
4347  HAPI_NodeId node_id,
4348  HAPI_PresetType preset_type,
4349  const char * preset_name,
4350  const char * buffer,
4351  int buffer_length );
4352 
4353 /// @brief Gets the number of presets in an IDX file. When this method is
4354 /// called, the names of the presets are stored in a single internal
4355 /// buffer from which they can be retrieved by calling
4356 /// HAPI_GetPresetNames().
4357 ///
4358 /// Note that calling HAPI_GetPresetCount() will overwrite the preset
4359 /// names that were previously stored in the internal buffer. Therefore,
4360 /// ensure that you have called HAPI_GetPresetNames() before calling
4361 /// HAPI_GetPresetCount() again.
4362 ///
4363 /// @ingroup Presets
4364 ///
4365 /// @param[in] session
4366 /// The session of Houdini you are interacting with.
4367 /// See @ref HAPI_Sessions for more on sessions.
4368 /// Pass NULL to just use the default in-process session.
4369 /// <!-- default NULL -->
4370 ///
4371 /// @param[in] buffer
4372 /// A buffer containing the raw binary data of the .idx file.
4373 ///
4374 /// @param[in] buffer_length
4375 /// Size of the buffer.
4376 ///
4377 /// @param[out] count
4378 /// Number of presets in the file.
4379 ///
4380 HAPI_DECL HAPI_GetPresetCount( const HAPI_Session * session,
4381  const char * buffer,
4382  int buffer_length,
4383  int * count );
4384 
4385 /// @brief Gets the names of presets in an IDX file. HAPI_GetPresetCount() must
4386 /// be called before calling this method. See the HAPI_GetPresetCount()
4387 /// documentation for more information.
4388 ///
4389 /// @ingroup Presets
4390 ///
4391 /// @param[in] session
4392 /// The session of Houdini you are interacting with.
4393 /// See @ref HAPI_Sessions for more on sessions.
4394 /// Pass NULL to just use the default in-process session.
4395 /// <!-- default NULL -->
4396 ///
4397 /// @param[in] buffer
4398 /// A buffer containing the raw binary data of the .idx file.
4399 /// This should be the same buffer that was passed into
4400 /// HAPI_GetPresetCount().
4401 ///
4402 /// @param[in] buffer_length
4403 /// Size of the buffer.
4404 ///
4405 /// @param[out] preset_names_array
4406 /// Array of preset names to be filled
4407 ///
4408 /// @param[in] preset_names_count
4409 /// Number of presets in the file. Should be the same as
4410 /// the count returned by ::HAPI_GetPresetCount()
4411 ///
4412 HAPI_DECL HAPI_GetPresetNames( const HAPI_Session * session,
4413  const char * buffer,
4414  int buffer_length,
4415  HAPI_StringHandle * preset_names_array,
4416  int preset_names_count );
4417 
4418 /// @defgroup Objects
4419 /// Functions for working with OBJ Nodes
4420 
4421 /// @brief Get the object info on an OBJ node.
4422 ///
4423 /// @ingroup Objects
4424 ///
4425 /// @param[in] session
4426 /// The session of Houdini you are interacting with.
4427 /// See @ref HAPI_Sessions for more on sessions.
4428 /// Pass NULL to just use the default in-process session.
4429 /// <!-- default NULL -->
4430 ///
4431 /// @param[in] node_id
4432 /// The node id.
4433 ///
4434 /// @param[out] object_info
4435 /// The output ::HAPI_ObjectInfo.
4436 ///
4437 HAPI_DECL HAPI_GetObjectInfo( const HAPI_Session * session,
4438  HAPI_NodeId node_id,
4439  HAPI_ObjectInfo * object_info );
4440 
4441 /// @brief Get the tranform of an OBJ node.
4442 ///
4443 /// @ingroup Objects
4444 ///
4445 /// @param[in] session
4446 /// The session of Houdini you are interacting with.
4447 /// See @ref HAPI_Sessions for more on sessions.
4448 /// Pass NULL to just use the default in-process session.
4449 /// <!-- default NULL -->
4450 ///
4451 /// @param[in] node_id
4452 /// The object node id.
4453 ///
4454 /// @param[in] relative_to_node_id
4455 /// The object node id for the object to which the returned
4456 /// transform will be relative to. Pass -1 or the node_id
4457 /// to just get the object's local transform.
4458 ///
4459 /// @param[in] rst_order
4460 /// The order of application of translation, rotation and
4461 /// scale.
4462 ///
4463 /// @param[out] transform
4464 /// The output ::HAPI_Transform transform.
4465 ///
4467  HAPI_NodeId node_id,
4468  HAPI_NodeId relative_to_node_id,
4469  HAPI_RSTOrder rst_order,
4471 
4472 /// @brief Compose a list of child object nodes given a parent node id.
4473 ///
4474 /// Use the @c object_count returned by this function to get the
4475 /// ::HAPI_ObjectInfo structs for each child object using
4476 /// ::HAPI_GetComposedObjectList().
4477 ///
4478 /// Note, if not using the @c categories arg, this is equivalent to:
4479 /// @code
4480 /// HAPI_ComposeChildNodeList(
4481 /// session, parent_node_id,
4482 /// HAPI_NODETYPE_OBJ,
4483 /// HAPI_NODEFLAGS_OBJ_GEOMETRY,
4484 /// true, &object_count );
4485 /// @endcode
4486 ///
4487 /// @ingroup Objects
4488 ///
4489 /// @param[in] session
4490 /// The session of Houdini you are interacting with.
4491 /// See @ref HAPI_Sessions for more on sessions.
4492 /// Pass NULL to just use the default in-process session.
4493 /// <!-- default NULL -->
4494 ///
4495 /// @param[in] parent_node_id
4496 /// The parent node id.
4497 ///
4498 /// @param[in] categories
4499 /// (Optional) Lets you filter object nodes by their render
4500 /// categories. This is a standard OBJ parameter, usually
4501 /// under the Render > Shading tab. If an OBJ node does not
4502 /// have this parameter, one can always add it as a spare.
4503 ///
4504 /// The value of this string argument should be NULL if not
4505 /// used or a space-separated list of category names.
4506 /// Multiple category names will be treated as an AND op.
4507 /// <!-- default NULL -->
4508 ///
4509 /// @param[out] object_count
4510 /// The number of object nodes currently under the parent.
4511 /// Use this count with a call to
4512 /// ::HAPI_GetComposedObjectList() to get the object infos.
4513 ///
4515  HAPI_NodeId parent_node_id,
4516  const char * categories,
4517  int * object_count );
4518 
4519 /// @brief Fill an array of ::HAPI_ObjectInfo structs.
4520 ///
4521 /// This is best used with ::HAPI_ComposeObjectList() with.
4522 ///
4523 /// @ingroup Objects
4524 ///
4525 /// @param[in] session
4526 /// The session of Houdini you are interacting with.
4527 /// See @ref HAPI_Sessions for more on sessions.
4528 /// Pass NULL to just use the default in-process session.
4529 /// <!-- default NULL -->
4530 ///
4531 /// @param[in] parent_node_id
4532 /// The parent node id.
4533 ///
4534 /// @param[out] object_infos_array
4535 /// Array of ::HAPI_ObjectInfo at least the size of
4536 /// @c length.
4537 ///
4538 /// @param[in] start
4539 /// At least @c 0 and at most @c object_count returned by
4540 /// ::HAPI_ComposeObjectList().
4541 /// <!-- default 0 -->
4542 ///
4543 /// @param[in] length
4544 /// Given @c object_count returned by
4545 /// ::HAPI_ComposeObjectList(), @c length should be at least
4546 /// @c 0 and at most <tt>object_count - start</tt>.
4547 /// <!-- source ::HAPI_ComposeObjectList - start -->
4548 ///
4550  HAPI_NodeId parent_node_id,
4551  HAPI_ObjectInfo * object_infos_array,
4552  int start, int length );
4553 
4554 /// @brief Fill an array of ::HAPI_Transform structs.
4555 ///
4556 /// This is best used with ::HAPI_ComposeObjectList() with.
4557 ///
4558 /// Note that these transforms will be relative to the
4559 /// @c parent_node_id originally given to ::HAPI_ComposeObjectList()
4560 /// and expected to be the same with this call. If @c parent_node_id
4561 /// is not an OBJ node, the transforms will be given as they are on
4562 /// the object node itself.
4563 ///
4564 /// @ingroup Objects
4565 ///
4566 /// @param[in] session
4567 /// The session of Houdini you are interacting with.
4568 /// See @ref HAPI_Sessions for more on sessions.
4569 /// Pass NULL to just use the default in-process session.
4570 /// <!-- default NULL -->
4571 ///
4572 /// @param[in] parent_node_id
4573 /// The parent node id. The object transforms will be
4574 /// relative to this node unless this node is not an OBJ.
4575 ///
4576 /// @param[in] rst_order
4577 /// The order of application of translation, rotation and
4578 /// scale.
4579 ///
4580 /// @param[out] transform_array
4581 /// Array of ::HAPI_Transform at least the size of
4582 /// length.
4583 ///
4584 /// @param[in] start
4585 /// At least @c 0 and at most @c object_count returned by
4586 /// ::HAPI_ComposeObjectList().
4587 /// <!-- default 0 -->
4588 ///
4589 /// @param[in] length
4590 /// Given @c object_count returned by
4591 /// ::HAPI_ComposeObjectList(), @c length should be at least
4592 /// @c 0 and at most <tt>object_count - start</tt>.
4593 /// <!-- source ::HAPI_ComposeObjectList - start -->
4594 ///
4596  HAPI_NodeId parent_node_id,
4597  HAPI_RSTOrder rst_order,
4598  HAPI_Transform * transform_array,
4599  int start, int length );
4600 
4601 /// @brief Get the node ids for the objects being instanced by an
4602 /// Instance OBJ node.
4603 ///
4604 /// @ingroup Objects
4605 ///
4606 /// @param[in] session
4607 /// The session of Houdini you are interacting with.
4608 /// See @ref HAPI_Sessions for more on sessions.
4609 /// Pass NULL to just use the default in-process session.
4610 /// <!-- default NULL -->
4611 ///
4612 /// @param[in] object_node_id
4613 /// The object node id.
4614 ///
4615 /// @param[out] instanced_node_id_array
4616 /// Array of ::HAPI_NodeId at least the size of length.
4617 ///
4618 /// @param[in] start
4619 /// At least @c 0 and at most @c object_count returned by
4620 /// ::HAPI_ComposeObjectList().
4621 /// <!-- default 0 -->
4622 ///
4623 /// @param[in] length
4624 /// Given @c object_count returned by
4625 /// ::HAPI_ComposeObjectList(), @c length should be at least
4626 /// @c 0 and at most <tt>object_count - start</tt>.
4627 /// <!-- source ::HAPI_ComposeObjectList - start -->
4628 ///
4630  HAPI_NodeId object_node_id,
4631  HAPI_NodeId * instanced_node_id_array,
4632  int start, int length );
4633 
4634 /// @brief Fill an array of ::HAPI_Transform structs with the transforms
4635 /// of each instance of this instancer object for a given part.
4636 ///
4637 /// @ingroup Objects
4638 ///
4639 /// @param[in] session
4640 /// The session of Houdini you are interacting with.
4641 /// See @ref HAPI_Sessions for more on sessions.
4642 /// Pass NULL to just use the default in-process session.
4643 /// <!-- default NULL -->
4644 ///
4645 /// @param[in] node_id
4646 /// The object node id.
4647 ///
4648 /// @param[in] part_id
4649 /// The part id.
4650 ///
4651 /// @param[in] rst_order
4652 /// The order of application of translation, rotation and
4653 /// scale.
4654 ///
4655 /// @param[out] transforms_array
4656 /// Array of ::HAPI_Transform at least the size of length.
4657 ///
4658 /// @param[in] start
4659 /// First index of range. Must be at least 0 and at
4660 /// most ::HAPI_PartInfo::pointCount - 1. This is the 0th
4661 /// part of the display geo of the instancer object node.
4662 /// <!-- default 0 -->
4663 ///
4664 /// @param[in] length
4665 /// Must be at least 0 and at most
4666 /// ::HAPI_PartInfo::pointCount - @p start. This is the 0th
4667 /// part of the display geo of the instancer object node.
4668 /// <!-- source ::HAPI_PartInfo::pointCount - start -->
4669 ///
4671  HAPI_NodeId node_id,
4672  HAPI_PartId part_id,
4673  HAPI_RSTOrder rst_order,
4674  HAPI_Transform * transforms_array,
4675  int start, int length );
4676 
4677 /// @brief Set the transform of an individual object. Note that the object
4678 /// nodes have to either be editable or have their transform
4679 /// parameters exposed at the asset level. This won't work otherwise.
4680 ///
4681 /// @ingroup Objects
4682 ///
4683 /// @param[in] session
4684 /// The session of Houdini you are interacting with.
4685 /// See @ref HAPI_Sessions for more on sessions.
4686 /// Pass NULL to just use the default in-process session.
4687 /// <!-- default NULL -->
4688 ///
4689 /// @param[in] node_id
4690 /// The object node id.
4691 ///
4692 /// @param[in] trans
4693 /// A ::HAPI_TransformEuler that stores the transform.
4694 ///
4696  HAPI_NodeId node_id,
4697  const HAPI_TransformEuler * trans );
4698 
4699 /// @defgroup GeometryGetters Geometry Getters
4700 /// Functions for reading Geometry (SOP) data
4701 
4702 /// @brief Get the display geo (SOP) node inside an Object node. If there
4703 /// there are multiple display SOP nodes, only the first one is
4704 /// returned. If the node is a display SOP itself, even if a network,
4705 /// it will return its own geo info. If the node is a SOP but not
4706 /// a network and not the display SOP, this function will fail.
4707 ///
4708 /// The above implies that you can safely call this function on both
4709 /// OBJ and SOP asset nodes and get the same (equivalent) geometry
4710 /// display node back. SOP asset nodes will simply return themselves.
4711 ///
4712 /// @ingroup GeometryGetters
4713 ///
4714 /// @param[in] session
4715 /// The session of Houdini you are interacting with.
4716 /// See @ref HAPI_Sessions for more on sessions.
4717 /// Pass NULL to just use the default in-process session.
4718 /// <!-- default NULL -->
4719 ///
4720 /// @param[in] object_node_id
4721 /// The object node id.
4722 ///
4723 /// @param[out] geo_info
4724 /// ::HAPI_GeoInfo return value.
4725 ///
4727  HAPI_NodeId object_node_id,
4728  HAPI_GeoInfo * geo_info );
4729 
4730 /// @brief A helper method that gets the number of main geometry outputs inside
4731 /// an Object node or SOP node. If the node is an Object node, this
4732 /// method will return the cumulative number of geometry outputs for all
4733 /// geometry nodes that it contains. When searching for output geometry,
4734 /// this method will only consider subnetworks that have their display
4735 /// flag enabled.
4736 ///
4737 /// This method must be called before HAPI_GetOutputGeoInfos() is
4738 /// called.
4739 ///
4740 /// @ingroup GeometryGetters
4741 ///
4742 /// @param[in] session
4743 /// The session of Houdini you are interacting with.
4744 /// See @ref HAPI_Sessions for more on sessions.
4745 /// Pass NULL to just use the default in-process session.
4746 /// <!-- default NULL -->
4747 ///
4748 /// @param[in] node_id
4749 /// The node id of the Object or SOP node to get the geometry
4750 /// output count of.
4751 ///
4752 /// @param[out] count
4753 /// The number of geometry (SOP) outputs.
4755  HAPI_NodeId node_id,
4756  int* count);
4757 
4758 /// @brief Gets the geometry info structs (::HAPI_GeoInfo) for a node's
4759 /// main geometry outputs. This method can only be called after
4760 /// HAPI_GetOutputGeoCount() has been called with the same node id.
4761 ///
4762 /// @ingroup GeometryGetters
4763 ///
4764 /// @param[in] session
4765 /// The session of Houdini you are interacting with.
4766 /// See @ref HAPI_Sessions for more on sessions.
4767 /// Pass NULL to just use the default in-process session.
4768 /// <!-- default NULL -->
4769 ///
4770 /// @param[in] node_id
4771 /// The node id of the Object or SOP node to get the output
4772 /// geometry info structs (::HAPI_GeoInfo) for.
4773 ///
4774 /// @param[out] geo_infos_array
4775 /// Output array where the output geometry info structs will be
4776 /// stored. The size of the array must match the count argument
4777 /// returned by the HAPI_GetOutputGeoCount() method.
4778 ///
4779 /// @param[in] count
4780 /// Sanity check count. The count must be equal to the count
4781 /// returned by the HAPI_GetOutputGeoCount() method.
4783  HAPI_NodeId node_id,
4784  HAPI_GeoInfo* geo_infos_array,
4785  int count );
4786 
4787 /// @brief Get the geometry info struct (::HAPI_GeoInfo) on a SOP node.
4788 ///
4789 /// @ingroup GeometryGetters
4790 ///
4791 /// @param[in] session
4792 /// The session of Houdini you are interacting with.
4793 /// See @ref HAPI_Sessions for more on sessions.
4794 /// Pass NULL to just use the default in-process session.
4795 /// <!-- default NULL -->
4796 ///
4797 /// @param[in] node_id
4798 /// The node id.
4799 ///
4800 /// @param[out] geo_info
4801 /// ::HAPI_GeoInfo return value.
4802 ///
4803 HAPI_DECL HAPI_GetGeoInfo( const HAPI_Session * session,
4804  HAPI_NodeId node_id,
4805  HAPI_GeoInfo * geo_info );
4806 
4807 /// @brief Get a particular part info struct.
4808 ///
4809 /// @ingroup GeometryGetters
4810 ///
4811 /// @param[in] session
4812 /// The session of Houdini you are interacting with.
4813 /// See @ref HAPI_Sessions for more on sessions.
4814 /// Pass NULL to just use the default in-process session.
4815 /// <!-- default NULL -->
4816 ///
4817 /// @param[in] node_id
4818 /// The SOP node id.
4819 ///
4820 /// @param[in] part_id
4821 /// The part id.
4822 ///
4823 /// @param[out] part_info
4824 /// ::HAPI_PartInfo return value.
4825 ///
4826 HAPI_DECL HAPI_GetPartInfo( const HAPI_Session * session,
4827  HAPI_NodeId node_id,
4828  HAPI_PartId part_id,
4829  HAPI_PartInfo * part_info );
4830 
4831 
4832 /// @brief Gets the number of edges that belong to an edge group on a geometry
4833 /// part.
4834 ///
4835 /// @ingroup GeometryGetters
4836 ///
4837 /// @param[in] session
4838 /// The session of Houdini you are interacting with.
4839 /// See @ref HAPI_Sessions for more on sessions.
4840 /// Pass NULL to just use the default in-process session.
4841 /// <!-- default NULL -->
4842 ///
4843 /// @param[in] node_id
4844 /// The SOP node id.
4845 ///
4846 /// @param[in] part_id
4847 /// The part id.
4848 ///
4849 /// @param[in] group_name
4850 /// The name of the edge group.
4851 ///
4852 /// @param[out] edge_count
4853 /// The number of edges that belong to the group.
4854 ///
4856  HAPI_NodeId node_id,
4857  HAPI_PartId part_id,
4858  const char * group_name,
4859  int * edge_count );
4860 
4861 /// @brief Get the array of faces where the nth integer in the array is
4862 /// the number of vertices the nth face has.
4863 ///
4864 /// @ingroup GeometryGetters
4865 ///
4866 /// @param[in] session
4867 /// The session of Houdini you are interacting with.
4868 /// See @ref HAPI_Sessions for more on sessions.
4869 /// Pass NULL to just use the default in-process session.
4870 /// <!-- default NULL -->
4871 ///
4872 /// @param[in] node_id
4873 /// The node id.
4874 ///
4875 /// @param[in] part_id
4876 /// The part id.
4877 ///
4878 /// @param[out] face_counts_array
4879 /// An integer array at least the size of length.
4880 ///
4881 /// @param[in] start
4882 /// First index of range. Must be at least 0 and at
4883 /// most ::HAPI_PartInfo::faceCount - 1.
4884 /// <!-- default 0 -->
4885 ///
4886 /// @param[in] length
4887 /// Must be at least 0 and at most
4888 /// ::HAPI_PartInfo::faceCount - @p start.
4889 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
4890 ///
4891 HAPI_DECL HAPI_GetFaceCounts( const HAPI_Session * session,
4892  HAPI_NodeId node_id,
4893  HAPI_PartId part_id,
4894  int * face_counts_array,
4895  int start, int length );
4896 
4897 /// @brief Get array containing the vertex-point associations where the
4898 /// ith element in the array is the point index the ith vertex
4899 /// associates with.
4900 ///
4901 /// @ingroup GeometryGetters
4902 ///
4903 /// @param[in] session
4904 /// The session of Houdini you are interacting with.
4905 /// See @ref HAPI_Sessions for more on sessions.
4906 /// Pass NULL to just use the default in-process session.
4907 /// <!-- default NULL -->
4908 ///
4909 /// @param[in] node_id
4910 /// The node id.
4911 ///
4912 /// @param[in] part_id
4913 /// The part id.
4914 ///
4915 /// @param[out] vertex_list_array
4916 /// An integer array at least the size of length.
4917 ///
4918 /// @param[in] start
4919 /// First index of range. Must be at least 0 and at
4920 /// most ::HAPI_PartInfo::vertexCount - 1.
4921 /// <!-- default 0 -->
4922 ///
4923 /// @param[in] length
4924 /// Must be at least 0 and at most
4925 /// ::HAPI_PartInfo::vertexCount - @p start.
4926 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
4927 ///
4928 HAPI_DECL HAPI_GetVertexList( const HAPI_Session * session,
4929  HAPI_NodeId node_id,
4930  HAPI_PartId part_id,
4931  int * vertex_list_array,
4932  int start, int length );
4933 
4934 /// @defgroup Attributes
4935 /// Functions for working with attributes.
4936 
4937 /// @brief Get the attribute info struct for the attribute specified by name.
4938 ///
4939 /// @ingroup Attributes
4940 ///
4941 /// @param[in] session
4942 /// The session of Houdini you are interacting with.
4943 /// See @ref HAPI_Sessions for more on sessions.
4944 /// Pass NULL to just use the default in-process session.
4945 /// <!-- default NULL -->
4946 ///
4947 /// @param[in] node_id
4948 /// The node id.
4949 ///
4950 /// @param[in] part_id
4951 /// The part id.
4952 ///
4953 /// @param[in] name
4954 /// Attribute name.
4955 ///
4956 /// @param[in] owner
4957 /// Attribute owner.
4958 ///
4959 /// @param[out] attr_info
4960 /// ::HAPI_AttributeInfo to be filled. Check
4961 /// ::HAPI_AttributeInfo::exists to see if this attribute
4962 /// exists.
4963 ///
4965  HAPI_NodeId node_id,
4966  HAPI_PartId part_id,
4967  const char * name,
4968  HAPI_AttributeOwner owner,
4969  HAPI_AttributeInfo * attr_info );
4970 
4971 /// @brief Get list of attribute names by attribute owner. Note that the
4972 /// name string handles are only valid until the next time this
4973 /// function is called.
4974 ///
4975 /// @ingroup Attributes
4976 ///
4977 /// @param[in] session
4978 /// The session of Houdini you are interacting with.
4979 /// See @ref HAPI_Sessions for more on sessions.
4980 /// Pass NULL to just use the default in-process session.
4981 /// <!-- default NULL -->
4982 ///
4983 /// @param[in] node_id
4984 /// The node id.
4985 ///
4986 /// @param[in] part_id
4987 /// The part id.
4988 ///
4989 /// @param[in] owner
4990 /// The ::HAPI_AttributeOwner enum value specifying the
4991 /// owner of the attribute.
4992 ///
4993 /// @param[out] attribute_names_array
4994 /// Array of ints (string handles) to house the
4995 /// attribute names. Should be exactly the size of the
4996 /// appropriate attribute owner type count
4997 /// in ::HAPI_PartInfo.
4998 ///
4999 /// @param[in] count
5000 /// Sanity check count. Must be equal to the appropriate
5001 /// attribute owner type count in ::HAPI_PartInfo.
5002 ///
5004  HAPI_NodeId node_id,
5005  HAPI_PartId part_id,
5006  HAPI_AttributeOwner owner,
5007  HAPI_StringHandle * attribute_names_array,
5008  int count );
5009 
5010 /// @brief Get attribute integer data.
5011 ///
5012 /// @ingroup GeometryGetters Attributes
5013 ///
5014 /// @param[in] session
5015 /// The session of Houdini you are interacting with.
5016 /// See @ref HAPI_Sessions for more on sessions.
5017 /// Pass NULL to just use the default in-process session.
5018 /// <!-- default NULL -->
5019 ///
5020 /// @param[in] node_id
5021 /// The node id.
5022 ///
5023 /// @param[in] part_id
5024 /// The part id.
5025 ///
5026 /// @param[in] name
5027 /// Attribute name.
5028 ///
5029 /// @param[in] attr_info
5030 /// ::HAPI_AttributeInfo used as input for what tuple size.
5031 /// you want. Also contains some sanity checks like
5032 /// data type. Generally should be the same struct
5033 /// returned by ::HAPI_GetAttributeInfo().
5034 ///
5035 /// @param[in] stride
5036 /// Specifies how many items to skip over for each element.
5037 /// With a stride of -1, the stride will be set to
5038 /// @c attr_info->tuple_size. Otherwise, the stride will be
5039 /// set to the maximum of @c attr_info->tuple_size and
5040 /// @c stride.
5041 ///
5042 /// @param[out] data_array
5043 /// An integer array at least the size of
5044 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5045 ///
5046 /// @param[in] start
5047 /// First index of range. Must be at least 0 and at
5048 /// most ::HAPI_AttributeInfo::count - 1.
5049 /// <!-- default 0 -->
5050 ///
5051 /// @param[in] length
5052 /// Must be at least 0 and at most
5053 /// ::HAPI_AttributeInfo::count - @p start.
5054 /// Note, if 0 is passed for length, the function will just
5055 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5056 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5057 ///
5059  HAPI_NodeId node_id,
5060  HAPI_PartId part_id,
5061  const char * name,
5062  HAPI_AttributeInfo * attr_info,
5063  int stride,
5064  int * data_array,
5065  int start, int length );
5066 
5067 /// @brief Get array attribute integer data.
5068 /// Each entry in an array attribute can have varying array lengths.
5069 /// Therefore the array values are returned as a flat array, with
5070 /// another sizes array containing the lengths of each array entry.
5071 ///
5072 /// @ingroup GeometryGetters Attributes
5073 ///
5074 /// @param[in] session
5075 /// The session of Houdini you are interacting with.
5076 /// See @ref HAPI_Sessions for more on sessions.
5077 /// Pass NULL to just use the default in-process session.
5078 /// <!-- default NULL -->
5079 ///
5080 /// @param[in] node_id
5081 /// The node id.
5082 ///
5083 /// @param[in] part_id
5084 /// The part id.
5085 ///
5086 /// @param[in] name
5087 /// Attribute name.
5088 ///
5089 /// @param[in] attr_info
5090 /// ::HAPI_AttributeInfo used as input for what tuple size.
5091 /// you want. Also contains some sanity checks like
5092 /// data type. Generally should be the same struct
5093 /// returned by ::HAPI_GetAttributeInfo().
5094 ///
5095 /// @param[out] data_fixed_array
5096 /// An integer array at least the size of
5097 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5098 ///
5099 /// @param[in] data_fixed_length
5100 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5101 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5102 ///
5103 /// @param[out] sizes_fixed_array
5104 /// An integer array at least the size of
5105 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5106 /// <!-- source ::HAPI_AttributeInfo::count -->
5107 ///
5108 /// @param[in] start
5109 /// First index of range. Must be at least 0 and at
5110 /// most ::HAPI_AttributeInfo::count - 1.
5111 /// <!-- default 0 -->
5112 ///
5113 /// @param[in] sizes_fixed_length
5114 /// Must be at least 0 and at most
5115 /// ::HAPI_AttributeInfo::count - @p start.
5116 /// Note, if 0 is passed for length, the function will just
5117 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5118 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5119 ///
5121  HAPI_NodeId node_id,
5122  HAPI_PartId part_id,
5123  const char * name,
5124  HAPI_AttributeInfo * attr_info,
5125  int * data_fixed_array,
5126  int data_fixed_length,
5127  int * sizes_fixed_array,
5128  int start, int sizes_fixed_length );
5129 
5130 /// @brief Get attribute unsigned 8-bit integer data.
5131 ///
5132 /// @ingroup GeometryGetters Attributes
5133 ///
5134 /// @param[in] session
5135 /// The session of Houdini you are interacting with.
5136 /// See @ref HAPI_Sessions for more on sessions.
5137 /// Pass NULL to just use the default in-process session.
5138 /// <!-- default NULL -->
5139 ///
5140 /// @param[in] node_id
5141 /// The node id.
5142 ///
5143 /// @param[in] part_id
5144 /// The part id.
5145 ///
5146 /// @param[in] name
5147 /// Attribute name.
5148 ///
5149 /// @param[in] attr_info
5150 /// ::HAPI_AttributeInfo used as input for what tuple size.
5151 /// you want. Also contains some sanity checks like
5152 /// data type. Generally should be the same struct
5153 /// returned by ::HAPI_GetAttributeInfo().
5154 ///
5155 /// @param[in] stride
5156 /// Specifies how many items to skip over for each element.
5157 /// With a stride of -1, the stride will be set to
5158 /// @c attr_info->tuple_size. Otherwise, the stride will be
5159 /// set to the maximum of @c attr_info->tuple_size and
5160 /// @c stride.
5161 ///
5162 /// @param[out] data_array
5163 /// An unsigned 8-bit integer array at least the size of
5164 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5165 ///
5166 /// @param[in] start
5167 /// First index of range. Must be at least 0 and at
5168 /// most ::HAPI_AttributeInfo::count - 1.
5169 /// <!-- default 0 -->
5170 ///
5171 /// @param[in] length
5172 /// Must be at least 0 and at most
5173 /// ::HAPI_AttributeInfo::count - @p start.
5174 /// Note, if 0 is passed for length, the function will just
5175 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5176 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5177 ///
5179  HAPI_NodeId node_id,
5180  HAPI_PartId part_id,
5181  const char * name,
5182  HAPI_AttributeInfo * attr_info,
5183  int stride,
5184  HAPI_UInt8 * data_array,
5185  int start, int length );
5186 
5187 /// @brief Get array attribute unsigned 8-bit integer data.
5188 /// Each entry in an array attribute can have varying array lengths.
5189 /// Therefore the array values are returned as a flat array, with
5190 /// another sizes array containing the lengths of each array entry.
5191 ///
5192 /// @ingroup GeometryGetters Attributes
5193 ///
5194 /// @param[in] session
5195 /// The session of Houdini you are interacting with.
5196 /// See @ref HAPI_Sessions for more on sessions.
5197 /// Pass NULL to just use the default in-process session.
5198 /// <!-- default NULL -->
5199 ///
5200 /// @param[in] node_id
5201 /// The node id.
5202 ///
5203 /// @param[in] part_id
5204 /// The part id.
5205 ///
5206 /// @param[in] name
5207 /// Attribute name.
5208 ///
5209 /// @param[in] attr_info
5210 /// ::HAPI_AttributeInfo used as input for what tuple size.
5211 /// you want. Also contains some sanity checks like
5212 /// data type. Generally should be the same struct
5213 /// returned by ::HAPI_GetAttributeInfo().
5214 ///
5215 /// @param[out] data_fixed_array
5216 /// An unsigned 8-bit integer array at least the size of
5217 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5218 ///
5219 /// @param[in] data_fixed_length
5220 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5221 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5222 ///
5223 /// @param[out] sizes_fixed_array
5224 /// An integer array at least the size of
5225 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5226 ///
5227 /// @param[in] start
5228 /// First index of range. Must be at least 0 and at
5229 /// most ::HAPI_AttributeInfo::count - 1.
5230 /// <!-- default 0 -->
5231 ///
5232 /// @param[in] sizes_fixed_length
5233 /// Must be at least 0 and at most
5234 /// ::HAPI_AttributeInfo::count - @p start.
5235 /// Note, if 0 is passed for length, the function will just
5236 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5237 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5238 ///
5240  HAPI_NodeId node_id,
5241  HAPI_PartId part_id,
5242  const char * name,
5243  HAPI_AttributeInfo * attr_info,
5244  HAPI_UInt8 * data_fixed_array,
5245  int data_fixed_length,
5246  int * sizes_fixed_array,
5247  int start, int sizes_fixed_length );
5248 
5249 /// @brief Get attribute 8-bit integer data.
5250 ///
5251 /// @ingroup GeometryGetters Attributes
5252 ///
5253 /// @param[in] session
5254 /// The session of Houdini you are interacting with.
5255 /// See @ref HAPI_Sessions for more on sessions.
5256 /// Pass NULL to just use the default in-process session.
5257 /// <!-- default NULL -->
5258 ///
5259 /// @param[in] node_id
5260 /// The node id.
5261 ///
5262 /// @param[in] part_id
5263 /// The part id.
5264 ///
5265 /// @param[in] name
5266 /// Attribute name.
5267 ///
5268 /// @param[in] attr_info
5269 /// ::HAPI_AttributeInfo used as input for what tuple size.
5270 /// you want. Also contains some sanity checks like
5271 /// data type. Generally should be the same struct
5272 /// returned by ::HAPI_GetAttributeInfo().
5273 ///
5274 /// @param[in] stride
5275 /// Specifies how many items to skip over for each element.
5276 /// With a stride of -1, the stride will be set to
5277 /// @c attr_info->tuple_size. Otherwise, the stride will be
5278 /// set to the maximum of @c attr_info->tuple_size and
5279 /// @c stride.
5280 ///
5281 /// @param[out] data_array
5282 /// An 8-bit integer array at least the size of
5283 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5284 ///
5285 /// @param[in] start
5286 /// First index of range. Must be at least 0 and at
5287 /// most ::HAPI_AttributeInfo::count - 1.
5288 /// <!-- default 0 -->
5289 ///
5290 /// @param[in] length
5291 /// Must be at least 0 and at most
5292 /// ::HAPI_AttributeInfo::count - @p start.
5293 /// Note, if 0 is passed for length, the function will just
5294 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5295 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5296 ///
5298  HAPI_NodeId node_id,
5299  HAPI_PartId part_id,
5300  const char * name,
5301  HAPI_AttributeInfo * attr_info,
5302  int stride,
5303  HAPI_Int8 * data_array,
5304  int start, int length );
5305 
5306 /// @brief Get array attribute 8-bit integer data.
5307 /// Each entry in an array attribute can have varying array lengths.
5308 /// Therefore the array values are returned as a flat array, with
5309 /// another sizes array containing the lengths of each array entry.
5310 ///
5311 /// @ingroup GeometryGetters Attributes
5312 ///
5313 /// @param[in] session
5314 /// The session of Houdini you are interacting with.
5315 /// See @ref HAPI_Sessions for more on sessions.
5316 /// Pass NULL to just use the default in-process session.
5317 /// <!-- default NULL -->
5318 ///
5319 /// @param[in] node_id
5320 /// The node id.
5321 ///
5322 /// @param[in] part_id
5323 /// The part id.
5324 ///
5325 /// @param[in] name
5326 /// Attribute name.
5327 ///
5328 /// @param[in] attr_info
5329 /// ::HAPI_AttributeInfo used as input for what tuple size.
5330 /// you want. Also contains some sanity checks like
5331 /// data type. Generally should be the same struct
5332 /// returned by ::HAPI_GetAttributeInfo().
5333 ///
5334 /// @param[out] data_fixed_array
5335 /// An 8-bit integer array at least the size of
5336 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5337 ///
5338 /// @param[in] data_fixed_length
5339 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5340 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5341 ///
5342 /// @param[out] sizes_fixed_array
5343 /// An integer array at least the size of
5344 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5345 ///
5346 /// @param[in] start
5347 /// First index of range. Must be at least 0 and at
5348 /// most ::HAPI_AttributeInfo::count - 1.
5349 /// <!-- default 0 -->
5350 ///
5351 /// @param[in] sizes_fixed_length
5352 /// Must be at least 0 and at most
5353 /// ::HAPI_AttributeInfo::count - @p start.
5354 /// Note, if 0 is passed for length, the function will just
5355 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5356 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5357 ///
5359  HAPI_NodeId node_id,
5360  HAPI_PartId part_id,
5361  const char * name,
5362  HAPI_AttributeInfo * attr_info,
5363  HAPI_Int8 * data_fixed_array,
5364  int data_fixed_length,
5365  int * sizes_fixed_array,
5366  int start, int sizes_fixed_length );
5367 
5368 /// @brief Get attribute 16-bit integer data.
5369 ///
5370 /// @ingroup GeometryGetters Attributes
5371 ///
5372 /// @param[in] session
5373 /// The session of Houdini you are interacting with.
5374 /// See @ref HAPI_Sessions for more on sessions.
5375 /// Pass NULL to just use the default in-process session.
5376 /// <!-- default NULL -->
5377 ///
5378 /// @param[in] node_id
5379 /// The node id.
5380 ///
5381 /// @param[in] part_id
5382 /// The part id.
5383 ///
5384 /// @param[in] name
5385 /// Attribute name.
5386 ///
5387 /// @param[in] attr_info
5388 /// ::HAPI_AttributeInfo used as input for what tuple size.
5389 /// you want. Also contains some sanity checks like
5390 /// data type. Generally should be the same struct
5391 /// returned by ::HAPI_GetAttributeInfo().
5392 ///
5393 /// @param[in] stride
5394 /// Specifies how many items to skip over for each element.
5395 /// With a stride of -1, the stride will be set to
5396 /// @c attr_info->tuple_size. Otherwise, the stride will be
5397 /// set to the maximum of @c attr_info->tuple_size and
5398 /// @c stride.
5399 ///
5400 /// @param[out] data_array
5401 /// An 16-bit integer array at least the size of
5402 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5403 ///
5404 /// @param[in] start
5405 /// First index of range. Must be at least 0 and at
5406 /// most ::HAPI_AttributeInfo::count - 1.
5407 /// <!-- default 0 -->
5408 ///
5409 /// @param[in] length
5410 /// Must be at least 0 and at most
5411 /// ::HAPI_AttributeInfo::count - @p start.
5412 /// Note, if 0 is passed for length, the function will just
5413 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5414 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5415 ///
5417  HAPI_NodeId node_id,
5418  HAPI_PartId part_id,
5419  const char * name,
5420  HAPI_AttributeInfo * attr_info,
5421  int stride,
5422  HAPI_Int16 * data_array,
5423  int start, int length );
5424 
5425 /// @brief Get array attribute 16-bit integer data.
5426 /// Each entry in an array attribute can have varying array lengths.
5427 /// Therefore the array values are returned as a flat array, with
5428 /// another sizes array containing the lengths of each array entry.
5429 ///
5430 /// @ingroup GeometryGetters Attributes
5431 ///
5432 /// @param[in] session
5433 /// The session of Houdini you are interacting with.
5434 /// See @ref HAPI_Sessions for more on sessions.
5435 /// Pass NULL to just use the default in-process session.
5436 /// <!-- default NULL -->
5437 ///
5438 /// @param[in] node_id
5439 /// The node id.
5440 ///
5441 /// @param[in] part_id
5442 /// The part id.
5443 ///
5444 /// @param[in] name
5445 /// Attribute name.
5446 ///
5447 /// @param[in] attr_info
5448 /// ::HAPI_AttributeInfo used as input for what tuple size.
5449 /// you want. Also contains some sanity checks like
5450 /// data type. Generally should be the same struct
5451 /// returned by ::HAPI_GetAttributeInfo().
5452 ///
5453 /// @param[out] data_fixed_array
5454 /// An 16-bit integer array at least the size of
5455 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5456 ///
5457 /// @param[in] data_fixed_length
5458 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5459 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5460 ///
5461 /// @param[out] sizes_fixed_array
5462 /// An integer array at least the size of
5463 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5464 ///
5465 /// @param[in] start
5466 /// First index of range. Must be at least 0 and at
5467 /// most ::HAPI_AttributeInfo::count - 1.
5468 /// <!-- default 0 -->
5469 ///
5470 /// @param[in] sizes_fixed_length
5471 /// Must be at least 0 and at most
5472 /// ::HAPI_AttributeInfo::count - @p start.
5473 /// Note, if 0 is passed for length, the function will just
5474 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5475 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5476 ///
5478  HAPI_NodeId node_id,
5479  HAPI_PartId part_id,
5480  const char * name,
5481  HAPI_AttributeInfo * attr_info,
5482  HAPI_Int16 * data_fixed_array,
5483  int data_fixed_length,
5484  int * sizes_fixed_array,
5485  int start, int sizes_fixed_length );
5486 
5487 /// @brief Get attribute 64-bit integer data.
5488 ///
5489 /// @ingroup GeometryGetters Attributes
5490 ///
5491 /// @param[in] session
5492 /// The session of Houdini you are interacting with.
5493 /// See @ref HAPI_Sessions for more on sessions.
5494 /// Pass NULL to just use the default in-process session.
5495 /// <!-- default NULL -->
5496 ///
5497 /// @param[in] node_id
5498 /// The node id.
5499 ///
5500 /// @param[in] part_id
5501 /// The part id.
5502 ///
5503 /// @param[in] name
5504 /// Attribute name.
5505 ///
5506 /// @param[in] attr_info
5507 /// ::HAPI_AttributeInfo used as input for what tuple size.
5508 /// you want. Also contains some sanity checks like
5509 /// data type. Generally should be the same struct
5510 /// returned by ::HAPI_GetAttributeInfo().
5511 ///
5512 /// @param[in] stride
5513 /// Specifies how many items to skip over for each element.
5514 /// With a stride of -1, the stride will be set to
5515 /// @c attr_info->tuple_size. Otherwise, the stride will be
5516 /// set to the maximum of @c attr_info->tuple_size and
5517 /// @c stride.
5518 ///
5519 /// @param[out] data_array
5520 /// An 64-bit integer array at least the size of
5521 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5522 ///
5523 /// @param[in] start
5524 /// First index of range. Must be at least 0 and at
5525 /// most ::HAPI_AttributeInfo::count - 1.
5526 /// <!-- default 0 -->
5527 ///
5528 /// @param[in] length
5529 /// Must be at least 0 and at most
5530 /// ::HAPI_AttributeInfo::count - @p start.
5531 /// Note, if 0 is passed for length, the function will just
5532 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5533 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5534 ///
5536  HAPI_NodeId node_id,
5537  HAPI_PartId part_id,
5538  const char * name,
5539  HAPI_AttributeInfo * attr_info,
5540  int stride,
5541  HAPI_Int64 * data_array,
5542  int start, int length );
5543 
5544 /// @brief Get array attribute 64-bit integer data.
5545 /// Each entry in an array attribute can have varying array lengths.
5546 /// Therefore the array values are returned as a flat array, with
5547 /// another sizes array containing the lengths of each array entry.
5548 ///
5549 /// @ingroup GeometryGetters Attributes
5550 ///
5551 /// @param[in] session
5552 /// The session of Houdini you are interacting with.
5553 /// See @ref HAPI_Sessions for more on sessions.
5554 /// Pass NULL to just use the default in-process session.
5555 /// <!-- default NULL -->
5556 ///
5557 /// @param[in] node_id
5558 /// The node id.
5559 ///
5560 /// @param[in] part_id
5561 /// The part id.
5562 ///
5563 /// @param[in] name
5564 /// Attribute name.
5565 ///
5566 /// @param[in] attr_info
5567 /// ::HAPI_AttributeInfo used as input for what tuple size.
5568 /// you want. Also contains some sanity checks like
5569 /// data type. Generally should be the same struct
5570 /// returned by ::HAPI_GetAttributeInfo().
5571 ///
5572 /// @param[out] data_fixed_array
5573 /// An 64-bit integer array at least the size of
5574 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5575 ///
5576 /// @param[in] data_fixed_length
5577 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5578 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5579 ///
5580 /// @param[out] sizes_fixed_array
5581 /// An integer array at least the size of
5582 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5583 ///
5584 /// @param[in] start
5585 /// First index of range. Must be at least 0 and at
5586 /// most ::HAPI_AttributeInfo::count - 1.
5587 /// <!-- default 0 -->
5588 ///
5589 /// @param[in] sizes_fixed_length
5590 /// Must be at least 0 and at most
5591 /// ::HAPI_AttributeInfo::count - @p start.
5592 /// Note, if 0 is passed for length, the function will just
5593 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5594 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5595 ///
5597  HAPI_NodeId node_id,
5598  HAPI_PartId part_id,
5599  const char * name,
5600  HAPI_AttributeInfo * attr_info,
5601  HAPI_Int64 * data_fixed_array,
5602  int data_fixed_length,
5603  int * sizes_fixed_array,
5604  int start, int sizes_fixed_length );
5605 
5606 /// @brief Get attribute float data.
5607 ///
5608 /// @ingroup GeometryGetters Attributes
5609 ///
5610 /// @param[in] session
5611 /// The session of Houdini you are interacting with.
5612 /// See @ref HAPI_Sessions for more on sessions.
5613 /// Pass NULL to just use the default in-process session.
5614 /// <!-- default NULL -->
5615 ///
5616 /// @param[in] node_id
5617 /// The node id.
5618 ///
5619 /// @param[in] part_id
5620 /// The part id.
5621 ///
5622 /// @param[in] name
5623 /// Attribute name.
5624 ///
5625 /// @param[in] attr_info
5626 /// ::HAPI_AttributeInfo used as input for what tuple size.
5627 /// you want. Also contains some sanity checks like
5628 /// data type. Generally should be the same struct
5629 /// returned by ::HAPI_GetAttributeInfo().
5630 ///
5631 /// @param[in] stride
5632 /// Specifies how many items to skip over for each element.
5633 /// With a stride of -1, the stride will be set to
5634 /// @c attr_info->tuple_size. Otherwise, the stride will be
5635 /// set to the maximum of @c attr_info->tuple_size and
5636 /// @c stride.
5637 ///
5638 /// @param[out] data_array
5639 /// An float array at least the size of
5640 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5641 ///
5642 /// @param[in] start
5643 /// First index of range. Must be at least 0 and at
5644 /// most ::HAPI_AttributeInfo::count - 1.
5645 /// <!-- default 0 -->
5646 ///
5647 /// @param[in] length
5648 /// Must be at least 0 and at most
5649 /// ::HAPI_AttributeInfo::count - @p start.
5650 /// Note, if 0 is passed for length, the function will just
5651 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5652 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5653 ///
5655  HAPI_NodeId node_id,
5656  HAPI_PartId part_id,
5657  const char * name,
5658  HAPI_AttributeInfo * attr_info,
5659  int stride,
5660  float * data_array,
5661  int start, int length );
5662 
5663 /// @brief Get array attribute float data.
5664 /// Each entry in an array attribute can have varying array lengths.
5665 /// Therefore the array values are returned as a flat array, with
5666 /// another sizes array containing the lengths of each array entry.
5667 ///
5668 /// @ingroup GeometryGetters Attributes
5669 ///
5670 /// @param[in] session
5671 /// The session of Houdini you are interacting with.
5672 /// See @ref HAPI_Sessions for more on sessions.
5673 /// Pass NULL to just use the default in-process session.
5674 /// <!-- default NULL -->
5675 ///
5676 /// @param[in] node_id
5677 /// The node id.
5678 ///
5679 /// @param[in] part_id
5680 /// The part id.
5681 ///
5682 /// @param[in] name
5683 /// Attribute name.
5684 ///
5685 /// @param[in] attr_info
5686 /// ::HAPI_AttributeInfo used as input for what tuple size.
5687 /// you want. Also contains some sanity checks like
5688 /// data type. Generally should be the same struct
5689 /// returned by ::HAPI_GetAttributeInfo().
5690 ///
5691 /// @param[out] data_fixed_array
5692 /// An float array at least the size of
5693 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5694 ///
5695 /// @param[in] data_fixed_length
5696 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5697 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5698 ///
5699 /// @param[out] sizes_fixed_array
5700 /// An integer array at least the size of
5701 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5702 ///
5703 /// @param[in] start
5704 /// First index of range. Must be at least 0 and at
5705 /// most ::HAPI_AttributeInfo::count - 1.
5706 /// <!-- default 0 -->
5707 ///
5708 /// @param[in] sizes_fixed_length
5709 /// Must be at least 0 and at most
5710 /// ::HAPI_AttributeInfo::count - @p start.
5711 /// Note, if 0 is passed for length, the function will just
5712 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5713 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5714 ///
5716  HAPI_NodeId node_id,
5717  HAPI_PartId part_id,
5718  const char * name,
5719  HAPI_AttributeInfo * attr_info,
5720  float * data_fixed_array,
5721  int data_fixed_length,
5722  int * sizes_fixed_array,
5723  int start, int sizes_fixed_length );
5724 
5725 /// @brief Get 64-bit attribute float data.
5726 ///
5727 /// @ingroup GeometryGetters Attributes
5728 ///
5729 /// @param[in] session
5730 /// The session of Houdini you are interacting with.
5731 /// See @ref HAPI_Sessions for more on sessions.
5732 /// Pass NULL to just use the default in-process session.
5733 /// <!-- default NULL -->
5734 ///
5735 /// @param[in] node_id
5736 /// The node id.
5737 ///
5738 /// @param[in] part_id
5739 /// The part id.
5740 ///
5741 /// @param[in] name
5742 /// Attribute name.
5743 ///
5744 /// @param[in] attr_info
5745 /// ::HAPI_AttributeInfo used as input for what tuple size.
5746 /// you want. Also contains some sanity checks like
5747 /// data type. Generally should be the same struct
5748 /// returned by ::HAPI_GetAttributeInfo().
5749 ///
5750 /// @param[in] stride
5751 /// Specifies how many items to skip over for each element.
5752 /// With a stride of -1, the stride will be set to
5753 /// @c attr_info->tuple_size. Otherwise, the stride will be
5754 /// set to the maximum of @c attr_info->tuple_size and
5755 /// @c stride.
5756 ///
5757 /// @param[out] data_array
5758 /// An 64-bit float array at least the size of
5759 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5760 ///
5761 /// @param[in] start
5762 /// First index of range. Must be at least 0 and at
5763 /// most ::HAPI_AttributeInfo::count - 1.
5764 /// <!-- default 0 -->
5765 ///
5766 /// @param[in] length
5767 /// Must be at least 0 and at most
5768 /// ::HAPI_AttributeInfo::count - @p start.
5769 /// Note, if 0 is passed for length, the function will just
5770 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5771 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5772 ///
5774  HAPI_NodeId node_id,
5775  HAPI_PartId part_id,
5776  const char * name,
5777  HAPI_AttributeInfo * attr_info,
5778  int stride,
5779  double * data_array,
5780  int start, int length );
5781 
5782 /// @brief Get array attribute 64-bit float data.
5783 /// Each entry in an array attribute can have varying array lengths.
5784 /// Therefore the array values are returned as a flat array, with
5785 /// another sizes array containing the lengths of each array entry.
5786 ///
5787 /// @ingroup GeometryGetters Attributes
5788 ///
5789 /// @param[in] session
5790 /// The session of Houdini you are interacting with.
5791 /// See @ref HAPI_Sessions for more on sessions.
5792 /// Pass NULL to just use the default in-process session.
5793 /// <!-- default NULL -->
5794 ///
5795 /// @param[in] node_id
5796 /// The node id.
5797 ///
5798 /// @param[in] part_id
5799 /// The part id.
5800 ///
5801 /// @param[in] name
5802 /// Attribute name.
5803 ///
5804 /// @param[in] attr_info
5805 /// ::HAPI_AttributeInfo used as input for the.
5806 /// totalArrayElements. Also contains some sanity checks like
5807 /// data type. Generally should be the same struct
5808 /// returned by ::HAPI_GetAttributeInfo().
5809 ///
5810 /// @param[out] data_fixed_array
5811 /// An 64-bit float array at least the size of
5812 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5813 ///
5814 /// @param[in] data_fixed_length
5815 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5816 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5817 ///
5818 /// @param[out] sizes_fixed_array
5819 /// An integer array at least the size of
5820 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5821 ///
5822 /// @param[in] start
5823 /// First index of range. Must be at least 0 and at
5824 /// most ::HAPI_AttributeInfo::count - 1.
5825 /// <!-- default 0 -->
5826 ///
5827 /// @param[in] sizes_fixed_length
5828 /// Must be at least 0 and at most
5829 /// ::HAPI_AttributeInfo::count - @p start.
5830 /// Note, if 0 is passed for length, the function will just
5831 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5832 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5833 ///
5835  HAPI_NodeId node_id,
5836  HAPI_PartId part_id,
5837  const char * name,
5838  HAPI_AttributeInfo * attr_info,
5839  double * data_fixed_array,
5840  int data_fixed_length,
5841  int * sizes_fixed_array,
5842  int start, int sizes_fixed_length );
5843 
5844 /// @brief Get attribute string data. Note that the string handles
5845 /// returned are only valid until the next time this function
5846 /// is called.
5847 ///
5848 /// @ingroup GeometryGetters Attributes
5849 ///
5850 /// @param[in] session
5851 /// The session of Houdini you are interacting with.
5852 /// See @ref HAPI_Sessions for more on sessions.
5853 /// Pass NULL to just use the default in-process session.
5854 /// <!-- default NULL -->
5855 ///
5856 /// @param[in] node_id
5857 /// The node id.
5858 ///
5859 /// @param[in] part_id
5860 /// The part id.
5861 ///
5862 /// @param[in] name
5863 /// Attribute name.
5864 ///
5865 /// @param[in] attr_info
5866 /// ::HAPI_AttributeInfo used as input for what tuple size.
5867 /// you want. Also contains some sanity checks like
5868 /// data type. Generally should be the same struct
5869 /// returned by ::HAPI_GetAttributeInfo().
5870 ///
5871 /// @param[out] data_array
5872 /// An ::HAPI_StringHandle array at least the size of
5873 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5874 ///
5875 /// @param[in] start
5876 /// First index of range. Must be at least 0 and at
5877 /// most ::HAPI_AttributeInfo::count - 1.
5878 /// <!-- default 0 -->
5879 ///
5880 /// @param[in] length
5881 /// Must be at least 0 and at most
5882 /// ::HAPI_AttributeInfo::count - @p start.
5883 /// Note, if 0 is passed for length, the function will just
5884 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5885 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5886 ///
5887 /// @warning The string handles should be used to retrieve the strings
5888 /// immediately and are invalidated when another call to get
5889 /// this attribute's data is made.
5890 ///
5892  HAPI_NodeId node_id,
5893  HAPI_PartId part_id,
5894  const char * name,
5895  HAPI_AttributeInfo * attr_info,
5896  HAPI_StringHandle * data_array,
5897  int start, int length );
5898 
5899 /// @brief Get array attribute string data.
5900 /// Each entry in an array attribute can have varying array lengths.
5901 /// Therefore the array values are returned as a flat array, with
5902 /// another sizes array containing the lengths of each array entry.
5903 /// Note that the string handles returned are only valid until
5904 /// the next time this function is called.
5905 ///
5906 /// @ingroup GeometryGetters Attributes
5907 ///
5908 /// @param[in] session
5909 /// The session of Houdini you are interacting with.
5910 /// See @ref HAPI_Sessions for more on sessions.
5911 /// Pass NULL to just use the default in-process session.
5912 /// <!-- default NULL -->
5913 ///
5914 /// @param[in] node_id
5915 /// The node id.
5916 ///
5917 /// @param[in] part_id
5918 /// The part id.
5919 ///
5920 /// @param[in] name
5921 /// Attribute name.
5922 ///
5923 /// @param[in] attr_info
5924 /// ::HAPI_AttributeInfo used as input for the.
5925 /// totalArrayElements. Also contains some sanity checks like
5926 /// data type. Generally should be the same struct
5927 /// returned by ::HAPI_GetAttributeInfo().
5928 ///
5929 /// @param[out] data_fixed_array
5930 /// An ::HAPI_StringHandle array at least the size of
5931 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5932 ///
5933 /// @param[in] data_fixed_length
5934 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5935 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5936 ///
5937 /// @param[out] sizes_fixed_array
5938 /// An integer array at least the size of
5939 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5940 ///
5941 /// @param[in] start
5942 /// First index of range. Must be at least 0 and at
5943 /// most ::HAPI_AttributeInfo::count - 1.
5944 /// <!-- default 0 -->
5945 ///
5946 /// @param[in] sizes_fixed_length
5947 /// Must be at least 0 and at most
5948 /// ::HAPI_AttributeInfo::count - @p start.
5949 /// Note, if 0 is passed for length, the function will just
5950 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5951 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5952 ///
5953 /// @warning The string handles should be used to retrieve the strings
5954 /// immediately and are invalidated when another call to get
5955 /// this attribute's data is made.
5956 ///
5958  HAPI_NodeId node_id,
5959  HAPI_PartId part_id,
5960  const char * name,
5961  HAPI_AttributeInfo * attr_info,
5962  HAPI_StringHandle * data_fixed_array,
5963  int data_fixed_length,
5964  int * sizes_fixed_array,
5965  int start, int sizes_fixed_length );
5966 
5967 /// @brief Get attribute dictionary data.
5968 ///
5969 /// Dictionary data is serialized as JSON-encoded strings.
5970 /// Note that the string handles returned are only valid until the next
5971 /// time this function is called.
5972 ///
5973 /// @ingroup GeometryGetters Attributes
5974 ///
5975 /// @param[in] session
5976 /// The session of Houdini you are interacting with.
5977 /// See @ref HAPI_Sessions for more on sessions.
5978 /// Pass NULL to just use the default in-process session.
5979 /// <!-- default NULL -->
5980 ///
5981 /// @param[in] node_id
5982 /// The node id.
5983 ///
5984 /// @param[in] part_id
5985 /// The part id.
5986 ///
5987 /// @param[in] name
5988 /// Attribute name.
5989 ///
5990 /// @param[in] attr_info
5991 /// ::HAPI_AttributeInfo used as input for what tuple size
5992 /// you want. Also contains some sanity checks like
5993 /// data type. Generally should be the same struct
5994 /// returned by ::HAPI_GetAttributeInfo().
5995 ///
5996 /// @param[out] data_array
5997 /// An ::HAPI_StringHandle array at least the size of
5998 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5999 ///
6000 /// @param[in] start
6001 /// First index of range. Must be at least 0 and at
6002 /// most ::HAPI_AttributeInfo::count - 1.
6003 /// <!-- default 0 -->
6004 ///
6005 /// @param[in] length
6006 /// Must be at least 0 and at most
6007 /// ::HAPI_AttributeInfo::count - @p start.
6008 /// Note, if 0 is passed for length, the function will just
6009 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6010 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6011 ///
6012 /// @warning The string handles should be used to retrieve the strings
6013 /// immediately and are invalidated when another call to get
6014 /// this attribute's data is made.
6015 ///
6017  HAPI_NodeId node_id,
6018  HAPI_PartId part_id,
6019  const char* name,
6020  HAPI_AttributeInfo* attr_info,
6021  HAPI_StringHandle* data_array,
6022  int start,
6023  int length );
6024 
6025 /// @brief Get array attribute dictionary data.
6026 /// Each entry in an array attribute can have varying array lengths.
6027 /// Therefore the array values are returned as a flat array, with
6028 /// another sizes array containing the lengths of each array entry.
6029 ///
6030 /// Dictionary data is serialized as JSON-encoded strings.
6031 /// Note that the string handles returned are only valid until
6032 /// the next time this function is called.
6033 ///
6034 /// @ingroup GeometryGetters Attributes
6035 ///
6036 /// @param[in] session
6037 /// The session of Houdini you are interacting with.
6038 /// See @ref HAPI_Sessions for more on sessions.
6039 /// Pass NULL to just use the default in-process session.
6040 /// <!-- default NULL -->
6041 ///
6042 /// @param[in] node_id
6043 /// The node id.
6044 ///
6045 /// @param[in] part_id
6046 /// The part id.
6047 ///
6048 /// @param[in] name
6049 /// Attribute name.
6050 ///
6051 /// @param[in] attr_info
6052 /// ::HAPI_AttributeInfo used as input for the.
6053 /// totalArrayElements. Also contains some sanity checks like
6054 /// data type. Generally should be the same struct
6055 /// returned by ::HAPI_GetAttributeInfo().
6056 ///
6057 /// @param[out] data_fixed_array
6058 /// An ::HAPI_StringHandle array at least the size of
6059 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6060 ///
6061 /// @param[in] data_fixed_length
6062 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6063 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6064 ///
6065 /// @param[out] sizes_fixed_array
6066 /// An integer array at least the size of
6067 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6068 ///
6069 /// @param[in] start
6070 /// First index of range. Must be at least 0 and at
6071 /// most ::HAPI_AttributeInfo::count - 1.
6072 /// <!-- default 0 -->
6073 ///
6074 /// @param[in] sizes_fixed_length
6075 /// Must be at least 0 and at most
6076 /// ::HAPI_AttributeInfo::count - @p start.
6077 /// Note, if 0 is passed for length, the function will just
6078 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6079 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6080 ///
6081 /// @warning The string handles should be used to retrieve the strings
6082 /// immediately and are invalidated when another call to get
6083 /// this attribute's data is made.
6084 ///
6086  HAPI_NodeId node_id,
6087  HAPI_PartId part_id,
6088  const char* name,
6089  HAPI_AttributeInfo* attr_info,
6090  HAPI_StringHandle* data_fixed_array,
6091  int data_fixed_length,
6092  int* sizes_fixed_array,
6093  int start,
6094  int sizes_fixed_length );
6095 
6096 
6097 /// @brief Get attribute integer data asynchronously.
6098 ///
6099 /// @ingroup GeometryGetters Attributes
6100 ///
6101 /// @param[in] session
6102 /// The session of Houdini you are interacting with.
6103 /// See @ref HAPI_Sessions for more on sessions.
6104 /// Pass NULL to just use the default in-process session.
6105 /// <!-- default NULL -->
6106 ///
6107 /// @param[in] node_id
6108 /// The node id.
6109 ///
6110 /// @param[in] part_id
6111 /// The part id.
6112 ///
6113 /// @param[in] name
6114 /// Attribute name.
6115 ///
6116 /// @param[in] attr_info
6117 /// ::HAPI_AttributeInfo used as input for what tuple size.
6118 /// you want. Also contains some sanity checks like
6119 /// data type. Generally should be the same struct
6120 /// returned by ::HAPI_GetAttributeInfo().
6121 ///
6122 /// @param[in] stride
6123 /// Specifies how many items to skip over for each element.
6124 /// With a stride of -1, the stride will be set to
6125 /// @c attr_info->tuple_size. Otherwise, the stride will be
6126 /// set to the maximum of @c attr_info->tuple_size and
6127 /// @c stride.
6128 ///
6129 /// @param[out] data_array
6130 /// An integer array at least the size of
6131 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6132 ///
6133 /// @param[in] start
6134 /// First index of range. Must be at least 0 and at
6135 /// most ::HAPI_AttributeInfo::count - 1.
6136 /// <!-- default 0 -->
6137 ///
6138 /// @param[in] length
6139 /// Must be at least 0 and at most
6140 /// ::HAPI_AttributeInfo::count - @p start.
6141 /// Note, if 0 is passed for length, the function will just
6142 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6143 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6144 ///
6145 /// @param[out] job_id
6146 /// The id assigned to the job.
6147 ///
6149  HAPI_NodeId node_id,
6150  HAPI_PartId part_id,
6151  const char * name,
6152  HAPI_AttributeInfo * attr_info,
6153  int stride,
6154  int * data_array,
6155  int start, int length,
6156  int * job_id );
6157 
6158 
6159 /// @brief Get attribute unsigned 8-bit integer data asynchronously.
6160 ///
6161 /// @ingroup GeometryGetters Attributes
6162 ///
6163 /// @param[in] session
6164 /// The session of Houdini you are interacting with.
6165 /// See @ref HAPI_Sessions for more on sessions.
6166 /// Pass NULL to just use the default in-process session.
6167 /// <!-- default NULL -->
6168 ///
6169 /// @param[in] node_id
6170 /// The node id.
6171 ///
6172 /// @param[in] part_id
6173 /// The part id.
6174 ///
6175 /// @param[in] name
6176 /// Attribute name.
6177 ///
6178 /// @param[in] attr_info
6179 /// ::HAPI_AttributeInfo used as input for what tuple size.
6180 /// you want. Also contains some sanity checks like
6181 /// data type. Generally should be the same struct
6182 /// returned by ::HAPI_GetAttributeInfo().
6183 ///
6184 /// @param[in] stride
6185 /// Specifies how many items to skip over for each element.
6186 /// With a stride of -1, the stride will be set to
6187 /// @c attr_info->tuple_size. Otherwise, the stride will be
6188 /// set to the maximum of @c attr_info->tuple_size and
6189 /// @c stride.
6190 ///
6191 /// @param[out] data_array
6192 /// An integer array at least the size of
6193 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6194 ///
6195 /// @param[in] start
6196 /// First index of range. Must be at least 0 and at
6197 /// most ::HAPI_AttributeInfo::count - 1.
6198 /// <!-- default 0 -->
6199 ///
6200 /// @param[in] length
6201 /// Must be at least 0 and at most
6202 /// ::HAPI_AttributeInfo::count - @p start.
6203 /// Note, if 0 is passed for length, the function will just
6204 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6205 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6206 ///
6207 /// @param[out] job_id
6208 /// The id assigned to the job.
6209 ///
6211  HAPI_NodeId node_id,
6212  HAPI_PartId part_id,
6213  const char * name,
6214  HAPI_AttributeInfo * attr_info,
6215  int stride,
6216  HAPI_UInt8 * data_array,
6217  int start, int length,
6218  int * job_id );
6219 
6220 
6221 /// @brief Get attribute 8-bit integer data asynchronously.
6222 ///
6223 /// @ingroup GeometryGetters Attributes
6224 ///
6225 /// @param[in] session
6226 /// The session of Houdini you are interacting with.
6227 /// See @ref HAPI_Sessions for more on sessions.
6228 /// Pass NULL to just use the default in-process session.
6229 /// <!-- default NULL -->
6230 ///
6231 /// @param[in] node_id
6232 /// The node id.
6233 ///
6234 /// @param[in] part_id
6235 /// The part id.
6236 ///
6237 /// @param[in] name
6238 /// Attribute name.
6239 ///
6240 /// @param[in] attr_info
6241 /// ::HAPI_AttributeInfo used as input for what tuple size.
6242 /// you want. Also contains some sanity checks like
6243 /// data type. Generally should be the same struct
6244 /// returned by ::HAPI_GetAttributeInfo().
6245 ///
6246 /// @param[in] stride
6247 /// Specifies how many items to skip over for each element.
6248 /// With a stride of -1, the stride will be set to
6249 /// @c attr_info->tuple_size. Otherwise, the stride will be
6250 /// set to the maximum of @c attr_info->tuple_size and
6251 /// @c stride.
6252 ///
6253 /// @param[out] data_array
6254 /// An integer array at least the size of
6255 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6256 ///
6257 /// @param[in] start
6258 /// First index of range. Must be at least 0 and at
6259 /// most ::HAPI_AttributeInfo::count - 1.
6260 /// <!-- default 0 -->
6261 ///
6262 /// @param[in] length
6263 /// Must be at least 0 and at most
6264 /// ::HAPI_AttributeInfo::count - @p start.
6265 /// Note, if 0 is passed for length, the function will just
6266 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6267 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6268 ///
6269 /// @param[out] job_id
6270 /// The id assigned to the job.
6271 ///
6273  HAPI_NodeId node_id,
6274  HAPI_PartId part_id,
6275  const char * name,
6276  HAPI_AttributeInfo * attr_info,
6277  int stride,
6278  HAPI_Int8 * data_array,
6279  int start, int length,
6280  int * job_id );
6281 
6282 /// @brief Get attribute 16-bit integer data asynchronously.
6283 ///
6284 /// @ingroup GeometryGetters Attributes
6285 ///
6286 /// @param[in] session
6287 /// The session of Houdini you are interacting with.
6288 /// See @ref HAPI_Sessions for more on sessions.
6289 /// Pass NULL to just use the default in-process session.
6290 /// <!-- default NULL -->
6291 ///
6292 /// @param[in] node_id
6293 /// The node id.
6294 ///
6295 /// @param[in] part_id
6296 /// The part id.
6297 ///
6298 /// @param[in] name
6299 /// Attribute name.
6300 ///
6301 /// @param[in] attr_info
6302 /// ::HAPI_AttributeInfo used as input for what tuple size.
6303 /// you want. Also contains some sanity checks like
6304 /// data type. Generally should be the same struct
6305 /// returned by ::HAPI_GetAttributeInfo().
6306 ///
6307 /// @param[in] stride
6308 /// Specifies how many items to skip over for each element.
6309 /// With a stride of -1, the stride will be set to
6310 /// @c attr_info->tuple_size. Otherwise, the stride will be
6311 /// set to the maximum of @c attr_info->tuple_size and
6312 /// @c stride.
6313 ///
6314 /// @param[out] data_array
6315 /// An integer array at least the size of
6316 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6317 ///
6318 /// @param[in] start
6319 /// First index of range. Must be at least 0 and at
6320 /// most ::HAPI_AttributeInfo::count - 1.
6321 /// <!-- default 0 -->
6322 ///
6323 /// @param[in] length
6324 /// Must be at least 0 and at most
6325 /// ::HAPI_AttributeInfo::count - @p start.
6326 /// Note, if 0 is passed for length, the function will just
6327 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6328 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6329 ///
6330 /// @param[out] job_id
6331 /// The id assigned to the job.
6332 ///
6334  HAPI_NodeId node_id,
6335  HAPI_PartId part_id,
6336  const char * name,
6337  HAPI_AttributeInfo * attr_info,
6338  int stride,
6339  HAPI_Int16 * data_array,
6340  int start, int length,
6341  int * job_id );
6342 
6343 /// @brief Get attribute 64-bit integer data asynchronously.
6344 ///
6345 /// @ingroup GeometryGetters Attributes
6346 ///
6347 /// @param[in] session
6348 /// The session of Houdini you are interacting with.
6349 /// See @ref HAPI_Sessions for more on sessions.
6350 /// Pass NULL to just use the default in-process session.
6351 /// <!-- default NULL -->
6352 ///
6353 /// @param[in] node_id
6354 /// The node id.
6355 ///
6356 /// @param[in] part_id
6357 /// The part id.
6358 ///
6359 /// @param[in] name
6360 /// Attribute name.
6361 ///
6362 /// @param[in] attr_info
6363 /// ::HAPI_AttributeInfo used as input for what tuple size.
6364 /// you want. Also contains some sanity checks like
6365 /// data type. Generally should be the same struct
6366 /// returned by ::HAPI_GetAttributeInfo().
6367 ///
6368 /// @param[in] stride
6369 /// Specifies how many items to skip over for each element.
6370 /// With a stride of -1, the stride will be set to
6371 /// @c attr_info->tuple_size. Otherwise, the stride will be
6372 /// set to the maximum of @c attr_info->tuple_size and
6373 /// @c stride.
6374 ///
6375 /// @param[out] data_array
6376 /// An integer array at least the size of
6377 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6378 ///
6379 /// @param[in] start
6380 /// First index of range. Must be at least 0 and at
6381 /// most ::HAPI_AttributeInfo::count - 1.
6382 /// <!-- default 0 -->
6383 ///
6384 /// @param[in] length
6385 /// Must be at least 0 and at most
6386 /// ::HAPI_AttributeInfo::count - @p start.
6387 /// Note, if 0 is passed for length, the function will just
6388 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6389 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6390 ///
6391 /// @param[out] job_id
6392 /// The id assigned to the job.
6393 ///
6395  HAPI_NodeId node_id,
6396  HAPI_PartId part_id,
6397  const char * name,
6398  HAPI_AttributeInfo * attr_info,
6399  int stride,
6400  HAPI_Int64 * data_array,
6401  int start, int length,
6402  int * job_id );
6403 
6404 
6405 /// @brief Get attribute float data asynchronously.
6406 ///
6407 /// @ingroup GeometryGetters Attributes
6408 ///
6409 /// @param[in] session
6410 /// The session of Houdini you are interacting with.
6411 /// See @ref HAPI_Sessions for more on sessions.
6412 /// Pass NULL to just use the default in-process session.
6413 /// <!-- default NULL -->
6414 ///
6415 /// @param[in] node_id
6416 /// The node id.
6417 ///
6418 /// @param[in] part_id
6419 /// The part id.
6420 ///
6421 /// @param[in] name
6422 /// Attribute name.
6423 ///
6424 /// @param[in] attr_info
6425 /// ::HAPI_AttributeInfo used as input for what tuple size.
6426 /// you want. Also contains some sanity checks like
6427 /// data type. Generally should be the same struct
6428 /// returned by ::HAPI_GetAttributeInfo().
6429 ///
6430 /// @param[in] stride
6431 /// Specifies how many items to skip over for each element.
6432 /// With a stride of -1, the stride will be set to
6433 /// @c attr_info->tuple_size. Otherwise, the stride will be
6434 /// set to the maximum of @c attr_info->tuple_size and
6435 /// @c stride.
6436 ///
6437 /// @param[out] data_array
6438 /// An integer array at least the size of
6439 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6440 ///
6441 /// @param[in] start
6442 /// First index of range. Must be at least 0 and at
6443 /// most ::HAPI_AttributeInfo::count - 1.
6444 /// <!-- default 0 -->
6445 ///
6446 /// @param[in] length
6447 /// Must be at least 0 and at most
6448 /// ::HAPI_AttributeInfo::count - @p start.
6449 /// Note, if 0 is passed for length, the function will just
6450 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6451 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6452 ///
6453 /// @param[out] job_id
6454 /// The id assigned to the job.
6455 ///
6457  HAPI_NodeId node_id,
6458  HAPI_PartId part_id,
6459  const char * name,
6460  HAPI_AttributeInfo * attr_info,
6461  int stride,
6462  float * data_array,
6463  int start, int length,
6464  int * job_id );
6465 
6466 /// @brief Get attribute 64-bit float data asynchronously.
6467 ///
6468 /// @ingroup GeometryGetters Attributes
6469 ///
6470 /// @param[in] session
6471 /// The session of Houdini you are interacting with.
6472 /// See @ref HAPI_Sessions for more on sessions.
6473 /// Pass NULL to just use the default in-process session.
6474 /// <!-- default NULL -->
6475 ///
6476 /// @param[in] node_id
6477 /// The node id.
6478 ///
6479 /// @param[in] part_id
6480 /// The part id.
6481 ///
6482 /// @param[in] name
6483 /// Attribute name.
6484 ///
6485 /// @param[in] attr_info
6486 /// ::HAPI_AttributeInfo used as input for what tuple size.
6487 /// you want. Also contains some sanity checks like
6488 /// data type. Generally should be the same struct
6489 /// returned by ::HAPI_GetAttributeInfo().
6490 ///
6491 /// @param[in] stride
6492 /// Specifies how many items to skip over for each element.
6493 /// With a stride of -1, the stride will be set to
6494 /// @c attr_info->tuple_size. Otherwise, the stride will be
6495 /// set to the maximum of @c attr_info->tuple_size and
6496 /// @c stride.
6497 ///
6498 /// @param[out] data_array
6499 /// An integer array at least the size of
6500 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6501 ///
6502 /// @param[in] start
6503 /// First index of range. Must be at least 0 and at
6504 /// most ::HAPI_AttributeInfo::count - 1.
6505 /// <!-- default 0 -->
6506 ///
6507 /// @param[in] length
6508 /// Must be at least 0 and at most
6509 /// ::HAPI_AttributeInfo::count - @p start.
6510 /// Note, if 0 is passed for length, the function will just
6511 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6512 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6513 ///
6514 /// @param[out] job_id
6515 /// The id assigned to the job.
6516 ///
6518  HAPI_NodeId node_id,
6519  HAPI_PartId part_id,
6520  const char * name,
6521  HAPI_AttributeInfo * attr_info,
6522  int stride,
6523  double * data_array,
6524  int start, int length,
6525  int * job_id );
6526 
6527 /// @brief Get attribute string data asynchronously.
6528 ///
6529 /// @ingroup GeometryGetters Attributes
6530 ///
6531 /// @param[in] session
6532 /// The session of Houdini you are interacting with.
6533 /// See @ref HAPI_Sessions for more on sessions.
6534 /// Pass NULL to just use the default in-process session.
6535 /// <!-- default NULL -->
6536 ///
6537 /// @param[in] node_id
6538 /// The node id.
6539 ///
6540 /// @param[in] part_id
6541 /// The part id.
6542 ///
6543 /// @param[in] name
6544 /// Attribute name.
6545 ///
6546 /// @param[in] attr_info
6547 /// ::HAPI_AttributeInfo used as input for what tuple size.
6548 /// you want. Also contains some sanity checks like
6549 /// data type. Generally should be the same struct
6550 /// returned by ::HAPI_GetAttributeInfo().
6551 ///
6552 /// @param[out] data_array
6553 /// An integer array at least the size of
6554 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6555 ///
6556 /// @param[in] start
6557 /// First index of range. Must be at least 0 and at
6558 /// most ::HAPI_AttributeInfo::count - 1.
6559 /// <!-- default 0 -->
6560 ///
6561 /// @param[in] length
6562 /// Must be at least 0 and at most
6563 /// ::HAPI_AttributeInfo::count - @p start.
6564 /// Note, if 0 is passed for length, the function will just
6565 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6566 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6567 ///
6568 /// @param[out] job_id
6569 /// The id assigned to the job.
6570 ///
6571 /// @warning The string handles should be used to retrieve the strings
6572 /// immediately and are invalidated when another call to get
6573 /// this attribute's data is made.
6574 ///
6576  HAPI_NodeId node_id,
6577  HAPI_PartId part_id,
6578  const char * name,
6579  HAPI_AttributeInfo * attr_info,
6580  HAPI_StringHandle * data_array,
6581  int start, int length,
6582  int * job_id );
6583 
6584 /// @brief Get attribute dictionary data asynchronously.
6585 ///
6586 /// @ingroup GeometryGetters Attributes
6587 ///
6588 /// @param[in] session
6589 /// The session of Houdini you are interacting with.
6590 /// See @ref HAPI_Sessions for more on sessions.
6591 /// Pass NULL to just use the default in-process session.
6592 /// <!-- default NULL -->
6593 ///
6594 /// @param[in] node_id
6595 /// The node id.
6596 ///
6597 /// @param[in] part_id
6598 /// The part id.
6599 ///
6600 /// @param[in] name
6601 /// Attribute name.
6602 ///
6603 /// @param[in] attr_info
6604 /// ::HAPI_AttributeInfo used as input for what tuple size.
6605 /// you want. Also contains some sanity checks like
6606 /// data type. Generally should be the same struct
6607 /// returned by ::HAPI_GetAttributeInfo().
6608 ///
6609 /// @param[out] data_array
6610 /// An integer array at least the size of
6611 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6612 ///
6613 /// @param[in] start
6614 /// First index of range. Must be at least 0 and at
6615 /// most ::HAPI_AttributeInfo::count - 1.
6616 /// <!-- default 0 -->
6617 ///
6618 /// @param[in] length
6619 /// Must be at least 0 and at most
6620 /// ::HAPI_AttributeInfo::count - @p start.
6621 /// Note, if 0 is passed for length, the function will just
6622 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6623 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6624 ///
6625 /// @param[out] job_id
6626 /// The id assigned to the job.
6627 ///
6628 /// @warning The string handles should be used to retrieve the strings
6629 /// immediately and are invalidated when another call to get
6630 /// this attribute's data is made.
6631 ///
6633  HAPI_NodeId node_id,
6634  HAPI_PartId part_id,
6635  const char * name,
6636  HAPI_AttributeInfo * attr_info,
6637  HAPI_StringHandle * data_array,
6638  int start, int length,
6639  int * job_id );
6640 
6641 /// @brief Get array attribute integer data asynchronously.
6642 /// Each entry in an array attribute can have varying array lengths.
6643 /// Therefore the array values are returned as a flat array, with
6644 /// another sizes array containing the lengths of each array entry.
6645 ///
6646 /// @ingroup GeometryGetters Attributes
6647 ///
6648 /// @param[in] session
6649 /// The session of Houdini you are interacting with.
6650 /// See @ref HAPI_Sessions for more on sessions.
6651 /// Pass NULL to just use the default in-process session.
6652 /// <!-- default NULL -->
6653 ///
6654 /// @param[in] node_id
6655 /// The node id.
6656 ///
6657 /// @param[in] part_id
6658 /// The part id.
6659 ///
6660 /// @param[in] attr_name
6661 /// Attribute name.
6662 ///
6663 /// @param[in] attr_info
6664 /// ::HAPI_AttributeInfo used as input for what tuple size.
6665 /// you want. Also contains some sanity checks like
6666 /// data type. Generally should be the same struct
6667 /// returned by ::HAPI_GetAttributeInfo().
6668 ///
6669 /// @param[out] data_fixed_array
6670 /// An integer array at least the size of
6671 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6672 ///
6673 /// @param[in] data_fixed_length
6674 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6675 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6676 ///
6677 /// @param[out] sizes_fixed_array
6678 /// An integer array at least the size of
6679 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6680 /// <!-- source ::HAPI_AttributeInfo::count -->
6681 ///
6682 /// @param[in] start
6683 /// First index of range. Must be at least 0 and at
6684 /// most ::HAPI_AttributeInfo::count - 1.
6685 /// <!-- default 0 -->
6686 ///
6687 /// @param[in] sizes_fixed_length
6688 /// Must be at least 0 and at most
6689 /// ::HAPI_AttributeInfo::count - @p start.
6690 /// Note, if 0 is passed for length, the function will just
6691 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6692 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6693 ///
6694 /// @param[out] job_id
6695 /// The id assigned to the job.
6696 ///
6698  HAPI_NodeId node_id,
6699  HAPI_PartId part_id,
6700  const char * attr_name,
6701  HAPI_AttributeInfo * attr_info,
6702  int * data_fixed_array,
6703  int data_fixed_length,
6704  int * sizes_fixed_array,
6705  int start, int sizes_fixed_length,
6706  int * job_id );
6707 
6708 /// @brief Get array attribute unsigned 8-bit integer data asynchronously.
6709 /// Each entry in an array attribute can have varying array lengths.
6710 /// Therefore the array values are returned as a flat array, with
6711 /// another sizes array containing the lengths of each array entry.
6712 ///
6713 /// @ingroup GeometryGetters Attributes
6714 ///
6715 /// @param[in] session
6716 /// The session of Houdini you are interacting with.
6717 /// See @ref HAPI_Sessions for more on sessions.
6718 /// Pass NULL to just use the default in-process session.
6719 /// <!-- default NULL -->
6720 ///
6721 /// @param[in] node_id
6722 /// The node id.
6723 ///
6724 /// @param[in] part_id
6725 /// The part id.
6726 ///
6727 /// @param[in] attr_name
6728 /// Attribute name.
6729 ///
6730 /// @param[in] attr_info
6731 /// ::HAPI_AttributeInfo used as input for what tuple size.
6732 /// you want. Also contains some sanity checks like
6733 /// data type. Generally should be the same struct
6734 /// returned by ::HAPI_GetAttributeInfo().
6735 ///
6736 /// @param[out] data_fixed_array
6737 /// An integer array at least the size of
6738 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6739 ///
6740 /// @param[in] data_fixed_length
6741 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6742 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6743 ///
6744 /// @param[out] sizes_fixed_array
6745 /// An integer array at least the size of
6746 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6747 /// <!-- source ::HAPI_AttributeInfo::count -->
6748 ///
6749 /// @param[in] start
6750 /// First index of range. Must be at least 0 and at
6751 /// most ::HAPI_AttributeInfo::count - 1.
6752 /// <!-- default 0 -->
6753 ///
6754 /// @param[in] sizes_fixed_length
6755 /// Must be at least 0 and at most
6756 /// ::HAPI_AttributeInfo::count - @p start.
6757 /// Note, if 0 is passed for length, the function will just
6758 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6759 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6760 ///
6761 /// @param[out] job_id
6762 /// The id assigned to the job.
6763 ///
6765  HAPI_NodeId node_id,
6766  HAPI_PartId part_id,
6767  const char * attr_name,
6768  HAPI_AttributeInfo * attr_info,
6769  HAPI_UInt8 * data_fixed_array,
6770  int data_fixed_length,
6771  int * sizes_fixed_array,
6772  int start, int sizes_fixed_length,
6773  int * job_id );
6774 
6775 /// @brief Get array attribute 8-bit integer data asynchronously.
6776 /// Each entry in an array attribute can have varying array lengths.
6777 /// Therefore the array values are returned as a flat array, with
6778 /// another sizes array containing the lengths of each array entry.
6779 ///
6780 /// @ingroup GeometryGetters Attributes
6781 ///
6782 /// @param[in] session
6783 /// The session of Houdini you are interacting with.
6784 /// See @ref HAPI_Sessions for more on sessions.
6785 /// Pass NULL to just use the default in-process session.
6786 /// <!-- default NULL -->
6787 ///
6788 /// @param[in] node_id
6789 /// The node id.
6790 ///
6791 /// @param[in] part_id
6792 /// The part id.
6793 ///
6794 /// @param[in] attr_name
6795 /// Attribute name.
6796 ///
6797 /// @param[in] attr_info
6798 /// ::HAPI_AttributeInfo used as input for what tuple size.
6799 /// you want. Also contains some sanity checks like
6800 /// data type. Generally should be the same struct
6801 /// returned by ::HAPI_GetAttributeInfo().
6802 ///
6803 /// @param[out] data_fixed_array
6804 /// An integer array at least the size of
6805 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6806 ///
6807 /// @param[in] data_fixed_length
6808 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6809 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6810 ///
6811 /// @param[out] sizes_fixed_array
6812 /// An integer array at least the size of
6813 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6814 /// <!-- source ::HAPI_AttributeInfo::count -->
6815 ///
6816 /// @param[in] start
6817 /// First index of range. Must be at least 0 and at
6818 /// most ::HAPI_AttributeInfo::count - 1.
6819 /// <!-- default 0 -->
6820 ///
6821 /// @param[in] sizes_fixed_length
6822 /// Must be at least 0 and at most
6823 /// ::HAPI_AttributeInfo::count - @p start.
6824 /// Note, if 0 is passed for length, the function will just
6825 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6826 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6827 ///
6828 /// @param[out] job_id
6829 /// The id assigned to the job.
6830 ///
6832  HAPI_NodeId node_id,
6833  HAPI_PartId part_id,
6834  const char * attr_name,
6835  HAPI_AttributeInfo * attr_info,
6836  HAPI_Int8 * data_fixed_array,
6837  int data_fixed_length,
6838  int * sizes_fixed_array,
6839  int start, int sizes_fixed_length,
6840  int * job_id );
6841 
6842 /// @brief Get array attribute 16-bit integer data asynchronously.
6843 /// Each entry in an array attribute can have varying array lengths.
6844 /// Therefore the array values are returned as a flat array, with
6845 /// another sizes array containing the lengths of each array entry.
6846 ///
6847 /// @ingroup GeometryGetters Attributes
6848 ///
6849 /// @param[in] session
6850 /// The session of Houdini you are interacting with.
6851 /// See @ref HAPI_Sessions for more on sessions.
6852 /// Pass NULL to just use the default in-process session.
6853 /// <!-- default NULL -->
6854 ///
6855 /// @param[in] node_id
6856 /// The node id.
6857 ///
6858 /// @param[in] part_id
6859 /// The part id.
6860 ///
6861 /// @param[in] attr_name
6862 /// Attribute name.
6863 ///
6864 /// @param[in] attr_info
6865 /// ::HAPI_AttributeInfo used as input for what tuple size.
6866 /// you want. Also contains some sanity checks like
6867 /// data type. Generally should be the same struct
6868 /// returned by ::HAPI_GetAttributeInfo().
6869 ///
6870 /// @param[out] data_fixed_array
6871 /// An integer array at least the size of
6872 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6873 ///
6874 /// @param[in] data_fixed_length
6875 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6876 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6877 ///
6878 /// @param[out] sizes_fixed_array
6879 /// An integer array at least the size of
6880 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6881 /// <!-- source ::HAPI_AttributeInfo::count -->
6882 ///
6883 /// @param[in] start
6884 /// First index of range. Must be at least 0 and at
6885 /// most ::HAPI_AttributeInfo::count - 1.
6886 /// <!-- default 0 -->
6887 ///
6888 /// @param[in] sizes_fixed_length
6889 /// Must be at least 0 and at most
6890 /// ::HAPI_AttributeInfo::count - @p start.
6891 /// Note, if 0 is passed for length, the function will just
6892 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6893 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6894 ///
6895 /// @param[out] job_id
6896 /// The id assigned to the job.
6897 ///
6899  HAPI_NodeId node_id,
6900  HAPI_PartId part_id,
6901  const char * attr_name,
6902  HAPI_AttributeInfo * attr_info,
6903  HAPI_Int16 * data_fixed_array,
6904  int data_fixed_length,
6905  int * sizes_fixed_array,
6906  int start, int sizes_fixed_length,
6907  int * job_id );
6908 
6909 /// @brief Get array attribute 64-bit integer data asynchronously.
6910 /// Each entry in an array attribute can have varying array lengths.
6911 /// Therefore the array values are returned as a flat array, with
6912 /// another sizes array containing the lengths of each array entry.
6913 ///
6914 /// @ingroup GeometryGetters Attributes
6915 ///
6916 /// @param[in] session
6917 /// The session of Houdini you are interacting with.
6918 /// See @ref HAPI_Sessions for more on sessions.
6919 /// Pass NULL to just use the default in-process session.
6920 /// <!-- default NULL -->
6921 ///
6922 /// @param[in] node_id
6923 /// The node id.
6924 ///
6925 /// @param[in] part_id
6926 /// The part id.
6927 ///
6928 /// @param[in] attr_name
6929 /// Attribute name.
6930 ///
6931 /// @param[in] attr_info
6932 /// ::HAPI_AttributeInfo used as input for what tuple size.
6933 /// you want. Also contains some sanity checks like
6934 /// data type. Generally should be the same struct
6935 /// returned by ::HAPI_GetAttributeInfo().
6936 ///
6937 /// @param[out] data_fixed_array
6938 /// An integer array at least the size of
6939 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6940 ///
6941 /// @param[in] data_fixed_length
6942 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6943 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6944 ///
6945 /// @param[out] sizes_fixed_array
6946 /// An integer array at least the size of
6947 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6948 /// <!-- source ::HAPI_AttributeInfo::count -->
6949 ///
6950 /// @param[in] start
6951 /// First index of range. Must be at least 0 and at
6952 /// most ::HAPI_AttributeInfo::count - 1.
6953 /// <!-- default 0 -->
6954 ///
6955 /// @param[in] sizes_fixed_length
6956 /// Must be at least 0 and at most
6957 /// ::HAPI_AttributeInfo::count - @p start.
6958 /// Note, if 0 is passed for length, the function will just
6959 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6960 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6961 ///
6962 /// @param[out] job_id
6963 /// The id assigned to the job.
6964 ///
6966  HAPI_NodeId node_id,
6967  HAPI_PartId part_id,
6968  const char * attr_name,
6969  HAPI_AttributeInfo * attr_info,
6970  HAPI_Int64 * data_fixed_array,
6971  int data_fixed_length,
6972  int * sizes_fixed_array,
6973  int start, int sizes_fixed_length,
6974  int * job_id );
6975 
6976 /// @brief Get array attribute float data asynchronously.
6977 /// Each entry in an array attribute can have varying array lengths.
6978 /// Therefore the array values are returned as a flat array, with
6979 /// another sizes array containing the lengths of each array entry.
6980 ///
6981 /// @ingroup GeometryGetters Attributes
6982 ///
6983 /// @param[in] session
6984 /// The session of Houdini you are interacting with.
6985 /// See @ref HAPI_Sessions for more on sessions.
6986 /// Pass NULL to just use the default in-process session.
6987 /// <!-- default NULL -->
6988 ///
6989 /// @param[in] node_id
6990 /// The node id.
6991 ///
6992 /// @param[in] part_id
6993 /// The part id.
6994 ///
6995 /// @param[in] attr_name
6996 /// Attribute name.
6997 ///
6998 /// @param[in] attr_info
6999 /// ::HAPI_AttributeInfo used as input for what tuple size.
7000 /// you want. Also contains some sanity checks like
7001 /// data type. Generally should be the same struct
7002 /// returned by ::HAPI_GetAttributeInfo().
7003 ///
7004 /// @param[out] data_fixed_array
7005 /// An integer array at least the size of
7006 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7007 ///
7008 /// @param[in] data_fixed_length
7009 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7010 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7011 ///
7012 /// @param[out] sizes_fixed_array
7013 /// An integer array at least the size of
7014 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7015 /// <!-- source ::HAPI_AttributeInfo::count -->
7016 ///
7017 /// @param[in] start
7018 /// First index of range. Must be at least 0 and at
7019 /// most ::HAPI_AttributeInfo::count - 1.
7020 /// <!-- default 0 -->
7021 ///
7022 /// @param[in] sizes_fixed_length
7023 /// Must be at least 0 and at most
7024 /// ::HAPI_AttributeInfo::count - @p start.
7025 /// Note, if 0 is passed for length, the function will just
7026 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7027 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7028 ///
7029 /// @param[out] job_id
7030 /// The id assigned to the job.
7031 ///
7033  HAPI_NodeId node_id,
7034  HAPI_PartId part_id,
7035  const char * attr_name,
7036  HAPI_AttributeInfo * attr_info,
7037  float * data_fixed_array,
7038  int data_fixed_length,
7039  int * sizes_fixed_array,
7040  int start, int sizes_fixed_length,
7041  int * job_id );
7042 
7043 /// @brief Get array attribute 64-bit float data asynchronously.
7044 /// Each entry in an array attribute can have varying array lengths.
7045 /// Therefore the array values are returned as a flat array, with
7046 /// another sizes array containing the lengths of each array entry.
7047 ///
7048 /// @ingroup GeometryGetters Attributes
7049 ///
7050 /// @param[in] session
7051 /// The session of Houdini you are interacting with.
7052 /// See @ref HAPI_Sessions for more on sessions.
7053 /// Pass NULL to just use the default in-process session.
7054 /// <!-- default NULL -->
7055 ///
7056 /// @param[in] node_id
7057 /// The node id.
7058 ///
7059 /// @param[in] part_id
7060 /// The part id.
7061 ///
7062 /// @param[in] attr_name
7063 /// Attribute name.
7064 ///
7065 /// @param[in] attr_info
7066 /// ::HAPI_AttributeInfo used as input for what tuple size.
7067 /// you want. Also contains some sanity checks like
7068 /// data type. Generally should be the same struct
7069 /// returned by ::HAPI_GetAttributeInfo().
7070 ///
7071 /// @param[out] data_fixed_array
7072 /// An integer array at least the size of
7073 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7074 ///
7075 /// @param[in] data_fixed_length
7076 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7077 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7078 ///
7079 /// @param[out] sizes_fixed_array
7080 /// An integer array at least the size of
7081 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7082 /// <!-- source ::HAPI_AttributeInfo::count -->
7083 ///
7084 /// @param[in] start
7085 /// First index of range. Must be at least 0 and at
7086 /// most ::HAPI_AttributeInfo::count - 1.
7087 /// <!-- default 0 -->
7088 ///
7089 /// @param[in] sizes_fixed_length
7090 /// Must be at least 0 and at most
7091 /// ::HAPI_AttributeInfo::count - @p start.
7092 /// Note, if 0 is passed for length, the function will just
7093 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7094 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7095 ///
7096 /// @param[out] job_id
7097 /// The id assigned to the job.
7098 ///
7100  HAPI_NodeId node_id,
7101  HAPI_PartId part_id,
7102  const char * attr_name,
7103  HAPI_AttributeInfo * attr_info,
7104  double * data_fixed_array,
7105  int data_fixed_length,
7106  int * sizes_fixed_array,
7107  int start, int sizes_fixed_length,
7108  int * job_id );
7109 
7110 /// @brief Get array attribute string data asynchronously.
7111 /// Each entry in an array attribute can have varying array lengths.
7112 /// Therefore the array values are returned as a flat array, with
7113 /// another sizes array containing the lengths of each array entry.
7114 ///
7115 /// @ingroup GeometryGetters Attributes
7116 ///
7117 /// @param[in] session
7118 /// The session of Houdini you are interacting with.
7119 /// See @ref HAPI_Sessions for more on sessions.
7120 /// Pass NULL to just use the default in-process session.
7121 /// <!-- default NULL -->
7122 ///
7123 /// @param[in] node_id
7124 /// The node id.
7125 ///
7126 /// @param[in] part_id
7127 /// The part id.
7128 ///
7129 /// @param[in] attr_name
7130 /// Attribute name.
7131 ///
7132 /// @param[in] attr_info
7133 /// ::HAPI_AttributeInfo used as input for what tuple size.
7134 /// you want. Also contains some sanity checks like
7135 /// data type. Generally should be the same struct
7136 /// returned by ::HAPI_GetAttributeInfo().
7137 ///
7138 /// @param[out] data_fixed_array
7139 /// An integer array at least the size of
7140 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7141 ///
7142 /// @param[in] data_fixed_length
7143 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7144 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7145 ///
7146 /// @param[out] sizes_fixed_array
7147 /// An integer array at least the size of
7148 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7149 /// <!-- source ::HAPI_AttributeInfo::count -->
7150 ///
7151 /// @param[in] start
7152 /// First index of range. Must be at least 0 and at
7153 /// most ::HAPI_AttributeInfo::count - 1.
7154 /// <!-- default 0 -->
7155 ///
7156 /// @param[in] sizes_fixed_length
7157 /// Must be at least 0 and at most
7158 /// ::HAPI_AttributeInfo::count - @p start.
7159 /// Note, if 0 is passed for length, the function will just
7160 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7161 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7162 ///
7163 /// @param[out] job_id
7164 /// The id assigned to the job.
7165 ///
7166 /// @warning The string handles should be used to retrieve the strings
7167 /// immediately and are invalidated when another call to get
7168 /// this attribute's data is made.
7169 ///
7171  HAPI_NodeId node_id,
7172  HAPI_PartId part_id,
7173  const char * attr_name,
7174  HAPI_AttributeInfo * attr_info,
7175  HAPI_StringHandle * data_fixed_array,
7176  int data_fixed_length,
7177  int * sizes_fixed_array,
7178  int start, int sizes_fixed_length,
7179  int * job_id );
7180 
7181 /// @brief Get array attribute dictionary data asynchronously.
7182 /// Each entry in an array attribute can have varying array lengths.
7183 /// Therefore the array values are returned as a flat array, with
7184 /// another sizes array containing the lengths of each array entry.
7185 ///
7186 /// @ingroup GeometryGetters Attributes
7187 ///
7188 /// @param[in] session
7189 /// The session of Houdini you are interacting with.
7190 /// See @ref HAPI_Sessions for more on sessions.
7191 /// Pass NULL to just use the default in-process session.
7192 /// <!-- default NULL -->
7193 ///
7194 /// @param[in] node_id
7195 /// The node id.
7196 ///
7197 /// @param[in] part_id
7198 /// The part id.
7199 ///
7200 /// @param[in] attr_name
7201 /// Attribute name.
7202 ///
7203 /// @param[in] attr_info
7204 /// ::HAPI_AttributeInfo used as input for what tuple size.
7205 /// you want. Also contains some sanity checks like
7206 /// data type. Generally should be the same struct
7207 /// returned by ::HAPI_GetAttributeInfo().
7208 ///
7209 /// @param[out] data_fixed_array
7210 /// An integer array at least the size of
7211 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7212 ///
7213 /// @param[in] data_fixed_length
7214 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7215 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7216 ///
7217 /// @param[out] sizes_fixed_array
7218 /// An integer array at least the size of
7219 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7220 /// <!-- source ::HAPI_AttributeInfo::count -->
7221 ///
7222 /// @param[in] start
7223 /// First index of range. Must be at least 0 and at
7224 /// most ::HAPI_AttributeInfo::count - 1.
7225 /// <!-- default 0 -->
7226 ///
7227 /// @param[in] sizes_fixed_length
7228 /// Must be at least 0 and at most
7229 /// ::HAPI_AttributeInfo::count - @p start.
7230 /// Note, if 0 is passed for length, the function will just
7231 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7232 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7233 ///
7234 /// @param[out] job_id
7235 /// The id assigned to the job.
7236 ///
7237 /// @warning The string handles should be used to retrieve the strings
7238 /// immediately and are invalidated when another call to get
7239 /// this attribute's data is made.
7240 ///
7242  HAPI_NodeId node_id,
7243  HAPI_PartId part_id,
7244  const char * attr_name,
7245  HAPI_AttributeInfo * attr_info,
7246  HAPI_StringHandle * data_fixed_array,
7247  int data_fixed_length,
7248  int * sizes_fixed_array,
7249  int start, int sizes_fixed_length,
7250  int * job_id );
7251 
7252 /// @brief Get status of a job.
7253 ///
7254 /// @ingroup Status
7255 ///
7256 /// @param[in] session
7257 /// The session of Houdini you are interacting with.
7258 /// See @ref HAPI_Sessions for more on sessions.
7259 /// Pass NULL to just use the default in-process session.
7260 /// <!-- default NULL -->
7261 ///
7262 /// @param[in] job_id
7263 /// The id assigned to the job. It must equal to the index
7264 /// assigned through a previous call to an asynchronous HAPI
7265 /// method.
7266 ///
7267 /// @param[out] job_status
7268 /// The current status of the job. One of ::HAPI_JobStatus.
7269 ///
7270 HAPI_DECL HAPI_GetJobStatus( const HAPI_Session * session,
7271  int job_id,
7272  HAPI_JobStatus * job_status );
7273 
7274 /// @brief Get group names for an entire geo. Please note that this
7275 /// function is NOT per-part, but it is per-geo. The companion
7276 /// function ::HAPI_GetGroupMembership() IS per-part. Also keep
7277 /// in mind that the name string handles are only
7278 /// valid until the next time this function is called.
7279 ///
7280 /// @ingroup GeometryGetters
7281 ///
7282 /// @param[in] session
7283 /// The session of Houdini you are interacting with.
7284 /// See @ref HAPI_Sessions for more on sessions.
7285 /// Pass NULL to just use the default in-process session.
7286 /// <!-- default NULL -->
7287 ///
7288 /// @param[in] node_id
7289 /// The node id.
7290 ///
7291 /// @param[in] group_type
7292 /// The group type.
7293 ///
7294 /// @param[out] group_names_array
7295 /// The array of names to be filled. Should be the size
7296 /// given by ::HAPI_GeoInfo_GetGroupCountByType() with
7297 /// @p group_type and the ::HAPI_GeoInfo of @p geo_id.
7298 /// @note These string handles are only valid until the
7299 /// next call to ::HAPI_GetGroupNames().
7300 ///
7301 /// @param[in] group_count
7302 /// Sanity check. Should be less than or equal to the size
7303 /// of @p group_names.
7304 ///
7305 HAPI_DECL HAPI_GetGroupNames( const HAPI_Session * session,
7306  HAPI_NodeId node_id,
7307  HAPI_GroupType group_type,
7308  HAPI_StringHandle * group_names_array,
7309  int group_count );
7310 
7311 /// @brief Get group membership.
7312 ///
7313 /// @ingroup GeometryGetters
7314 ///
7315 /// @param[in] session
7316 /// The session of Houdini you are interacting with.
7317 /// See @ref HAPI_Sessions for more on sessions.
7318 /// Pass NULL to just use the default in-process session.
7319 /// <!-- default NULL -->
7320 ///
7321 /// @param[in] node_id
7322 /// The node id.
7323 ///
7324 /// @param[in] part_id
7325 /// The part id.
7326 ///
7327 /// @param[in] group_type
7328 /// The group type.
7329 ///
7330 /// @param[in] group_name
7331 /// The group name.
7332 ///
7333 /// @param[out] membership_array_all_equal
7334 /// (optional) Quick way to determine if all items are in
7335 /// the given group or all items our not in the group.
7336 /// If you do not need this information or you are getting edge
7337 /// group information, you can just pass NULL for this argument.
7338 ///
7339 /// @param[out] membership_array
7340 /// Array of ints that represent the membership of this
7341 /// group. When getting membership information for a point or
7342 /// primitive group, the size of the array should be the size
7343 /// given by ::HAPI_PartInfo_GetElementCountByGroupType() with
7344 /// @p group_type and the ::HAPI_PartInfo of @p part_id. When
7345 /// retrieving the edges belonging to an edge group, the
7346 /// membership array will be filled with point numbers that
7347 /// comprise the edges of the edge group. Each edge is specified
7348 /// by two points, which means that the size of the array should
7349 /// be the size given by ::HAPI_GetEdgeCountOfEdgeGroup() * 2.
7350 ///
7351 /// @param[in] start
7352 /// Start offset into the membership array. Must be
7353 /// less than ::HAPI_PartInfo_GetElementCountByGroupType() when
7354 /// it is a point or primitive group. When getting the
7355 /// membership information for an edge group, this argument must
7356 /// be less than the size returned by
7357 /// ::HAPI_GetEdgeCountOfEdgeGroup() * 2 - 1.
7358 /// <!-- default 0 -->
7359 ///
7360 /// @param[in] length
7361 /// Should be less than or equal to the size
7362 /// of @p membership_array.
7363 ///
7365  HAPI_NodeId node_id,
7366  HAPI_PartId part_id,
7367  HAPI_GroupType group_type,
7368  const char * group_name,
7369  HAPI_Bool * membership_array_all_equal,
7370  int * membership_array,
7371  int start, int length );
7372 
7373 /// @brief Get group counts for a specific packed instanced part.
7374 ///
7375 /// @ingroup GeometryGetters
7376 ///
7377 /// @param[in] session
7378 /// The session of Houdini you are interacting with.
7379 /// See @ref HAPI_Sessions for more on sessions.
7380 /// Pass NULL to just use the default in-process session.
7381 /// <!-- default NULL -->
7382 ///
7383 /// @param[in] node_id
7384 /// The node id.
7385 ///
7386 /// @param[in] part_id
7387 /// The part id. (should be a packed primitive)
7388 ///
7389 /// @param[out] pointGroupCount
7390 /// Number of point groups on the packed instance part.
7391 /// Will be set to -1 if the part is not a valid packed part.
7392 ///
7393 /// @param[out] primitiveGroupCount
7394 /// Number of primitive groups on the instanced part.
7395 /// Will be set to -1 if the part is not a valid instancer
7396 ///
7398  HAPI_NodeId node_id,
7399  HAPI_PartId part_id,
7400  int * pointGroupCount,
7401  int * primitiveGroupCount );
7402 
7403 /// @brief Get the group names for a packed instance part
7404 /// This functions allows you to get the group name for a specific
7405 /// packed primitive part.
7406 /// Keep in mind that the name string handles are only
7407 /// valid until the next time this function is called.
7408 ///
7409 /// @ingroup GeometryGetters
7410 ///
7411 /// @param[in] session
7412 /// The session of Houdini you are interacting with.
7413 /// See @ref HAPI_Sessions for more on sessions.
7414 /// Pass NULL to just use the default in-process session.
7415 /// <!-- default NULL -->
7416 ///
7417 /// @param[in] node_id
7418 /// The node id.
7419 ///
7420 /// @param[in] part_id
7421 /// The part id. (should be a packed primitive)
7422 ///
7423 /// @param[in] group_type
7424 /// The group type.
7425 ///
7426 /// @param[out] group_names_array
7427 /// The array of names to be filled. Should be the size
7428 /// given by ::HAPI_GetGroupCountOnPackedInstancePart() with
7429 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7430 /// @note These string handles are only valid until the
7431 /// next call to ::HAPI_GetGroupNamesOnPackedInstancePart().
7432 ///
7433 /// @param[in] group_count
7434 /// Sanity check. Should be less than or equal to the size
7435 /// of @p group_names.
7436 ///
7438  HAPI_NodeId node_id,
7439  HAPI_PartId part_id,
7440  HAPI_GroupType group_type,
7441  HAPI_StringHandle * group_names_array,
7442  int group_count );
7443 
7444 /// @brief Get group membership for a packed instance part
7445 /// This functions allows you to get the group membership for a specific
7446 /// packed primitive part.
7447 ///
7448 /// @ingroup GeometryGetters
7449 ///
7450 /// @param[in] session
7451 /// The session of Houdini you are interacting with.
7452 /// See @ref HAPI_Sessions for more on sessions.
7453 /// Pass NULL to just use the default in-process session.
7454 /// <!-- default NULL -->
7455 ///
7456 /// @param[in] node_id
7457 /// The node id.
7458 ///
7459 /// @param[in] part_id
7460 /// The part id. (should be a packed primitive)
7461 ///
7462 /// @param[in] group_type
7463 /// The group type.
7464 ///
7465 /// @param[in] group_name
7466 /// The group name.
7467 ///
7468 /// @param[out] membership_array_all_equal
7469 /// (optional) Quick way to determine if all items are in
7470 /// the given group or all items our not in the group.
7471 /// You can just pass NULL here if not interested.
7472 ///
7473 /// @param[out] membership_array
7474 /// Array of ints that represent the membership of this
7475 /// group. Should be the size given by
7476 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
7477 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7478 ///
7479 /// @param[in] start
7480 /// Start offset into the membership array. Must be
7481 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
7482 /// <!-- default 0 -->
7483 ///
7484 /// @param[in] length
7485 /// Should be less than or equal to the size
7486 /// of @p membership_array.
7487 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
7488 ///
7490  HAPI_NodeId node_id,
7491  HAPI_PartId part_id,
7492  HAPI_GroupType group_type,
7493  const char * group_name,
7494  HAPI_Bool * membership_array_all_equal,
7495  int * membership_array,
7496  int start, int length );
7497 
7498 /// @brief Get the part ids that this instancer part is instancing.
7499 ///
7500 /// @ingroup GeometryGetters
7501 ///
7502 /// @param[in] session
7503 /// The session of Houdini you are interacting with.
7504 /// See @ref HAPI_Sessions for more on sessions.
7505 /// Pass NULL to just use the default in-process session.
7506 /// <!-- default NULL -->
7507 ///
7508 /// @param[in] node_id
7509 /// The node id.
7510 ///
7511 /// @param[in] part_id
7512 /// The instancer part id.
7513 ///
7514 /// @param[out] instanced_parts_array
7515 /// Array of ::HAPI_PartId's to instance.
7516 ///
7517 /// @param[in] start
7518 /// Should be less than @p part_id's
7519 /// ::HAPI_PartInfo::instancedPartCount but more than or
7520 /// equal to 0.
7521 /// <!-- default 0 -->
7522 ///
7523 /// @param[in] length
7524 /// Should be less than @p part_id's
7525 /// ::HAPI_PartInfo::instancedPartCount - @p start.
7526 /// <!-- source ::HAPI_PartInfo::instancedPartCount - start -->
7527 ///
7529  HAPI_NodeId node_id,
7530  HAPI_PartId part_id,
7531  HAPI_PartId * instanced_parts_array,
7532  int start, int length );
7533 
7534 /// @brief Get the instancer part's list of transforms on which to
7535 /// instance the instanced parts you got from
7536 /// ::HAPI_GetInstancedPartIds().
7537 ///
7538 /// @ingroup GeometryGetters
7539 ///
7540 /// @param[in] session
7541 /// The session of Houdini you are interacting with.
7542 /// See @ref HAPI_Sessions for more on sessions.
7543 /// Pass NULL to just use the default in-process session.
7544 /// <!-- default NULL -->
7545 ///
7546 /// @param[in] node_id
7547 /// The node id.
7548 ///
7549 /// @param[in] part_id
7550 /// The instancer part id.
7551 ///
7552 /// @param[in] rst_order
7553 /// The order of application of translation, rotation and
7554 /// scale.
7555 ///
7556 /// @param[out] transforms_array
7557 /// Array of ::HAPI_PartId's to instance.
7558 ///
7559 /// @param[in] start
7560 /// Should be less than @p part_id's
7561 /// ::HAPI_PartInfo::instanceCount but more than or
7562 /// equal to 0.
7563 /// <!-- default 0 -->
7564 ///
7565 /// @param[in] length
7566 /// Should be less than @p part_id's
7567 /// ::HAPI_PartInfo::instanceCount - @p start.
7568 /// <!-- source ::HAPI_PartInfo::instanceCount - start -->
7569 ///
7571  HAPI_NodeId node_id,
7572  HAPI_PartId part_id,
7573  HAPI_RSTOrder rst_order,
7574  HAPI_Transform * transforms_array,
7575  int start, int length );
7576 
7577 /// @defgroup GeometrySetters Geometry Setters
7578 /// Functions for setting geometry (SOP) data
7579 
7580 /// @brief Set the main part info struct (::HAPI_PartInfo).
7581 ///
7582 /// @ingroup GeometrySetters
7583 ///
7584 /// @param[in] session
7585 /// The session of Houdini you are interacting with.
7586 /// See @ref HAPI_Sessions for more on sessions.
7587 /// Pass NULL to just use the default in-process session.
7588 /// <!-- default NULL -->
7589 ///
7590 /// @param[in] node_id
7591 /// The SOP node id.
7592 ///
7593 /// @param[in] part_id
7594 /// Currently not used. Just pass 0.
7595 /// <!-- default 0 -->
7596 ///
7597 /// @param[in] part_info
7598 /// ::HAPI_PartInfo value that describes the input
7599 /// geometry.
7600 ///
7601 HAPI_DECL HAPI_SetPartInfo( const HAPI_Session * session,
7602  HAPI_NodeId node_id,
7603  HAPI_PartId part_id,
7604  const HAPI_PartInfo * part_info );
7605 
7606 /// @brief Set the array of faces where the nth integer in the array is
7607 /// the number of vertices the nth face has.
7608 ///
7609 /// @ingroup GeometrySetters
7610 ///
7611 /// @param[in] session
7612 /// The session of Houdini you are interacting with.
7613 /// See @ref HAPI_Sessions for more on sessions.
7614 /// Pass NULL to just use the default in-process session.
7615 /// <!-- default NULL -->
7616 ///
7617 /// @param[in] node_id
7618 /// The SOP node id.
7619 ///
7620 /// @param[in] part_id
7621 /// Currently not used. Just pass 0.
7622 /// <!-- default 0 -->
7623 ///
7624 /// @param[in] face_counts_array
7625 /// An integer array at least the size of @p length.
7626 ///
7627 /// @param[in] start
7628 /// First index of range. Must be at least 0 and at
7629 /// most ::HAPI_PartInfo::faceCount - 1.
7630 /// <!-- default 0 -->
7631 ///
7632 /// @param[in] length
7633 /// Must be at least 0 and at most
7634 /// ::HAPI_PartInfo::faceCount - @p start.
7635 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
7636 ///
7637 HAPI_DECL HAPI_SetFaceCounts( const HAPI_Session * session,
7638  HAPI_NodeId node_id,
7639  HAPI_PartId part_id,
7640  const int * face_counts_array,
7641  int start, int length );
7642 
7643 /// @brief Set array containing the vertex-point associations where the
7644 /// ith element in the array is the point index the ith vertex
7645 /// associates with.
7646 ///
7647 /// @ingroup GeometrySetters
7648 ///
7649 /// @param[in] session
7650 /// The session of Houdini you are interacting with.
7651 /// See @ref HAPI_Sessions for more on sessions.
7652 /// Pass NULL to just use the default in-process session.
7653 /// <!-- default NULL -->
7654 ///
7655 /// @param[in] node_id
7656 /// The SOP node id.
7657 ///
7658 /// @param[in] part_id
7659 /// Currently not used. Just pass 0.
7660 ///
7661 /// @param[in] vertex_list_array
7662 /// An integer array at least the size of length.
7663 ///
7664 /// @param[in] start
7665 /// First index of range. Must be at least 0 and at
7666 /// most ::HAPI_PartInfo::vertexCount - 1.
7667 /// <!-- default 0 -->
7668 ///
7669 /// @param[in] length
7670 /// Must be at least 0 and at most
7671 /// ::HAPI_PartInfo::vertexCount - @p start.
7672 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
7673 ///
7674 HAPI_DECL HAPI_SetVertexList( const HAPI_Session * session,
7675  HAPI_NodeId node_id,
7676  HAPI_PartId part_id,
7677  const int * vertex_list_array,
7678  int start, int length );
7679 
7680 /// @brief Add an attribute.
7681 ///
7682 /// @ingroup GeometrySetters Attributes
7683 ///
7684 /// @param[in] session
7685 /// The session of Houdini you are interacting with.
7686 /// See @ref HAPI_Sessions for more on sessions.
7687 /// Pass NULL to just use the default in-process session.
7688 /// <!-- default NULL -->
7689 ///
7690 /// @param[in] node_id
7691 /// The SOP node id.
7692 ///
7693 /// @param[in] part_id
7694 /// Currently not used. Just pass 0.
7695 ///
7696 /// @param[in] name
7697 /// Attribute name.
7698 ///
7699 /// @param[in] attr_info
7700 /// ::HAPI_AttributeInfo stores attribute properties.
7701 ///
7702 HAPI_DECL HAPI_AddAttribute( const HAPI_Session * session,
7703  HAPI_NodeId node_id,
7704  HAPI_PartId part_id,
7705  const char * name,
7706  const HAPI_AttributeInfo * attr_info );
7707 
7708 /// @brief Delete an attribute from an input geo
7709 ///
7710 /// @ingroup GeometrySetters Attributes
7711 ///
7712 /// @param[in] session
7713 /// The session of Houdini you are interacting with.
7714 /// See @ref HAPI_Sessions for more on sessions.
7715 /// Pass NULL to just use the default in-process session.
7716 /// <!-- default NULL -->
7717 ///
7718 /// @param[in] node_id
7719 /// The SOP node id.
7720 ///
7721 /// @param[in] part_id
7722 /// Currently not used. Just pass 0.
7723 ///
7724 /// @param[in] name
7725 /// Attribute name.
7726 ///
7727 /// @param[in] attr_info
7728 /// ::HAPI_AttributeInfo stores attribute properties.
7729 ///
7731  HAPI_NodeId node_id,
7732  HAPI_PartId part_id,
7733  const char * name,
7734  const HAPI_AttributeInfo * attr_info );
7735 
7736 /// @brief Set attribute integer data.
7737 ///
7738 /// @ingroup GeometrySetters Attributes
7739 ///
7740 /// @param[in] session
7741 /// The session of Houdini you are interacting with.
7742 /// See @ref HAPI_Sessions for more on sessions.
7743 /// Pass NULL to just use the default in-process session.
7744 /// <!-- default NULL -->
7745 ///
7746 /// @param[in] node_id
7747 /// The SOP node id.
7748 ///
7749 /// @param[in] part_id
7750 /// Currently not used. Just pass 0.
7751 ///
7752 /// @param[in] name
7753 /// Attribute name.
7754 ///
7755 /// @param[in] attr_info
7756 /// ::HAPI_AttributeInfo used as input for what tuple size.
7757 /// you want. Also contains some sanity checks like
7758 /// data type. Generally should be the same struct
7759 /// returned by ::HAPI_GetAttributeInfo().
7760 ///
7761 /// @param[in] data_array
7762 /// An integer array at least the size of
7763 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7764 ///
7765 /// @param[in] start
7766 /// First index of range. Must be at least 0 and at
7767 /// most ::HAPI_AttributeInfo::count - 1.
7768 /// <!-- default 0 -->
7769 ///
7770 /// @param[in] length
7771 /// Must be at least 0 and at most
7772 /// ::HAPI_AttributeInfo::count - @p start.
7773 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7774 ///
7776  HAPI_NodeId node_id,
7777  HAPI_PartId part_id,
7778  const char * name,
7779  const HAPI_AttributeInfo * attr_info,
7780  const int * data_array,
7781  int start, int length );
7782 
7783 /// @brief Set unsigned 8-bit attribute integer data.
7784 ///
7785 /// @ingroup GeometrySetters Attributes
7786 ///
7787 /// @param[in] session
7788 /// The session of Houdini you are interacting with.
7789 /// See @ref HAPI_Sessions for more on sessions.
7790 /// Pass NULL to just use the default in-process session.
7791 /// <!-- default NULL -->
7792 ///
7793 /// @param[in] node_id
7794 /// The SOP node id.
7795 ///
7796 /// @param[in] part_id
7797 /// Currently not used. Just pass 0.
7798 ///
7799 /// @param[in] name
7800 /// Attribute name.
7801 ///
7802 /// @param[in] attr_info
7803 /// ::HAPI_AttributeInfo used as input for what tuple size.
7804 /// you want. Also contains some sanity checks like
7805 /// data type. Generally should be the same struct
7806 /// returned by ::HAPI_GetAttributeInfo().
7807 ///
7808 /// @param[in] data_array
7809 /// An unsigned 8-bit integer array at least the size of
7810 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7811 ///
7812 /// @param[in] start
7813 /// First index of range. Must be at least 0 and at
7814 /// most ::HAPI_AttributeInfo::count - 1.
7815 /// <!-- default 0 -->
7816 ///
7817 /// @param[in] length
7818 /// Must be at least 0 and at most
7819 /// ::HAPI_AttributeInfo::count - @p start.
7820 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7821 ///
7823  HAPI_NodeId node_id,
7824  HAPI_PartId part_id,
7825  const char * name,
7826  const HAPI_AttributeInfo * attr_info,
7827  const HAPI_UInt8 * data_array,
7828  int start, int length );
7829 
7830 /// @brief Set 8-bit attribute integer data.
7831 ///
7832 /// @ingroup GeometrySetters Attributes
7833 ///
7834 /// @param[in] session
7835 /// The session of Houdini you are interacting with.
7836 /// See @ref HAPI_Sessions for more on sessions.
7837 /// Pass NULL to just use the default in-process session.
7838 /// <!-- default NULL -->
7839 ///
7840 /// @param[in] node_id
7841 /// The SOP node id.
7842 ///
7843 /// @param[in] part_id
7844 /// Currently not used. Just pass 0.
7845 ///
7846 /// @param[in] name
7847 /// Attribute name.
7848 ///
7849 /// @param[in] attr_info
7850 /// ::HAPI_AttributeInfo used as input for what tuple size.
7851 /// you want. Also contains some sanity checks like
7852 /// data type. Generally should be the same struct
7853 /// returned by ::HAPI_GetAttributeInfo().
7854 ///
7855 /// @param[in] data_array
7856 /// An 8-bit integer array at least the size of
7857 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7858 ///
7859 /// @param[in] start
7860 /// First index of range. Must be at least 0 and at
7861 /// most ::HAPI_AttributeInfo::count - 1.
7862 /// <!-- default 0 -->
7863 ///
7864 /// @param[in] length
7865 /// Must be at least 0 and at most
7866 /// ::HAPI_AttributeInfo::count - @p start.
7867 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7868 ///
7870  HAPI_NodeId node_id,
7871  HAPI_PartId part_id,
7872  const char * name,
7873  const HAPI_AttributeInfo * attr_info,
7874  const HAPI_Int8 * data_array,
7875  int start, int length );
7876 
7877 /// @brief Set 16-bit attribute integer data.
7878 ///
7879 /// @ingroup GeometrySetters Attributes
7880 ///
7881 /// @param[in] session
7882 /// The session of Houdini you are interacting with.
7883 /// See @ref HAPI_Sessions for more on sessions.
7884 /// Pass NULL to just use the default in-process session.
7885 /// <!-- default NULL -->
7886 ///
7887 /// @param[in] node_id
7888 /// The SOP node id.
7889 ///
7890 /// @param[in] part_id
7891 /// Currently not used. Just pass 0.
7892 ///
7893 /// @param[in] name
7894 /// Attribute name.
7895 ///
7896 /// @param[in] attr_info
7897 /// ::HAPI_AttributeInfo used as input for what tuple size.
7898 /// you want. Also contains some sanity checks like
7899 /// data type. Generally should be the same struct
7900 /// returned by ::HAPI_GetAttributeInfo().
7901 ///
7902 /// @param[in] data_array
7903 /// An 16-bit integer array at least the size of
7904 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7905 ///
7906 /// @param[in] start
7907 /// First index of range. Must be at least 0 and at
7908 /// most ::HAPI_AttributeInfo::count - 1.
7909 /// <!-- default 0 -->
7910 ///
7911 /// @param[in] length
7912 /// Must be at least 0 and at most
7913 /// ::HAPI_AttributeInfo::count - @p start.
7914 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7915 ///
7917  HAPI_NodeId node_id,
7918  HAPI_PartId part_id,
7919  const char * name,
7920  const HAPI_AttributeInfo * attr_info,
7921  const HAPI_Int16 * data_array,
7922  int start, int length );
7923 
7924 /// @brief Set 64-bit attribute integer data.
7925 ///
7926 /// @ingroup GeometrySetters Attributes
7927 ///
7928 /// @param[in] session
7929 /// The session of Houdini you are interacting with.
7930 /// See @ref HAPI_Sessions for more on sessions.
7931 /// Pass NULL to just use the default in-process session.
7932 /// <!-- default NULL -->
7933 ///
7934 /// @param[in] node_id
7935 /// The SOP node id.
7936 ///
7937 /// @param[in] part_id
7938 /// Currently not used. Just pass 0.
7939 ///
7940 /// @param[in] name
7941 /// Attribute name.
7942 ///
7943 /// @param[in] attr_info
7944 /// ::HAPI_AttributeInfo used as input for what tuple size.
7945 /// you want. Also contains some sanity checks like
7946 /// data type. Generally should be the same struct
7947 /// returned by ::HAPI_GetAttributeInfo().
7948 ///
7949 /// @param[in] data_array
7950 /// An 64-bit integer array at least the size of
7951 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7952 ///
7953 /// @param[in] start
7954 /// First index of range. Must be at least 0 and at
7955 /// most ::HAPI_AttributeInfo::count - 1.
7956 /// <!-- default 0 -->
7957 ///
7958 /// @param[in] length
7959 /// Must be at least 0 and at most
7960 /// ::HAPI_AttributeInfo::count - @p start.
7961 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7962 ///
7964  HAPI_NodeId node_id,
7965  HAPI_PartId part_id,
7966  const char * name,
7967  const HAPI_AttributeInfo * attr_info,
7968  const HAPI_Int64 * data_array,
7969  int start, int length );
7970 
7971 /// @brief Set attribute float data.
7972 ///
7973 /// @ingroup GeometrySetters Attributes
7974 ///
7975 /// @param[in] session
7976 /// The session of Houdini you are interacting with.
7977 /// See @ref HAPI_Sessions for more on sessions.
7978 /// Pass NULL to just use the default in-process session.
7979 /// <!-- default NULL -->
7980 ///
7981 /// @param[in] node_id
7982 /// The SOP node id.
7983 ///
7984 /// @param[in] part_id
7985 /// Currently not used. Just pass 0.
7986 ///
7987 /// @param[in] name
7988 /// Attribute name.
7989 ///
7990 /// @param[in] attr_info
7991 /// ::HAPI_AttributeInfo used as input for what tuple size.
7992 /// you want. Also contains some sanity checks like
7993 /// data type. Generally should be the same struct
7994 /// returned by ::HAPI_GetAttributeInfo().
7995 ///
7996 /// @param[in] data_array
7997 /// An float array at least the size of
7998 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7999 ///
8000 /// @param[in] start
8001 /// First index of range. Must be at least 0 and at
8002 /// most ::HAPI_AttributeInfo::count - 1.
8003 /// <!-- default 0 -->
8004 ///
8005 /// @param[in] length
8006 /// Must be at least 0 and at most
8007 /// ::HAPI_AttributeInfo::count - @p start.
8008 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8009 ///
8011  HAPI_NodeId node_id,
8012  HAPI_PartId part_id,
8013  const char * name,
8014  const HAPI_AttributeInfo * attr_info,
8015  const float * data_array,
8016  int start, int length );
8017 
8018 /// @brief Set 64-bit attribute float data.
8019 ///
8020 /// @ingroup GeometrySetters Attributes
8021 ///
8022 /// @param[in] session
8023 /// The session of Houdini you are interacting with.
8024 /// See @ref HAPI_Sessions for more on sessions.
8025 /// Pass NULL to just use the default in-process session.
8026 /// <!-- default NULL -->
8027 ///
8028 /// @param[in] node_id
8029 /// The SOP node id.
8030 ///
8031 /// @param[in] part_id
8032 /// Currently not used. Just pass 0.
8033 ///
8034 /// @param[in] name
8035 /// Attribute name.
8036 ///
8037 /// @param[in] attr_info
8038 /// ::HAPI_AttributeInfo used as input for what tuple size.
8039 /// you want. Also contains some sanity checks like
8040 /// data type. Generally should be the same struct
8041 /// returned by ::HAPI_GetAttributeInfo().
8042 ///
8043 /// @param[in] data_array
8044 /// An 64-bit float array at least the size of
8045 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8046 ///
8047 /// @param[in] start
8048 /// First index of range. Must be at least 0 and at
8049 /// most ::HAPI_AttributeInfo::count - 1.
8050 /// <!-- default 0 -->
8051 ///
8052 /// @param[in] length
8053 /// Must be at least 0 and at most
8054 /// ::HAPI_AttributeInfo::count - @p start.
8055 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8056 ///
8058  HAPI_NodeId node_id,
8059  HAPI_PartId part_id,
8060  const char * name,
8061  const HAPI_AttributeInfo * attr_info,
8062  const double * data_array,
8063  int start, int length );
8064 
8065 /// @brief Set attribute string data.
8066 ///
8067 /// @ingroup GeometrySetters Attributes
8068 ///
8069 /// @param[in] session
8070 /// The session of Houdini you are interacting with.
8071 /// See @ref HAPI_Sessions for more on sessions.
8072 /// Pass NULL to just use the default in-process session.
8073 /// <!-- default NULL -->
8074 ///
8075 /// @param[in] node_id
8076 /// The SOP node id.
8077 ///
8078 /// @param[in] part_id
8079 /// Currently not used. Just pass 0.
8080 ///
8081 /// @param[in] name
8082 /// Attribute name.
8083 ///
8084 /// @param[in] attr_info
8085 /// ::HAPI_AttributeInfo used as input for what tuple size
8086 /// you want. Also contains some sanity checks like
8087 /// data type. Generally should be the same struct
8088 /// returned by ::HAPI_GetAttributeInfo().
8089 ///
8090 /// @param[in] data_array
8091 /// An ::HAPI_StringHandle array at least the size of
8092 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8093 ///
8094 /// @param[in] start
8095 /// First index of range. Must be at least 0 and at
8096 /// most ::HAPI_AttributeInfo::count - 1.
8097 /// <!-- default 0 -->
8098 ///
8099 /// @param[in] length
8100 /// Must be at least 0 and at most
8101 /// ::HAPI_AttributeInfo::count - @p start.
8102 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8103 ///
8105  HAPI_NodeId node_id,
8106  HAPI_PartId part_id,
8107  const char * name,
8108  const HAPI_AttributeInfo * attr_info,
8109  const char ** data_array,
8110  int start, int length );
8111 
8112 /// @brief Set attribute string data by index.
8113 ///
8114 /// @ingroup GeometrySetters Attributes
8115 ///
8116 /// @param[in] session
8117 /// The session of Houdini you are interacting with.
8118 /// See @ref HAPI_Sessions for more on sessions.
8119 /// Pass NULL to just use the default in-process session.
8120 /// <!-- default NULL -->
8121 ///
8122 /// @param[in] node_id
8123 /// The SOP node id.
8124 ///
8125 /// @param[in] part_id
8126 /// Currently not used. Just pass 0.
8127 ///
8128 /// @param[in] name
8129 /// Attribute name.
8130 ///
8131 /// @param[in] attr_info
8132 /// ::HAPI_AttributeInfo used as input for what tuple size.
8133 /// you want. Also contains some sanity checks like
8134 /// data type. Generally should be the same struct
8135 /// returned by ::HAPI_GetAttributeInfo().
8136 ///
8137 /// @param[in] string_array
8138 /// An array of strings at least the size of
8139 /// <tt>string_count/tt>.
8140 ///
8141 /// @param[in] string_count
8142 /// Number of strings that are indexed.
8143 ///
8144 /// @param[in] indices_array
8145 /// integer array at least the size of
8146 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
8147 /// entry indexes string_array.
8148 ///
8149 /// @param[in] indices_start
8150 /// First index of range. Must be at least 0 and at
8151 /// most ::HAPI_AttributeInfo::count - 1.
8152 /// <!-- default 0 -->
8153 ///
8154 /// @param[in] indices_length
8155 /// Must be at least 0 and at most
8156 /// ::HAPI_AttributeInfo::count - @p start.
8157 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8158 ///
8160  HAPI_NodeId node_id,
8161  HAPI_PartId part_id,
8162  const char* name,
8163  const HAPI_AttributeInfo* attr_info,
8164  const char** string_array,
8165  int string_count,
8166  const int* indices_array,
8167  int indices_start,
8168  int indices_length);
8169 
8170 /// @brief Set multiple attribute string data to the same unique value.
8171 ///
8172 /// @ingroup GeometrySetters Attributes
8173 ///
8174 /// @param[in] session
8175 /// The session of Houdini you are interacting with.
8176 /// See @ref HAPI_Sessions for more on sessions.
8177 /// Pass NULL to just use the default in-process session.
8178 /// <!-- default NULL -->
8179 ///
8180 /// @param[in] node_id
8181 /// The SOP node id.
8182 ///
8183 /// @param[in] part_id
8184 /// Currently not used. Just pass 0.
8185 ///
8186 /// @param[in] name
8187 /// Attribute name.
8188 ///
8189 /// @param[in] attr_info
8190 /// ::HAPI_AttributeInfo used as input for what tuple size.
8191 /// you want. Also contains some sanity checks like
8192 /// data type. Generally should be the same struct
8193 /// returned by ::HAPI_GetAttributeInfo().
8194 ///
8195 /// @param[in] data_array
8196 /// A string
8197 ///
8198 /// @param[in] data_length
8199 /// Must be the length of string data.
8200 ///
8201 /// @param[in] start_index
8202 /// Must be at least 0 and at most
8203 /// ::HAPI_AttributeInfo::count - @p start.
8204 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8205 ///
8206 /// @param[in] num_indices
8207 /// Must be at least 0 and at most
8208 /// ::HAPI_AttributeInfo::count - @p start.
8209 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8210 ///
8212  const HAPI_Session* session,
8213  HAPI_NodeId node_id,
8214  HAPI_PartId part_id,
8215  const char* name,
8216  const HAPI_AttributeInfo* attr_info,
8217  const char* data_array,
8218  int data_length,
8219  int start_index,
8220  int num_indices);
8221 
8222 /// @brief Set multiple attribute int data to the same unique value.
8223 ///
8224 /// @ingroup GeometrySetters Attributes
8225 ///
8226 /// @param[in] session
8227 /// The session of Houdini you are interacting with.
8228 /// See @ref HAPI_Sessions for more on sessions.
8229 /// Pass NULL to just use the default in-process session.
8230 /// <!-- default NULL -->
8231 ///
8232 /// @param[in] node_id
8233 /// The SOP node id.
8234 ///
8235 /// @param[in] part_id
8236 /// Currently not used. Just pass 0.
8237 ///
8238 /// @param[in] name
8239 /// Attribute name.
8240 ///
8241 /// @param[in] attr_info
8242 /// ::HAPI_AttributeInfo used as input for what tuple size.
8243 /// you want. Also contains some sanity checks like
8244 /// data type. Generally should be the same struct
8245 /// returned by ::HAPI_GetAttributeInfo().
8246 ///
8247 /// @param[in] data_array
8248 /// A integer array at least the size of
8249 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8250 ///
8251 /// @param[in] data_length
8252 /// An integer of at least the size of
8253 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8254 ///
8255 /// @param[in] start_index
8256 /// First index of range. Must be at least 0 and at
8257 /// most ::HAPI_AttributeInfo::count - 1.
8258 /// <!-- default 0 -->
8259 ///
8260 /// @param[in] num_indices
8261 /// Must be at least 0 and at most
8262 /// ::HAPI_AttributeInfo::count - @p start_index.
8263 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8264 ///
8266  const HAPI_Session* session,
8267  HAPI_NodeId node_id,
8268  HAPI_PartId part_id,
8269  const char* name,
8270  const HAPI_AttributeInfo* attr_info,
8271  const int* data_array,
8272  int data_length,
8273  int start_index,
8274  int num_indices);
8275 
8276 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique value.
8277 ///
8278 /// @ingroup GeometrySetters Attributes
8279 ///
8280 /// @param[in] session
8281 /// The session of Houdini you are interacting with.
8282 /// See @ref HAPI_Sessions for more on sessions.
8283 /// Pass NULL to just use the default in-process session.
8284 /// <!-- default NULL -->
8285 ///
8286 /// @param[in] node_id
8287 /// The SOP node id.
8288 ///
8289 /// @param[in] part_id
8290 /// Currently not used. Just pass 0.
8291 ///
8292 /// @param[in] name
8293 /// Attribute name.
8294 ///
8295 /// @param[in] attr_info
8296 /// ::HAPI_AttributeInfo used as input for what tuple size.
8297 /// you want. Also contains some sanity checks like
8298 /// data type. Generally should be the same struct
8299 /// returned by ::HAPI_GetAttributeInfo().
8300 ///
8301 /// @param[in] data_array
8302 /// A integer array at least the size of
8303 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8304 ///
8305 /// @param[in] data_length
8306 /// An integer of at least the size of
8307 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8308 ///
8309 /// @param[in] start_index
8310 /// First index of range. Must be at least 0 and at
8311 /// most ::HAPI_AttributeInfo::count - 1.
8312 /// <!-- default 0 -->
8313 ///
8314 /// @param[in] num_indices
8315 /// Must be at least 0 and at most
8316 /// ::HAPI_AttributeInfo::count - @p start_index.
8317 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8318 ///
8320  const HAPI_Session* session,
8321  HAPI_NodeId node_id,
8322  HAPI_PartId part_id,
8323  const char* name,
8324  const HAPI_AttributeInfo* attr_info,
8325  const HAPI_UInt8* data_array,
8326  int data_length,
8327  int start_index,
8328  int num_indices);
8329 
8330 /// @brief Set multiple attribute 8-bit int data to the same unique value.
8331 ///
8332 ///
8333 /// @ingroup GeometrySetters Attributes
8334 ///
8335 /// @param[in] session
8336 /// The session of Houdini you are interacting with.
8337 /// See @ref HAPI_Sessions for more on sessions.
8338 /// Pass NULL to just use the default in-process session.
8339 /// <!-- default NULL -->
8340 ///
8341 /// @param[in] node_id
8342 /// The SOP node id.
8343 ///
8344 /// @param[in] part_id
8345 /// Currently not used. Just pass 0.
8346 ///
8347 /// @param[in] name
8348 /// Attribute name.
8349 ///
8350 /// @param[in] attr_info
8351 /// ::HAPI_AttributeInfo used as input for what tuple size.
8352 /// you want. Also contains some sanity checks like
8353 /// data type. Generally should be the same struct
8354 /// returned by ::HAPI_GetAttributeInfo().
8355 ///
8356 /// @param[in] data_array
8357 /// A integer array at least the size of
8358 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8359 ///
8360 /// @param[in] data_length
8361 /// An integer of at least the size of
8362 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8363 ///
8364 /// @param[in] start_index
8365 /// First index of range. Must be at least 0 and at
8366 /// most ::HAPI_AttributeInfo::count - 1.
8367 /// <!-- default 0 -->
8368 ///
8369 /// @param[in] num_indices
8370 /// Must be at least 0 and at most
8371 /// ::HAPI_AttributeInfo::count - @p start_index.
8372 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8373 ///
8375  const HAPI_Session* session,
8376  HAPI_NodeId node_id,
8377  HAPI_PartId part_id,
8378  const char* name,
8379  const HAPI_AttributeInfo* attr_info,
8380  const HAPI_Int8* data_array,
8381  int data_length,
8382  int start_index,
8383  int num_indices);
8384 
8385 /// @brief Set multiple attribute 16-bit int data to the same unique value.
8386 ///
8387 /// @ingroup GeometrySetters Attributes
8388 ///
8389 /// @param[in] session
8390 /// The session of Houdini you are interacting with.
8391 /// See @ref HAPI_Sessions for more on sessions.
8392 /// Pass NULL to just use the default in-process session.
8393 /// <!-- default NULL -->
8394 ///
8395 /// @param[in] node_id
8396 /// The SOP node id.
8397 ///
8398 /// @param[in] part_id
8399 /// Currently not used. Just pass 0.
8400 ///
8401 /// @param[in] name
8402 /// Attribute name.
8403 ///
8404 /// @param[in] attr_info
8405 /// ::HAPI_AttributeInfo used as input for what tuple size.
8406 /// you want. Also contains some sanity checks like
8407 /// data type. Generally should be the same struct
8408 /// returned by ::HAPI_GetAttributeInfo().
8409 ///
8410 /// @param[in] data_array
8411 /// A integer array at least the size of
8412 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8413 ///
8414 /// @param[in] data_length
8415 /// An integer of at least the size of
8416 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8417 ///
8418 /// @param[in] start_index
8419 /// First index of range. Must be at least 0 and at
8420 /// most ::HAPI_AttributeInfo::count - 1.
8421 /// <!-- default 0 -->
8422 ///
8423 /// @param[in] num_indices
8424 /// Must be at least 0 and at most
8425 /// ::HAPI_AttributeInfo::count - @p start_index.
8426 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8427 ///
8429  const HAPI_Session* session,
8430  HAPI_NodeId node_id,
8431  HAPI_PartId part_id,
8432  const char* name,
8433  const HAPI_AttributeInfo* attr_info,
8434  const HAPI_Int16* data_array,
8435  int data_length,
8436  int start_index,
8437  int num_indices);
8438 
8439 /// @brief Set multiple attribute 64-bit int data to the same unique value.
8440 ///
8441 /// @ingroup GeometrySetters Attributes
8442 ///
8443 /// @param[in] session
8444 /// The session of Houdini you are interacting with.
8445 /// See @ref HAPI_Sessions for more on sessions.
8446 /// Pass NULL to just use the default in-process session.
8447 /// <!-- default NULL -->
8448 ///
8449 /// @param[in] node_id
8450 /// The SOP node id.
8451 ///
8452 /// @param[in] part_id
8453 /// Currently not used. Just pass 0.
8454 ///
8455 /// @param[in] name
8456 /// Attribute name.
8457 ///
8458 /// @param[in] attr_info
8459 /// ::HAPI_AttributeInfo used as input for what tuple size.
8460 /// you want. Also contains some sanity checks like
8461 /// data type. Generally should be the same struct
8462 /// returned by ::HAPI_GetAttributeInfo().
8463 ///
8464 /// @param[in] data_array
8465 /// A integer array at least the size of
8466 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8467 ///
8468 /// @param[in] data_length
8469 /// An integer of at least the size of
8470 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8471 ///
8472 /// @param[in] start_index
8473 /// First index of range. Must be at least 0 and at
8474 /// most ::HAPI_AttributeInfo::count - 1.
8475 /// <!-- default 0 -->
8476 ///
8477 /// @param[in] num_indices
8478 /// Must be at least 0 and at most
8479 /// ::HAPI_AttributeInfo::count - @p start_index.
8480 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8481 ///
8483  const HAPI_Session* session,
8484  HAPI_NodeId node_id,
8485  HAPI_PartId part_id,
8486  const char* name,
8487  const HAPI_AttributeInfo* attr_info,
8488  const HAPI_Int64* data_array,
8489  int data_length,
8490  int start_index,
8491  int num_indices);
8492 
8493 /// @brief Set multiple attribute float data to the same unique value.
8494 ///
8495 /// @ingroup GeometrySetters Attributes
8496 ///
8497 /// @param[in] session
8498 /// The session of Houdini you are interacting with.
8499 /// See @ref HAPI_Sessions for more on sessions.
8500 /// Pass NULL to just use the default in-process session.
8501 /// <!-- default NULL -->
8502 ///
8503 /// @param[in] node_id
8504 /// The SOP node id.
8505 ///
8506 /// @param[in] part_id
8507 /// Currently not used. Just pass 0.
8508 ///
8509 /// @param[in] name
8510 /// Attribute name.
8511 ///
8512 /// @param[in] attr_info
8513 /// ::HAPI_AttributeInfo used as input for what tuple size.
8514 /// you want. Also contains some sanity checks like
8515 /// data type. Generally should be the same struct
8516 /// returned by ::HAPI_GetAttributeInfo().
8517 ///
8518 /// @param[in] data_array
8519 /// A floating point array at least the size of
8520 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8521 ///
8522 /// @param[in] data_length
8523 /// An integer of at least the size of
8524 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8525 ///
8526 /// @param[in] start_index
8527 /// First index of range. Must be at least 0 and at
8528 /// most ::HAPI_AttributeInfo::count - 1.
8529 /// <!-- default 0 -->
8530 ///
8531 /// @param[in] num_indices
8532 /// Must be at least 0 and at most
8533 /// ::HAPI_AttributeInfo::count - @p start_index.
8534 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8535 ///
8537  const HAPI_Session* session,
8538  HAPI_NodeId node_id,
8539  HAPI_PartId part_id,
8540  const char* name,
8541  const HAPI_AttributeInfo* attr_info,
8542  const float* data_array,
8543  int data_length,
8544  int start_index,
8545  int num_indices);
8546 
8547 /// @brief Set multiple attribute 64-bit float data to the same unique value.
8548 ///
8549 /// @ingroup GeometrySetters Attributes
8550 ///
8551 /// @param[in] session
8552 /// The session of Houdini you are interacting with.
8553 /// See @ref HAPI_Sessions for more on sessions.
8554 /// Pass NULL to just use the default in-process session.
8555 /// <!-- default NULL -->
8556 ///
8557 /// @param[in] node_id
8558 /// The SOP node id.
8559 ///
8560 /// @param[in] part_id
8561 /// Currently not used. Just pass 0.
8562 ///
8563 /// @param[in] name
8564 /// Attribute name.
8565 ///
8566 /// @param[in] attr_info
8567 /// ::HAPI_AttributeInfo used as input for what tuple size.
8568 /// you want. Also contains some sanity checks like
8569 /// data type. Generally should be the same struct
8570 /// returned by ::HAPI_GetAttributeInfo().
8571 ///
8572 /// @param[in] data_array
8573 /// A floating point array at least the size of
8574 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8575 ///
8576 /// @param[in] data_length
8577 /// An integer of at least the size of
8578 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8579 ///
8580 /// @param[in] start_index
8581 /// First index of range. Must be at least 0 and at
8582 /// most ::HAPI_AttributeInfo::count - 1.
8583 /// <!-- default 0 -->
8584 ///
8585 /// @param[in] num_indices
8586 /// Must be at least 0 and at most
8587 /// ::HAPI_AttributeInfo::count - @p start_index.
8588 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8589 ///
8591  const HAPI_Session* session,
8592  HAPI_NodeId node_id,
8593  HAPI_PartId part_id,
8594  const char* name,
8595  const HAPI_AttributeInfo* attr_info,
8596  const double* data_array,
8597  int data_length,
8598  int start_index,
8599  int num_indices);
8600 
8601 /// @brief Set attribute dictionary data. The dictionary data should
8602 /// be provided as JSON-encoded strings.
8603 ///
8604 /// @ingroup GeometrySetters Attributes
8605 ///
8606 /// @param[in] session
8607 /// The session of Houdini you are interacting with.
8608 /// See @ref HAPI_Sessions for more on sessions.
8609 /// Pass NULL to just use the default in-process session.
8610 /// <!-- default NULL -->
8611 ///
8612 /// @param[in] node_id
8613 /// The SOP node id.
8614 ///
8615 /// @param[in] part_id
8616 /// Currently not used. Just pass 0.
8617 ///
8618 /// @param[in] name
8619 /// Attribute name.
8620 ///
8621 /// @param[in] attr_info
8622 /// ::HAPI_AttributeInfo used as input for what tuple size
8623 /// you want. Also contains some sanity checks like
8624 /// data type. Generally should be the same struct
8625 /// returned by ::HAPI_GetAttributeInfo().
8626 ///
8627 /// @param[in] data_array
8628 /// An ::HAPI_StringHandle array at least the size of
8629 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8630 ///
8631 /// @param[in] start
8632 /// First index of range. Must be at least 0 and at
8633 /// most ::HAPI_AttributeInfo::count - 1.
8634 /// <!-- default 0 -->
8635 ///
8636 /// @param[in] length
8637 /// Must be at least 0 and at most
8638 /// ::HAPI_AttributeInfo::count - @p start.
8639 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8640 ///
8642  HAPI_NodeId node_id,
8643  HAPI_PartId part_id,
8644  const char* name,
8645  const HAPI_AttributeInfo* attr_info,
8646  const char** data_array,
8647  int start, int length );
8648 
8649 /// @brief Set integer array attribute data.
8650 ///
8651 /// @ingroup GeometrySetters Attributes
8652 ///
8653 /// @param[in] session
8654 /// The session of Houdini you are interacting with.
8655 /// See @ref HAPI_Sessions for more on sessions.
8656 /// Pass NULL to just use the default in-process session.
8657 /// <!-- default NULL -->
8658 ///
8659 /// @param[in] node_id
8660 /// The SOP node id.
8661 ///
8662 /// @param[in] part_id
8663 /// Currently not used. Just pass 0.
8664 ///
8665 /// @param[in] name
8666 /// Attribute name.
8667 ///
8668 /// @param[in] attr_info
8669 /// ::HAPI_AttributeInfo that contains the description for the
8670 /// attribute that is being set.
8671 ///
8672 /// @param[in] data_fixed_array
8673 /// An array containing the int values of the attribute.
8674 ///
8675 /// @param[in] data_fixed_length
8676 /// The total size of the data array. The size can be no greater
8677 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8678 /// of the attribute.
8679 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8680 ///
8681 /// @param[in] sizes_fixed_array
8682 /// An array of integers that contains the sizes of each
8683 /// attribute array. This is required because the attribute
8684 /// array for each geometry component can be of variable size.
8685 ///
8686 /// @param[in] start
8687 /// First index of range. Must be at least 0 and at most
8688 /// ::HAPI_AttributeInfo::count - 1.
8689 /// <!-- default 0 -->
8690 ///
8691 /// @param[in] sizes_fixed_length
8692 /// Must be at least 0 and at most
8693 /// ::HAPI_AttributeInfo::count - @p start.
8694 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8696  HAPI_NodeId node_id,
8697  HAPI_PartId part_id,
8698  const char * name,
8699  const HAPI_AttributeInfo * attr_info,
8700  const int * data_fixed_array,
8701  int data_fixed_length,
8702  const int * sizes_fixed_array,
8703  int start,
8704  int sizes_fixed_length );
8705 
8706 /// @brief Set unsigned 8-bit integer array attribute data.
8707 ///
8708 /// @ingroup GeometrySetters Attributes
8709 ///
8710 /// @param[in] session
8711 /// The session of Houdini you are interacting with.
8712 /// See @ref HAPI_Sessions for more on sessions.
8713 /// Pass NULL to just use the default in-process session.
8714 /// <!-- default NULL -->
8715 ///
8716 /// @param[in] node_id
8717 /// The SOP node id.
8718 ///
8719 /// @param[in] part_id
8720 /// Currently not used. Just pass 0.
8721 ///
8722 /// @param[in] name
8723 /// Attribute name.
8724 ///
8725 /// @param[in] attr_info
8726 /// ::HAPI_AttributeInfo that contains the description for the
8727 /// attribute that is being set.
8728 ///
8729 /// @param[in] data_fixed_array
8730 /// An array containing the HAPI_UInt8 values of the attribute.
8731 ///
8732 /// @param[in] data_fixed_length
8733 /// The total size of the data array. The size can be no greater
8734 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8735 /// of the attribute.
8736 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8737 ///
8738 /// @param[in] sizes_fixed_array
8739 /// An array of integers that contains the sizes of each
8740 /// attribute array. This is required because the attribute
8741 /// array for each geometry component can be of variable size.
8742 ///
8743 /// @param[in] start
8744 /// First index of range. Must be at least 0 and at most
8745 /// ::HAPI_AttributeInfo::count - 1.
8746 /// <!-- default 0 -->
8747 ///
8748 /// @param[in] sizes_fixed_length
8749 /// Must be at least 0 and at most
8750 /// ::HAPI_AttributeInfo::count - @p start.
8751 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8753  HAPI_NodeId node_id,
8754  HAPI_PartId part_id,
8755  const char * name,
8756  const HAPI_AttributeInfo * attr_info,
8757  const HAPI_UInt8 * data_fixed_array,
8758  int data_fixed_length,
8759  const int * sizes_fixed_array,
8760  int start,
8761  int sizes_fixed_length );
8762 
8763 /// @brief Set 8-bit integer array attribute data.
8764 ///
8765 /// @ingroup GeometrySetters Attributes
8766 ///
8767 /// @param[in] session
8768 /// The session of Houdini you are interacting with.
8769 /// See @ref HAPI_Sessions for more on sessions.
8770 /// Pass NULL to just use the default in-process session.
8771 /// <!-- default NULL -->
8772 ///
8773 /// @param[in] node_id
8774 /// The SOP node id.
8775 ///
8776 /// @param[in] part_id
8777 /// Currently not used. Just pass 0.
8778 ///
8779 /// @param[in] name
8780 /// Attribute name.
8781 ///
8782 /// @param[in] attr_info
8783 /// ::HAPI_AttributeInfo that contains the description for the
8784 /// attribute that is being set.
8785 ///
8786 /// @param[in] data_fixed_array
8787 /// An array containing the HAPI_Int8 values of the attribute.
8788 ///
8789 /// @param[in] data_fixed_length
8790 /// The total size of the data array. The size can be no greater
8791 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8792 /// of the attribute.
8793 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8794 ///
8795 /// @param[in] sizes_fixed_array
8796 /// An array of integers that contains the sizes of each
8797 /// attribute array. This is required because the attribute
8798 /// array for each geometry component can be of variable size.
8799 ///
8800 /// @param[in] start
8801 /// First index of range. Must be at least 0 and at most
8802 /// ::HAPI_AttributeInfo::count - 1.
8803 /// <!-- default 0 -->
8804 ///
8805 /// @param[in] sizes_fixed_length
8806 /// Must be at least 0 and at most
8807 /// ::HAPI_AttributeInfo::count - @p start.
8808 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8810  HAPI_NodeId node_id,
8811  HAPI_PartId part_id,
8812  const char * name,
8813  const HAPI_AttributeInfo * attr_info,
8814  const HAPI_Int8 * data_fixed_array,
8815  int data_fixed_length,
8816  const int * sizes_fixed_array,
8817  int start,
8818  int sizes_fixed_length);
8819 
8820 /// @brief Set 16-bit integer array attribute data.
8821 ///
8822 /// @ingroup GeometrySetters Attributes
8823 ///
8824 /// @param[in] session
8825 /// The session of Houdini you are interacting with.
8826 /// See @ref HAPI_Sessions for more on sessions.
8827 /// Pass NULL to just use the default in-process session.
8828 /// <!-- default NULL -->
8829 ///
8830 /// @param[in] node_id
8831 /// The SOP node id.
8832 ///
8833 /// @param[in] part_id
8834 /// Currently not used. Just pass 0.
8835 ///
8836 /// @param[in] name
8837 /// Attribute name.
8838 ///
8839 /// @param[in] attr_info
8840 /// ::HAPI_AttributeInfo that contains the description for the
8841 /// attribute that is being set.
8842 ///
8843 /// @param[in] data_fixed_array
8844 /// An array containing the HAPI_Int16 values of the attribute.
8845 ///
8846 /// @param[in] data_fixed_length
8847 /// The total size of the data array. The size can be no greater
8848 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8849 /// of the attribute.
8850 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8851 ///
8852 /// @param[in] sizes_fixed_array
8853 /// An array of integers that contains the sizes of each
8854 /// attribute array. This is required because the attribute
8855 /// array for each geometry component can be of variable size.
8856 ///
8857 /// @param[in] start
8858 /// First index of range. Must be at least 0 and at most
8859 /// ::HAPI_AttributeInfo::count - 1.
8860 /// <!-- default 0 -->
8861 ///
8862 /// @param[in] sizes_fixed_length
8863 /// Must be at least 0 and at most
8864 /// ::HAPI_AttributeInfo::count - @p start.
8865 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8867  HAPI_NodeId node_id,
8868  HAPI_PartId part_id,
8869  const char * name,
8870  const HAPI_AttributeInfo * attr_info,
8871  const HAPI_Int16 * data_fixed_array,
8872  int data_fixed_length,
8873  const int * sizes_fixed_array,
8874  int start,
8875  int sizes_fixed_length );
8876 
8877 /// @brief Set 64-bit integer array attribute data.
8878 ///
8879 /// @ingroup GeometrySetters Attributes
8880 ///
8881 /// @param[in] session
8882 /// The session of Houdini you are interacting with.
8883 /// See @ref HAPI_Sessions for more on sessions.
8884 /// Pass NULL to just use the default in-process session.
8885 /// <!-- default NULL -->
8886 ///
8887 /// @param[in] node_id
8888 /// The SOP node id.
8889 ///
8890 /// @param[in] part_id
8891 /// Currently not used. Just pass 0.
8892 ///
8893 /// @param[in] name
8894 /// Attribute name.
8895 ///
8896 /// @param[in] attr_info
8897 /// ::HAPI_AttributeInfo that contains the description for the
8898 /// attribute that is being set.
8899 ///
8900 /// @param[in] data_fixed_array
8901 /// An array containing the HAPI_Int64 values of the attribute.
8902 ///
8903 /// @param[in] data_fixed_length
8904 /// The total size of the data array. The size can be no greater
8905 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8906 /// of the attribute.
8907 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8908 ///
8909 /// @param[in] sizes_fixed_array
8910 /// An array of integers that contains the sizes of each
8911 /// attribute array. This is required because the attribute
8912 /// array for each geometry component can be of variable size.
8913 ///
8914 /// @param[in] start
8915 /// First index of range. Must be at least 0 and at most
8916 /// ::HAPI_AttributeInfo::count - 1.
8917 /// <!-- default 0 -->
8918 ///
8919 /// @param[in] sizes_fixed_length
8920 /// Must be at least 0 and at most
8921 /// ::HAPI_AttributeInfo::count - @p start.
8922 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8924  HAPI_NodeId node_id,
8925  HAPI_PartId part_id,
8926  const char * name,
8927  const HAPI_AttributeInfo * attr_info,
8928  const HAPI_Int64 * data_fixed_array,
8929  int data_fixed_length,
8930  const int * sizes_fixed_array,
8931  int start,
8932  int sizes_fixed_length );
8933 
8934 /// @brief Set float array attribute data.
8935 ///
8936 /// @ingroup GeometrySetters Attributes
8937 ///
8938 /// @param[in] session
8939 /// The session of Houdini you are interacting with.
8940 /// See @ref HAPI_Sessions for more on sessions.
8941 /// Pass NULL to just use the default in-process session.
8942 /// <!-- default NULL -->
8943 ///
8944 /// @param[in] node_id
8945 /// The SOP node id.
8946 ///
8947 /// @param[in] part_id
8948 /// Currently not used. Just pass 0.
8949 ///
8950 /// @param[in] name
8951 /// Attribute name.
8952 ///
8953 /// @param[in] attr_info
8954 /// ::HAPI_AttributeInfo that contains the description for the
8955 /// attribute that is being set.
8956 ///
8957 /// @param[in] data_fixed_array
8958 /// An array containing the float values of the attribute.
8959 ///
8960 /// @param[in] data_fixed_length
8961 /// The total size of the data array. The size can be no greater
8962 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8963 /// of the attribute.
8964 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8965 ///
8966 /// @param[in] sizes_fixed_array
8967 /// An array of integers that contains the sizes of each
8968 /// attribute array. This is required because the attribute
8969 /// array for each geometry component can be of variable size.
8970 ///
8971 /// @param[in] start
8972 /// First index of range. Must be at least 0 and at most
8973 /// ::HAPI_AttributeInfo::count - 1.
8974 /// <!-- default 0 -->
8975 ///
8976 /// @param[in] sizes_fixed_length
8977 /// Must be at least 0 and at most
8978 /// ::HAPI_AttributeInfo::count - @p start.
8979 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8981  HAPI_NodeId node_id,
8982  HAPI_PartId part_id,
8983  const char * name,
8984  const HAPI_AttributeInfo * attr_info,
8985  const float * data_fixed_array,
8986  int data_fixed_length,
8987  const int * sizes_fixed_array,
8988  int start,
8989  int sizes_fixed_length );
8990 
8991 /// @brief Set 64-bit float array attribute data.
8992 ///
8993 /// @ingroup GeometrySetters Attributes
8994 ///
8995 /// @param[in] session
8996 /// The session of Houdini you are interacting with.
8997 /// See @ref HAPI_Sessions for more on sessions.
8998 /// Pass NULL to just use the default in-process session.
8999 /// <!-- default NULL -->
9000 ///
9001 /// @param[in] node_id
9002 /// The SOP node id.
9003 ///
9004 /// @param[in] part_id
9005 /// Currently not used. Just pass 0.
9006 ///
9007 /// @param[in] name
9008 /// Attribute name.
9009 ///
9010 /// @param[in] attr_info
9011 /// ::HAPI_AttributeInfo that contains the description for the
9012 /// attribute that is being set.
9013 ///
9014 /// @param[in] data_fixed_array
9015 /// An array containing the double values of the attribute.
9016 ///
9017 /// @param[in] data_fixed_length
9018 /// The total size of the data array. The size can be no greater
9019 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9020 /// of the attribute.
9021 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9022 ///
9023 /// @param[in] sizes_fixed_array
9024 /// An array of integers that contains the sizes of each
9025 /// attribute array. This is required because the attribute
9026 /// array for each geometry component can be of variable size.
9027 ///
9028 /// @param[in] start
9029 /// First index of range. Must be at least 0 and at most
9030 /// ::HAPI_AttributeInfo::count - 1.
9031 /// <!-- default 0 -->
9032 ///
9033 /// @param[in] sizes_fixed_length
9034 /// Must be at least 0 and at most
9035 /// ::HAPI_AttributeInfo::count - @p start.
9036 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9038  HAPI_NodeId node_id,
9039  HAPI_PartId part_id,
9040  const char * name,
9041  const HAPI_AttributeInfo * attr_info,
9042  const double * data_fixed_array,
9043  int data_fixed_length,
9044  const int * sizes_fixed_array,
9045  int start,
9046  int sizes_fixed_length );
9047 
9048 /// @brief Set string array attribute data.
9049 ///
9050 /// @ingroup GeometrySetters Attributes
9051 ///
9052 /// @param[in] session
9053 /// The session of Houdini you are interacting with.
9054 /// See @ref HAPI_Sessions for more on sessions.
9055 /// Pass NULL to just use the default in-process session.
9056 /// <!-- default NULL -->
9057 ///
9058 /// @param[in] node_id
9059 /// The SOP node id.
9060 ///
9061 /// @param[in] part_id
9062 /// Currently not used. Just pass 0.
9063 ///
9064 /// @param[in] name
9065 /// Attribute name.
9066 ///
9067 /// @param[in] attr_info
9068 /// ::HAPI_AttributeInfo that contains the description for the
9069 /// attribute that is being set.
9070 ///
9071 /// @param[in] data_fixed_array
9072 /// An array containing the string values of the attribute.
9073 ///
9074 /// @param[in] data_fixed_length
9075 /// The total size of the data array. The size can be no greater
9076 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9077 /// of the attribute.
9078 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9079 ///
9080 /// @param[in] sizes_fixed_array
9081 /// An array of integers that contains the sizes of each
9082 /// attribute array. This is required because the attribute
9083 /// array for each geometry component can be of variable size.
9084 ///
9085 /// @param[in] start
9086 /// First index of range. Must be at least 0 and at most
9087 /// ::HAPI_AttributeInfo::count - 1.
9088 /// <!-- default 0 -->
9089 ///
9090 /// @param[in] sizes_fixed_length
9091 /// Must be at least 0 and at most
9092 /// ::HAPI_AttributeInfo::count - @p start.
9093 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9095  HAPI_NodeId node_id,
9096  HAPI_PartId part_id,
9097  const char * name,
9098  const HAPI_AttributeInfo * attr_info,
9099  const char ** data_fixed_array,
9100  int data_fixed_length,
9101  const int * sizes_fixed_array,
9102  int start,
9103  int sizes_fixed_length );
9104 
9105 /// @brief Set attribute dictionary array data. The dictionary data should
9106 /// be provided as JSON-encoded strings.
9107 ///
9108 /// @ingroup GeometrySetters Attributes
9109 ///
9110 /// @param[in] session
9111 /// The session of Houdini you are interacting with.
9112 /// See @ref HAPI_Sessions for more on sessions.
9113 /// Pass NULL to just use the default in-process session.
9114 /// <!-- default NULL -->
9115 ///
9116 /// @param[in] node_id
9117 /// The SOP node id.
9118 ///
9119 /// @param[in] part_id
9120 /// Currently not used. Just pass 0.
9121 ///
9122 /// @param[in] name
9123 /// Attribute name.
9124 ///
9125 /// @param[in] attr_info
9126 /// ::HAPI_AttributeInfo that contains the description for the
9127 /// attribute that is being set.
9128 ///
9129 /// @param[in] data_fixed_array
9130 /// An array containing the dictionary values of the attribute.
9131 ///
9132 /// @param[in] data_fixed_length
9133 /// The total size of the data array. The size can be no greater
9134 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9135 /// of the attribute.
9136 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9137 ///
9138 /// @param[in] sizes_fixed_array
9139 /// An array of integers that contains the sizes of each
9140 /// attribute array. This is required because the attribute
9141 /// array for each geometry component can be of variable size.
9142 ///
9143 /// @param[in] start
9144 /// First index of range. Must be at least 0 and at most
9145 /// ::HAPI_AttributeInfo::count - 1.
9146 /// <!-- default 0 -->
9147 ///
9148 /// @param[in] sizes_fixed_length
9149 /// Must be at least 0 and at most
9150 /// ::HAPI_AttributeInfo::count - @p start.
9151 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9153  HAPI_NodeId node_id,
9154  HAPI_PartId part_id,
9155  const char* name,
9156  const HAPI_AttributeInfo* attr_info,
9157  const char** data_fixed_array,
9158  int data_fixed_length,
9159  const int* sizes_fixed_array,
9160  int start,
9161  int sizes_fixed_length);
9162 
9163 /// @brief Set attribute integer data asynchronously.
9164 ///
9165 /// @ingroup GeometrySetters Attributes
9166 ///
9167 /// @param[in] session
9168 /// The session of Houdini you are interacting with.
9169 /// See @ref HAPI_Sessions for more on sessions.
9170 /// Pass NULL to just use the default in-process session.
9171 /// <!-- default NULL -->
9172 ///
9173 /// @param[in] node_id
9174 /// The SOP node id.
9175 ///
9176 /// @param[in] part_id
9177 /// Currently not used. Just pass 0.
9178 ///
9179 /// @param[in] name
9180 /// Attribute name.
9181 ///
9182 /// @param[in] attr_info
9183 /// ::HAPI_AttributeInfo used as input for what tuple size.
9184 /// you want. Also contains some sanity checks like
9185 /// data type. Generally should be the same struct
9186 /// returned by ::HAPI_GetAttributeInfo().
9187 ///
9188 /// @param[in] data_array
9189 /// An integer array at least the size of
9190 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9191 ///
9192 /// @param[in] start
9193 /// First index of range. Must be at least 0 and at
9194 /// most ::HAPI_AttributeInfo::count - 1.
9195 /// <!-- default 0 -->
9196 ///
9197 /// @param[in] length
9198 /// Must be at least 0 and at most
9199 /// ::HAPI_AttributeInfo::count - @p start.
9200 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9201 ///
9202 /// @param[out] job_id
9203 /// The id assigned to the job.
9204 ///
9206  HAPI_NodeId node_id,
9207  HAPI_PartId part_id,
9208  const char * name,
9209  const HAPI_AttributeInfo * attr_info,
9210  const int * data_array,
9211  int start, int length,
9212  int * job_id );
9213 
9214 /// @brief Set unsigned 8-bit attribute integer data asynchronously.
9215 ///
9216 /// @ingroup GeometrySetters Attributes
9217 ///
9218 /// @param[in] session
9219 /// The session of Houdini you are interacting with.
9220 /// See @ref HAPI_Sessions for more on sessions.
9221 /// Pass NULL to just use the default in-process session.
9222 /// <!-- default NULL -->
9223 ///
9224 /// @param[in] node_id
9225 /// The SOP node id.
9226 ///
9227 /// @param[in] part_id
9228 /// Currently not used. Just pass 0.
9229 ///
9230 /// @param[in] name
9231 /// Attribute name.
9232 ///
9233 /// @param[in] attr_info
9234 /// ::HAPI_AttributeInfo used as input for what tuple size.
9235 /// you want. Also contains some sanity checks like
9236 /// data type. Generally should be the same struct
9237 /// returned by ::HAPI_GetAttributeInfo().
9238 ///
9239 /// @param[in] data_array
9240 /// An unsigned 8-bit integer array at least the size of
9241 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9242 ///
9243 /// @param[in] start
9244 /// First index of range. Must be at least 0 and at
9245 /// most ::HAPI_AttributeInfo::count - 1.
9246 /// <!-- default 0 -->
9247 ///
9248 /// @param[in] length
9249 /// Must be at least 0 and at most
9250 /// ::HAPI_AttributeInfo::count - @p start.
9251 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9252 ///
9253 /// @param[out] job_id
9254 /// The id assigned to the job.
9255 ///
9257  HAPI_NodeId node_id,
9258  HAPI_PartId part_id,
9259  const char * name,
9260  const HAPI_AttributeInfo * attr_info,
9261  const HAPI_UInt8 * data_array,
9262  int start, int length,
9263  int * job_id );
9264 
9265 /// @brief Set 8-bit attribute integer data asynchronously.
9266 ///
9267 /// @ingroup GeometrySetters Attributes
9268 ///
9269 /// @param[in] session
9270 /// The session of Houdini you are interacting with.
9271 /// See @ref HAPI_Sessions for more on sessions.
9272 /// Pass NULL to just use the default in-process session.
9273 /// <!-- default NULL -->
9274 ///
9275 /// @param[in] node_id
9276 /// The SOP node id.
9277 ///
9278 /// @param[in] part_id
9279 /// Currently not used. Just pass 0.
9280 ///
9281 /// @param[in] name
9282 /// Attribute name.
9283 ///
9284 /// @param[in] attr_info
9285 /// ::HAPI_AttributeInfo used as input for what tuple size.
9286 /// you want. Also contains some sanity checks like
9287 /// data type. Generally should be the same struct
9288 /// returned by ::HAPI_GetAttributeInfo().
9289 ///
9290 /// @param[in] data_array
9291 /// An 8-bit integer array at least the size of
9292 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9293 ///
9294 /// @param[in] start
9295 /// First index of range. Must be at least 0 and at
9296 /// most ::HAPI_AttributeInfo::count - 1.
9297 /// <!-- default 0 -->
9298 ///
9299 /// @param[in] length
9300 /// Must be at least 0 and at most
9301 /// ::HAPI_AttributeInfo::count - @p start.
9302 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9303 ///
9304 /// @param[out] job_id
9305 /// The id assigned to the job.
9306 ///
9308  HAPI_NodeId node_id,
9309  HAPI_PartId part_id,
9310  const char * name,
9311  const HAPI_AttributeInfo * attr_info,
9312  const HAPI_Int8 * data_array,
9313  int start, int length,
9314  int * job_id );
9315 
9316 /// @brief Set 16-bit attribute integer data asynchronously.
9317 ///
9318 /// @ingroup GeometrySetters Attributes
9319 ///
9320 /// @param[in] session
9321 /// The session of Houdini you are interacting with.
9322 /// See @ref HAPI_Sessions for more on sessions.
9323 /// Pass NULL to just use the default in-process session.
9324 /// <!-- default NULL -->
9325 ///
9326 /// @param[in] node_id
9327 /// The SOP node id.
9328 ///
9329 /// @param[in] part_id
9330 /// Currently not used. Just pass 0.
9331 ///
9332 /// @param[in] name
9333 /// Attribute name.
9334 ///
9335 /// @param[in] attr_info
9336 /// ::HAPI_AttributeInfo used as input for what tuple size.
9337 /// you want. Also contains some sanity checks like
9338 /// data type. Generally should be the same struct
9339 /// returned by ::HAPI_GetAttributeInfo().
9340 ///
9341 /// @param[in] data_array
9342 /// An 16-bit integer array at least the size of
9343 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9344 ///
9345 /// @param[in] start
9346 /// First index of range. Must be at least 0 and at
9347 /// most ::HAPI_AttributeInfo::count - 1.
9348 /// <!-- default 0 -->
9349 ///
9350 /// @param[in] length
9351 /// Must be at least 0 and at most
9352 /// ::HAPI_AttributeInfo::count - @p start.
9353 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9354 ///
9355 /// @param[out] job_id
9356 /// The id assigned to the job.
9357 ///
9359  HAPI_NodeId node_id,
9360  HAPI_PartId part_id,
9361  const char * name,
9362  const HAPI_AttributeInfo * attr_info,
9363  const HAPI_Int16 * data_array,
9364  int start, int length,
9365  int * job_id );
9366 
9367 /// @brief Set 64-bit attribute integer data asynchronously.
9368 ///
9369 /// @ingroup GeometrySetters Attributes
9370 ///
9371 /// @param[in] session
9372 /// The session of Houdini you are interacting with.
9373 /// See @ref HAPI_Sessions for more on sessions.
9374 /// Pass NULL to just use the default in-process session.
9375 /// <!-- default NULL -->
9376 ///
9377 /// @param[in] node_id
9378 /// The SOP node id.
9379 ///
9380 /// @param[in] part_id
9381 /// Currently not used. Just pass 0.
9382 ///
9383 /// @param[in] name
9384 /// Attribute name.
9385 ///
9386 /// @param[in] attr_info
9387 /// ::HAPI_AttributeInfo used as input for what tuple size.
9388 /// you want. Also contains some sanity checks like
9389 /// data type. Generally should be the same struct
9390 /// returned by ::HAPI_GetAttributeInfo().
9391 ///
9392 /// @param[in] data_array
9393 /// An 64-bit integer array at least the size of
9394 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9395 ///
9396 /// @param[in] start
9397 /// First index of range. Must be at least 0 and at
9398 /// most ::HAPI_AttributeInfo::count - 1.
9399 /// <!-- default 0 -->
9400 ///
9401 /// @param[in] length
9402 /// Must be at least 0 and at most
9403 /// ::HAPI_AttributeInfo::count - @p start.
9404 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9405 ///
9406 /// @param[out] job_id
9407 /// The id assigned to the job.
9408 ///
9410  HAPI_NodeId node_id,
9411  HAPI_PartId part_id,
9412  const char * name,
9413  const HAPI_AttributeInfo * attr_info,
9414  const HAPI_Int64 * data_array,
9415  int start, int length,
9416  int * job_id );
9417 
9418 /// @brief Set attribute float data asynchronously.
9419 ///
9420 /// @ingroup GeometrySetters Attributes
9421 ///
9422 /// @param[in] session
9423 /// The session of Houdini you are interacting with.
9424 /// See @ref HAPI_Sessions for more on sessions.
9425 /// Pass NULL to just use the default in-process session.
9426 /// <!-- default NULL -->
9427 ///
9428 /// @param[in] node_id
9429 /// The SOP node id.
9430 ///
9431 /// @param[in] part_id
9432 /// Currently not used. Just pass 0.
9433 ///
9434 /// @param[in] name
9435 /// Attribute name.
9436 ///
9437 /// @param[in] attr_info
9438 /// ::HAPI_AttributeInfo used as input for what tuple size.
9439 /// you want. Also contains some sanity checks like
9440 /// data type. Generally should be the same struct
9441 /// returned by ::HAPI_GetAttributeInfo().
9442 ///
9443 /// @param[in] data_array
9444 /// An float array at least the size of
9445 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9446 ///
9447 /// @param[in] start
9448 /// First index of range. Must be at least 0 and at
9449 /// most ::HAPI_AttributeInfo::count - 1.
9450 /// <!-- default 0 -->
9451 ///
9452 /// @param[in] length
9453 /// Must be at least 0 and at most
9454 /// ::HAPI_AttributeInfo::count - @p start.
9455 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9456 ///
9457 /// @param[out] job_id
9458 /// The id assigned to the job.
9459 ///
9461  HAPI_NodeId node_id,
9462  HAPI_PartId part_id,
9463  const char * name,
9464  const HAPI_AttributeInfo * attr_info,
9465  const float * data_array,
9466  int start, int length,
9467  int * job_id );
9468 
9469 /// @brief Set 64-bit attribute float data asynchronously.
9470 ///
9471 /// @ingroup GeometrySetters Attributes
9472 ///
9473 /// @param[in] session
9474 /// The session of Houdini you are interacting with.
9475 /// See @ref HAPI_Sessions for more on sessions.
9476 /// Pass NULL to just use the default in-process session.
9477 /// <!-- default NULL -->
9478 ///
9479 /// @param[in] node_id
9480 /// The SOP node id.
9481 ///
9482 /// @param[in] part_id
9483 /// Currently not used. Just pass 0.
9484 ///
9485 /// @param[in] name
9486 /// Attribute name.
9487 ///
9488 /// @param[in] attr_info
9489 /// ::HAPI_AttributeInfo used as input for what tuple size.
9490 /// you want. Also contains some sanity checks like
9491 /// data type. Generally should be the same struct
9492 /// returned by ::HAPI_GetAttributeInfo().
9493 ///
9494 /// @param[in] data_array
9495 /// An 64-bit float array at least the size of
9496 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9497 ///
9498 /// @param[in] start
9499 /// First index of range. Must be at least 0 and at
9500 /// most ::HAPI_AttributeInfo::count - 1.
9501 /// <!-- default 0 -->
9502 ///
9503 /// @param[in] length
9504 /// Must be at least 0 and at most
9505 /// ::HAPI_AttributeInfo::count - @p start.
9506 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9507 ///
9508 /// @param[out] job_id
9509 /// The id assigned to the job.
9510 ///
9512  const HAPI_Session * session,
9513  HAPI_NodeId node_id,
9514  HAPI_PartId part_id,
9515  const char * name,
9516  const HAPI_AttributeInfo * attr_info,
9517  const double * data_array,
9518  int start, int length,
9519  int * job_id );
9520 
9521 /// @brief Set attribute string data asynchronously.
9522 ///
9523 /// @ingroup GeometrySetters Attributes
9524 ///
9525 /// @param[in] session
9526 /// The session of Houdini you are interacting with.
9527 /// See @ref HAPI_Sessions for more on sessions.
9528 /// Pass NULL to just use the default in-process session.
9529 /// <!-- default NULL -->
9530 ///
9531 /// @param[in] node_id
9532 /// The SOP node id.
9533 ///
9534 /// @param[in] part_id
9535 /// Currently not used. Just pass 0.
9536 ///
9537 /// @param[in] name
9538 /// Attribute name.
9539 ///
9540 /// @param[in] attr_info
9541 /// ::HAPI_AttributeInfo used as input for what tuple size
9542 /// you want. Also contains some sanity checks like
9543 /// data type. Generally should be the same struct
9544 /// returned by ::HAPI_GetAttributeInfo().
9545 ///
9546 /// @param[in] data_array
9547 /// An ::HAPI_StringHandle array at least the size of
9548 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9549 ///
9550 /// @param[in] start
9551 /// First index of range. Must be at least 0 and at
9552 /// most ::HAPI_AttributeInfo::count - 1.
9553 /// <!-- default 0 -->
9554 ///
9555 /// @param[in] length
9556 /// Must be at least 0 and at most
9557 /// ::HAPI_AttributeInfo::count - @p start.
9558 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9559 ///
9560 /// @param[out] job_id
9561 /// The id assigned to the job.
9562 ///
9564  const HAPI_Session * session,
9565  HAPI_NodeId node_id,
9566  HAPI_PartId part_id,
9567  const char * name,
9568  const HAPI_AttributeInfo * attr_info,
9569  const char ** data_array,
9570  int start, int length,
9571  int * job_id );
9572 
9573 /// @brief Set attribute string data by index asynchronously.
9574 ///
9575 /// @ingroup GeometrySetters Attributes
9576 ///
9577 /// @param[in] session
9578 /// The session of Houdini you are interacting with.
9579 /// See @ref HAPI_Sessions for more on sessions.
9580 /// Pass NULL to just use the default in-process session.
9581 /// <!-- default NULL -->
9582 ///
9583 /// @param[in] node_id
9584 /// The SOP node id.
9585 ///
9586 /// @param[in] part_id
9587 /// Currently not used. Just pass 0.
9588 ///
9589 /// @param[in] name
9590 /// Attribute name.
9591 ///
9592 /// @param[in] attr_info
9593 /// ::HAPI_AttributeInfo used as input for what tuple size.
9594 /// you want. Also contains some sanity checks like
9595 /// data type. Generally should be the same struct
9596 /// returned by ::HAPI_GetAttributeInfo().
9597 ///
9598 /// @param[in] string_array
9599 /// An array of strings at least the size of
9600 /// <tt>string_count/tt>.
9601 ///
9602 /// @param[in] string_count
9603 /// Number of strings that are indexed.
9604 ///
9605 /// @param[in] indices_array
9606 /// integer array at least the size of
9607 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
9608 /// entry indexes string_array.
9609 ///
9610 /// @param[in] indices_start
9611 /// First index of range. Must be at least 0 and at
9612 /// most ::HAPI_AttributeInfo::count - 1.
9613 /// <!-- default 0 -->
9614 ///
9615 /// @param[in] indices_length
9616 /// Must be at least 0 and at most
9617 /// ::HAPI_AttributeInfo::count - @p start.
9618 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9619 ///
9620 /// @param[out] job_id
9621 /// The id assigned to the job.
9622 ///
9624  const HAPI_Session * session,
9625  HAPI_NodeId node_id,
9626  HAPI_PartId part_id,
9627  const char * name,
9628  const HAPI_AttributeInfo * attr_info,
9629  const char ** string_array,
9630  int string_count,
9631  const int * indices_array,
9632  int indices_start,
9633  int indices_length,
9634  int * job_id );
9635 
9636 /// @brief Set multiple attribute string data to the same unique value
9637 /// asynchronously.
9638 ///
9639 /// @ingroup GeometrySetters Attributes
9640 ///
9641 /// @param[in] session
9642 /// The session of Houdini you are interacting with.
9643 /// See @ref HAPI_Sessions for more on sessions.
9644 /// Pass NULL to just use the default in-process session.
9645 /// <!-- default NULL -->
9646 ///
9647 /// @param[in] node_id
9648 /// The SOP node id.
9649 ///
9650 /// @param[in] part_id
9651 /// Currently not used. Just pass 0.
9652 ///
9653 /// @param[in] name
9654 /// Attribute name.
9655 ///
9656 /// @param[in] attr_info
9657 /// ::HAPI_AttributeInfo used as input for what tuple size.
9658 /// you want. Also contains some sanity checks like
9659 /// data type. Generally should be the same struct
9660 /// returned by ::HAPI_GetAttributeInfo().
9661 ///
9662 /// @param[in] data_array
9663 /// A string
9664 ///
9665 /// @param[in] data_length
9666 /// Must be the length of string data.
9667 ///
9668 /// @param[in] start_index
9669 /// Must be at least 0 and at most
9670 /// ::HAPI_AttributeInfo::count - @p start.
9671 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9672 ///
9673 /// @param[in] num_indices
9674 /// Must be at least 0 and at most
9675 /// ::HAPI_AttributeInfo::count - @p start.
9676 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9677 ///
9678 /// @param[out] job_id
9679 /// The id assigned to the job.
9680 ///
9682  const HAPI_Session * session,
9683  HAPI_NodeId node_id,
9684  HAPI_PartId part_id,
9685  const char * name,
9686  const HAPI_AttributeInfo * attr_info,
9687  const char * data_array,
9688  int data_length,
9689  int start_index,
9690  int num_indices,
9691  int * job_id );
9692 
9693 /// @brief Set multiple attribute int data to the same unique value
9694 /// asynchronously.
9695 ///
9696 /// @ingroup GeometrySetters Attributes
9697 ///
9698 /// @param[in] session
9699 /// The session of Houdini you are interacting with.
9700 /// See @ref HAPI_Sessions for more on sessions.
9701 /// Pass NULL to just use the default in-process session.
9702 /// <!-- default NULL -->
9703 ///
9704 /// @param[in] node_id
9705 /// The SOP node id.
9706 ///
9707 /// @param[in] part_id
9708 /// Currently not used. Just pass 0.
9709 ///
9710 /// @param[in] name
9711 /// Attribute name.
9712 ///
9713 /// @param[in] attr_info
9714 /// ::HAPI_AttributeInfo used as input for what tuple size.
9715 /// you want. Also contains some sanity checks like
9716 /// data type. Generally should be the same struct
9717 /// returned by ::HAPI_GetAttributeInfo().
9718 ///
9719 /// @param[in] data_array
9720 /// A integer array at least the size of
9721 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9722 ///
9723 /// @param[in] data_length
9724 /// An integer of at least the size of
9725 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9726 ///
9727 /// @param[in] start_index
9728 /// First index of range. Must be at least 0 and at
9729 /// most ::HAPI_AttributeInfo::count - 1.
9730 /// <!-- default 0 -->
9731 ///
9732 /// @param[in] num_indices
9733 /// Must be at least 0 and at most
9734 /// ::HAPI_AttributeInfo::count - @p start_index.
9735 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9736 ///
9737 /// @param[out] job_id
9738 /// The id assigned to the job.
9739 ///
9741  const HAPI_Session * session,
9742  HAPI_NodeId node_id,
9743  HAPI_PartId part_id,
9744  const char * name,
9745  const HAPI_AttributeInfo * attr_info,
9746  const int * data_array,
9747  int data_length,
9748  int start_index,
9749  int num_indices,
9750  int * job_id );
9751 
9752 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique
9753 /// value asynchronously.
9754 ///
9755 /// @ingroup GeometrySetters Attributes
9756 ///
9757 /// @param[in] session
9758 /// The session of Houdini you are interacting with.
9759 /// See @ref HAPI_Sessions for more on sessions.
9760 /// Pass NULL to just use the default in-process session.
9761 /// <!-- default NULL -->
9762 ///
9763 /// @param[in] node_id
9764 /// The SOP node id.
9765 ///
9766 /// @param[in] part_id
9767 /// Currently not used. Just pass 0.
9768 ///
9769 /// @param[in] name
9770 /// Attribute name.
9771 ///
9772 /// @param[in] attr_info
9773 /// ::HAPI_AttributeInfo used as input for what tuple size.
9774 /// you want. Also contains some sanity checks like
9775 /// data type. Generally should be the same struct
9776 /// returned by ::HAPI_GetAttributeInfo().
9777 ///
9778 /// @param[in] data_array
9779 /// A integer array at least the size of
9780 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9781 ///
9782 /// @param[in] data_length
9783 /// An integer of at least the size of
9784 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9785 ///
9786 /// @param[in] start_index
9787 /// First index of range. Must be at least 0 and at
9788 /// most ::HAPI_AttributeInfo::count - 1.
9789 /// <!-- default 0 -->
9790 ///
9791 /// @param[in] num_indices
9792 /// Must be at least 0 and at most
9793 /// ::HAPI_AttributeInfo::count - @p start_index.
9794 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9795 ///
9796 /// @param[out] job_id
9797 /// The id assigned to the job.
9798 ///
9800  const HAPI_Session * session,
9801  HAPI_NodeId node_id,
9802  HAPI_PartId part_id,
9803  const char * name,
9804  const HAPI_AttributeInfo * attr_info,
9805  const HAPI_UInt8 * data_array,
9806  int data_length,
9807  int start_index,
9808  int num_indices,
9809  int * job_id );
9810 
9811 /// @brief Set multiple attribute 8-bit int data to the same unique value
9812 /// asynchronously.
9813 ///
9814 /// @ingroup GeometrySetters Attributes
9815 ///
9816 /// @param[in] session
9817 /// The session of Houdini you are interacting with.
9818 /// See @ref HAPI_Sessions for more on sessions.
9819 /// Pass NULL to just use the default in-process session.
9820 /// <!-- default NULL -->
9821 ///
9822 /// @param[in] node_id
9823 /// The SOP node id.
9824 ///
9825 /// @param[in] part_id
9826 /// Currently not used. Just pass 0.
9827 ///
9828 /// @param[in] name
9829 /// Attribute name.
9830 ///
9831 /// @param[in] attr_info
9832 /// ::HAPI_AttributeInfo used as input for what tuple size.
9833 /// you want. Also contains some sanity checks like
9834 /// data type. Generally should be the same struct
9835 /// returned by ::HAPI_GetAttributeInfo().
9836 ///
9837 /// @param[in] data_array
9838 /// A integer array at least the size of
9839 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9840 ///
9841 /// @param[in] data_length
9842 /// An integer of at least the size of
9843 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9844 ///
9845 /// @param[in] start_index
9846 /// First index of range. Must be at least 0 and at
9847 /// most ::HAPI_AttributeInfo::count - 1.
9848 /// <!-- default 0 -->
9849 ///
9850 /// @param[in] num_indices
9851 /// Must be at least 0 and at most
9852 /// ::HAPI_AttributeInfo::count - @p start_index.
9853 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9854 ///
9855 /// @param[out] job_id
9856 /// The id assigned to the job.
9857 ///
9859  const HAPI_Session * session,
9860  HAPI_NodeId node_id,
9861  HAPI_PartId part_id,
9862  const char * name,
9863  const HAPI_AttributeInfo * attr_info,
9864  const HAPI_Int8* data_array,
9865  int data_length,
9866  int start_index,
9867  int num_indices,
9868  int * job_id );
9869 
9870 /// @brief Set multiple attribute 16-bit int data to the same unique value
9871 /// asynchronously.
9872 ///
9873 /// @ingroup GeometrySetters Attributes
9874 ///
9875 /// @param[in] session
9876 /// The session of Houdini you are interacting with.
9877 /// See @ref HAPI_Sessions for more on sessions.
9878 /// Pass NULL to just use the default in-process session.
9879 /// <!-- default NULL -->
9880 ///
9881 /// @param[in] node_id
9882 /// The SOP node id.
9883 ///
9884 /// @param[in] part_id
9885 /// Currently not used. Just pass 0.
9886 ///
9887 /// @param[in] name
9888 /// Attribute name.
9889 ///
9890 /// @param[in] attr_info
9891 /// ::HAPI_AttributeInfo used as input for what tuple size.
9892 /// you want. Also contains some sanity checks like
9893 /// data type. Generally should be the same struct
9894 /// returned by ::HAPI_GetAttributeInfo().
9895 ///
9896 /// @param[in] data_array
9897 /// A integer array at least the size of
9898 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9899 ///
9900 /// @param[in] data_length
9901 /// An integer of at least the size of
9902 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9903 ///
9904 /// @param[in] start_index
9905 /// First index of range. Must be at least 0 and at
9906 /// most ::HAPI_AttributeInfo::count - 1.
9907 /// <!-- default 0 -->
9908 ///
9909 /// @param[in] num_indices
9910 /// Must be at least 0 and at most
9911 /// ::HAPI_AttributeInfo::count - @p start_index.
9912 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9913 ///
9914 /// @param[out] job_id
9915 /// The id assigned to the job.
9916 ///
9918  const HAPI_Session* session,
9919  HAPI_NodeId node_id,
9920  HAPI_PartId part_id,
9921  const char* name,
9922  const HAPI_AttributeInfo* attr_info,
9923  const HAPI_Int16* data_array,
9924  int data_length,
9925  int start_index,
9926  int num_indices,
9927  int * job_id );
9928 
9929 /// @brief Set multiple attribute 64-bit int data to the same unique value
9930 /// asynchronously.
9931 ///
9932 /// @ingroup GeometrySetters Attributes
9933 ///
9934 /// @param[in] session
9935 /// The session of Houdini you are interacting with.
9936 /// See @ref HAPI_Sessions for more on sessions.
9937 /// Pass NULL to just use the default in-process session.
9938 /// <!-- default NULL -->
9939 ///
9940 /// @param[in] node_id
9941 /// The SOP node id.
9942 ///
9943 /// @param[in] part_id
9944 /// Currently not used. Just pass 0.
9945 ///
9946 /// @param[in] name
9947 /// Attribute name.
9948 ///
9949 /// @param[in] attr_info
9950 /// ::HAPI_AttributeInfo used as input for what tuple size.
9951 /// you want. Also contains some sanity checks like
9952 /// data type. Generally should be the same struct
9953 /// returned by ::HAPI_GetAttributeInfo().
9954 ///
9955 /// @param[in] data_array
9956 /// A integer array at least the size of
9957 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9958 ///
9959 /// @param[in] data_length
9960 /// An integer of at least the size of
9961 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
9962 ///
9963 /// @param[in] start_index
9964 /// First index of range. Must be at least 0 and at
9965 /// most ::HAPI_AttributeInfo::count - 1.
9966 /// <!-- default 0 -->
9967 ///
9968 /// @param[in] num_indices
9969 /// Must be at least 0 and at most
9970 /// ::HAPI_AttributeInfo::count - @p start_index.
9971 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9972 ///
9973 /// @param[out] job_id
9974 /// The id assigned to the job.
9975 ///
9977  const HAPI_Session* session,
9978  HAPI_NodeId node_id,
9979  HAPI_PartId part_id,
9980  const char* name,
9981  const HAPI_AttributeInfo* attr_info,
9982  const HAPI_Int64* data_array,
9983  int data_length,
9984  int start_index,
9985  int num_indices,
9986  int * job_id );
9987 
9988 /// @brief Set multiple attribute float data to the same unique value
9989 /// asynchronously.
9990 ///
9991 /// @ingroup GeometrySetters Attributes
9992 ///
9993 /// @param[in] session
9994 /// The session of Houdini you are interacting with.
9995 /// See @ref HAPI_Sessions for more on sessions.
9996 /// Pass NULL to just use the default in-process session.
9997 /// <!-- default NULL -->
9998 ///
9999 /// @param[in] node_id
10000 /// The SOP node id.
10001 ///
10002 /// @param[in] part_id
10003 /// Currently not used. Just pass 0.
10004 ///
10005 /// @param[in] name
10006 /// Attribute name.
10007 ///
10008 /// @param[in] attr_info
10009 /// ::HAPI_AttributeInfo used as input for what tuple size.
10010 /// you want. Also contains some sanity checks like
10011 /// data type. Generally should be the same struct
10012 /// returned by ::HAPI_GetAttributeInfo().
10013 ///
10014 /// @param[in] data_array
10015 /// A floating point array at least the size of
10016 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10017 ///
10018 /// @param[in] data_length
10019 /// An integer of at least the size of
10020 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10021 ///
10022 /// @param[in] start_index
10023 /// First index of range. Must be at least 0 and at
10024 /// most ::HAPI_AttributeInfo::count - 1.
10025 /// <!-- default 0 -->
10026 ///
10027 /// @param[in] num_indices
10028 /// Must be at least 0 and at most
10029 /// ::HAPI_AttributeInfo::count - @p start_index.
10030 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10031 ///
10032 /// @param[out] job_id
10033 /// The id assigned to the job.
10034 ///
10036  const HAPI_Session* session,
10037  HAPI_NodeId node_id,
10038  HAPI_PartId part_id,
10039  const char* name,
10040  const HAPI_AttributeInfo* attr_info,
10041  const float* data_array,
10042  int data_length,
10043  int start_index,
10044  int num_indices,
10045  int * job_id );
10046 
10047 /// @brief Set multiple attribute 64-bit float data to the same unique
10048 /// asynchronously.
10049 ///
10050 /// @ingroup GeometrySetters Attributes
10051 ///
10052 /// @param[in] session
10053 /// The session of Houdini you are interacting with.
10054 /// See @ref HAPI_Sessions for more on sessions.
10055 /// Pass NULL to just use the default in-process session.
10056 /// <!-- default NULL -->
10057 ///
10058 /// @param[in] node_id
10059 /// The SOP node id.
10060 ///
10061 /// @param[in] part_id
10062 /// Currently not used. Just pass 0.
10063 ///
10064 /// @param[in] name
10065 /// Attribute name.
10066 ///
10067 /// @param[in] attr_info
10068 /// ::HAPI_AttributeInfo used as input for what tuple size.
10069 /// you want. Also contains some sanity checks like
10070 /// data type. Generally should be the same struct
10071 /// returned by ::HAPI_GetAttributeInfo().
10072 ///
10073 /// @param[in] data_array
10074 /// A floating point array at least the size of
10075 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10076 ///
10077 /// @param[in] data_length
10078 /// An integer of at least the size of
10079 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10080 ///
10081 /// @param[in] start_index
10082 /// First index of range. Must be at least 0 and at
10083 /// most ::HAPI_AttributeInfo::count - 1.
10084 /// <!-- default 0 -->
10085 ///
10086 /// @param[in] num_indices
10087 /// Must be at least 0 and at most
10088 /// ::HAPI_AttributeInfo::count - @p start_index.
10089 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10090 ///
10091 /// @param[out] job_id
10092 /// The id assigned to the job.
10093 ///
10095  const HAPI_Session* session,
10096  HAPI_NodeId node_id,
10097  HAPI_PartId part_id,
10098  const char* name,
10099  const HAPI_AttributeInfo* attr_info,
10100  const double* data_array,
10101  int data_length,
10102  int start_index,
10103  int num_indices,
10104  int * job_id );
10105 
10106 /// @brief Set attribute dictionary data asynchronously. The dictionary data
10107 /// should be provided as JSON-encoded strings.
10108 ///
10109 /// @ingroup GeometrySetters Attributes
10110 ///
10111 /// @param[in] session
10112 /// The session of Houdini you are interacting with.
10113 /// See @ref HAPI_Sessions for more on sessions.
10114 /// Pass NULL to just use the default in-process session.
10115 /// <!-- default NULL -->
10116 ///
10117 /// @param[in] node_id
10118 /// The SOP node id.
10119 ///
10120 /// @param[in] part_id
10121 /// Currently not used. Just pass 0.
10122 ///
10123 /// @param[in] name
10124 /// Attribute name.
10125 ///
10126 /// @param[in] attr_info
10127 /// ::HAPI_AttributeInfo used as input for what tuple size
10128 /// you want. Also contains some sanity checks like
10129 /// data type. Generally should be the same struct
10130 /// returned by ::HAPI_GetAttributeInfo().
10131 ///
10132 /// @param[in] data_array
10133 /// An ::HAPI_StringHandle array at least the size of
10134 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
10135 ///
10136 /// @param[in] start
10137 /// First index of range. Must be at least 0 and at
10138 /// most ::HAPI_AttributeInfo::count - 1.
10139 /// <!-- default 0 -->
10140 ///
10141 /// @param[in] length
10142 /// Must be at least 0 and at most
10143 /// ::HAPI_AttributeInfo::count - @p start.
10144 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10145 ///
10146 /// @param[out] job_id
10147 /// The id assigned to the job.
10148 ///
10150  const HAPI_Session* session,
10151  HAPI_NodeId node_id,
10152  HAPI_PartId part_id,
10153  const char* name,
10154  const HAPI_AttributeInfo* attr_info,
10155  const char** data_array,
10156  int start, int length,
10157  int * job_id );
10158 
10159 /// @brief Set integer array attribute data asynchronously.
10160 ///
10161 /// @ingroup GeometrySetters Attributes
10162 ///
10163 /// @param[in] session
10164 /// The session of Houdini you are interacting with.
10165 /// See @ref HAPI_Sessions for more on sessions.
10166 /// Pass NULL to just use the default in-process session.
10167 /// <!-- default NULL -->
10168 ///
10169 /// @param[in] node_id
10170 /// The SOP node id.
10171 ///
10172 /// @param[in] part_id
10173 /// Currently not used. Just pass 0.
10174 ///
10175 /// @param[in] name
10176 /// Attribute name.
10177 ///
10178 /// @param[in] attr_info
10179 /// ::HAPI_AttributeInfo that contains the description for the
10180 /// attribute that is being set.
10181 ///
10182 /// @param[in] data_fixed_array
10183 /// An array containing the int values of the attribute.
10184 ///
10185 /// @param[in] data_fixed_length
10186 /// The total size of the data array. The size can be no greater
10187 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10188 /// of the attribute.
10189 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10190 ///
10191 /// @param[in] sizes_fixed_array
10192 /// An array of integers that contains the sizes of each
10193 /// attribute array. This is required because the attribute
10194 /// array for each geometry component can be of variable size.
10195 ///
10196 /// @param[in] start
10197 /// First index of range. Must be at least 0 and at most
10198 /// ::HAPI_AttributeInfo::count - 1.
10199 /// <!-- default 0 -->
10200 ///
10201 /// @param[in] sizes_fixed_length
10202 /// Must be at least 0 and at most
10203 /// ::HAPI_AttributeInfo::count - @p start.
10204 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10205 ///
10206 /// @param[out] job_id
10207 /// The id assigned to the job.
10208 ///
10210  const HAPI_Session * session,
10211  HAPI_NodeId node_id,
10212  HAPI_PartId part_id,
10213  const char * name,
10214  const HAPI_AttributeInfo * attr_info,
10215  const int * data_fixed_array,
10216  int data_fixed_length,
10217  const int * sizes_fixed_array,
10218  int start,
10219  int sizes_fixed_length,
10220  int * job_id );
10221 
10222 /// @brief Set unsigned 8-bit integer array attribute data asynchronously.
10223 ///
10224 /// @ingroup GeometrySetters Attributes
10225 ///
10226 /// @param[in] session
10227 /// The session of Houdini you are interacting with.
10228 /// See @ref HAPI_Sessions for more on sessions.
10229 /// Pass NULL to just use the default in-process session.
10230 /// <!-- default NULL -->
10231 ///
10232 /// @param[in] node_id
10233 /// The SOP node id.
10234 ///
10235 /// @param[in] part_id
10236 /// Currently not used. Just pass 0.
10237 ///
10238 /// @param[in] name
10239 /// Attribute name.
10240 ///
10241 /// @param[in] attr_info
10242 /// ::HAPI_AttributeInfo that contains the description for the
10243 /// attribute that is being set.
10244 ///
10245 /// @param[in] data_fixed_array
10246 /// An array containing the HAPI_UInt8 values of the attribute.
10247 ///
10248 /// @param[in] data_fixed_length
10249 /// The total size of the data array. The size can be no greater
10250 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10251 /// of the attribute.
10252 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10253 ///
10254 /// @param[in] sizes_fixed_array
10255 /// An array of integers that contains the sizes of each
10256 /// attribute array. This is required because the attribute
10257 /// array for each geometry component can be of variable size.
10258 ///
10259 /// @param[in] start
10260 /// First index of range. Must be at least 0 and at most
10261 /// ::HAPI_AttributeInfo::count - 1.
10262 /// <!-- default 0 -->
10263 ///
10264 /// @param[in] sizes_fixed_length
10265 /// Must be at least 0 and at most
10266 /// ::HAPI_AttributeInfo::count - @p start.
10267 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10268 ///
10269 /// @param[out] job_id
10270 /// The id assigned to the job.
10271 ///
10273  const HAPI_Session * session,
10274  HAPI_NodeId node_id,
10275  HAPI_PartId part_id,
10276  const char * name,
10277  const HAPI_AttributeInfo * attr_info,
10278  const HAPI_UInt8 * data_fixed_array,
10279  int data_fixed_length,
10280  const int * sizes_fixed_array,
10281  int start,
10282  int sizes_fixed_length,
10283  int * job_id );
10284 
10285 /// @brief Set 8-bit integer array attribute data asynchronously.
10286 ///
10287 /// @ingroup GeometrySetters Attributes
10288 ///
10289 /// @param[in] session
10290 /// The session of Houdini you are interacting with.
10291 /// See @ref HAPI_Sessions for more on sessions.
10292 /// Pass NULL to just use the default in-process session.
10293 /// <!-- default NULL -->
10294 ///
10295 /// @param[in] node_id
10296 /// The SOP node id.
10297 ///
10298 /// @param[in] part_id
10299 /// Currently not used. Just pass 0.
10300 ///
10301 /// @param[in] name
10302 /// Attribute name.
10303 ///
10304 /// @param[in] attr_info
10305 /// ::HAPI_AttributeInfo that contains the description for the
10306 /// attribute that is being set.
10307 ///
10308 /// @param[in] data_fixed_array
10309 /// An array containing the HAPI_Int8 values of the attribute.
10310 ///
10311 /// @param[in] data_fixed_length
10312 /// The total size of the data array. The size can be no greater
10313 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10314 /// of the attribute.
10315 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10316 ///
10317 /// @param[in] sizes_fixed_array
10318 /// An array of integers that contains the sizes of each
10319 /// attribute array. This is required because the attribute
10320 /// array for each geometry component can be of variable size.
10321 ///
10322 /// @param[in] start
10323 /// First index of range. Must be at least 0 and at most
10324 /// ::HAPI_AttributeInfo::count - 1.
10325 /// <!-- default 0 -->
10326 ///
10327 /// @param[in] sizes_fixed_length
10328 /// Must be at least 0 and at most
10329 /// ::HAPI_AttributeInfo::count - @p start.
10330 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10331 ///
10332 /// @param[out] job_id
10333 /// The id assigned to the job.
10334 ///
10336  const HAPI_Session * session,
10337  HAPI_NodeId node_id,
10338  HAPI_PartId part_id,
10339  const char * name,
10340  const HAPI_AttributeInfo * attr_info,
10341  const HAPI_Int8 * data_fixed_array,
10342  int data_fixed_length,
10343  const int * sizes_fixed_array,
10344  int start,
10345  int sizes_fixed_length,
10346  int * job_id );
10347 
10348 /// @brief Set 16-bit integer array attribute data asynchronously.
10349 ///
10350 /// @ingroup GeometrySetters Attributes
10351 ///
10352 /// @param[in] session
10353 /// The session of Houdini you are interacting with.
10354 /// See @ref HAPI_Sessions for more on sessions.
10355 /// Pass NULL to just use the default in-process session.
10356 /// <!-- default NULL -->
10357 ///
10358 /// @param[in] node_id
10359 /// The SOP node id.
10360 ///
10361 /// @param[in] part_id
10362 /// Currently not used. Just pass 0.
10363 ///
10364 /// @param[in] name
10365 /// Attribute name.
10366 ///
10367 /// @param[in] attr_info
10368 /// ::HAPI_AttributeInfo that contains the description for the
10369 /// attribute that is being set.
10370 ///
10371 /// @param[in] data_fixed_array
10372 /// An array containing the HAPI_Int16 values of the attribute.
10373 ///
10374 /// @param[in] data_fixed_length
10375 /// The total size of the data array. The size can be no greater
10376 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10377 /// of the attribute.
10378 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10379 ///
10380 /// @param[in] sizes_fixed_array
10381 /// An array of integers that contains the sizes of each
10382 /// attribute array. This is required because the attribute
10383 /// array for each geometry component can be of variable size.
10384 ///
10385 /// @param[in] start
10386 /// First index of range. Must be at least 0 and at most
10387 /// ::HAPI_AttributeInfo::count - 1.
10388 /// <!-- default 0 -->
10389 ///
10390 /// @param[in] sizes_fixed_length
10391 /// Must be at least 0 and at most
10392 /// ::HAPI_AttributeInfo::count - @p start.
10393 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10394 ///
10395 /// @param[out] job_id
10396 /// The id assigned to the job.
10397 ///
10399  const HAPI_Session * session,
10400  HAPI_NodeId node_id,
10401  HAPI_PartId part_id,
10402  const char * name,
10403  const HAPI_AttributeInfo * attr_info,
10404  const HAPI_Int16 * data_fixed_array,
10405  int data_fixed_length,
10406  const int * sizes_fixed_array,
10407  int start,
10408  int sizes_fixed_length,
10409  int * job_id );
10410 
10411 /// @brief Set 64-bit integer array attribute data asynchronously.
10412 ///
10413 /// @ingroup GeometrySetters Attributes
10414 ///
10415 /// @param[in] session
10416 /// The session of Houdini you are interacting with.
10417 /// See @ref HAPI_Sessions for more on sessions.
10418 /// Pass NULL to just use the default in-process session.
10419 /// <!-- default NULL -->
10420 ///
10421 /// @param[in] node_id
10422 /// The SOP node id.
10423 ///
10424 /// @param[in] part_id
10425 /// Currently not used. Just pass 0.
10426 ///
10427 /// @param[in] name
10428 /// Attribute name.
10429 ///
10430 /// @param[in] attr_info
10431 /// ::HAPI_AttributeInfo that contains the description for the
10432 /// attribute that is being set.
10433 ///
10434 /// @param[in] data_fixed_array
10435 /// An array containing the HAPI_Int64 values of the attribute.
10436 ///
10437 /// @param[in] data_fixed_length
10438 /// The total size of the data array. The size can be no greater
10439 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10440 /// of the attribute.
10441 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10442 ///
10443 /// @param[in] sizes_fixed_array
10444 /// An array of integers that contains the sizes of each
10445 /// attribute array. This is required because the attribute
10446 /// array for each geometry component can be of variable size.
10447 ///
10448 /// @param[in] start
10449 /// First index of range. Must be at least 0 and at most
10450 /// ::HAPI_AttributeInfo::count - 1.
10451 /// <!-- default 0 -->
10452 ///
10453 /// @param[in] sizes_fixed_length
10454 /// Must be at least 0 and at most
10455 /// ::HAPI_AttributeInfo::count - @p start.
10456 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10457 ///
10458 /// @param[out] job_id
10459 /// The id assigned to the job.
10460 ///
10462  const HAPI_Session * session,
10463  HAPI_NodeId node_id,
10464  HAPI_PartId part_id,
10465  const char * name,
10466  const HAPI_AttributeInfo * attr_info,
10467  const HAPI_Int64 * data_fixed_array,
10468  int data_fixed_length,
10469  const int * sizes_fixed_array,
10470  int start,
10471  int sizes_fixed_length,
10472  int * job_id );
10473 
10474 /// @brief Set float array attribute data asynchronously.
10475 ///
10476 /// @ingroup GeometrySetters Attributes
10477 ///
10478 /// @param[in] session
10479 /// The session of Houdini you are interacting with.
10480 /// See @ref HAPI_Sessions for more on sessions.
10481 /// Pass NULL to just use the default in-process session.
10482 /// <!-- default NULL -->
10483 ///
10484 /// @param[in] node_id
10485 /// The SOP node id.
10486 ///
10487 /// @param[in] part_id
10488 /// Currently not used. Just pass 0.
10489 ///
10490 /// @param[in] name
10491 /// Attribute name.
10492 ///
10493 /// @param[in] attr_info
10494 /// ::HAPI_AttributeInfo that contains the description for the
10495 /// attribute that is being set.
10496 ///
10497 /// @param[in] data_fixed_array
10498 /// An array containing the float values of the attribute.
10499 ///
10500 /// @param[in] data_fixed_length
10501 /// The total size of the data array. The size can be no greater
10502 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10503 /// of the attribute.
10504 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10505 ///
10506 /// @param[in] sizes_fixed_array
10507 /// An array of integers that contains the sizes of each
10508 /// attribute array. This is required because the attribute
10509 /// array for each geometry component can be of variable size.
10510 ///
10511 /// @param[in] start
10512 /// First index of range. Must be at least 0 and at most
10513 /// ::HAPI_AttributeInfo::count - 1.
10514 /// <!-- default 0 -->
10515 ///
10516 /// @param[in] sizes_fixed_length
10517 /// Must be at least 0 and at most
10518 /// ::HAPI_AttributeInfo::count - @p start.
10519 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10520 ///
10521 /// @param[out] job_id
10522 /// The id assigned to the job.
10523 ///
10525  const HAPI_Session * session,
10526  HAPI_NodeId node_id,
10527  HAPI_PartId part_id,
10528  const char * name,
10529  const HAPI_AttributeInfo * attr_info,
10530  const float * data_fixed_array,
10531  int data_fixed_length,
10532  const int * sizes_fixed_array,
10533  int start,
10534  int sizes_fixed_length,
10535  int * job_id );
10536 
10537 /// @brief Set 64-bit float array attribute data asynchronously.
10538 ///
10539 /// @ingroup GeometrySetters Attributes
10540 ///
10541 /// @param[in] session
10542 /// The session of Houdini you are interacting with.
10543 /// See @ref HAPI_Sessions for more on sessions.
10544 /// Pass NULL to just use the default in-process session.
10545 /// <!-- default NULL -->
10546 ///
10547 /// @param[in] node_id
10548 /// The SOP node id.
10549 ///
10550 /// @param[in] part_id
10551 /// Currently not used. Just pass 0.
10552 ///
10553 /// @param[in] name
10554 /// Attribute name.
10555 ///
10556 /// @param[in] attr_info
10557 /// ::HAPI_AttributeInfo that contains the description for the
10558 /// attribute that is being set.
10559 ///
10560 /// @param[in] data_fixed_array
10561 /// An array containing the double values of the attribute.
10562 ///
10563 /// @param[in] data_fixed_length
10564 /// The total size of the data array. The size can be no greater
10565 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10566 /// of the attribute.
10567 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10568 ///
10569 /// @param[in] sizes_fixed_array
10570 /// An array of integers that contains the sizes of each
10571 /// attribute array. This is required because the attribute
10572 /// array for each geometry component can be of variable size.
10573 ///
10574 /// @param[in] start
10575 /// First index of range. Must be at least 0 and at most
10576 /// ::HAPI_AttributeInfo::count - 1.
10577 /// <!-- default 0 -->
10578 ///
10579 /// @param[in] sizes_fixed_length
10580 /// Must be at least 0 and at most
10581 /// ::HAPI_AttributeInfo::count - @p start.
10582 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10583 ///
10584 /// @param[out] job_id
10585 /// The id assigned to the job.
10586 ///
10588  const HAPI_Session * session,
10589  HAPI_NodeId node_id,
10590  HAPI_PartId part_id,
10591  const char * name,
10592  const HAPI_AttributeInfo * attr_info,
10593  const double * data_fixed_array,
10594  int data_fixed_length,
10595  const int * sizes_fixed_array,
10596  int start,
10597  int sizes_fixed_length,
10598  int * job_id );
10599 
10600 /// @brief Set string array attribute data asynchronously.
10601 ///
10602 /// @ingroup GeometrySetters Attributes
10603 ///
10604 /// @param[in] session
10605 /// The session of Houdini you are interacting with.
10606 /// See @ref HAPI_Sessions for more on sessions.
10607 /// Pass NULL to just use the default in-process session.
10608 /// <!-- default NULL -->
10609 ///
10610 /// @param[in] node_id
10611 /// The SOP node id.
10612 ///
10613 /// @param[in] part_id
10614 /// Currently not used. Just pass 0.
10615 ///
10616 /// @param[in] name
10617 /// Attribute name.
10618 ///
10619 /// @param[in] attr_info
10620 /// ::HAPI_AttributeInfo that contains the description for the
10621 /// attribute that is being set.
10622 ///
10623 /// @param[in] data_fixed_array
10624 /// An array containing the string values of the attribute.
10625 ///
10626 /// @param[in] data_fixed_length
10627 /// The total size of the data array. The size can be no greater
10628 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10629 /// of the attribute.
10630 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10631 ///
10632 /// @param[in] sizes_fixed_array
10633 /// An array of integers that contains the sizes of each
10634 /// attribute array. This is required because the attribute
10635 /// array for each geometry component can be of variable size.
10636 ///
10637 /// @param[in] start
10638 /// First index of range. Must be at least 0 and at most
10639 /// ::HAPI_AttributeInfo::count - 1.
10640 /// <!-- default 0 -->
10641 ///
10642 /// @param[in] sizes_fixed_length
10643 /// Must be at least 0 and at most
10644 /// ::HAPI_AttributeInfo::count - @p start.
10645 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10646 ///
10647 /// @param[out] job_id
10648 /// The id assigned to the job.
10649 ///
10651  const HAPI_Session * session,
10652  HAPI_NodeId node_id,
10653  HAPI_PartId part_id,
10654  const char * name,
10655  const HAPI_AttributeInfo * attr_info,
10656  const char ** data_fixed_array,
10657  int data_fixed_length,
10658  const int * sizes_fixed_array,
10659  int start,
10660  int sizes_fixed_length,
10661  int * job_id );
10662 
10663 /// @brief Set attribute dictionary array data asynchronously. The dictionary
10664 /// should be provided as JSON-encoded strings.
10665 ///
10666 /// @ingroup GeometrySetters Attributes
10667 ///
10668 /// @param[in] session
10669 /// The session of Houdini you are interacting with.
10670 /// See @ref HAPI_Sessions for more on sessions.
10671 /// Pass NULL to just use the default in-process session.
10672 /// <!-- default NULL -->
10673 ///
10674 /// @param[in] node_id
10675 /// The SOP node id.
10676 ///
10677 /// @param[in] part_id
10678 /// Currently not used. Just pass 0.
10679 ///
10680 /// @param[in] name
10681 /// Attribute name.
10682 ///
10683 /// @param[in] attr_info
10684 /// ::HAPI_AttributeInfo that contains the description for the
10685 /// attribute that is being set.
10686 ///
10687 /// @param[in] data_fixed_array
10688 /// An array containing the dictionary values of the attribute.
10689 ///
10690 /// @param[in] data_fixed_length
10691 /// The total size of the data array. The size can be no greater
10692 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10693 /// of the attribute.
10694 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10695 ///
10696 /// @param[in] sizes_fixed_array
10697 /// An array of integers that contains the sizes of each
10698 /// attribute array. This is required because the attribute
10699 /// array for each geometry component can be of variable size.
10700 ///
10701 /// @param[in] start
10702 /// First index of range. Must be at least 0 and at most
10703 /// ::HAPI_AttributeInfo::count - 1.
10704 /// <!-- default 0 -->
10705 ///
10706 /// @param[in] sizes_fixed_length
10707 /// Must be at least 0 and at most
10708 /// ::HAPI_AttributeInfo::count - @p start.
10709 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10710 ///
10711 /// @param[out] job_id
10712 /// The id assigned to the job.
10713 ///
10715  const HAPI_Session * session,
10716  HAPI_NodeId node_id,
10717  HAPI_PartId part_id,
10718  const char * name,
10719  const HAPI_AttributeInfo * attr_info,
10720  const char ** data_fixed_array,
10721  int data_fixed_length,
10722  const int * sizes_fixed_array,
10723  int start,
10724  int sizes_fixed_length,
10725  int * job_id );
10726 
10727 /// @brief Add a group to the input geo with the given type and name.
10728 ///
10729 /// @ingroup GeometrySetters
10730 ///
10731 /// @param[in] session
10732 /// The session of Houdini you are interacting with.
10733 /// See @ref HAPI_Sessions for more on sessions.
10734 /// Pass NULL to just use the default in-process session.
10735 /// <!-- default NULL -->
10736 ///
10737 /// @param[in] node_id
10738 /// The SOP node id.
10739 ///
10740 /// @param[in] part_id
10741 /// Currently not used. Just pass 0.
10742 ///
10743 /// @param[in] group_type
10744 /// The group type.
10745 ///
10746 /// @param[in] group_name
10747 /// Name of new group to be added.
10748 ///
10749 HAPI_DECL HAPI_AddGroup( const HAPI_Session * session,
10750  HAPI_NodeId node_id,
10751  HAPI_PartId part_id,
10752  HAPI_GroupType group_type,
10753  const char * group_name );
10754 
10755 /// @brief Remove a group from the input geo with the given type and name.
10756 ///
10757 /// @ingroup GeometrySetters
10758 ///
10759 /// @param[in] session
10760 /// The session of Houdini you are interacting with.
10761 /// See @ref HAPI_Sessions for more on sessions.
10762 /// Pass NULL to just use the default in-process session.
10763 /// <!-- default NULL -->
10764 ///
10765 /// @param[in] node_id
10766 /// The SOP node id.
10767 ///
10768 /// @param[in] part_id
10769 /// Currently not used. Just pass 0.
10770 ///
10771 /// @param[in] group_type
10772 /// The group type.
10773 ///
10774 /// @param[in] group_name
10775 /// Name of the group to be removed
10776 ///
10777 HAPI_DECL HAPI_DeleteGroup( const HAPI_Session * session,
10778  HAPI_NodeId node_id,
10779  HAPI_PartId part_id,
10780  HAPI_GroupType group_type,
10781  const char * group_name );
10782 
10783 /// @brief Set group membership.
10784 ///
10785 /// @ingroup GeometrySetters
10786 ///
10787 /// @param[in] session
10788 /// The session of Houdini you are interacting with.
10789 /// See @ref HAPI_Sessions for more on sessions.
10790 /// Pass NULL to just use the default in-process session.
10791 /// <!-- default NULL -->
10792 ///
10793 /// @param[in] node_id
10794 /// The SOP node id.
10795 ///
10796 /// @param[in] part_id
10797 /// Currently not used. Just pass 0.
10798 /// <!-- default 0 -->
10799 ///
10800 /// @param[in] group_type
10801 /// The group type.
10802 ///
10803 /// @param[in] group_name
10804 /// The group name.
10805 ///
10806 /// @param[in] membership_array
10807 /// Array of ints that represent the membership of this
10808 /// group. Should be the size given by
10809 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
10810 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
10811 ///
10812 /// @param[in] start
10813 /// Start offset into the membership array. Must be
10814 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
10815 /// <!-- default 0 -->
10816 ///
10817 /// @param[in] length
10818 /// Should be less than or equal to the size
10819 /// of @p membership_array. When setting edge group membership,
10820 /// this parameter should be set to the number of points (which
10821 /// are used to implictly define the edges), not to the number
10822 /// edges in the group.
10823 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
10824 ///
10826  HAPI_NodeId node_id,
10827  HAPI_PartId part_id,
10828  HAPI_GroupType group_type,
10829  const char * group_name,
10830  const int * membership_array,
10831  int start, int length );
10832 
10833 /// @brief Commit the current input geometry to the cook engine. Nodes
10834 /// that use this geometry node will re-cook using the input
10835 /// geometry given through the geometry setter API calls.
10836 ///
10837 /// @ingroup GeometrySetters
10838 ///
10839 /// @param[in] session
10840 /// The session of Houdini you are interacting with.
10841 /// See @ref HAPI_Sessions for more on sessions.
10842 /// Pass NULL to just use the default in-process session.
10843 /// <!-- default NULL -->
10844 ///
10845 /// @param[in] node_id
10846 /// The SOP node id.
10847 ///
10848 HAPI_DECL HAPI_CommitGeo( const HAPI_Session * session,
10849  HAPI_NodeId node_id );
10850 
10851 /// @brief Remove all changes that have been committed to this
10852 /// geometry. If this is an intermediate result node (Edit SOP), all
10853 /// deltas will be removed. If it's any other type of node, the node
10854 /// will be unlocked if it is locked.
10855 ///
10856 /// @ingroup GeometrySetters
10857 ///
10858 /// @param[in] session
10859 /// The session of Houdini you are interacting with.
10860 /// See @ref HAPI_Sessions for more on sessions.
10861 /// Pass NULL to just use the default in-process session.
10862 /// <!-- default NULL -->
10863 ///
10864 /// @param[in] node_id
10865 /// The SOP node id.
10866 ///
10867 HAPI_DECL HAPI_RevertGeo( const HAPI_Session * session,
10868  HAPI_NodeId node_id );
10869 
10870 /// @defgroup Materials
10871 /// Functions for working with materials
10872 
10873 /// @brief Get material ids by face/primitive. The material ids returned
10874 /// will be valid as long as the asset is alive. You should query
10875 /// this list after every cook to see if the material assignments
10876 /// have changed. You should also query each material individually
10877 /// using ::HAPI_GetMaterialInfo() to see if it is dirty and needs
10878 /// to be re-imported.
10879 ///
10880 /// @ingroup Materials
10881 ///
10882 /// @param[in] session
10883 /// The session of Houdini you are interacting with.
10884 /// See @ref HAPI_Sessions for more on sessions.
10885 /// Pass NULL to just use the default in-process session.
10886 /// <!-- default NULL -->
10887 ///
10888 /// @param[in] geometry_node_id
10889 /// The geometry node id.
10890 ///
10891 /// @param[in] part_id
10892 /// The part id.
10893 ///
10894 /// @param[out] are_all_the_same
10895 /// (optional) If true, all faces on this part have the
10896 /// same material assignment. You can pass NULL here.
10897 ///
10898 /// @param[out] material_ids_array
10899 /// An array of ::HAPI_NodeId at least the size of
10900 /// @p length and at most the size of
10901 /// ::HAPI_PartInfo::faceCount.
10902 ///
10903 /// @param[in] start
10904 /// The starting index into the list of faces from which
10905 /// you wish to get the material ids from. Note that
10906 /// this should be less than ::HAPI_PartInfo::faceCount.
10907 /// <!-- default 0 -->
10908 ///
10909 /// @param[in] length
10910 /// The number of material ids you wish to get. Note that
10911 /// this should be at most:
10912 /// ::HAPI_PartInfo::faceCount - @p start.
10913 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
10914 ///
10916  HAPI_NodeId geometry_node_id,
10917  HAPI_PartId part_id,
10918  HAPI_Bool * are_all_the_same,
10919  HAPI_NodeId * material_ids_array,
10920  int start, int length );
10921 
10922 /// @brief Get the material info.
10923 ///
10924 /// @ingroup Materials
10925 ///
10926 /// @param[in] session
10927 /// The session of Houdini you are interacting with.
10928 /// See @ref HAPI_Sessions for more on sessions.
10929 /// Pass NULL to just use the default in-process session.
10930 /// <!-- default NULL -->
10931 ///
10932 /// @param[in] material_node_id
10933 /// The material node id.
10934 ///
10935 /// @param[out] material_info
10936 /// The returned material info.
10937 ///
10939  HAPI_NodeId material_node_id,
10940  HAPI_MaterialInfo * material_info );
10941 
10942 /// @brief Render a single texture from a COP to an image for
10943 /// later extraction.
10944 ///
10945 /// @ingroup Materials
10946 ///
10947 /// Note that you must call this method,
10948 /// ::HAPI_RenderCOPOutputToImage(), or ::HAPI_RenderTextureToImage()
10949 /// before any of the other material APIs.
10950 ///
10951 /// @param[in] session
10952 /// The session of Houdini you are interacting with.
10953 /// See @ref HAPI_Sessions for more on sessions.
10954 /// Pass NULL to just use the default in-process session.
10955 /// <!-- default NULL -->
10956 ///
10957 /// @param[in] cop_node_id
10958 /// The COP node id.
10959 ///
10961  HAPI_NodeId cop_node_id );
10962 
10963 /// @brief Render a single texture from a COP to an image for
10964 /// later extraction. COPs may have multiple outputs,
10965 /// so this method lets you select which output to use.
10966 ///
10967 /// @ingroup Materials
10968 ///
10969 /// Note that you must call this method,
10970 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderTextureToImage()
10971 /// before any of the other material APIs.
10972 ///
10973 /// @param[in] session
10974 /// The session of Houdini you are interacting with.
10975 /// See @ref HAPI_Sessions for more on sessions.
10976 /// Pass NULL to just use the default in-process session.
10977 /// <!-- default NULL -->
10978 ///
10979 /// @param[in] cop_node_id
10980 /// The COP node id.
10981 ///
10982 /// @param[in] cop_output_name
10983 /// The name of the output to extract. Passing in
10984 /// an empty string will default to the COP's first output.
10985 ///
10987  HAPI_NodeId cop_node_id,
10988  const char * cop_output_name );
10989 
10990 /// @brief Render only a single texture to an image for later extraction.
10991 /// An example use of this method might be to render the diffuse,
10992 /// normal, and bump texture maps of a material to individual
10993 /// texture files for use within the client application.
10994 ///
10995 /// Note that you must call this method,
10996 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
10997 /// before any of the other material APIs.
10998 ///
10999 /// @ingroup Materials
11000 ///
11001 /// @param[in] session
11002 /// The session of Houdini you are interacting with.
11003 /// See @ref HAPI_Sessions for more on sessions.
11004 /// Pass NULL to just use the default in-process session.
11005 /// <!-- default NULL -->
11006 ///
11007 /// @param[in] material_node_id
11008 /// The material node id.
11009 ///
11010 /// @param[in] parm_id
11011 /// This is the index in the parameter list of the
11012 /// material_id's node of the parameter containing the
11013 /// texture map file path.
11014 ///
11016  HAPI_NodeId material_node_id,
11017  HAPI_ParmId parm_id );
11018 
11019 /// @brief Get information about the image that was just rendered, like
11020 /// resolution and default file format. This information will be
11021 /// used when extracting planes to an image.
11022 ///
11023 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11024 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11025 /// first for this method call to make sense.
11026 ///
11027 /// @ingroup Materials
11028 ///
11029 /// @param[in] session
11030 /// The session of Houdini you are interacting with.
11031 /// See @ref HAPI_Sessions for more on sessions.
11032 /// Pass NULL to just use the default in-process session.
11033 /// <!-- default NULL -->
11034 ///
11035 /// @param[in] material_node_id
11036 /// The material node id.
11037 ///
11038 /// @param[out] image_info
11039 /// The struct containing the image information.
11040 ///
11041 HAPI_DECL HAPI_GetImageInfo( const HAPI_Session * session,
11042  HAPI_NodeId material_node_id,
11043  HAPI_ImageInfo * image_info );
11044 
11045 /// @brief Set image information like resolution and file format.
11046 /// This information will be used when extracting planes to
11047 /// an image.
11048 ///
11049 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11050 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11051 /// first for this method call to make sense.
11052 ///
11053 /// You should also first call ::HAPI_GetImageInfo() to get the
11054 /// current Image Info and change only the properties
11055 /// you don't like.
11056 ///
11057 /// @ingroup Materials
11058 ///
11059 /// @param[in] session
11060 /// The session of Houdini you are interacting with.
11061 /// See @ref HAPI_Sessions for more on sessions.
11062 /// Pass NULL to just use the default in-process session.
11063 /// <!-- default NULL -->
11064 ///
11065 /// @param[in] material_node_id
11066 /// The material node id.
11067 ///
11068 /// @param[in] image_info
11069 /// The struct containing the new image information.
11070 ///
11071 HAPI_DECL HAPI_SetImageInfo( const HAPI_Session * session,
11072  HAPI_NodeId material_node_id,
11073  const HAPI_ImageInfo * image_info );
11074 
11075 /// @brief Get the number of image planes for the just rendered image.
11076 ///
11077 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11078 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11079 /// first for this method call to make sense.
11080 ///
11081 /// @ingroup Materials
11082 ///
11083 /// @param[in] session
11084 /// The session of Houdini you are interacting with.
11085 /// See @ref HAPI_Sessions for more on sessions.
11086 /// Pass NULL to just use the default in-process session.
11087 /// <!-- default NULL -->
11088 ///
11089 /// @param[in] material_node_id
11090 /// The material node id.
11091 ///
11092 /// @param[out] image_plane_count
11093 /// The number of image planes.
11094 ///
11096  HAPI_NodeId material_node_id,
11097  int * image_plane_count );
11098 
11099 /// @brief Get the names of the image planes of the just rendered image.
11100 ///
11101 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11102 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11103 /// first for this method call to make sense.
11104 ///
11105 /// You should also call ::HAPI_GetImagePlaneCount() first to get
11106 /// the total number of image planes so you know how large the
11107 /// image_planes string handle array should be.
11108 ///
11109 /// @ingroup Materials
11110 ///
11111 /// @param[in] session
11112 /// The session of Houdini you are interacting with.
11113 /// See @ref HAPI_Sessions for more on sessions.
11114 /// Pass NULL to just use the default in-process session.
11115 /// <!-- default NULL -->
11116 ///
11117 /// @param[in] material_node_id
11118 /// The material node id.
11119 ///
11120 /// @param[out] image_planes_array
11121 /// The image plane names.
11122 ///
11123 /// @param[in] image_plane_count
11124 /// The number of image planes to get names for. This
11125 /// must be less than or equal to the count returned
11126 /// by ::HAPI_GetImagePlaneCount().
11127 /// <!-- source ::HAPI_GetImagePlaneCount -->
11128 ///
11129 HAPI_DECL HAPI_GetImagePlanes( const HAPI_Session * session,
11130  HAPI_NodeId material_node_id,
11131  HAPI_StringHandle * image_planes_array,
11132  int image_plane_count );
11133 
11134 /// @brief Extract a rendered image to a file.
11135 ///
11136 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11137 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11138 /// first for this method call to make sense.
11139 ///
11140 /// @ingroup Materials
11141 ///
11142 /// @param[in] session
11143 /// The session of Houdini you are interacting with.
11144 /// See @ref HAPI_Sessions for more on sessions.
11145 /// Pass NULL to just use the default in-process session.
11146 /// <!-- default NULL -->
11147 ///
11148 /// @param[in] material_node_id
11149 /// The material node id.
11150 ///
11151 /// @param[in] image_file_format_name
11152 /// The image file format name you wish the image to be
11153 /// extracted as. You can leave this parameter NULL to
11154 /// get the image in the original format if it comes from
11155 /// another texture file or in the default HAPI format,
11156 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11157 /// is generated.
11158 ///
11159 /// You can get some of the very common standard image
11160 /// file format names from HAPI_Common.h under the
11161 /// "Defines" section.
11162 ///
11163 /// You can also get a list of all supported file formats
11164 /// (and the exact names this parameter expects)
11165 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11166 /// list will include custom file formats you created via
11167 /// custom DSOs (see HDK docs about IMG_Format). You will
11168 /// get back a list of ::HAPI_ImageFileFormat. This
11169 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11170 /// of a given image file format.
11171 ///
11172 /// @param[in] image_planes
11173 /// The image planes you wish to extract into the file.
11174 /// Multiple image planes should be separated by spaces.
11175 ///
11176 /// @param[in] destination_folder_path
11177 /// The folder where the image file should be created.
11178 ///
11179 /// @param[in] destination_file_name
11180 /// Optional parameter to overwrite the name of the
11181 /// extracted texture file. This should NOT include
11182 /// the extension as the file type will be decided
11183 /// by the ::HAPI_ImageInfo you can set using
11184 /// ::HAPI_SetImageInfo(). You still have to use
11185 /// destination_file_path to get the final file path.
11186 ///
11187 /// Pass in NULL to have the file name be automatically
11188 /// generated from the name of the material SHOP node,
11189 /// the name of the texture map parameter if the
11190 /// image was rendered from a texture, and the image
11191 /// plane names specified.
11192 ///
11193 /// @param[out] destination_file_path
11194 /// The full path string handle, including the
11195 /// destination_folder_path and the texture file name,
11196 /// to the extracted file. Note that this string handle
11197 /// will only be valid until the next call to
11198 /// this function.
11199 ///
11201  HAPI_NodeId material_node_id,
11202  const char * image_file_format_name,
11203  const char * image_planes,
11204  const char * destination_folder_path,
11205  const char * destination_file_name,
11206  int * destination_file_path );
11207 /// @brief Get the file name that this image would be saved to
11208 ///
11209 /// Check to see what file path HAPI_ExtractImageToFile would have
11210 /// saved to given the same parms. Perhaps you might wish to see
11211 /// if it already exists before extracting.
11212 ///
11213 /// @ingroup Materials
11214 ///
11215 /// @param[in] session
11216 /// The session of Houdini you are interacting with.
11217 /// See @ref HAPI_Sessions for more on sessions.
11218 /// Pass NULL to just use the default in-process session.
11219 /// <!-- default NULL -->
11220 ///
11221 /// @param[in] material_node_id
11222 /// The material node id.
11223 ///
11224 /// @param[in] image_file_format_name
11225 /// The image file format name you wish the image to be
11226 /// extracted as. See HAPI_ExtractImageToFile for more information.
11227 ///
11228 /// @param[in] image_planes
11229 /// The image planes you wish to extract into the file.
11230 /// Multiple image planes should be separated by spaces.
11231 ///
11232 /// @param[in] destination_folder_path
11233 /// The folder where the image file sould be created.
11234 ///
11235 /// @param[in] destination_file_name
11236 /// Optional parameter to overwrite the name of the
11237 /// extracted texture file. See HAPI_ExtractImageToFile for more information.
11238 ///
11239 /// @param[in] texture_parm_id
11240 /// The index in the parameter list of the material node.
11241 /// of the parameter containing the texture map file path
11242 ///
11243 /// @param[out] destination_file_path
11244 /// The full path string handle, including the
11245 /// destination_folder_path and the texture file name,
11246 /// to the extracted file. Note that this string handle
11247 /// will only be valid until the next call to
11248 /// this function.
11249 ///
11251  HAPI_NodeId material_node_id,
11252  const char * image_file_format_name,
11253  const char * image_planes,
11254  const char * destination_folder_path,
11255  const char * destination_file_name,
11256  HAPI_ParmId texture_parm_id,
11257  int * destination_file_path );
11258 
11259 /// @brief Extract a rendered image to memory.
11260 ///
11261 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11262 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11263 /// first for this method call to make sense.
11264 ///
11265 /// Also note that this function will do all the work of
11266 /// extracting and compositing the image into a memory buffer
11267 /// but will not return to you that buffer, only its size. Use
11268 /// the returned size to allocated a sufficiently large buffer
11269 /// and call ::HAPI_GetImageMemoryBuffer() to fill your buffer
11270 /// with the just extracted image.
11271 ///
11272 /// @ingroup Materials
11273 ///
11274 /// @param[in] session
11275 /// The session of Houdini you are interacting with.
11276 /// See @ref HAPI_Sessions for more on sessions.
11277 /// Pass NULL to just use the default in-process session.
11278 /// <!-- default NULL -->
11279 ///
11280 /// @param[in] material_node_id
11281 /// The material node id.
11282 ///
11283 /// @param[in] image_file_format_name
11284 /// The image file format name you wish the image to be
11285 /// extracted as. You can leave this parameter NULL to
11286 /// get the image in the original format if it comes from
11287 /// another texture file or in the default HAPI format,
11288 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11289 /// is generated.
11290 ///
11291 /// You can get some of the very common standard image
11292 /// file format names from HAPI_Common.h under the
11293 /// "Defines" section.
11294 ///
11295 /// You can also get a list of all supported file formats
11296 /// (and the exact names this parameter expects)
11297 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11298 /// list will include custom file formats you created via
11299 /// custom DSOs (see HDK docs about IMG_Format). You will
11300 /// get back a list of ::HAPI_ImageFileFormat. This
11301 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11302 /// of a given image file format.
11303 ///
11304 /// @param[in] image_planes
11305 /// The image planes you wish to extract into the file.
11306 /// Multiple image planes should be separated by spaces.
11307 ///
11308 /// @param[out] buffer_size
11309 /// The extraction will be done to an internal buffer
11310 /// who's size you get via this parameter. Use the
11311 /// returned buffer_size when calling
11312 /// ::HAPI_GetImageMemoryBuffer() to get the image
11313 /// buffer you just extracted.
11314 ///
11316  HAPI_NodeId material_node_id,
11317  const char * image_file_format_name,
11318  const char * image_planes,
11319  int * buffer_size );
11320 
11321 /// @brief Fill your allocated buffer with the just extracted
11322 /// image buffer.
11323 ///
11324 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11325 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11326 /// first for this method call to make sense.
11327 ///
11328 /// Also note that you must call ::HAPI_ExtractImageToMemory()
11329 /// first in order to perform the extraction and get the
11330 /// extracted image buffer size that you need to know how much
11331 /// memory to allocated to fit your extracted image.
11332 ///
11333 /// @ingroup Materials
11334 ///
11335 /// @param[in] session
11336 /// The session of Houdini you are interacting with.
11337 /// See @ref HAPI_Sessions for more on sessions.
11338 /// Pass NULL to just use the default in-process session.
11339 /// <!-- default NULL -->
11340 ///
11341 /// @param[in] material_node_id
11342 /// The material node id.
11343 ///
11344 /// @param[out] buffer
11345 /// The buffer passed in here will be filled with the
11346 /// image buffer created during the call to
11347 /// ::HAPI_ExtractImageToMemory().
11348 ///
11349 /// @param[in] length
11350 /// Sanity check. This size should be the same as the
11351 /// size allocated for the buffer passed in and should
11352 /// be at least as large as the buffer_size returned by
11353 /// the call to ::HAPI_ExtractImageToMemory().
11354 /// <!-- source ::HAPI_ExtractImageToMemory -->
11355 ///
11357  HAPI_NodeId material_node_id,
11358  char * buffer, int length );
11359 
11360 /// @brief Get the number of supported texture file formats.
11361 ///
11362 /// @ingroup Materials
11363 ///
11364 /// @param[in] session
11365 /// The session of Houdini you are interacting with.
11366 /// See @ref HAPI_Sessions for more on sessions.
11367 /// Pass NULL to just use the default in-process session.
11368 /// <!-- default NULL -->
11369 ///
11370 /// @param[out] file_format_count
11371 /// The number of supported texture file formats.
11372 ///
11374  int * file_format_count );
11375 
11376 /// @brief Get a list of support image file formats - their names,
11377 /// descriptions and a list of recognized extensions.
11378 ///
11379 /// Note that you MUST call
11380 /// ::HAPI_GetSupportedImageFileFormatCount()
11381 /// before calling this function for the first time.
11382 ///
11383 /// @ingroup Materials
11384 ///
11385 /// @param[in] session
11386 /// The session of Houdini you are interacting with.
11387 /// See @ref HAPI_Sessions for more on sessions.
11388 /// Pass NULL to just use the default in-process session.
11389 /// <!-- default NULL -->
11390 ///
11391 /// @param[out] formats_array
11392 /// The list of ::HAPI_ImageFileFormat structs to
11393 /// be filled.
11394 ///
11395 /// @param[in] file_format_count
11396 /// The number of supported texture file formats. This
11397 /// should be at least as large as the count returned
11398 /// by ::HAPI_GetSupportedImageFileFormatCount().
11399 /// <!-- source ::HAPI_GetSupportedImageFileFormatCount -->
11400 ///
11402  const HAPI_Session * session,
11403  HAPI_ImageFileFormat * formats_array,
11404  int file_format_count );
11405 
11406 /// @brief Loads some raw image data into a COP node.
11407 ///
11408 /// This method expects the image data to be in linear color space.
11409 /// It will not do any color space conversions for you; the data
11410 /// must be converted beforehand.
11411 ///
11412 /// @ingroup Materials
11413 ///
11414 /// @param[in] session
11415 /// The session of Houdini you are interacting with.
11416 /// See @ref HAPI_Sessions for more on sessions.
11417 /// Pass NULL to just use the default in-process session.
11418 /// <!-- default NULL -->
11419 ///
11420 /// @param[in] parent_node_id
11421 /// The node that the copnet containing the texture will be
11422 /// created in, or -1 if the parent is the image manager.
11423 ///
11424 /// @param[in] width
11425 /// The width of the image in pixels. @p width * @p height *
11426 /// channel count (implied by @p packing) should equal the size
11427 /// of @p data_array.
11428 ///
11429 /// @param[in] height
11430 /// The height of the image in pixels. @p width * @p height *
11431 /// channel count (implied by @p packing) should equal the size
11432 /// of @p data_array.
11433 ///
11434 /// @param[in] packing
11435 /// How the image data is packed (single-channel, RBGA, etc).
11436 ///
11437 /// @param[in] flip_x
11438 /// Whether to flip the image horizontally.
11439 ///
11440 /// @param[in] flip_y
11441 /// Whether to flip the image vertically.
11442 ///
11443 /// @param[in] data_array
11444 /// A float array representing the image's pixel data. Values
11445 /// should be between 0.0 and 1.0. The data should be packed
11446 /// according to @p packing.
11447 ///
11448 /// @param[in] start
11449 /// The index of the first value of @p data_array to use.
11450 /// Must be at least 0 and at most (size of @p data_array - 1).
11451 /// <!-- min 0 -->
11452 /// <!-- default 0 -->
11453 ///
11454 /// @param[in] length
11455 /// How much of @p data_array to use. Must be at least 0
11456 /// and at most (size of @p data_array - start).
11457 /// <!-- min 0 -->
11458 ///
11459 HAPI_DECL HAPI_CreateCOPImage( const HAPI_Session * session,
11460  HAPI_NodeId parent_node_id,
11461  const int width,
11462  const int height,
11463  const HAPI_ImagePacking packing,
11464  HAPI_Bool flip_x,
11465  HAPI_Bool flip_y,
11466  const float * data_array,
11467  int start, int length );
11468 
11469 /// @defgroup Animation
11470 /// Functions for working with animation.
11471 
11472 /// @brief Set an animation curve on a parameter of an exposed node.
11473 ///
11474 /// @ingroup Animation
11475 ///
11476 /// @param[in] session
11477 /// The session of Houdini you are interacting with.
11478 /// See @ref HAPI_Sessions for more on sessions.
11479 /// Pass NULL to just use the default in-process session.
11480 /// <!-- default NULL -->
11481 ///
11482 /// @param[in] node_id
11483 /// The exposed node id.
11484 ///
11485 /// @param[in] parm_id
11486 /// The id of an exposed parameter within the node.
11487 /// @param[in] parm_index
11488 /// The index of the parameter, if it is for example
11489 /// a 3 tuple
11490 ///
11491 /// @param[in] curve_keyframes_array
11492 /// An array of ::HAPI_Keyframe structs that describes
11493 /// the keys on this curve.
11494 ///
11495 /// @param[in] keyframe_count
11496 /// The number of keys on the curve.
11497 ///
11498 HAPI_DECL HAPI_SetAnimCurve( const HAPI_Session * session,
11499  HAPI_NodeId node_id, HAPI_ParmId parm_id,
11500  int parm_index,
11501  const HAPI_Keyframe * curve_keyframes_array,
11502  int keyframe_count );
11503 
11504 /// @brief A specialized convenience function to set the T,R,S values
11505 /// on an exposed node.
11506 ///
11507 /// @ingroup Animation
11508 ///
11509 /// @param[in] session
11510 /// The session of Houdini you are interacting with.
11511 /// See @ref HAPI_Sessions for more on sessions.
11512 /// Pass NULL to just use the default in-process session.
11513 /// <!-- default NULL -->
11514 ///
11515 /// @param[in] node_id
11516 /// The exposed node id.
11517 ///
11518 /// @param[in] trans_comp
11519 /// A value of ::HAPI_TransformComponent that
11520 /// identifies the particular component of the
11521 /// transform to attach the curve to, for example
11522 /// ::HAPI_TRANSFORM_TX.
11523 ///
11524 /// @param[in] curve_keyframes_array
11525 /// An array of ::HAPI_Keyframe structs that describes
11526 /// the keys on this curve.
11527 ///
11528 /// @param[in] keyframe_count
11529 /// The number of keys on the curve.
11530 ///
11532  const HAPI_Session * session,
11533  HAPI_NodeId node_id,
11534  HAPI_TransformComponent trans_comp,
11535  const HAPI_Keyframe * curve_keyframes_array,
11536  int keyframe_count );
11537 
11538 /// @brief Resets the simulation cache of the asset. This is very useful
11539 /// for assets that use dynamics, to be called after some
11540 /// setup has changed for the asset - for example, asset inputs
11541 ///
11542 /// @ingroup Time
11543 ///
11544 /// @param[in] session
11545 /// The session of Houdini you are interacting with.
11546 /// See @ref HAPI_Sessions for more on sessions.
11547 /// Pass NULL to just use the default in-process session.
11548 /// <!-- default NULL -->
11549 ///
11550 /// @param[in] node_id
11551 /// The asset node id.
11552 ///
11554  HAPI_NodeId node_id );
11555 
11556 /// @defgroup Volumes
11557 /// Functions for working with Volume data
11558 
11559 /// @brief Retrieve any meta-data about the volume primitive, including
11560 /// its transform, location, scale, taper, resolution.
11561 ///
11562 /// @ingroup Volumes
11563 ///
11564 /// @param[in] session
11565 /// The session of Houdini you are interacting with.
11566 /// See @ref HAPI_Sessions for more on sessions.
11567 /// Pass NULL to just use the default in-process session.
11568 /// <!-- default NULL -->
11569 ///
11570 /// @param[in] node_id
11571 /// The node id.
11572 ///
11573 /// @param[in] part_id
11574 /// The part id.
11575 ///
11576 /// @param[out] volume_info
11577 /// The meta-data associated with the volume on the
11578 /// part specified by the previous parameters.
11579 ///
11580 HAPI_DECL HAPI_GetVolumeInfo( const HAPI_Session * session,
11581  HAPI_NodeId node_id,
11582  HAPI_PartId part_id,
11583  HAPI_VolumeInfo * volume_info );
11584 
11585 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
11586 /// Start iterating through the value of the volume at part_id.
11587 ///
11588 /// @ingroup Volumes
11589 ///
11590 /// @param[in] session
11591 /// The session of Houdini you are interacting with.
11592 /// See @ref HAPI_Sessions for more on sessions.
11593 /// Pass NULL to just use the default in-process session.
11594 /// <!-- default NULL -->
11595 ///
11596 /// @param[in] node_id
11597 /// The node id.
11598 ///
11599 /// @param[in] part_id
11600 /// The part id.
11601 ///
11602 /// @param[out] tile
11603 /// The tile info referring to the first tile in the
11604 /// volume at part_id.
11605 ///
11607  HAPI_NodeId node_id,
11608  HAPI_PartId part_id,
11609  HAPI_VolumeTileInfo * tile );
11610 
11611 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
11612 /// Continue iterating through the value of the volume at part_id.
11613 ///
11614 /// @ingroup Volumes
11615 ///
11616 /// @param[in] session
11617 /// The session of Houdini you are interacting with.
11618 /// See @ref HAPI_Sessions for more on sessions.
11619 /// Pass NULL to just use the default in-process session.
11620 /// <!-- default NULL -->
11621 ///
11622 /// @param[in] node_id
11623 /// The node id.
11624 ///
11625 /// @param[in] part_id
11626 /// The part id.
11627 ///
11628 /// @param[out] tile
11629 /// The tile info referring to the next tile in the
11630 /// set of tiles associated with the volume at this part.
11631 ///
11633  HAPI_NodeId node_id,
11634  HAPI_PartId part_id,
11635  HAPI_VolumeTileInfo * tile );
11636 
11637 /// @brief Retrieve floating point values of the voxel at a specific
11638 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
11639 /// to this call.
11640 ///
11641 /// @ingroup Volumes
11642 ///
11643 /// @param[in] session
11644 /// The session of Houdini you are interacting with.
11645 /// See @ref HAPI_Sessions for more on sessions.
11646 /// Pass NULL to just use the default in-process session.
11647 /// <!-- default NULL -->
11648 ///
11649 /// @param[in] node_id
11650 /// The node id.
11651 ///
11652 /// @param[in] part_id
11653 /// The part id.
11654 ///
11655 /// @param[in] x_index
11656 /// The x index/coordinate of the voxel.
11657 ///
11658 /// @param[in] y_index
11659 /// The y index/coordinate of the voxel.
11660 ///
11661 /// @param[in] z_index
11662 /// The z index/coordinate of the voxel.
11663 ///
11664 /// @param[out] values_array
11665 /// The values of the voxel.
11666 ///
11667 /// @param[in] value_count
11668 /// Should be equal to the volume's
11669 /// ::HAPI_VolumeInfo::tupleSize.
11670 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
11671 ///
11673  HAPI_NodeId node_id,
11674  HAPI_PartId part_id,
11675  int x_index,
11676  int y_index,
11677  int z_index,
11678  float * values_array,
11679  int value_count );
11680 
11681 /// @brief Retrieve floating point values of the voxels pointed to
11682 /// by a tile. Note that a tile may extend beyond the limits
11683 /// of the volume so not all values in the given buffer will
11684 /// be written to. Voxels outside the volume will be initialized
11685 /// to the given fill value.
11686 ///
11687 /// @ingroup Volumes
11688 ///
11689 /// @param[in] session
11690 /// The session of Houdini you are interacting with.
11691 /// See @ref HAPI_Sessions for more on sessions.
11692 /// Pass NULL to just use the default in-process session.
11693 /// <!-- default NULL -->
11694 ///
11695 /// @param[in] node_id
11696 /// The node id.
11697 ///
11698 /// @param[in] part_id
11699 /// The part id.
11700 ///
11701 /// @param[in] fill_value
11702 /// Value that will be used to fill the @p values_array.
11703 /// This is useful so that you can see what values
11704 /// have actually been written to.
11705 ///
11706 /// @param[in] tile
11707 /// The tile to retrieve.
11708 ///
11709 /// @param[out] values_array
11710 /// The values of the tile.
11711 ///
11712 /// @param[in] length
11713 /// The length should be ( 8 ^ 3 ) * tupleSize.
11714 ///
11716  HAPI_NodeId node_id,
11717  HAPI_PartId part_id,
11718  float fill_value,
11719  const HAPI_VolumeTileInfo * tile,
11720  float * values_array,
11721  int length );
11722 
11723 /// @brief Retrieve integer point values of the voxel at a specific
11724 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
11725 /// to this call.
11726 ///
11727 /// @ingroup Volumes
11728 ///
11729 /// @param[in] session
11730 /// The session of Houdini you are interacting with.
11731 /// See @ref HAPI_Sessions for more on sessions.
11732 /// Pass NULL to just use the default in-process session.
11733 /// <!-- default NULL -->
11734 ///
11735 /// @param[in] node_id
11736 /// The node id.
11737 ///
11738 /// @param[in] part_id
11739 /// The part id.
11740 ///
11741 /// @param[in] x_index
11742 /// The x index/coordinate of the voxel.
11743 ///
11744 /// @param[in] y_index
11745 /// The y index/coordinate of the voxel.
11746 ///
11747 /// @param[in] z_index
11748 /// The z index/coordinate of the voxel.
11749 ///
11750 /// @param[out] values_array
11751 /// The values of the voxel.
11752 ///
11753 /// @param[in] value_count
11754 /// Should be equal to the volume's
11755 /// ::HAPI_VolumeInfo::tupleSize.
11756 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
11757 ///
11759  HAPI_NodeId node_id,
11760  HAPI_PartId part_id,
11761  int x_index,
11762  int y_index,
11763  int z_index,
11764  int * values_array,
11765  int value_count );
11766 
11767 /// @brief Retrieve integer point values of the voxels pointed to
11768 /// by a tile. Note that a tile may extend beyond the limits
11769 /// of the volume so not all values in the given buffer will
11770 /// be written to. Voxels outside the volume will be initialized
11771 /// to the given fill value.
11772 ///
11773 /// @ingroup Volumes
11774 ///
11775 /// @param[in] session
11776 /// The session of Houdini you are interacting with.
11777 /// See @ref HAPI_Sessions for more on sessions.
11778 /// Pass NULL to just use the default in-process session.
11779 /// <!-- default NULL -->
11780 ///
11781 /// @param[in] node_id
11782 /// The node id.
11783 ///
11784 /// @param[in] part_id
11785 /// The part id.
11786 ///
11787 /// @param[in] fill_value
11788 /// Value that will be used to fill the @p values_array.
11789 /// This is useful so that you can see what values
11790 /// have actually been written to.
11791 ///
11792 /// @param[in] tile
11793 /// The tile to retrieve.
11794 ///
11795 /// @param[out] values_array
11796 /// The values of the tile.
11797 ///
11798 /// @param[in] length
11799 /// The length should be ( 8 ^ 3 ) * tupleSize.
11800 ///
11802  HAPI_NodeId node_id,
11803  HAPI_PartId part_id,
11804  int fill_value,
11805  const HAPI_VolumeTileInfo * tile,
11806  int * values_array,
11807  int length );
11808 
11809 /// @brief Get the height field data for a terrain volume as a flattened
11810 /// 2D array of float heights. Should call ::HAPI_GetVolumeInfo()
11811 /// first to make sure the volume info is initialized.
11812 ///
11813 /// @ingroup Volumes
11814 ///
11815 /// @param[in] session
11816 /// The session of Houdini you are interacting with.
11817 /// See @ref HAPI_Sessions for more on sessions.
11818 /// Pass NULL to just use the default in-process session.
11819 /// <!-- default NULL -->
11820 ///
11821 /// @param[in] node_id
11822 /// The node id.
11823 ///
11824 /// @param[in] part_id
11825 /// The part id.
11826 ///
11827 /// @param[out] values_array
11828 /// Heightfield flattened array. Should be at least the size of
11829 /// @p start + @p length.
11830 ///
11831 /// @param[in] start
11832 /// The start at least 0 and at most
11833 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
11834 /// - @p length.
11835 ///
11836 /// @param[in] length
11837 /// The length should be at least 1 or at most
11838 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
11839 /// - @p start.
11840 ///
11842  HAPI_NodeId node_id,
11843  HAPI_PartId part_id,
11844  float * values_array,
11845  int start, int length );
11846 
11847 /// @brief Set the volume info of a geo on a geo input.
11848 ///
11849 /// @ingroup Volumes
11850 ///
11851 /// @param[in] session
11852 /// The session of Houdini you are interacting with.
11853 /// See @ref HAPI_Sessions for more on sessions.
11854 /// Pass NULL to just use the default in-process session.
11855 /// <!-- default NULL -->
11856 ///
11857 /// @param[in] node_id
11858 /// The node id.
11859 ///
11860 /// @param[in] part_id
11861 /// The part id.
11862 ///
11863 /// @param[in] volume_info
11864 /// All volume information that can be specified per
11865 /// volume. This includes the position, orientation, scale,
11866 /// data format, tuple size, and taper. The tile size is
11867 /// always 8x8x8.
11868 ///
11869 HAPI_DECL HAPI_SetVolumeInfo( const HAPI_Session * session,
11870  HAPI_NodeId node_id,
11871  HAPI_PartId part_id,
11872  const HAPI_VolumeInfo * volume_info );
11873 
11874 /// @brief Set the values of a float tile: this is an 8x8x8 subsection of
11875 /// the volume.
11876 ///
11877 /// @ingroup Volumes
11878 ///
11879 /// @param[in] session
11880 /// The session of Houdini you are interacting with.
11881 /// See @ref HAPI_Sessions for more on sessions.
11882 /// Pass NULL to just use the default in-process session.
11883 /// <!-- default NULL -->
11884 ///
11885 /// @param[in] node_id
11886 /// The node id.
11887 ///
11888 /// @param[in] part_id
11889 /// The part id.
11890 ///
11891 /// @param[in] tile
11892 /// The tile that the volume will be input into.
11893 ///
11894 /// @param[in] values_array
11895 /// The values of the individual voxel tiles in the
11896 /// volume. The length of this array should
11897 /// be ( 8 ^ 3 ) * tupleSize.
11898 ///
11899 /// @param[in] length
11900 /// The length should be ( 8 ^ 3 ) * tupleSize.
11901 ///
11903  HAPI_NodeId node_id,
11904  HAPI_PartId part_id,
11905  const HAPI_VolumeTileInfo * tile,
11906  const float * values_array,
11907  int length );
11908 
11909 /// @brief Set the values of an int tile: this is an 8x8x8 subsection of
11910 /// the volume.
11911 ///
11912 /// @ingroup Volumes
11913 ///
11914 /// @param[in] session
11915 /// The session of Houdini you are interacting with.
11916 /// See @ref HAPI_Sessions for more on sessions.
11917 /// Pass NULL to just use the default in-process session.
11918 /// <!-- default NULL -->
11919 ///
11920 /// @param[in] node_id
11921 /// The node id.
11922 ///
11923 /// @param[in] part_id
11924 /// The part id.
11925 ///
11926 /// @param[in] tile
11927 /// The tile that the volume will be input into.
11928 ///
11929 /// @param[in] values_array
11930 /// The values of the individual voxel tiles in the
11931 /// volume. The length of this array should
11932 /// be ( 8 ^ 3 ) * tupleSize.
11933 ///
11934 /// @param[in] length
11935 /// The length should be ( 8 ^ 3 ) * tupleSize.
11936 ///
11938  HAPI_NodeId node_id,
11939  HAPI_PartId part_id,
11940  const HAPI_VolumeTileInfo * tile,
11941  const int * values_array,
11942  int length );
11943 
11944 /// @brief Set the values of a float voxel in the volume.
11945 ///
11946 /// @ingroup Volumes
11947 ///
11948 /// @param[in] session
11949 /// The session of Houdini you are interacting with.
11950 /// See @ref HAPI_Sessions for more on sessions.
11951 /// Pass NULL to just use the default in-process session.
11952 /// <!-- default NULL -->
11953 ///
11954 /// @param[in] node_id
11955 /// The node id.
11956 ///
11957 /// @param[in] part_id
11958 /// The part id.
11959 ///
11960 /// @param[in] x_index
11961 /// The x index/coordinate of the voxel.
11962 ///
11963 /// @param[in] y_index
11964 /// The y index/coordinate of the voxel.
11965 ///
11966 /// @param[in] z_index
11967 /// The z index/coordinate of the voxel.
11968 ///
11969 /// @param[in] values_array
11970 /// The values of the voxel.
11971 ///
11972 /// @param[in] value_count
11973 /// Should be equal to the volume's
11974 /// ::HAPI_VolumeInfo::tupleSize.
11975 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
11976 ///
11978  HAPI_NodeId node_id,
11979  HAPI_PartId part_id,
11980  int x_index,
11981  int y_index,
11982  int z_index,
11983  const float * values_array,
11984  int value_count );
11985 
11986 /// @brief Set the values of a integer voxel in the volume.
11987 ///
11988 /// @ingroup Volumes
11989 ///
11990 /// @param[in] session
11991 /// The session of Houdini you are interacting with.
11992 /// See @ref HAPI_Sessions for more on sessions.
11993 /// Pass NULL to just use the default in-process session.
11994 /// <!-- default NULL -->
11995 ///
11996 /// @param[in] node_id
11997 /// The node id.
11998 ///
11999 /// @param[in] part_id
12000 /// The part id.
12001 ///
12002 /// @param[in] x_index
12003 /// The x index/coordinate of the voxel.
12004 ///
12005 /// @param[in] y_index
12006 /// The y index/coordinate of the voxel.
12007 ///
12008 /// @param[in] z_index
12009 /// The z index/coordinate of the voxel.
12010 ///
12011 /// @param[in] values_array
12012 /// The values of the voxel.
12013 ///
12014 /// @param[in] value_count
12015 /// Should be equal to the volume's
12016 /// ::HAPI_VolumeInfo::tupleSize.
12017 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12018 ///
12020  HAPI_NodeId node_id,
12021  HAPI_PartId part_id,
12022  int x_index,
12023  int y_index,
12024  int z_index,
12025  const int * values_array,
12026  int value_count );
12027 
12028 /// @brief Get the bounding values of a volume.
12029 ///
12030 /// @ingroup Volumes
12031 ///
12032 /// @param[in] session
12033 /// The session of Houdini you are interacting with.
12034 /// See @ref HAPI_Sessions for more on sessions.
12035 /// Pass NULL to just use the default in-process session.
12036 /// <!-- default NULL -->
12037 ///
12038 /// @param[in] node_id
12039 /// The node id.
12040 ///
12041 /// @param[in] part_id
12042 /// The part id.
12043 ///
12044 /// @param[out] x_min
12045 /// The minimum x value of the volume's bounding box.
12046 /// Can be null if you do not want this value.
12047 ///
12048 /// @param[out] y_min
12049 /// The minimum y value of the volume's bounding box.
12050 /// Can be null if you do not want this value.
12051 ///
12052 /// @param[out] z_min
12053 /// The minimum z value of the volume's bounding box.
12054 /// Can be null if you do not want this value.
12055 ///
12056 /// @param[out] x_max
12057 /// The maximum x value of the volume's bounding box.
12058 /// Can be null if you do not want this value.
12059 ///
12060 /// @param[out] y_max
12061 /// The maximum y value of the volume's bounding box.
12062 /// Can be null if you do not want this value.
12063 ///
12064 /// @param[out] z_max
12065 /// The maximum z value of the volume's bounding box.
12066 /// Can be null if you do not want this value.
12067 ///
12068 /// @param[out] x_center
12069 /// The x value of the volume's bounding box center.
12070 /// Can be null if you do not want this value.
12071 ///
12072 /// @param[out] y_center
12073 /// The y value of the volume's bounding box center.
12074 /// Can be null if you do not want this value.
12075 ///
12076 /// @param[out] z_center
12077 /// The z value of the volume's bounding box center.
12078 /// Can be null if you do not want this value.
12079 ///
12081  HAPI_NodeId node_id,
12082  HAPI_PartId part_id,
12083  float * x_min, float * y_min, float * z_min,
12084  float * x_max, float * y_max, float * z_max,
12085  float * x_center, float * y_center, float * z_center );
12086 
12087 /// @brief Set the height field data for a terrain volume with the values from
12088 /// a flattened 2D array of float.
12089 /// ::HAPI_SetVolumeInfo() should be called first to make sure that the
12090 /// volume and its info are initialized.
12091 ///
12092 /// @ingroup Volumes
12093 ///
12094 /// @param[in] session
12095 /// The session of Houdini you are interacting with.
12096 /// See @ref HAPI_Sessions for more on sessions.
12097 /// Pass NULL to just use the default in-process session.
12098 /// <!-- default NULL -->
12099 ///
12100 /// @param[in] node_id
12101 /// The node id.
12102 ///
12103 /// @param[in] part_id
12104 /// The part id.
12105 ///
12106 /// @param[in] values_array
12107 /// Heightfield flattened array. Should be at least the size of
12108 /// @p start + @p length.
12109 ///
12110 /// @param[in] start
12111 /// The start at least 0 and at most
12112 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p length.
12113 ///
12114 /// @param[in] length
12115 /// The length should be at least 1 or at most
12116 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p start.
12117 ///
12118 /// @param[in] name
12119 /// The name of the volume used for the heightfield.
12120 /// If set to "height" the values will be used for height information,
12121 /// if not, the data will used as a mask.
12122 ///
12124  HAPI_NodeId node_id,
12125  HAPI_PartId part_id,
12126  const char * name,
12127  const float * values_array,
12128  int start, int length );
12129 
12130 /// @brief Retrieve the visualization meta-data of the volume.
12131 ///
12132 /// @ingroup Volumes
12133 ///
12134 /// @param[in] session
12135 /// The session of Houdini you are interacting with.
12136 /// See @ref HAPI_Sessions for more on sessions.
12137 /// Pass NULL to just use the default in-process session.
12138 /// <!-- default NULL -->
12139 ///
12140 /// @param[in] node_id
12141 /// The node id.
12142 ///
12143 /// @param[in] part_id
12144 /// The part id.
12145 ///
12146 /// @param[out] visual_info
12147 /// The meta-data associated with the visualization
12148 /// settings of the part specified by the previous
12149 /// parameters.
12150 ///
12152  HAPI_NodeId node_id,
12153  HAPI_PartId part_id,
12154  HAPI_VolumeVisualInfo * visual_info );
12155 
12156 /// @defgroup Curves
12157 /// Functions for working with curves
12158 
12159 /// @brief Retrieve any meta-data about the curves, including the
12160 /// curve's type, order, and periodicity.
12161 ///
12162 /// @ingroup Curves
12163 ///
12164 /// @param[in] session
12165 /// The session of Houdini you are interacting with.
12166 /// See @ref HAPI_Sessions for more on sessions.
12167 /// Pass NULL to just use the default in-process session.
12168 /// <!-- default NULL -->
12169 ///
12170 /// @param[in] node_id
12171 /// The node id.
12172 ///
12173 /// @param[in] part_id
12174 /// The part id.
12175 ///
12176 /// @param[out] info
12177 /// The curve info represents the meta-data about
12178 /// the curves, including the type, order,
12179 /// and periodicity.
12180 ///
12181 HAPI_DECL HAPI_GetCurveInfo( const HAPI_Session * session,
12182  HAPI_NodeId node_id,
12183  HAPI_PartId part_id,
12184  HAPI_CurveInfo * info );
12185 
12186 /// @brief Retrieve the number of vertices for each curve in the part.
12187 ///
12188 /// @ingroup Curves
12189 ///
12190 /// @param[in] session
12191 /// The session of Houdini you are interacting with.
12192 /// See @ref HAPI_Sessions for more on sessions.
12193 /// Pass NULL to just use the default in-process session.
12194 /// <!-- default NULL -->
12195 ///
12196 /// @param[in] node_id
12197 /// The node id.
12198 ///
12199 /// @param[in] part_id
12200 /// The part id.
12201 ///
12202 /// @param[out] counts_array
12203 /// The number of cvs each curve contains
12204 ///
12205 /// @param[in] start
12206 /// The index of the first curve.
12207 /// <!-- default 0 -->
12208 ///
12209 /// @param[in] length
12210 /// The number of curves' counts to retrieve.
12211 ///
12212 HAPI_DECL HAPI_GetCurveCounts( const HAPI_Session * session,
12213  HAPI_NodeId node_id,
12214  HAPI_PartId part_id,
12215  int * counts_array,
12216  int start, int length );
12217 
12218 /// @brief Retrieve the orders for each curve in the part if the
12219 /// curve has varying order.
12220 ///
12221 /// @ingroup Curves
12222 ///
12223 /// @param[in] session
12224 /// The session of Houdini you are interacting with.
12225 /// See @ref HAPI_Sessions for more on sessions.
12226 /// Pass NULL to just use the default in-process session.
12227 /// <!-- default NULL -->
12228 ///
12229 /// @param[in] node_id
12230 /// The node id.
12231 ///
12232 /// @param[in] part_id
12233 /// The part id.
12234 ///
12235 /// @param[out] orders_array
12236 /// The order of each curve will be returned in this
12237 /// array.
12238 ///
12239 /// @param[in] start
12240 /// The index of the first curve.
12241 /// <!-- default 0 -->
12242 ///
12243 /// @param[in] length
12244 /// The number of curves' orders to retrieve.
12245 ///
12246 HAPI_DECL HAPI_GetCurveOrders( const HAPI_Session * session,
12247  HAPI_NodeId node_id,
12248  HAPI_PartId part_id,
12249  int * orders_array,
12250  int start, int length );
12251 
12252 /// @brief Retrieve the knots of the curves in this part.
12253 ///
12254 /// @ingroup Curves
12255 ///
12256 /// @param[in] session
12257 /// The session of Houdini you are interacting with.
12258 /// See @ref HAPI_Sessions for more on sessions.
12259 /// Pass NULL to just use the default in-process session.
12260 /// <!-- default NULL -->
12261 ///
12262 /// @param[in] node_id
12263 /// The node id.
12264 ///
12265 /// @param[in] part_id
12266 /// The part id.
12267 ///
12268 /// @param[out] knots_array
12269 /// The knots of each curve will be returned in this
12270 /// array.
12271 ///
12272 /// @param[in] start
12273 /// The index of the first curve.
12274 /// <!-- default 0 -->
12275 ///
12276 /// @param[in] length
12277 /// The number of curves' knots to retrieve. The
12278 /// length of all the knots on a single curve is
12279 /// the order of that curve plus the number of
12280 /// vertices (see ::HAPI_GetCurveOrders(),
12281 /// and ::HAPI_GetCurveCounts()).
12282 ///
12283 HAPI_DECL HAPI_GetCurveKnots( const HAPI_Session * session,
12284  HAPI_NodeId node_id,
12285  HAPI_PartId part_id,
12286  float * knots_array,
12287  int start, int length );
12288 
12289 /// @brief Set meta-data for the curve mesh, including the
12290 /// curve type, order, and periodicity.
12291 ///
12292 /// @ingroup Curves
12293 ///
12294 /// @param[in] session
12295 /// The session of Houdini you are interacting with.
12296 /// See @ref HAPI_Sessions for more on sessions.
12297 /// Pass NULL to just use the default in-process session.
12298 /// <!-- default NULL -->
12299 ///
12300 /// @param[in] node_id
12301 /// The node id.
12302 ///
12303 /// @param[in] part_id
12304 /// Currently unused. Input asset geos are assumed
12305 /// to have only one part.
12306 ///
12307 /// @param[in] info
12308 /// The curve info represents the meta-data about
12309 /// the curves, including the type, order,
12310 /// and periodicity.
12311 ///
12312 HAPI_DECL HAPI_SetCurveInfo( const HAPI_Session * session,
12313  HAPI_NodeId node_id,
12314  HAPI_PartId part_id,
12315  const HAPI_CurveInfo * info );
12316 
12317 /// @brief Set the number of vertices for each curve in the part.
12318 ///
12319 /// @ingroup Curves
12320 ///
12321 /// @param[in] session
12322 /// The session of Houdini you are interacting with.
12323 /// See @ref HAPI_Sessions for more on sessions.
12324 /// Pass NULL to just use the default in-process session.
12325 /// <!-- default NULL -->
12326 ///
12327 /// @param[in] node_id
12328 /// The node id.
12329 ///
12330 /// @param[in] part_id
12331 /// Currently unused. Input asset geos are assumed
12332 /// to have only one part.
12333 ///
12334 /// @param[in] counts_array
12335 /// The number of cvs each curve contains.
12336 ///
12337 /// @param[in] start
12338 /// The index of the first curve.
12339 /// <!-- default 0 -->
12340 ///
12341 /// @param[in] length
12342 /// The number of curves' counts to set.
12343 /// <!-- source arglength(counts_array) -->
12344 ///
12345 HAPI_DECL HAPI_SetCurveCounts( const HAPI_Session * session,
12346  HAPI_NodeId node_id,
12347  HAPI_PartId part_id,
12348  const int * counts_array,
12349  int start, int length );
12350 
12351 /// @brief Set the orders for each curve in the part if the
12352 /// curve has varying order.
12353 ///
12354 /// @ingroup Curves
12355 ///
12356 /// @param[in] session
12357 /// The session of Houdini you are interacting with.
12358 /// See @ref HAPI_Sessions for more on sessions.
12359 /// Pass NULL to just use the default in-process session.
12360 /// <!-- default NULL -->
12361 ///
12362 /// @param[in] node_id
12363 /// The node id.
12364 ///
12365 /// @param[in] part_id
12366 /// Currently unused. Input asset geos are assumed
12367 /// to have only one part.
12368 ///
12369 /// @param[in] orders_array
12370 /// The orders of each curve.
12371 ///
12372 /// @param[in] start
12373 /// The index of the first curve.
12374 /// <!-- default 0 -->
12375 ///
12376 /// @param[in] length
12377 /// The number of curves' orders to retrieve.
12378 /// <!-- source arglength(orders_array) -->
12379 ///
12380 HAPI_DECL HAPI_SetCurveOrders( const HAPI_Session * session,
12381  HAPI_NodeId node_id,
12382  HAPI_PartId part_id,
12383  const int * orders_array,
12384  int start, int length );
12385 
12386 /// @brief Set the knots of the curves in this part.
12387 ///
12388 /// @ingroup Curves
12389 ///
12390 /// @param[in] session
12391 /// The session of Houdini you are interacting with.
12392 /// See @ref HAPI_Sessions for more on sessions.
12393 /// Pass NULL to just use the default in-process session.
12394 /// <!-- default NULL -->
12395 ///
12396 /// @param[in] node_id
12397 /// The node id.
12398 ///
12399 /// @param[in] part_id
12400 /// Currently unused. Input asset geos are assumed
12401 /// to have only one part.
12402 ///
12403 /// @param[in] knots_array
12404 /// The knots of each curve.
12405 ///
12406 /// @param[in] start
12407 /// The index of the first curve.
12408 /// <!-- default 0 -->
12409 ///
12410 /// @param[in] length
12411 /// The number of curves' knots to set. The
12412 /// length of all the knots on a single curve is
12413 /// the order of that curve plus the number of
12414 /// vertices (see ::HAPI_SetCurveOrders(),
12415 /// and ::HAPI_SetCurveCounts()).
12416 ///
12417 HAPI_DECL HAPI_SetCurveKnots( const HAPI_Session * session,
12418  HAPI_NodeId node_id,
12419  HAPI_PartId part_id,
12420  const float * knots_array,
12421  int start, int length );
12422 
12423 // INPUT CURVE INFO ---------------------------------------------------------
12424 
12425 /// @defgroup InputCurves
12426 /// Functions for working with curves
12427 
12428 /// @brief Retrieve meta-data about the input curves, including the
12429 /// curve's type, order, and whether or not the curve is closed and reversed.
12430 ///
12431 /// @ingroup InputCurves
12432 ///
12433 /// @param[in] session
12434 /// The session of Houdini you are interacting with.
12435 /// See @ref HAPI_Sessions for more on sessions.
12436 /// Pass NULL to just use the default in-process session.
12437 /// <!-- default NULL -->
12438 ///
12439 /// @param[in] node_id
12440 /// The node id.
12441 ///
12442 /// @param[in] part_id
12443 /// The part id.
12444 ///
12445 /// @param[out] info
12446 /// The curve info represents the meta-data about
12447 /// the curves, including the type, order,
12448 /// and closed and reversed values.
12449 ///
12451  HAPI_NodeId node_id,
12452  HAPI_PartId part_id,
12453  HAPI_InputCurveInfo * info );
12454 
12455 /// @brief Set meta-data for the input curves, including the
12456 /// curve type, order, reverse and closed properties.
12457 ///
12458 /// @ingroup InputCurves
12459 ///
12460 /// @param[in] session
12461 /// The session of Houdini you are interacting with.
12462 /// See @ref HAPI_Sessions for more on sessions.
12463 /// Pass NULL to just use the default in-process session.
12464 /// <!-- default NULL -->
12465 ///
12466 /// @param[in] node_id
12467 /// The node id.
12468 ///
12469 /// @param[in] part_id
12470 /// Currently unused. Input asset geos are assumed
12471 /// to have only one part.
12472 ///
12473 /// @param[in] info
12474 /// The curve info represents the meta-data about
12475 /// the curves, including the type, order,
12476 /// and closed and reverse properties.
12477 ///
12479  HAPI_NodeId node_id,
12480  HAPI_PartId part_id,
12481  const HAPI_InputCurveInfo * info );
12482 
12483 /// @brief Sets the positions for input curves, doing checks for
12484 /// curve validity, and adjusting the curve settings accordingly.
12485 /// Will also cook the node.
12486 ///
12487 /// @ingroup InputCurves
12488 ///
12489 /// @param[in] session
12490 /// The session of Houdini you are interacting with.
12491 /// See @ref HAPI_Sessions for more on sessions.
12492 /// Pass NULL to just use the default in-process session.
12493 /// <!-- default NULL -->
12494 ///
12495 /// @param[in] node_id
12496 /// The node id.
12497 ///
12498 /// @param[in] part_id
12499 /// Currently unused. Input asset geos are assumed
12500 /// to have only one part.
12501 ///
12502 /// @param[in] positions_array
12503 /// A float array representing the positions attribute.
12504 /// It will read the array assuming a tuple size of 3.
12505 /// Note that this function does not do any coordinate axes
12506 /// conversion.
12507 ///
12508 /// @param[in] start
12509 /// The index of the first position in positions_array.
12510 /// <!-- default 0 -->
12511 ///
12512 /// @param[in] length
12513 /// The size of the positions array.
12514 /// <!-- source arglength(positions_array) -->
12515 ///
12517  const HAPI_Session* session,
12518  HAPI_NodeId node_id,
12519  HAPI_PartId part_id,
12520  const float* positions_array,
12521  int start,
12522  int length);
12523 
12524 /// @brief Sets the positions for input curves, doing checks for
12525 /// curve validity, and adjusting the curve settings accordingly.
12526 /// Will also cook the node. Additionally, adds rotation and scale
12527 /// attributes to the curve.
12528 ///
12529 /// @ingroup InputCurves
12530 ///
12531 /// @param[in] session
12532 /// The session of Houdini you are interacting with.
12533 /// See @ref HAPI_Sessions for more on sessions.
12534 /// Pass NULL to just use the default in-process session.
12535 /// <!-- default NULL -->
12536 ///
12537 /// @param[in] node_id
12538 /// The node id.
12539 ///
12540 /// @param[in] part_id
12541 /// Currently unused. Input asset geos are assumed
12542 /// to have only one part.
12543 ///
12544 /// @param[in] positions_array
12545 /// A float array representing the positions attribute.
12546 /// It will read the array assuming a tuple size of 3.
12547 /// Note that this function does not do any coordinate axes
12548 /// conversion.
12549 ///
12550 /// @param[in] positions_array
12551 /// A float array representing the positions attribute.
12552 /// It will read the array assuming a tuple size of 3.
12553 /// Note that this function does not do any coordinate axes
12554 /// conversion.
12555 ///
12556 /// @param[in] positions_start
12557 /// The index of the first position in positions_array.
12558 /// <!-- default 0 -->
12559 ///
12560 /// @param[in] positions_length
12561 /// The size of the positions array.
12562 /// <!-- source arglength(positions_array) -->
12563 ///
12564 /// @param[in] rotations_array
12565 /// A float array representing the rotation (rot) attribute.
12566 /// It will read the array assuming a tuple size of 4
12567 /// representing quaternion values
12568 ///
12569 /// @param[in] rotations_start
12570 /// The index of the first rotation in rotations_array.
12571 /// <!-- default 0 -->
12572 ///
12573 /// @param[in] rotations_length
12574 /// The size of the rotations array.
12575 /// <!-- source arglength(rotations_array) -->
12576 ///
12577 /// @param[in] scales_array
12578 /// A float array representing the scale attribute.
12579 /// It will read the array assuming a tuple size of 3
12580 ///
12581 /// @param[in] scales_start
12582 /// The index of the first scale in scales_array.
12583 /// <!-- default 0 -->
12584 ///
12585 /// @param[in] scales_length
12586 /// The size of the scales array.
12587 /// <!-- source arglength(scales_array) -->
12588 ///
12590  const HAPI_Session* session,
12591  HAPI_NodeId node_id,
12592  HAPI_PartId part_id,
12593  const float* positions_array,
12594  int positions_start,
12595  int positions_length,
12596  const float* rotations_array,
12597  int rotations_start,
12598  int rotations_length,
12599  const float * scales_array,
12600  int scales_start,
12601  int scales_length);
12602 
12603 // BASIC PRIMITIVES ---------------------------------------------------------
12604 
12605 /// @brief Get the box info on a geo part (if the part is a box).
12606 ///
12607 /// @ingroup Geometry
12608 ///
12609 /// @param[in] session
12610 /// The session of Houdini you are interacting with.
12611 /// See @ref HAPI_Sessions for more on sessions.
12612 /// Pass NULL to just use the default in-process session.
12613 /// <!-- default NULL -->
12614 ///
12615 /// @param[in] geo_node_id
12616 /// The geo node id.
12617 ///
12618 /// @param[in] part_id
12619 /// The part id of the
12620 ///
12621 /// @param[out] box_info
12622 /// The returned box info.
12623 ///
12624 HAPI_DECL HAPI_GetBoxInfo( const HAPI_Session * session,
12625  HAPI_NodeId geo_node_id,
12626  HAPI_PartId part_id,
12627  HAPI_BoxInfo * box_info );
12628 
12629 /// @brief Get the sphere info on a geo part (if the part is a sphere).
12630 ///
12631 /// @ingroup Geometry
12632 ///
12633 /// @param[in] session
12634 /// The session of Houdini you are interacting with.
12635 /// See @ref HAPI_Sessions for more on sessions.
12636 /// Pass NULL to just use the default in-process session.
12637 /// <!-- default NULL -->
12638 ///
12639 /// @param[in] geo_node_id
12640 /// The geo node id.
12641 ///
12642 /// @param[in] part_id
12643 /// The part id of the
12644 ///
12645 /// @param[out] sphere_info
12646 /// The returned sphere info.
12647 ///
12648 HAPI_DECL HAPI_GetSphereInfo( const HAPI_Session * session,
12649  HAPI_NodeId geo_node_id,
12650  HAPI_PartId part_id,
12651  HAPI_SphereInfo * sphere_info );
12652 
12653 /// @defgroup Caching
12654 /// Functions for working with memory and file caches
12655 
12656 /// @brief Get the number of currently active caches.
12657 ///
12658 /// @ingroup Caching
12659 ///
12660 /// @param[in] session
12661 /// The session of Houdini you are interacting with.
12662 /// See @ref HAPI_Sessions for more on sessions.
12663 /// Pass NULL to just use the default in-process session.
12664 /// <!-- default NULL -->
12665 ///
12666 /// @param[out] active_cache_count
12667 /// The number of currently active caches.
12668 ///
12670  int * active_cache_count );
12671 
12672 /// @brief Get the names of the currently active caches.
12673 ///
12674 /// Requires a valid active cache count which you get from:
12675 /// ::HAPI_GetActiveCacheCount().
12676 ///
12677 /// @ingroup Caching
12678 ///
12679 /// @param[in] session
12680 /// The session of Houdini you are interacting with.
12681 /// See @ref HAPI_Sessions for more on sessions.
12682 /// Pass NULL to just use the default in-process session.
12683 /// <!-- default NULL -->
12684 ///
12685 /// @param[out] cache_names_array
12686 /// String array with the returned cache names. Must be
12687 /// at least the size of @a active_cache_count.
12688 ///
12689 /// @param[in] active_cache_count
12690 /// The count returned by ::HAPI_GetActiveCacheCount().
12691 /// <!-- source ::HAPI_GetActiveCacheCount -->
12692 ///
12694  HAPI_StringHandle * cache_names_array,
12695  int active_cache_count );
12696 
12697 /// @brief Lets you inspect specific properties of the different memory
12698 /// caches in the current Houdini context.
12699 ///
12700 /// @ingroup Caching
12701 ///
12702 /// @param[in] session
12703 /// The session of Houdini you are interacting with.
12704 /// See @ref HAPI_Sessions for more on sessions.
12705 /// Pass NULL to just use the default in-process session.
12706 /// <!-- default NULL -->
12707 ///
12708 /// @param[in] cache_name
12709 /// Cache name from ::HAPI_GetActiveCacheNames().
12710 ///
12711 /// @param[in] cache_property
12712 /// The specific property of the cache to get the value for.
12713 ///
12714 /// @param[out] property_value
12715 /// Returned property value.
12716 ///
12718  const char * cache_name,
12719  HAPI_CacheProperty cache_property,
12720  int * property_value );
12721 
12722 /// @brief Lets you modify specific properties of the different memory
12723 /// caches in the current Houdini context. This includes clearing
12724 /// caches, reducing their memory use, or changing how memory limits
12725 /// are respected by a cache.
12726 ///
12727 /// @ingroup Caching
12728 ///
12729 /// @param[in] session
12730 /// The session of Houdini you are interacting with.
12731 /// See @ref HAPI_Sessions for more on sessions.
12732 /// Pass NULL to just use the default in-process session.
12733 /// <!-- default NULL -->
12734 ///
12735 /// @param[in] cache_name
12736 /// Cache name from ::HAPI_GetActiveCacheNames().
12737 ///
12738 /// @param[in] cache_property
12739 /// The specific property of the cache to modify.
12740 ///
12741 /// @param[in] property_value
12742 /// The new property value.
12743 ///
12745  const char * cache_name,
12746  HAPI_CacheProperty cache_property,
12747  int property_value );
12748 
12749 /// @brief Saves a geometry to file. The type of file to save is
12750 /// to be determined by the extension ie. .bgeo, .obj
12751 ///
12752 /// @ingroup Caching
12753 ///
12754 /// @param[in] session
12755 /// The session of Houdini you are interacting with.
12756 /// See @ref HAPI_Sessions for more on sessions.
12757 /// Pass NULL to just use the default in-process session.
12758 /// <!-- default NULL -->
12759 ///
12760 /// @param[in] node_id
12761 /// The node id.
12762 ///
12763 /// @param[in] file_name
12764 /// The name of the file to be saved. The extension
12765 /// of the file determines its type.
12766 ///
12767 HAPI_DECL HAPI_SaveGeoToFile( const HAPI_Session * session,
12768  HAPI_NodeId node_id,
12769  const char * file_name );
12770 
12771 /// @brief Loads a geometry file and put its contents onto a SOP
12772 /// node.
12773 ///
12774 /// @ingroup Caching
12775 ///
12776 /// @param[in] session
12777 /// The session of Houdini you are interacting with.
12778 /// See @ref HAPI_Sessions for more on sessions.
12779 /// Pass NULL to just use the default in-process session.
12780 /// <!-- default NULL -->
12781 ///
12782 /// @param[in] node_id
12783 /// The node id.
12784 ///
12785 /// @param[in] file_name
12786 /// The name of the file to be loaded
12787 ///
12789  HAPI_NodeId node_id,
12790  const char * file_name );
12791 
12792 /// @brief Saves the node and all its contents to file.
12793 /// The saved file can be loaded by calling ::HAPI_LoadNodeFromFile.
12794 ///
12795 /// @ingroup Caching
12796 ///
12797 /// @param[in] session
12798 /// The session of Houdini you are interacting with.
12799 /// See @ref HAPI_Sessions for more on sessions.
12800 /// Pass NULL to just use the default in-process session.
12801 /// <!-- default NULL -->
12802 ///
12803 /// @param[in] node_id
12804 /// The node id.
12805 ///
12806 /// @param[in] file_name
12807 /// The name of the file to be saved. The extension
12808 /// of the file determines its type.
12809 ///
12810 HAPI_DECL HAPI_SaveNodeToFile( const HAPI_Session * session,
12811  HAPI_NodeId node_id,
12812  const char * file_name );
12813 
12814 /// @brief Loads and creates a previously saved node and all
12815 /// its contents from given file.
12816 /// The saved file must have been created by calling
12817 /// ::HAPI_SaveNodeToFile.
12818 ///
12819 /// @ingroup Caching
12820 ///
12821 /// @param[in] session
12822 /// The session of Houdini you are interacting with.
12823 /// See @ref HAPI_Sessions for more on sessions.
12824 /// Pass NULL to just use the default in-process session.
12825 /// <!-- default NULL -->
12826 ///
12827 /// @param[in] file_name
12828 /// The name of the file to be loaded
12829 ///
12830 /// @param[in] parent_node_id
12831 /// The parent node id of the Geometry object.
12832 ///
12833 /// @param[in] node_label
12834 /// The name of the new Geometry object.
12835 ///
12836 /// @param[in] cook_on_load
12837 /// Set to true if you wish the nodes to cook as soon
12838 /// as they are created. Otherwise, you will have to
12839 /// call ::HAPI_CookNode() explicitly for each after you
12840 /// call this function.
12841 ///
12842 /// @param[out] new_node_id
12843 /// The newly created node id.
12844 ///
12846  const char * file_name,
12847  HAPI_NodeId parent_node_id,
12848  const char * node_label,
12849  HAPI_Bool cook_on_load,
12850  HAPI_NodeId * new_node_id );
12851 
12852 /// @brief Cache the current state of the geo to memory, given the
12853 /// format, and return the size. Use this size with your call
12854 /// to ::HAPI_SaveGeoToMemory() to copy the cached geo to your
12855 /// buffer. It is guaranteed that the size will not change between
12856 /// your call to ::HAPI_GetGeoSize() and ::HAPI_SaveGeoToMemory().
12857 ///
12858 /// @ingroup Caching
12859 ///
12860 /// @param[in] session
12861 /// The session of Houdini you are interacting with.
12862 /// See @ref HAPI_Sessions for more on sessions.
12863 /// Pass NULL to just use the default in-process session.
12864 /// <!-- default NULL -->
12865 ///
12866 /// @param[in] node_id
12867 /// The node id.
12868 ///
12869 /// @param[in] format
12870 /// The file format, ie. ".obj", ".bgeo.sc" etc.
12871 ///
12872 /// @param[out] size
12873 /// The size of the buffer required to hold the output.
12874 ///
12875 HAPI_DECL HAPI_GetGeoSize( const HAPI_Session * session,
12876  HAPI_NodeId node_id,
12877  const char * format,
12878  int * size );
12879 
12880 /// @brief Saves the cached geometry to your buffer in memory,
12881 /// whose format and required size is identified by the call to
12882 /// ::HAPI_GetGeoSize(). The call to ::HAPI_GetGeoSize() is
12883 /// required as ::HAPI_GetGeoSize() does the actual saving work.
12884 ///
12885 /// Also note that this call to ::HAPI_SaveGeoToMemory will delete
12886 /// the internal geo buffer that was cached in the previous call
12887 /// to ::HAPI_GetGeoSize(). This means that you will need to call
12888 /// ::HAPI_GetGeoSize() again before you can call this function.
12889 ///
12890 /// @ingroup Caching
12891 ///
12892 /// @param[in] session
12893 /// The session of Houdini you are interacting with.
12894 /// See @ref HAPI_Sessions for more on sessions.
12895 /// Pass NULL to just use the default in-process session.
12896 /// <!-- default NULL -->
12897 ///
12898 /// @param[in] node_id
12899 /// The node id.
12900 ///
12901 /// @param[out] buffer
12902 /// The buffer we will write into.
12903 ///
12904 /// @param[in] length
12905 /// The size of the buffer passed in.
12906 /// <!-- source ::HAPI_GetGeoSize -->
12907 ///
12909  HAPI_NodeId node_id,
12910  char * buffer,
12911  int length );
12912 
12913 /// @brief Loads a geometry from memory and put its
12914 /// contents onto a SOP node.
12915 ///
12916 /// @ingroup Caching
12917 ///
12918 /// @param[in] session
12919 /// The session of Houdini you are interacting with.
12920 /// See @ref HAPI_Sessions for more on sessions.
12921 /// Pass NULL to just use the default in-process session.
12922 /// <!-- default NULL -->
12923 ///
12924 /// @param[in] node_id
12925 /// The node id.
12926 ///
12927 /// @param[in] format
12928 /// The file format, ie. "obj", "bgeo" etc.
12929 ///
12930 /// @param[in] buffer
12931 /// The buffer we will read the geometry from.
12932 ///
12933 /// @param[in] length
12934 /// The size of the buffer passed in.
12935 /// <!-- source arglength(buffer) -->
12936 ///
12938  HAPI_NodeId node_id,
12939  const char * format,
12940  const char * buffer,
12941  int length );
12942 
12943 /// @brief Set the specified node's display flag.
12944 ///
12945 /// @ingroup Nodes
12946 ///
12947 /// @param[in] session
12948 /// The session of Houdini you are interacting with.
12949 /// See @ref HAPI_Sessions for more on sessions.
12950 /// Pass NULL to just use the default in-process session.
12951 /// <!-- default NULL -->
12952 ///
12953 /// @param[in] node_id
12954 /// The node id.
12955 ///
12956 /// @param[in] onOff
12957 /// Display flag.
12958 ///
12959 HAPI_DECL HAPI_SetNodeDisplay( const HAPI_Session * session,
12960  HAPI_NodeId node_id,
12961  int onOff );
12962 
12963 /// @brief Get the specified node's total cook count, including
12964 /// its children, if specified.
12965 ///
12966 /// @ingroup Nodes
12967 ///
12968 /// @param[in] session
12969 /// The session of Houdini you are interacting with.
12970 /// See @ref HAPI_Sessions for more on sessions.
12971 /// Pass NULL to just use the default in-process session.
12972 /// <!-- default NULL -->
12973 ///
12974 /// @param[in] node_id
12975 /// The node id.
12976 ///
12977 /// @param[in] node_type_filter
12978 /// The node type by which to filter the children.
12979 ///
12980 /// @param[in] node_flags_filter
12981 /// The node flags by which to filter the children.
12982 ///
12983 /// @param[in] recursive
12984 /// Whether or not to include the specified node's
12985 /// children cook count in the tally.
12986 ///
12987 /// @param[out] count
12988 /// The number of cooks in total for this session.
12989 ///
12991  HAPI_NodeId node_id,
12992  HAPI_NodeTypeBits node_type_filter,
12993  HAPI_NodeFlagsBits node_flags_filter,
12994  HAPI_Bool recursive,
12995  int * count );
12996 
12997 /// @defgroup SessionSync
12998 /// Functions for working with SessionSync
12999 
13000 /// @brief Enable or disable SessionSync mode.
13001 ///
13002 /// @ingroup SessionSync
13003 ///
13004 /// @param[in] session
13005 /// The session of Houdini you are interacting with.
13006 /// See @ref HAPI_Sessions for more on sessions.
13007 /// Pass NULL to just use the default in-process session.
13008 /// <!-- default NULL -->
13009 ///
13010 /// @param[in] enable
13011 /// Enable or disable SessionSync mode.
13012 ///
13013 HAPI_DECL HAPI_SetSessionSync( const HAPI_Session * session,
13014  HAPI_Bool enable );
13015 
13016 /// @brief Get the ::HAPI_Viewport info for synchronizing viewport in
13017 /// SessionSync. When SessionSync is running this will
13018 /// return Houdini's current viewport information.
13019 ///
13020 /// @ingroup SessionSync
13021 ///
13022 /// @param[in] session
13023 /// The session of Houdini you are interacting with.
13024 /// See @ref HAPI_Sessions for more on sessions.
13025 /// Pass NULL to just use the default in-process session.
13026 ///
13027 /// @param[out] viewport
13028 /// The output ::HAPI_Viewport.
13029 ///
13030 HAPI_DECL HAPI_GetViewport( const HAPI_Session * session,
13031  HAPI_Viewport * viewport );
13032 
13033 /// @brief Set the ::HAPI_Viewport info for synchronizing viewport in
13034 /// SessionSync. When SessionSync is running, this can be
13035 /// used to set the viewport information which Houdini
13036 /// will then synchronizse with for its viewport.
13037 ///
13038 /// @ingroup SessionSync
13039 ///
13040 /// @param[in] session
13041 /// The session of Houdini you are interacting with.
13042 /// See @ref HAPI_Sessions for more on sessions.
13043 /// Pass NULL to just use the default in-process session.
13044 ///
13045 /// @param[in] viewport
13046 /// A ::HAPI_Viewport that stores the viewport.
13047 ///
13048 HAPI_DECL HAPI_SetViewport( const HAPI_Session * session,
13049  const HAPI_Viewport * viewport );
13050 
13051 /// @brief Get the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13052 /// state between Houdini and Houdini Engine integrations.
13053 ///
13054 /// @ingroup SessionSync
13055 ///
13056 /// @param[in] session
13057 /// The session of Houdini you are interacting with.
13058 /// See @ref HAPI_Sessions for more on sessions.
13059 /// Pass NULL to just use the default in-process session.
13060 ///
13061 /// @param[out] session_sync_info
13062 /// The output ::HAPI_SessionSyncInfo.
13063 ///
13065  const HAPI_Session * session,
13066  HAPI_SessionSyncInfo * session_sync_info );
13067 
13068 /// @brief Set the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13069 /// state between Houdini and Houdini Engine integrations.
13070 ///
13071 /// @ingroup SessionSync
13072 ///
13073 /// @param[in] session
13074 /// The session of Houdini you are interacting with.
13075 /// See @ref HAPI_Sessions for more on sessions.
13076 /// Pass NULL to just use the default in-process session.
13077 ///
13078 /// @param[in] session_sync_info
13079 /// A ::HAPI_SessionSyncInfo that stores the state.
13080 ///
13082  const HAPI_Session * session,
13083  const HAPI_SessionSyncInfo * session_sync_info );
13084 
13085 /// @defgroup PDG PDG/TOPs
13086 /// Functions for working with PDG/TOPs
13087 
13088 /// @brief Return an array of PDG graph context names and ids, the first
13089 /// count names will be returned. These ids can be used
13090 /// with ::HAPI_GetPDGEvents and ::HAPI_GetPDGState. The values
13091 /// of the names can be retrieved with ::HAPI_GetString.
13092 ///
13093 /// @ingroup PDG
13094 ///
13095 /// @param[in] session
13096 /// The session of Houdini you are interacting with.
13097 /// See @ref HAPI_Sessions for more on sessions.
13098 /// Pass NULL to just use the default in-process session.
13099 /// <!-- default NULL -->
13100 ///
13101 /// @param[out] context_names_array
13102 /// Array of context names stored as ::HAPI_StringHandle
13103 /// at least the size of length. These can be used
13104 /// with ::HAPI_GetString() and are valid until the
13105 /// next call to this function.
13106 ///
13107 /// @param[out] context_id_array
13108 /// Array of graph context ids at least the size of length.
13109 ///
13110 /// @param[in] start
13111 /// First index of range. Must be at least @c 0 and at most
13112 /// @c context_count - 1 where @c context_count is the count
13113 /// returned by ::HAPI_GetPDGGraphContextsCount()
13114 /// <!-- min 0 -->
13115 /// <!-- max ::HAPI_GetPDGGraphContextsCount -->
13116 /// <!-- default 0 -->
13117 ///
13118 /// @param[in] length
13119 /// Given @c num_contexts returned by ::HAPI_GetPDGGraphContextsCount(),
13120 /// length should be at least @c 0 and at most <tt>num_contexts - start.</tt>
13121 /// <!-- default 0 -->
13123  HAPI_StringHandle * context_names_array,
13124  HAPI_PDG_GraphContextId * context_id_array,
13125  int start,
13126  int length );
13127 
13128 /// @brief Return the total number of PDG graph contexts found.
13129 ///
13130 /// @ingroup PDG
13131 ///
13132 /// @param[in] session
13133 /// The session of Houdini you are interacting with.
13134 /// See @ref HAPI_Sessions for more on sessions.
13135 /// Pass NULL to just use the default in-process session.
13136 /// <!-- default NULL -->
13137 ///
13138 /// @param[out] num_contexts
13139 /// Total PDG graph contexts count.
13140 ///
13142  const HAPI_Session* session,
13143  int* num_contexts );
13144 
13145 /// @brief Get the PDG graph context for the specified TOP node.
13146 ///
13147 /// @ingroup PDG
13148 ///
13149 /// @param[in] session
13150 /// The session of Houdini you are interacting with.
13151 /// See @ref HAPI_Sessions for more on sessions.
13152 /// Pass NULL to just use the default in-process session.
13153 /// <!-- default NULL -->
13154 ///
13155 /// @param[in] top_node_id
13156 /// The id of the TOP node to query its graph context.
13157 ///
13158 /// @param[out] context_id
13159 /// The PDG graph context id.
13160 ///
13162  HAPI_NodeId top_node_id,
13163  HAPI_PDG_GraphContextId * context_id );
13164 
13165 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13166 /// Progress can be checked with ::HAPI_GetPDGState() and
13167 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13168 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13169 /// discarded at the start of the cook.
13170 ///
13171 /// If there are any $HIPFILE file dependencies on nodes involved in the cook
13172 /// a hip file will be automatically saved to $HOUDINI_TEMP_DIR directory so
13173 /// that it can be copied to the working directory by the scheduler. This means
13174 /// $HIP will be equal to $HOUDINI_TEMP_DIR.
13175 ///
13176 /// @ingroup PDG
13177 ///
13178 /// @param[in] session
13179 /// The session of Houdini you are interacting with.
13180 /// See @ref HAPI_Sessions for more on sessions.
13181 /// Pass NULL to just use the default in-process session.
13182 ///
13183 /// @param[in] cook_node_id
13184 /// The node id of a TOP node for the cook operation.
13185 ///
13186 /// @param[in] generate_only
13187 /// 1 means only static graph generation will done. 0 means
13188 /// a full graph cook. Generation is always blocking.
13189 ///
13190 /// @param[in] blocking
13191 /// 0 means return immediately and cooking will be done
13192 /// asynchronously. 1 means return when cooking completes.
13193 ///
13194 HAPI_DECL HAPI_CookPDG( const HAPI_Session * session,
13195  HAPI_NodeId cook_node_id,
13196  int generate_only,
13197  int blocking );
13198 
13199 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13200 /// Progress can be checked with ::HAPI_GetPDGState() and
13201 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13202 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13203 /// discarded at the start of the cook.
13204 ///
13205 /// If there are any $HIPFILE file dependencies on nodes involved in the
13206 /// cook a hip file will be automatically saved to $HOUDINI_TEMP_DIR
13207 /// directory so that it can be copied to the working directory by the
13208 /// scheduler. This means $HIP will be equal to $HOUDINI_TEMP_DIR.
13209 ///
13210 /// If cook_node_id is a network / subnet, then if it has output nodes
13211 /// it cooks all of its output nodes and not just output 0. If it does
13212 /// not have output nodes it cooks the node with the output flag.
13213 ///
13214 /// @ingroup PDG
13215 ///
13216 /// @param[in] session
13217 /// The session of Houdini you are interacting with.
13218 /// See @ref HAPI_Sessions for more on sessions.
13219 /// Pass NULL to just use the default in-process session.
13220 ///
13221 /// @param[in] cook_node_id
13222 /// The node id of a TOP node for the cook operation.
13223 ///
13224 /// @param[in] generate_only
13225 /// 1 means only static graph generation will done. 0 means
13226 /// a full graph cook. Generation is always blocking.
13227 ///
13228 /// @param[in] blocking
13229 /// 0 means return immediately and cooking will be done
13230 /// asynchronously. 1 means return when cooking completes.
13231 ///
13233  const HAPI_Session* session,
13234  HAPI_NodeId cook_node_id,
13235  int generate_only,
13236  int blocking);
13237 
13238 /// @brief Returns PDG events that have been collected. Calling this function
13239 /// will remove those events from the queue. Events collection is restarted
13240 /// by calls to ::HAPI_CookPDG().
13241 ///
13242 /// @ingroup PDG
13243 ///
13244 ///
13245 /// @param[in] session
13246 /// The session of Houdini you are interacting with.
13247 /// See @ref HAPI_Sessions for more on sessions.
13248 /// Pass NULL to just use the default in-process session.
13249 /// <!-- default NULL -->
13250 ///
13251 /// @param[in] graph_context_id
13252 /// The id of the graph context
13253 ///
13254 /// @param[out] event_array
13255 /// buffer of ::HAPI_PDG_EventInfo of size at least length.
13256 ///
13257 /// @param[in] length
13258 /// The size of the buffer passed in.
13259 ///
13260 /// @param[out] event_count
13261 /// Number of events removed from queue and copied to buffer.
13262 ///
13263 /// @param[out] remaining_events
13264 /// Number of queued events remaining after this operation.
13265 ///
13266 HAPI_DECL HAPI_GetPDGEvents( const HAPI_Session * session,
13267  HAPI_PDG_GraphContextId graph_context_id,
13268  HAPI_PDG_EventInfo * event_array,
13269  int length,
13270  int * event_count,
13271  int * remaining_events );
13272 
13273 /// @brief Gets the state of a PDG graph
13274 ///
13275 /// @ingroup PDG
13276 ///
13277 ///
13278 /// @param[in] session
13279 /// The session of Houdini you are interacting with.
13280 /// See @ref HAPI_Sessions for more on sessions.
13281 /// Pass NULL to just use the default in-process session.
13282 /// <!-- default NULL -->
13283 ///
13284 /// @param[in] graph_context_id
13285 /// The graph context id
13286 ///
13287 /// @param[out] pdg_state
13288 /// One of ::HAPI_PDG_State.
13289 ///
13290 HAPI_DECL HAPI_GetPDGState( const HAPI_Session * session,
13291  HAPI_PDG_GraphContextId graph_context_id,
13292  int * pdg_state );
13293 
13294 /// @brief Creates a new pending workitem for the given node. The workitem
13295 /// will not be submitted to the graph until it is committed with
13296 /// ::HAPI_CommitWorkitems(). The node is expected to be a generator type.
13297 ///
13298 /// @ingroup PDG
13299 ///
13300 /// @param[in] session
13301 /// The session of Houdini you are interacting with.
13302 /// See @ref HAPI_Sessions for more on sessions.
13303 /// Pass NULL to just use the default in-process session.
13304 /// <!-- default NULL -->
13305 ///
13306 /// @param[in] node_id
13307 /// The node id.
13308 ///
13309 /// @param[out] workitem_id
13310 /// The id of the pending workitem.
13311 ///
13312 /// @param[in] name
13313 /// The null-terminated name of the workitem. The name will
13314 /// be automatically suffixed to make it unique.
13315 ///
13316 /// @param[in] index
13317 /// The index of the workitem. The semantics of the index
13318 /// are user defined.
13319 ///
13321 HAPI_CreateWorkitem( const HAPI_Session * session,
13322  HAPI_NodeId node_id,
13323  HAPI_PDG_WorkItemId * workitem_id,
13324  const char * name,
13325  int index );
13326 
13327 /// @brief Retrieves the info of a given workitem by id.
13328 ///
13329 /// @ingroup PDG
13330 ///
13331 /// @param[in] session
13332 /// The session of Houdini you are interacting with.
13333 /// See @ref HAPI_Sessions for more on sessions.
13334 /// Pass NULL to just use the default in-process session.
13335 /// <!-- default NULL -->
13336 ///
13337 /// @param[in] graph_context_id
13338 /// The graph context that the workitem is in.
13339 ///
13340 /// @param[in] workitem_id
13341 /// The id of the workitem.
13342 ///
13343 /// @param[out] workitem_info
13344 /// The returned ::HAPI_PDG_WorkItemInfo for the workitem. Note
13345 /// that the enclosed string handle is only valid until the next
13346 /// call to this function.
13347 ///
13349 HAPI_GetWorkitemInfo( const HAPI_Session * session,
13350  HAPI_PDG_GraphContextId graph_context_id,
13351  HAPI_PDG_WorkItemId workitem_id,
13352  HAPI_PDG_WorkItemInfo * workitem_info );
13353 
13354 /// @brief Adds integer data to a pending PDG workitem data member for the given node.
13355 ///
13356 /// @ingroup PDG
13357 ///
13358 /// @param[in] session
13359 /// The session of Houdini you are interacting with.
13360 /// See @ref HAPI_Sessions for more on sessions.
13361 /// Pass NULL to just use the default in-process session.
13362 /// <!-- default NULL -->
13363 ///
13364 /// @param[in] node_id
13365 /// The node id.
13366 ///
13367 /// @param[in] workitem_id
13368 /// The id of the pending workitem returned by ::HAPI_CreateWorkitem()
13369 ///
13370 /// @param[in] data_name
13371 /// null-terminated name of the data member
13372 ///
13373 /// @param[in] values_array
13374 /// array of integer values
13375 ///
13376 /// @param[in] length
13377 /// number of values to copy from values_array to the parameter
13378 ///
13380 HAPI_SetWorkitemIntData( const HAPI_Session * session,
13381  HAPI_NodeId node_id,
13382  HAPI_PDG_WorkItemId workitem_id,
13383  const char * data_name,
13384  const int * values_array,
13385  int length );
13386 
13387 /// @brief Adds float data to a pending PDG workitem data member for the given node.
13388 ///
13389 /// @ingroup PDG
13390 ///
13391 /// @param[in] session
13392 /// The session of Houdini you are interacting with.
13393 /// See @ref HAPI_Sessions for more on sessions.
13394 /// Pass NULL to just use the default in-process session.
13395 /// <!-- default NULL -->
13396 ///
13397 /// @param[in] node_id
13398 /// The node id.
13399 ///
13400 /// @param[in] workitem_id
13401 /// The id of the pending workitem returned by ::HAPI_CreateWorkitem()
13402 ///
13403 /// @param[in] data_name
13404 /// null-terminated name of the workitem data member
13405 ///
13406 /// @param[in] values_array
13407 /// array of float values
13408 ///
13409 /// @param[in] length
13410 /// number of values to copy from values_array to the parameter
13411 ///
13413 HAPI_SetWorkitemFloatData( const HAPI_Session * session,
13414  HAPI_NodeId node_id,
13415  HAPI_PDG_WorkItemId workitem_id,
13416  const char * data_name,
13417  const float * values_array,
13418  int length );
13419 
13420 /// @brief Adds integer data to a pending PDG workitem data member for the given node.
13421 ///
13422 /// @ingroup PDG
13423 ///
13424 /// @param[in] session
13425 /// The session of Houdini you are interacting with.
13426 /// See @ref HAPI_Sessions for more on sessions.
13427 /// Pass NULL to just use the default in-process session.
13428 /// <!-- default NULL -->
13429 ///
13430 /// @param[in] node_id
13431 /// The node id.
13432 ///
13433 /// @param[in] workitem_id
13434 /// The id of the created workitem returned by HAPI_CreateWorkitem()
13435 ///
13436 /// @param[in] data_name
13437 /// null-terminated name of the data member
13438 ///
13439 /// @param[in] data_index
13440 /// index of the string data member
13441 ///
13442 /// @param[in] value
13443 /// null-terminated string to copy to the workitem data member
13444 ///
13446 HAPI_SetWorkitemStringData( const HAPI_Session * session,
13447  HAPI_NodeId node_id,
13448  HAPI_PDG_WorkItemId workitem_id,
13449  const char * data_name,
13450  int data_index,
13451  const char * value );
13452 
13453 /// @brief Commits any pending workitems.
13454 ///
13455 /// @ingroup PDG
13456 ///
13457 /// @param[in] session
13458 /// The session of Houdini you are interacting with.
13459 /// See @ref HAPI_Sessions for more on sessions.
13460 /// Pass NULL to just use the default in-process session.
13461 /// <!-- default NULL -->
13462 ///
13463 /// @param[in] node_id
13464 /// The node id for which the pending workitems have been
13465 /// created but not yet injected.
13466 ///
13468 HAPI_CommitWorkitems( const HAPI_Session * session,
13469  HAPI_NodeId node_id );
13470 
13471 /// @brief Gets the number of workitems that are available on the given node.
13472 /// Should be used with ::HAPI_GetWorkitems.
13473 ///
13474 /// @ingroup PDG
13475 ///
13476 /// @param[in] session
13477 /// The session of Houdini you are interacting with.
13478 /// See @ref HAPI_Sessions for more on sessions.
13479 /// Pass NULL to just use the default in-process session.
13480 /// <!-- default NULL -->
13481 ///
13482 /// @param[in] node_id
13483 /// The node id.
13484 ///
13485 /// @param[out] num
13486 /// The number of workitems.
13487 ///
13489 HAPI_GetNumWorkitems( const HAPI_Session * session,
13490  HAPI_NodeId node_id,
13491  int * num );
13492 
13493 /// @brief Gets the list of work item ids for the given node
13494 ///
13495 /// @ingroup PDG
13496 ///
13497 /// @param[in] session
13498 /// The session of Houdini you are interacting with.
13499 /// See @ref HAPI_Sessions for more on sessions.
13500 /// Pass NULL to just use the default in-process session.
13501 /// <!-- default NULL -->
13502 ///
13503 /// @param[in] node_id
13504 /// The node id.
13505 ///
13506 /// @param[out] workitem_ids_array
13507 /// buffer for resulting array of ::HAPI_PDG_WorkItemId
13508 ///
13509 /// @param[in] length
13510 /// The length of the @p workitem_ids buffer
13511 ///
13513 HAPI_GetWorkitems( const HAPI_Session * session,
13514  HAPI_NodeId node_id,
13515  int * workitem_ids_array,
13516  int length );
13517 
13518 /// @brief Gets the length of the workitem data member.
13519 /// It is the length of the array of data.
13520 ///
13521 /// @ingroup PDG
13522 ///
13523 /// @param[in] session
13524 /// The session of Houdini you are interacting with.
13525 /// See @ref HAPI_Sessions for more on sessions.
13526 /// Pass NULL to just use the default in-process session.
13527 /// <!-- default NULL -->
13528 ///
13529 /// @param[in] node_id
13530 /// The node id.
13531 ///
13532 /// @param[in] workitem_id
13533 /// The id of the workitem
13534 ///
13535 /// @param[in] data_name
13536 /// null-terminated name of the data member
13537 ///
13538 /// @param[out] length
13539 /// The length of the data member array
13540 ///
13541 HAPI_DECL_DEPRECATED_REPLACE(5.0.0, 19.5.161, HAPI_GetWorkItemDataSize)
13542 HAPI_GetWorkitemDataLength( const HAPI_Session * session,
13543  HAPI_NodeId node_id,
13544  HAPI_PDG_WorkItemId workitem_id,
13545  const char * data_name,
13546  int * length );
13547 
13548 /// @brief Gets int data from a work item member.
13549 ///
13550 /// @ingroup PDG
13551 ///
13552 /// @param[in] session
13553 /// The session of Houdini you are interacting with.
13554 /// See @ref HAPI_Sessions for more on sessions.
13555 /// Pass NULL to just use the default in-process session.
13556 /// <!-- default NULL -->
13557 ///
13558 /// @param[in] node_id
13559 /// The node id.
13560 ///
13561 /// @param[in] workitem_id
13562 /// The id of the workitem
13563 ///
13564 /// @param[in] data_name
13565 /// null-terminated name of the data member
13566 ///
13567 /// @param[out] data_array
13568 /// buffer of at least size length to copy the data into. The required
13569 /// length should be determined by ::HAPI_GetWorkitemDataLength().
13570 ///
13571 /// @param[in] length
13572 /// The length of @p data_array
13573 ///
13575 HAPI_GetWorkitemIntData( const HAPI_Session * session,
13576  HAPI_NodeId node_id,
13577  HAPI_PDG_WorkItemId workitem_id,
13578  const char * data_name,
13579  int * data_array,
13580  int length );
13581 
13582 /// @brief Gets float data from a work item member.
13583 ///
13584 /// @ingroup PDG
13585 ///
13586 /// @param[in] session
13587 /// The session of Houdini you are interacting with.
13588 /// See @ref HAPI_Sessions for more on sessions.
13589 /// Pass NULL to just use the default in-process session.
13590 /// <!-- default NULL -->
13591 ///
13592 /// @param[in] node_id
13593 /// The node id.
13594 ///
13595 /// @param[in] workitem_id
13596 /// The id of the workitem
13597 ///
13598 /// @param[in] data_name
13599 /// null-terminated name of the data member
13600 ///
13601 /// @param[out] data_array
13602 /// buffer of at least size length to copy the data into. The required
13603 /// length should be determined by ::HAPI_GetWorkitemDataLength().
13604 ///
13605 /// @param[in] length
13606 /// The length of the @p data_array
13607 ///
13609 HAPI_GetWorkitemFloatData( const HAPI_Session * session,
13610  HAPI_NodeId node_id,
13611  HAPI_PDG_WorkItemId workitem_id,
13612  const char * data_name,
13613  float * data_array,
13614  int length );
13615 
13616 /// @brief Gets string ids from a work item member.
13617 ///
13618 /// @ingroup PDG
13619 ///
13620 /// @param[in] session
13621 /// The session of Houdini you are interacting with.
13622 /// See @ref HAPI_Sessions for more on sessions.
13623 /// Pass NULL to just use the default in-process session.
13624 /// <!-- default NULL -->
13625 ///
13626 /// @param[in] node_id
13627 /// The node id.
13628 ///
13629 /// @param[in] workitem_id
13630 /// The id of the workitem
13631 ///
13632 /// @param[in] data_name
13633 /// null-terminated name of the data member
13634 ///
13635 /// @param[out] data_array
13636 /// buffer of at least size length to copy the data into. The required
13637 /// length should be determined by ::HAPI_GetWorkitemDataLength().
13638 /// The data is an array of ::HAPI_StringHandle which can be used with
13639 /// ::HAPI_GetString(). The string handles are valid until the
13640 /// next call to this function.
13641 ///
13642 /// @param[in] length
13643 /// The length of @p data_array
13644 ///
13646 HAPI_GetWorkitemStringData( const HAPI_Session * session,
13647  HAPI_NodeId node_id,
13648  HAPI_PDG_WorkItemId workitem_id,
13649  const char * data_name,
13650  HAPI_StringHandle * data_array,
13651  int length );
13652 
13653 /// @brief Gets the info for workitem results.
13654 /// The number of workitem results is found on the ::HAPI_PDG_WorkItemInfo
13655 /// returned by ::HAPI_GetWorkitemInfo()
13656 ///
13657 /// @ingroup PDG
13658 ///
13659 /// @param[in] session
13660 /// The session of Houdini you are interacting with.
13661 /// See @ref HAPI_Sessions for more on sessions.
13662 /// Pass NULL to just use the default in-process session.
13663 /// <!-- default NULL -->
13664 ///
13665 /// @param[in] node_id
13666 /// The node id.
13667 ///
13668 /// @param[in] workitem_id
13669 /// The id of the workitem
13670 ///
13671 /// @param[out] resultinfo_array
13672 /// Buffer to fill with info structs. String handles are valid
13673 /// until the next call of this function.
13674 ///
13675 /// @param[in] resultinfo_count
13676 /// The length of @p resultinfo_array
13677 ///
13679 HAPI_GetWorkitemResultInfo( const HAPI_Session * session,
13680  HAPI_NodeId node_id,
13681  HAPI_PDG_WorkItemId workitem_id,
13682  HAPI_PDG_WorkItemOutputFile * resultinfo_array,
13683  int resultinfo_count );
13684 
13685 /// @brief Creates a new pending work item for the given node. The work item
13686 /// will not be submitted to the graph until it is committed with
13687 /// ::HAPI_CommitWorkItems(). The node is expected to be a generator type.
13688 ///
13689 /// @ingroup PDG
13690 ///
13691 /// @param[in] session
13692 /// The session of Houdini you are interacting with.
13693 /// See @ref HAPI_Sessions for more on sessions.
13694 /// Pass NULL to just use the default in-process session.
13695 /// <!-- default NULL -->
13696 ///
13697 /// @param[in] node_id
13698 /// The node id.
13699 ///
13700 /// @param[out] work_item_id
13701 /// The id of the pending workitem.
13702 ///
13703 /// @param[in] name
13704 /// The null-terminated name of the work item. The name will
13705 /// be automatically suffixed to make it unique.
13706 ///
13707 /// @param[in] index
13708 /// The index of the work item. The semantics of the index
13709 /// are user defined.
13710 ///
13711 HAPI_DECL HAPI_CreateWorkItem( const HAPI_Session * session,
13712  HAPI_NodeId node_id,
13713  HAPI_PDG_WorkItemId * work_item_id,
13714  const char * name,
13715  int index );
13716 
13717 /// @brief Retrieves the info of a given work item by id.
13718 ///
13719 /// @ingroup PDG
13720 ///
13721 /// @param[in] session
13722 /// The session of Houdini you are interacting with.
13723 /// See @ref HAPI_Sessions for more on sessions.
13724 /// Pass NULL to just use the default in-process session.
13725 /// <!-- default NULL -->
13726 ///
13727 /// @param[in] graph_context_id
13728 /// The graph context that the work item is in.
13729 ///
13730 /// @param[in] work_item_id
13731 /// The id of the work item.
13732 ///
13733 /// @param[out] work_item_info
13734 /// The returned ::HAPI_PDG_WorkItemInfo for the work item. Note
13735 /// that the enclosed string handle is only valid until the next
13736 /// call to this function.
13737 ///
13739  HAPI_PDG_GraphContextId graph_context_id,
13740  HAPI_PDG_WorkItemId work_item_id,
13741  HAPI_PDG_WorkItemInfo * work_item_info );
13742 
13743 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
13744 ///
13745 /// @ingroup PDG
13746 ///
13747 /// @param[in] session
13748 /// The session of Houdini you are interacting with.
13749 /// See @ref HAPI_Sessions for more on sessions.
13750 /// Pass NULL to just use the default in-process session.
13751 /// <!-- default NULL -->
13752 ///
13753 /// @param[in] node_id
13754 /// The node id.
13755 ///
13756 /// @param[in] work_item_id
13757 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
13758 ///
13759 /// @param[in] attribute_name
13760 /// null-terminated name of the work item attribute
13761 ///
13762 /// @param[in] values_array
13763 /// array of integer values
13764 ///
13765 /// @param[in] length
13766 /// number of values to copy from values_array to the parameter
13767 ///
13769  HAPI_NodeId node_id,
13770  HAPI_PDG_WorkItemId work_item_id,
13771  const char * attribute_name,
13772  const int * values_array,
13773  int length );
13774 
13775 /// @brief Adds float data to a pending PDG work item attribute for the given node.
13776 ///
13777 /// @ingroup PDG
13778 ///
13779 /// @param[in] session
13780 /// The session of Houdini you are interacting with.
13781 /// See @ref HAPI_Sessions for more on sessions.
13782 /// Pass NULL to just use the default in-process session.
13783 /// <!-- default NULL -->
13784 ///
13785 /// @param[in] node_id
13786 /// The node id.
13787 ///
13788 /// @param[in] work_item_id
13789 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
13790 ///
13791 /// @param[in] attribute_name
13792 /// null-terminated name of the work item attribute
13793 ///
13794 /// @param[in] values_array
13795 /// array of float values
13796 ///
13797 /// @param[in] length
13798 /// number of values to copy from values_array to the parameter
13799 ///
13801  HAPI_NodeId node_id,
13802  HAPI_PDG_WorkItemId work_item_id,
13803  const char * attribute_name,
13804  const float * values_array,
13805  int length );
13806 
13807 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
13808 ///
13809 /// @ingroup PDG
13810 ///
13811 /// @param[in] session
13812 /// The session of Houdini you are interacting with.
13813 /// See @ref HAPI_Sessions for more on sessions.
13814 /// Pass NULL to just use the default in-process session.
13815 /// <!-- default NULL -->
13816 ///
13817 /// @param[in] node_id
13818 /// The node id.
13819 ///
13820 /// @param[in] work_item_id
13821 /// The id of the created work item returned by HAPI_CreateWorkItem()
13822 ///
13823 /// @param[in] attribute_name
13824 /// null-terminated name of the work item attribute
13825 ///
13826 /// @param[in] data_index
13827 /// index of the string data member
13828 ///
13829 /// @param[in] value
13830 /// null-terminated string to copy to the work item data member
13831 ///
13833  HAPI_NodeId node_id,
13834  HAPI_PDG_WorkItemId work_item_id,
13835  const char * attribute_name,
13836  int data_index,
13837  const char * value );
13838 
13839 /// @brief Commits any pending work items.
13840 ///
13841 /// @ingroup PDG
13842 ///
13843 /// @param[in] session
13844 /// The session of Houdini you are interacting with.
13845 /// See @ref HAPI_Sessions for more on sessions.
13846 /// Pass NULL to just use the default in-process session.
13847 /// <!-- default NULL -->
13848 ///
13849 /// @param[in] node_id
13850 /// The node id for which the pending work items have been
13851 /// created but not yet injected.
13852 ///
13854  HAPI_NodeId node_id );
13855 
13856 /// @brief Gets the number of work items that are available on the given node.
13857 /// Should be used with ::HAPI_GetWorkItems.
13858 ///
13859 /// @ingroup PDG
13860 ///
13861 /// @param[in] session
13862 /// The session of Houdini you are interacting with.
13863 /// See @ref HAPI_Sessions for more on sessions.
13864 /// Pass NULL to just use the default in-process session.
13865 /// <!-- default NULL -->
13866 ///
13867 /// @param[in] node_id
13868 /// The node id.
13869 ///
13870 /// @param[out] num
13871 /// The number of work items.
13872 ///
13874  HAPI_NodeId node_id,
13875  int * num );
13876 
13877 /// @brief Gets the list of work item ids for the given node
13878 ///
13879 /// @ingroup PDG
13880 ///
13881 /// @param[in] session
13882 /// The session of Houdini you are interacting with.
13883 /// See @ref HAPI_Sessions for more on sessions.
13884 /// Pass NULL to just use the default in-process session.
13885 /// <!-- default NULL -->
13886 ///
13887 /// @param[in] node_id
13888 /// The node id.
13889 ///
13890 /// @param[out] work_item_ids_array
13891 /// buffer for resulting array of ::HAPI_PDG_WorkItemId
13892 ///
13893 /// @param[in] length
13894 /// The length of the @p work_item_ids buffer
13895 ///
13896 HAPI_DECL HAPI_GetWorkItems( const HAPI_Session * session,
13897  HAPI_NodeId node_id,
13898  int * work_item_ids_array,
13899  int length );
13900 
13901 /// @brief Gets the size of the work item attribute.
13902 /// It is the length of the array of data.
13903 ///
13904 /// @ingroup PDG
13905 ///
13906 /// @param[in] session
13907 /// The session of Houdini you are interacting with.
13908 /// See @ref HAPI_Sessions for more on sessions.
13909 /// Pass NULL to just use the default in-process session.
13910 /// <!-- default NULL -->
13911 ///
13912 /// @param[in] node_id
13913 /// The node id.
13914 ///
13915 /// @param[in] work_item_id
13916 /// The id of the work item
13917 ///
13918 /// @param[in] attribute_name
13919 /// null-terminated name of the work item attribute
13920 ///
13921 /// @param[out] length
13922 /// The length of the data member array
13923 ///
13925  HAPI_NodeId node_id,
13926  HAPI_PDG_WorkItemId work_item_id,
13927  const char * attribute_name,
13928  int * length );
13929 
13930 /// @brief Gets int data from a work item attribute.
13931 ///
13932 /// @ingroup PDG
13933 ///
13934 /// @param[in] session
13935 /// The session of Houdini you are interacting with.
13936 /// See @ref HAPI_Sessions for more on sessions.
13937 /// Pass NULL to just use the default in-process session.
13938 /// <!-- default NULL -->
13939 ///
13940 /// @param[in] node_id
13941 /// The node id.
13942 ///
13943 /// @param[in] work_item_id
13944 /// The id of the work_item
13945 ///
13946 /// @param[in] attribute_name
13947 /// null-terminated name of the work item attribute
13948 ///
13949 /// @param[out] data_array
13950 /// buffer of at least size length to copy the data into. The required
13951 /// length should be determined by ::HAPI_GetWorkItemDataLength().
13952 ///
13953 /// @param[in] length
13954 /// The length of @p data_array
13955 ///
13957  HAPI_NodeId node_id,
13958  HAPI_PDG_WorkItemId work_item_id,
13959  const char * attribute_name,
13960  int * data_array,
13961  int length );
13962 
13963 /// @brief Gets float data from a work item attribute.
13964 ///
13965 /// @ingroup PDG
13966 ///
13967 /// @param[in] session
13968 /// The session of Houdini you are interacting with.
13969 /// See @ref HAPI_Sessions for more on sessions.
13970 /// Pass NULL to just use the default in-process session.
13971 /// <!-- default NULL -->
13972 ///
13973 /// @param[in] node_id
13974 /// The node id.
13975 ///
13976 /// @param[in] work_item_id
13977 /// The id of the work_item
13978 ///
13979 /// @param[in] attribute_name
13980 /// null-terminated name of the work item attribute
13981 ///
13982 /// @param[out] data_array
13983 /// buffer of at least size length to copy the data into. The required
13984 /// length should be determined by ::HAPI_GetWorkItemDataLength().
13985 ///
13986 /// @param[in] length
13987 /// The length of the @p data_array
13988 ///
13990  HAPI_NodeId node_id,
13991  HAPI_PDG_WorkItemId work_item_id,
13992  const char * attribute_name,
13993  float * data_array,
13994  int length );
13995 
13996 /// @brief Gets string ids from a work item attribute.
13997 ///
13998 /// @ingroup PDG
13999 ///
14000 /// @param[in] session
14001 /// The session of Houdini you are interacting with.
14002 /// See @ref HAPI_Sessions for more on sessions.
14003 /// Pass NULL to just use the default in-process session.
14004 /// <!-- default NULL -->
14005 ///
14006 /// @param[in] node_id
14007 /// The node id.
14008 ///
14009 /// @param[in] work_item_id
14010 /// The id of the work item
14011 ///
14012 /// @param[in] attribute_name
14013 /// null-terminated name of the work item attribute
14014 ///
14015 /// @param[out] data_array
14016 /// buffer of at least size length to copy the data into. The required
14017 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14018 /// The data is an array of ::HAPI_StringHandle which can be used with
14019 /// ::HAPI_GetString(). The string handles are valid until the
14020 /// next call to this function.
14021 ///
14022 /// @param[in] length
14023 /// The length of @p data_array
14024 ///
14026  HAPI_NodeId node_id,
14027  HAPI_PDG_WorkItemId work_item_id,
14028  const char * attribute_name,
14029  HAPI_StringHandle * data_array,
14030  int length );
14031 
14032 /// @brief Gets the info for work item output files.
14033 /// The number of work item results is found on the ::HAPI_PDG_WorkItemInfo
14034 /// returned by ::HAPI_GetWorkItemInfo()
14035 ///
14036 /// @ingroup PDG
14037 ///
14038 /// @param[in] session
14039 /// The session of Houdini you are interacting with.
14040 /// See @ref HAPI_Sessions for more on sessions.
14041 /// Pass NULL to just use the default in-process session.
14042 /// <!-- default NULL -->
14043 ///
14044 /// @param[in] node_id
14045 /// The node id.
14046 ///
14047 /// @param[in] work_item_id
14048 /// The id of the work item
14049 ///
14050 /// @param[out] resultinfo_array
14051 /// Buffer to fill with info structs. String handles are valid
14052 /// until the next call of this function.
14053 ///
14054 /// @param[in] resultinfo_count
14055 /// The length of @p resultinfo_array
14056 ///
14058  HAPI_NodeId node_id,
14059  HAPI_PDG_WorkItemId work_item_id,
14060  HAPI_PDG_WorkItemOutputFile * resultinfo_array,
14061  int resultinfo_count );
14062 
14063 /// @brief Dirties the given node. Cancels the cook if necessary and then
14064 /// deletes all workitems on the node.
14065 ///
14066 /// @ingroup PDG
14067 ///
14068 /// @param[in] session
14069 /// The session of Houdini you are interacting with.
14070 /// See @ref HAPI_Sessions for more on sessions.
14071 /// Pass NULL to just use the default in-process session.
14072 /// <!-- default NULL -->
14073 ///
14074 /// @param[in] node_id
14075 /// The node id.
14076 ///
14077 /// @param[in] clean_results
14078 /// Remove the results generated by the node.
14079 /// <!-- default 0 -->
14080 ///
14081 HAPI_DECL HAPI_DirtyPDGNode( const HAPI_Session * session,
14082  HAPI_NodeId node_id,
14083  HAPI_Bool clean_results );
14084 
14085 /// @brief Pause the PDG cooking operation.
14086 ///
14087 /// @ingroup PDG
14088 ///
14089 /// @param[in] session
14090 /// The session of Houdini you are interacting with.
14091 /// See @ref HAPI_Sessions for more on sessions.
14092 /// Pass NULL to just use the default in-process session.
14093 /// <!-- default NULL -->
14094 ///
14095 /// @param[in] graph_context_id
14096 /// The id of the graph context
14097 ///
14098 HAPI_DECL HAPI_PausePDGCook( const HAPI_Session * session,
14099  HAPI_PDG_GraphContextId graph_context_id );
14100 
14101 /// @brief Cancel the PDG cooking operation.
14102 ///
14103 /// @ingroup PDG
14104 ///
14105 /// @param[in] session
14106 /// The session of Houdini you are interacting with.
14107 /// See @ref HAPI_Sessions for more on sessions.
14108 /// Pass NULL to just use the default in-process session.
14109 /// <!-- default NULL -->
14110 ///
14111 /// @param[in] graph_context_id
14112 /// The id of the graph context
14113 ///
14114 HAPI_DECL HAPI_CancelPDGCook( const HAPI_Session * session,
14115  HAPI_PDG_GraphContextId graph_context_id );
14116 
14117 #endif // __HAPI_h__
HAPI_DECL HAPI_SetAttributeInt64ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set 64-bit integer array attribute data asynchronously.
HAPI_DECL HAPI_DeleteNode(const HAPI_Session *session, HAPI_NodeId node_id)
Delete a node from a node network. Only nodes with their HAPI_NodeInfo::createdPostAssetLoad set to t...
HAPI_DECL HAPI_AddAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info)
Add an attribute.
HAPI_DECL HAPI_GetWorkItemFloatAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, float *data_array, int length)
Gets float data from a work item attribute.
HAPI_DECL HAPI_SetAttributeFloatDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_array, int start, int length, int *job_id)
Set attribute float data asynchronously.
HAPI_DECL HAPI_GetAttributeStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_array, int start, int length)
Get attribute string data. Note that the string handles returned are only valid until the next time t...
HAPI_DECL HAPI_GetVolumeTileFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, float fill_value, const HAPI_VolumeTileInfo *tile, float *values_array, int length)
Retrieve floating point values of the voxels pointed to by a tile. Note that a tile may extend beyond...
HAPI_DECL HAPI_SetParmIntValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, int value)
Set single parm int value by name.
HAPI_DECL HAPI_GetSphereInfo(const HAPI_Session *session, HAPI_NodeId geo_node_id, HAPI_PartId part_id, HAPI_SphereInfo *sphere_info)
Get the sphere info on a geo part (if the part is a sphere).
HAPI_DECL HAPI_GetParmInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, HAPI_ParmInfo *parm_info)
Get the parm info of a parameter by parm id.
Data for an image, used with HAPI_GetImageInfo() and HAPI_SetImageInfo()
Definition: HAPI_Common.h:1849
HAPI_DECL HAPI_SetAttributeInt8DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_array, int start, int length, int *job_id)
Set 8-bit attribute integer data asynchronously.
HAPI_DECL HAPI_GetImageFilePath(const HAPI_Session *session, HAPI_NodeId material_node_id, const char *image_file_format_name, const char *image_planes, const char *destination_folder_path, const char *destination_file_name, HAPI_ParmId texture_parm_id, int *destination_file_path)
Get the file name that this image would be saved to.
HAPI_DECL HAPI_GetAttributeInt16ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_Int16 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute 16-bit integer data asynchronously. Each entry in an array attribute can have var...
HAPI_DECL HAPI_LoadNodeFromFile(const HAPI_Session *session, const char *file_name, HAPI_NodeId parent_node_id, const char *node_label, HAPI_Bool cook_on_load, HAPI_NodeId *new_node_id)
Loads and creates a previously saved node and all its contents from given file. The saved file must h...
HAPI_DECL HAPI_GetStringBatchSize(const HAPI_Session *session, const int *string_handle_array, int string_handle_count, int *string_buffer_size)
Gives back the length of the buffer needed to hold all the values null-separated for the given string...
HAPI_DECL HAPI_GetNodeFromPath(const HAPI_Session *session, const HAPI_NodeId parent_node_id, const char *path, HAPI_NodeId *node_id)
Get the id of the node with the specified path.
HAPI_DECL HAPI_GetStringBatch(const HAPI_Session *session, char *char_buffer, int char_array_length)
Gives back the values of the given string handles. The given char array is filled with null-separated...
HAPI_DECL HAPI_SetAnimCurve(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, int parm_index, const HAPI_Keyframe *curve_keyframes_array, int keyframe_count)
Set an animation curve on a parameter of an exposed node.
HAPI_DECL HAPI_SetAttributeUInt8UniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute unsigned 8-bit int data to the same unique value asynchronously.
HAPI_DECL HAPI_GetTime(const HAPI_Session *session, double *time)
Gets the global time of the scene. All API calls deal with this time to cook.
HAPI_DECL HAPI_SaveGeoToFile(const HAPI_Session *session, HAPI_NodeId node_id, const char *file_name)
Saves a geometry to file. The type of file to save is to be determined by the extension ie...
HAPI_DECL HAPI_GetAttributeUInt8ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_UInt8 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute unsigned 8-bit integer data. Each entry in an array attribute can have varying ar...
HAPI_JobStatus
Definition: HAPI_Common.h:232
HAPI_DECL HAPI_SetNodeDisplay(const HAPI_Session *session, HAPI_NodeId node_id, int onOff)
Set the specified node's display flag.
HAPI_DECL HAPI_GetNodeCookResultLength(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_StatusVerbosity verbosity, int *buffer_length)
Gets the length of the cook result string (errors and warnings) of a specific node.
HAPI_DECL HAPI_SetAttributeInt64UniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute 64-bit int data to the same unique value.
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:520
HAPI_DECL HAPI_GetPDGGraphContextId(const HAPI_Session *session, HAPI_NodeId top_node_id, HAPI_PDG_GraphContextId *context_id)
Get the PDG graph context for the specified TOP node.
HAPI_DECL HAPI_GetServerEnvVarList(const HAPI_Session *session, HAPI_StringHandle *values_array, int start, int length)
Provides a list of all of the environment variables in the server's process.
HAPI_DECL HAPI_GetAttributeInt8DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int8 *data_array, int start, int length, int *job_id)
Get attribute 8-bit integer data asynchronously.
int16_t HAPI_Int16
Definition: HAPI_Common.h:142
Data for a PDG output file.
Definition: HAPI_Common.h:2095
HAPI_DECL HAPI_AddGroup(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, const char *group_name)
Add a group to the input geo with the given type and name.
HAPI_DECL HAPI_GetGroupNames(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_GroupType group_type, HAPI_StringHandle *group_names_array, int group_count)
Get group names for an entire geo. Please note that this function is NOT per-part, but it is per-geo. The companion function HAPI_GetGroupMembership() IS per-part. Also keep in mind that the name string handles are only valid until the next time this function is called.
HAPI_GetWorkitemStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, HAPI_StringHandle *data_array, int length)
Gets string ids from a work item member.
HAPI_DECL HAPI_LoadGeoFromMemory(const HAPI_Session *session, HAPI_NodeId node_id, const char *format, const char *buffer, int length)
Loads a geometry from memory and put its contents onto a SOP node.
HAPI_DECL HAPI_SetAttributeDictionaryData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_array, int start, int length)
Set attribute dictionary data. The dictionary data should be provided as JSON-encoded strings...
HAPI_DECL HAPI_SetParmExpression(const HAPI_Session *session, HAPI_NodeId node_id, const char *value, HAPI_ParmId parm_id, int index)
Set (push) an expression string. We can only set a single value at a time because we want to avoid fi...
HAPI_DECL HAPI_GetParmFloatValues(const HAPI_Session *session, HAPI_NodeId node_id, float *values_array, int start, int length)
Fill an array of parameter float values. This is more efficient than calling HAPI_GetParmFloatValue()...
HAPI_DECL HAPI_GetAttributeInt16ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_Int16 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute 16-bit integer data. Each entry in an array attribute can have varying array leng...
HAPI_DECL HAPI_GetActiveCacheNames(const HAPI_Session *session, HAPI_StringHandle *cache_names_array, int active_cache_count)
Get the names of the currently active caches.
int HAPI_PDG_WorkItemId
Use this with PDG functions.
Definition: HAPI_Common.h:176
HAPI_DECL HAPI_GetMessageNodeIds(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_NodeId *message_node_ids_array, int count)
Get the ids of message nodes set in the "Type Properties".
HAPI_DECL HAPI_GetAttributeFloatDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, float *data_array, int start, int length, int *job_id)
Get attribute float data asynchronously.
HAPI_DECL HAPI_GetParameters(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmInfo *parm_infos_array, int start, int length)
Fill an array of HAPI_ParmInfo structs with parameter information from the asset instance node...
HAPI_DECL HAPI_ConvertTransformEulerToMatrix(const HAPI_Session *session, const HAPI_TransformEuler *transform, float *matrix)
Converts HAPI_TransformEuler into a 4x4 transform matrix.
HAPI_DECL HAPI_ParmHasExpression(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, HAPI_Bool *has_expression)
See if a parameter has an expression.
HAPI_SetWorkitemFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, const float *values_array, int length)
Adds float data to a pending PDG workitem data member for the given node.
int HAPI_PDG_GraphContextId
Use this with PDG functions.
Definition: HAPI_Common.h:182
HAPI_DECL HAPI_GetPDGGraphContexts(const HAPI_Session *session, HAPI_StringHandle *context_names_array, HAPI_PDG_GraphContextId *context_id_array, int start, int length)
Return an array of PDG graph context names and ids, the first count names will be returned...
HAPI_DECL HAPI_ConvertTransform(const HAPI_Session *session, const HAPI_TransformEuler *transform_in, HAPI_RSTOrder rst_order, HAPI_XYZOrder rot_order, HAPI_TransformEuler *transform_out)
Converts the transform described by a HAPI_TransformEuler struct into a different transform and rotat...
HAPI_DECL HAPI_SetAttributeIntArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set integer array attribute data asynchronously.
HAPI_DECL HAPI_GetAttributeStringArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute string data asynchronously. Each entry in an array attribute can have varying arr...
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:865
HAPI_DECL HAPI_RevertGeo(const HAPI_Session *session, HAPI_NodeId node_id)
Remove all changes that have been committed to this geometry. If this is an intermediate result node ...
HAPI_DECL HAPI_GetAvailableAssetCount(const HAPI_Session *session, HAPI_AssetLibraryId library_id, int *asset_count)
Get the number of assets contained in an asset library. You should call HAPI_LoadAssetLibraryFromFile...
HAPI_DECL HAPI_GetAttributeInt64ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_Int64 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute 64-bit integer data. Each entry in an array attribute can have varying array leng...
HAPI_DECL HAPI_GetGroupMembership(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, const char *group_name, HAPI_Bool *membership_array_all_equal, int *membership_array, int start, int length)
Get group membership.
HAPI_DECL HAPI_GetParmIdFromName(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, HAPI_ParmId *parm_id)
All parameter APIs require a HAPI_ParmId but if you know the parameter you wish to operate on by name...
HAPI_DECL HAPI_SetParmIntValues(const HAPI_Session *session, HAPI_NodeId node_id, const int *values_array, int start, int length)
Set (push) an array of parameter int values.
HAPI_DECL HAPI_GetAttributeFloat64DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, double *data_array, int start, int length, int *job_id)
Get attribute 64-bit float data asynchronously.
HAPI_DECL HAPI_GetAttributeDictionaryDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_array, int start, int length, int *job_id)
Get attribute dictionary data asynchronously.
HAPI_DECL HAPI_SetCacheProperty(const HAPI_Session *session, const char *cache_name, HAPI_CacheProperty cache_property, int property_value)
Lets you modify specific properties of the different memory caches in the current Houdini context...
GT_API const UT_StringHolder time
HAPI_DECL HAPI_SetAttributeInt8ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set 8-bit integer array attribute data.
HAPI_DECL HAPI_RenderCOPOutputToImage(const HAPI_Session *session, HAPI_NodeId cop_node_id, const char *cop_output_name)
Render a single texture from a COP to an image for later extraction. COPs may have multiple outputs...
HAPI_DECL HAPI_ConvertTransformQuatToMatrix(const HAPI_Session *session, const HAPI_Transform *transform, float *matrix)
Converts HAPI_Transform into a 4x4 transform matrix.
HAPI_DECL HAPI_GetAttributeFloat64ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, double *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute 64-bit float data asynchronously. Each entry in an array attribute can have varyi...
HAPI_DECL HAPI_Cleanup(const HAPI_Session *session)
Clean up memory. This will unload all assets and you will need to call HAPI_Initialize() again to be ...
HAPI_DECL HAPI_SetAttributeFloatUniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute float data to the same unique value.
HAPI_DECL HAPI_GetAssetInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_AssetInfo *asset_info)
Fill an asset_info struct from a node.
GLuint start
Definition: glcorearb.h:475
GLsizei const GLfloat * value
Definition: glcorearb.h:824
HAPI_DECL HAPI_GetAttributeUInt8ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_UInt8 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute unsigned 8-bit integer data asynchronously. Each entry in an array attribute can ...
HAPI_DECL HAPI_IsSessionValid(const HAPI_Session *session)
Checks whether the session identified by HAPI_Session::id is a valid session opened in the implementa...
HAPI_DECL HAPI_GetAttributeStringArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute string data. Each entry in an array attribute can have varying array lengths...
HAPI_DECL HAPI_SetParmFloatValues(const HAPI_Session *session, HAPI_NodeId node_id, const float *values_array, int start, int length)
Set (push) an array of parameter float values.
HAPI_DECL HAPI_GetFirstVolumeTile(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_VolumeTileInfo *tile)
Iterate through a volume based on 8x8x8 sections of the volume Start iterating through the value of t...
HAPI_DECL HAPI_GetServerEnvString(const HAPI_Session *session, const char *variable_name, HAPI_StringHandle *value)
Get environment variable from the server process as a string.
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
HAPI_DECL HAPI_GetFaceCounts(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int *face_counts_array, int start, int length)
Get the array of faces where the nth integer in the array is the number of vertices the nth face has...
HAPI_DECL HAPI_CreateThriftSharedMemorySession(HAPI_Session *session, const char *shared_mem_name, const HAPI_SessionInfo *session_info)
Creates a Thrift RPC session using a shared memory buffer as the transport mechanism.
HAPI_DECL HAPI_SetVertexList(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const int *vertex_list_array, int start, int length)
Set array containing the vertex-point associations where the ith element in the array is the point in...
HAPI_DECL HAPI_GetInputCurveInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_InputCurveInfo *info)
Retrieve meta-data about the input curves, including the curve's type, order, and whether or not the ...
HAPI_DECL HAPI_GetNumWorkItems(const HAPI_Session *session, HAPI_NodeId node_id, int *num)
Gets the number of work items that are available on the given node. Should be used with HAPI_GetWorkI...
HAPI_DECL HAPI_SetVolumeTileFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_VolumeTileInfo *tile, const float *values_array, int length)
Set the values of a float tile: this is an 8x8x8 subsection of the volume.
HAPI_DECL HAPI_GetGeoSize(const HAPI_Session *session, HAPI_NodeId node_id, const char *format, int *size)
Cache the current state of the geo to memory, given the format, and return the size. Use this size with your call to HAPI_SaveGeoToMemory() to copy the cached geo to your buffer. It is guaranteed that the size will not change between your call to HAPI_GetGeoSize() and HAPI_SaveGeoToMemory().
HAPI_RSTOrder
Definition: HAPI_Common.h:770
HAPI_DECL HAPI_SetAttributeUInt8Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_array, int start, int length)
Set unsigned 8-bit attribute integer data.
HAPI_DECL HAPI_GetParmFloatValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, float *value)
Get single parm float value by name.
HAPI_DECL HAPI_SetAttributeFloatArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set float array attribute data asynchronously.
HAPI_DECL HAPI_GetImagePlaneCount(const HAPI_Session *session, HAPI_NodeId material_node_id, int *image_plane_count)
Get the number of image planes for the just rendered image.
HAPI_DECL HAPI_CreateHeightFieldInput(const HAPI_Session *session, HAPI_NodeId parent_node_id, const char *name, int xsize, int ysize, float voxelsize, HAPI_HeightFieldSampling sampling, HAPI_NodeId *heightfield_node_id, HAPI_NodeId *height_node_id, HAPI_NodeId *mask_node_id, HAPI_NodeId *merge_node_id)
Creates the required node hierarchy needed for heightfield inputs.
GT_API const UT_StringHolder cache_name
HAPI_DECL HAPI_GetVertexList(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int *vertex_list_array, int start, int length)
Get array containing the vertex-point associations where the ith element in the array is the point in...
HAPI_DECL HAPI_GetVolumeVisualInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_VolumeVisualInfo *visual_info)
Retrieve the visualization meta-data of the volume.
int HAPI_HIPFileId
Definition: HAPI_Common.h:186
HAPI_DECL HAPI_SetCompositorOptions(const HAPI_Session *session, const HAPI_CompositorOptions *compositor_options)
Sets the global compositor options.
HAPI_DECL HAPI_SetAttributeStringUniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute string data to the same unique value asynchronously.
HAPI_DECL HAPI_GetStringBufLength(const HAPI_Session *session, HAPI_StringHandle string_handle, int *buffer_length)
Gives back the string length of the string with the given handle.
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
HAPI_DECL HAPI_GetComposedChildNodeList(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeId *child_node_ids_array, int count)
Get the composed list of child node ids from the previous call to HAPI_ComposeChildNodeList().
HAPI_DECL HAPI_GetStatusStringBufLength(const HAPI_Session *session, HAPI_StatusType status_type, HAPI_StatusVerbosity verbosity, int *buffer_length)
Return length of string buffer storing status string message.
HAPI_EnvIntType
Definition: HAPI_Common.h:832
HAPI_DECL HAPI_CreateWorkItem(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId *work_item_id, const char *name, int index)
Creates a new pending work item for the given node. The work item will not be submitted to the graph ...
HAPI_DECL HAPI_GetSupportedImageFileFormats(const HAPI_Session *session, HAPI_ImageFileFormat *formats_array, int file_format_count)
Get a list of support image file formats - their names, descriptions and a list of recognized extensi...
HAPI_DECL HAPI_SetAttributeFloat64ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set 64-bit float array attribute data.
HAPI_GetNumWorkitems(const HAPI_Session *session, HAPI_NodeId node_id, int *num)
Gets the number of workitems that are available on the given node. Should be used with HAPI_GetWorkit...
HAPI_DECL HAPI_StartThriftNamedPipeServer(const HAPI_ThriftServerOptions *options, const char *pipe_name, HAPI_ProcessId *process_id, const char *log_file)
Starts a Thrift RPC server process on the local host serving clients on a Windows named pipe or a Uni...
HAPI_DECL HAPI_GetParmNodeValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, HAPI_NodeId *value)
Get a single node id parm value of an Op Path parameter. This is how you see which node is connected ...
HAPI_DECL HAPI_SetCustomString(const HAPI_Session *session, const char *string_value, HAPI_StringHandle *handle_value)
Adds the given string to the string table and returns the handle. It is the responsibility of the cal...
HAPI_DECL HAPI_SetParmNodeValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, HAPI_NodeId value)
Set a node id parm value of an Op Path parameter. For example, This is how you connect the geometry o...
HAPI_DECL HAPI_RevertParmToDefault(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index)
Revert single parm by name to default.
HAPI_DECL HAPI_GetPDGState(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id, int *pdg_state)
Gets the state of a PDG graph.
HAPI_DECL HAPI_SetAttributeIntDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_array, int start, int length, int *job_id)
Set attribute integer data asynchronously.
HAPI_DECL HAPI_SetAttributeIntUniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute int data to the same unique value.
HAPI_DECL HAPI_GetBoxInfo(const HAPI_Session *session, HAPI_NodeId geo_node_id, HAPI_PartId part_id, HAPI_BoxInfo *box_info)
Get the box info on a geo part (if the part is a box).
HAPI_GetWorkitemFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, float *data_array, int length)
Gets float data from a work item member.
HAPI_DECL HAPI_GetMessageNodeCount(const HAPI_Session *session, HAPI_NodeId node_id, int *count)
Get the number of message nodes set in "Type Properties".
HAPI_DECL HAPI_ExtractImageToFile(const HAPI_Session *session, HAPI_NodeId material_node_id, const char *image_file_format_name, const char *image_planes, const char *destination_folder_path, const char *destination_file_name, int *destination_file_path)
Extract a rendered image to a file.
HAPI_DECL HAPI_SetVolumeTileIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_VolumeTileInfo *tile, const int *values_array, int length)
Set the values of an int tile: this is an 8x8x8 subsection of the volume.
HAPI_DECL HAPI_GetHandleBindingInfo(const HAPI_Session *session, HAPI_NodeId node_id, int handle_index, HAPI_HandleBindingInfo *handle_binding_infos_array, int start, int length)
Fill an array of HAPI_HandleBindingInfo structs with information about the binding of a particular ha...
HAPI_DECL HAPI_GetAttributeInt16Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int16 *data_array, int start, int length)
Get attribute 16-bit integer data.
HAPI_DECL HAPI_Shutdown(const HAPI_Session *session)
When using an in-process session, this method must be called in order for the host process to shutdow...
HAPI_DECL HAPI_QueryNodeOutputConnectedCount(const HAPI_Session *session, HAPI_NodeId node_id, int output_idx, HAPI_Bool into_subnets, HAPI_Bool through_dots, int *connected_count)
Get the number of nodes currently connected to the given node at the output index.
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glcorearb.h:2539
Info for a PDG work item.
Definition: HAPI_Common.h:2078
HAPI_CreateWorkitem(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId *workitem_id, const char *name, int index)
Creates a new pending workitem for the given node. The workitem will not be submitted to the graph un...
HAPI_DECL HAPI_SetAttributeInt8ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set 8-bit integer array attribute data asynchronously.
HAPI_DECL HAPI_SetAttributeInt64DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_array, int start, int length, int *job_id)
Set 64-bit attribute integer data asynchronously.
HAPI_DECL HAPI_GetImageInfo(const HAPI_Session *session, HAPI_NodeId material_node_id, HAPI_ImageInfo *image_info)
Get information about the image that was just rendered, like resolution and default file format...
HAPI_DECL HAPI_GetImagePlanes(const HAPI_Session *session, HAPI_NodeId material_node_id, HAPI_StringHandle *image_planes_array, int image_plane_count)
Get the names of the image planes of the just rendered image.
HAPI_DECL HAPI_SetTimelineOptions(const HAPI_Session *session, const HAPI_TimelineOptions *timeline_options)
Sets the global timeline options.
HAPI_DECL HAPI_SetAttributeIntArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set integer array attribute data.
HAPI_DECL HAPI_SetAttributeStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_array, int start, int length)
Set attribute string data.
HAPI_DECL HAPI_GetObjectInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ObjectInfo *object_info)
Get the object info on an OBJ node.
HAPI_DECL HAPI_GetAttributeIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, int *data_array, int start, int length)
Get attribute integer data.
HAPI_DECL HAPI_GetParmIntValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, int *value)
Get single parm int value by name.
HAPI_DECL HAPI_SetViewport(const HAPI_Session *session, const HAPI_Viewport *viewport)
Set the HAPI_Viewport info for synchronizing viewport in SessionSync. When SessionSync is running...
HAPI_DECL HAPI_GetCookingTotalCount(const HAPI_Session *session, int *count)
Get total number of nodes that need to cook in the current session.
HAPI_DECL HAPI_GetNodePath(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_NodeId relative_to_node_id, HAPI_StringHandle *path)
Get the node absolute path in the Houdini node network or a relative path any other node...
HAPI_DECL HAPI_GetOutputGeoInfos(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_GeoInfo *geo_infos_array, int count)
Gets the geometry info structs (HAPI_GeoInfo) for a node's main geometry outputs. This method can onl...
GLuint buffer
Definition: glcorearb.h:660
HAPI_DECL HAPI_GetAttributeInt8Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int8 *data_array, int start, int length)
Get attribute 8-bit integer data.
HAPI_DECL HAPI_GetAttributeFloat64ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, double *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute 64-bit float data. Each entry in an array attribute can have varying array length...
HAPI_DECL HAPI_ConvertMatrixToQuat(const HAPI_Session *session, const float *matrix, HAPI_RSTOrder rst_order, HAPI_Transform *transform_out)
Converts a 4x4 matrix into its TRS form.
HAPI_GetWorkitemDataLength(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, int *length)
Gets the length of the workitem data member. It is the length of the array of data.
HAPI_DECL HAPI_GetParmTagName(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, int tag_index, HAPI_StringHandle *tag_name)
Get the tag name on a parameter given an index.
Meta-data about an HDA, returned by HAPI_GetAssetInfo()
Definition: HAPI_Common.h:1196
HAPI_DECL HAPI_SetAttributeInt16Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_array, int start, int length)
Set 16-bit attribute integer data.
HAPI_DECL HAPI_DeleteAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info)
Delete an attribute from an input geo.
HAPI_AttributeOwner
Definition: HAPI_Common.h:572
HAPI_DECL HAPI_ResetSimulation(const HAPI_Session *session, HAPI_NodeId node_id)
Resets the simulation cache of the asset. This is very useful for assets that use dynamics...
PUGI__FN xpath_string string_value(const xpath_node &na, xpath_allocator *alloc)
Definition: pugixml.cpp:7990
HAPI_DECL HAPI_GetAttributeIntDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, int *data_array, int start, int length, int *job_id)
Get attribute integer data asynchronously.
HAPI_DECL HAPI_GetAssetDefinitionParmCounts(const HAPI_Session *session, HAPI_AssetLibraryId library_id, const char *asset_name, int *parm_count, int *int_value_count, int *float_value_count, int *string_value_count, int *choice_value_count)
Get the number of asset parameters contained in an asset library, as well as the number of parameter ...
HAPI_DECL HAPI_GetInstancerPartTransforms(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_RSTOrder rst_order, HAPI_Transform *transforms_array, int start, int length)
Get the instancer part's list of transforms on which to instance the instanced parts you got from HAP...
HAPI_DECL HAPI_CloseSession(const HAPI_Session *session)
Closes a session. If the session has been established using RPC, then the RPC connection is closed...
HAPI_DECL HAPI_GetOutputGeoCount(const HAPI_Session *session, HAPI_NodeId node_id, int *count)
A helper method that gets the number of main geometry outputs inside an Object node or SOP node...
HAPI_DECL HAPI_GetTimelineOptions(const HAPI_Session *session, HAPI_TimelineOptions *timeline_options)
Gets the current global timeline options.
HAPI_DECL HAPI_ComposeChildNodeList(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeTypeBits node_type_filter, HAPI_NodeFlagsBits node_flags_filter, HAPI_Bool recursive, int *count)
Compose a list of child nodes based on given filters.
HAPI_DECL HAPI_SetAttributeInt8UniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute 8-bit int data to the same unique value.
HAPI_DECL HAPI_GetImageMemoryBuffer(const HAPI_Session *session, HAPI_NodeId material_node_id, char *buffer, int length)
Fill your allocated buffer with the just extracted image buffer.
HAPI_DECL HAPI_SetAttributeDictionaryArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set attribute dictionary array data. The dictionary data should be provided as JSON-encoded strings...
HAPI_DECL HAPI_StartPerformanceMonitorProfile(const HAPI_Session *session, const char *title, int *profile_id)
Start a Houdini Performance Monitor profile. A profile records time and memory statistics from events...
HAPI_DECL HAPI_GetAttributeFloatArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, float *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute float data asynchronously. Each entry in an array attribute can have varying arra...
HAPI_DECL HAPI_SetInputCurveInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_InputCurveInfo *info)
Set meta-data for the input curves, including the curve type, order, reverse and closed properties...
HAPI_DECL HAPI_GetComposedObjectTransforms(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_RSTOrder rst_order, HAPI_Transform *transform_array, int start, int length)
Fill an array of HAPI_Transform structs.
HAPI_DECL HAPI_SetAttributeDictionaryDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_array, int start, int length, int *job_id)
Set attribute dictionary data asynchronously. The dictionary data should be provided as JSON-encoded ...
HAPI_DECL HAPI_PythonThreadInterpreterLock(const HAPI_Session *session, HAPI_Bool locked)
Acquires or releases the Python interpreter lock. This is needed if HAPI is called from Python and HA...
Meta-data for an OBJ Node.
Definition: HAPI_Common.h:1630
HAPI_DECL HAPI_GetAttributeInt8ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_Int8 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute 8-bit integer data. Each entry in an array attribute can have varying array lengt...
HAPI_NodeType
Definition: HAPI_Common.h:503
HAPI_DECL HAPI_GetAttributeFloatArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, float *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute float data. Each entry in an array attribute can have varying array lengths...
HAPI_DECL HAPI_ComposeObjectList(const HAPI_Session *session, HAPI_NodeId parent_node_id, const char *categories, int *object_count)
Compose a list of child object nodes given a parent node id.
HAPI_DECL HAPI_GetAttributeFloat64Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, double *data_array, int start, int length)
Get 64-bit attribute float data.
HAPI_DECL HAPI_GetAttributeUInt8DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_UInt8 *data_array, int start, int length, int *job_id)
Get attribute unsigned 8-bit integer data asynchronously.
HAPI_DECL HAPI_GetVolumeVoxelFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int x_index, int y_index, int z_index, float *values_array, int value_count)
Retrieve floating point values of the voxel at a specific index. Note that you must call HAPI_GetVolu...
HAPI_DECL HAPI_DeleteGroup(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, const char *group_name)
Remove a group from the input geo with the given type and name.
int HAPI_StringHandle
Definition: HAPI_Common.h:160
HAPI_DECL HAPI_SetWorkItemFloatAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, const float *values_array, int length)
Adds float data to a pending PDG work item attribute for the given node.
HAPI_StatusVerbosity
Definition: HAPI_Common.h:215
HAPI_DECL HAPI_RenameNode(const HAPI_Session *session, HAPI_NodeId node_id, const char *new_name)
Rename a node that you created. Only nodes with their HAPI_NodeInfo::createdPostAssetLoad set to true...
HAPI_DECL HAPI_GetVolumeInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_VolumeInfo *volume_info)
Retrieve any meta-data about the volume primitive, including its transform, location, scale, taper, resolution.
HAPI_DECL HAPI_SetCurveKnots(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const float *knots_array, int start, int length)
Set the knots of the curves in this part.
HAPI_DECL HAPI_DisconnectNodeOutputsAt(const HAPI_Session *session, HAPI_NodeId node_id, int output_index)
Disconnect all of the node's output connections at the output index.
HAPI_DECL HAPI_GetAttributeDictionaryData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_array, int start, int length)
Get attribute dictionary data.
HAPI_DECL HAPI_RenderTextureToImage(const HAPI_Session *session, HAPI_NodeId material_node_id, HAPI_ParmId parm_id)
Render only a single texture to an image for later extraction. An example use of this method might be...
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:1153
HAPI_DECL HAPI_CreateThriftNamedPipeSession(HAPI_Session *session, const char *pipe_name, const HAPI_SessionInfo *session_info)
Creates a Thrift RPC session using a Windows named pipe or a Unix domain socket as transport...
HAPI_DECL HAPI_SetAttributeIntUniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute int data to the same unique value asynchronously.
GLint GLsizei GLsizei height
Definition: glcorearb.h:103
HAPI_DECL HAPI_CreateInputCurveNode(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeId *node_id, const char *name)
Helper for creating specifically creating a curve input geometry SOP. Inside the specified parent nod...
HAPI_DECL HAPI_SetCurveInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_CurveInfo *info)
Set meta-data for the curve mesh, including the curve type, order, and periodicity.
HAPI_DECL HAPI_GetGroupNamesOnPackedInstancePart(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, HAPI_StringHandle *group_names_array, int group_count)
Get the group names for a packed instance part This functions allows you to get the group name for a ...
HAPI_GetWorkitemResultInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, HAPI_PDG_WorkItemOutputFile *resultinfo_array, int resultinfo_count)
Gets the info for workitem results. The number of workitem results is found on the HAPI_PDG_WorkItemI...
HAPI_DECL HAPI_SetAttributeInt8Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_array, int start, int length)
Set 8-bit attribute integer data.
HAPI_DECL HAPI_SetInputCurvePositionsRotationsScales(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const float *positions_array, int positions_start, int positions_length, const float *rotations_array, int rotations_start, int rotations_length, const float *scales_array, int scales_start, int scales_length)
Sets the positions for input curves, doing checks for curve validity, and adjusting the curve setting...
HAPI_DECL HAPI_SetVolumeVoxelFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int x_index, int y_index, int z_index, const float *values_array, int value_count)
Set the values of a float voxel in the volume.
HAPI_DECL HAPI_GetVolumeBounds(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, float *x_min, float *y_min, float *z_min, float *x_max, float *y_max, float *z_max, float *x_center, float *y_center, float *z_center)
Get the bounding values of a volume.
HAPI_DECL HAPI_GetPreset(const HAPI_Session *session, HAPI_NodeId node_id, char *buffer, int buffer_length)
Generates a preset for the given asset.
HAPI_XYZOrder
Definition: HAPI_Common.h:783
Data associated with a PDG Event.
Definition: HAPI_Common.h:2052
HAPI_DECL HAPI_GetSessionSyncInfo(const HAPI_Session *session, HAPI_SessionSyncInfo *session_sync_info)
Get the HAPI_SessionSyncInfo for synchronizing SessionSync state between Houdini and Houdini Engine i...
HAPI_DECL HAPI_SetAttributeUInt8DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_array, int start, int length, int *job_id)
Set unsigned 8-bit attribute integer data asynchronously.
HAPI_DECL HAPI_GetAttributeFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, float *data_array, int start, int length)
Get attribute float data.
HAPI_DECL HAPI_GetString(const HAPI_Session *session, HAPI_StringHandle string_handle, char *string_value, int length)
Gives back the string value of the string with the given handle.
HAPI_DECL HAPI_GetCurveInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_CurveInfo *info)
Retrieve any meta-data about the curves, including the curve's type, order, and periodicity.
HAPI_DECL HAPI_SetParmStringValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *value, HAPI_ParmId parm_id, int index)
Set (push) a string value. We can only set a single value at a time because we want to avoid fixed si...
HAPI_DECL HAPI_MergeHIPFile(const HAPI_Session *session, const char *file_name, HAPI_Bool cook_on_load, HAPI_HIPFileId *file_id)
Loads a .hip file into the main Houdini scene.
int HAPI_ParmId
Definition: HAPI_Common.h:169
HAPI_DECL HAPI_SetSessionSync(const HAPI_Session *session, HAPI_Bool enable)
Enable or disable SessionSync mode.
Meta-data describing a Geo Part.
Definition: HAPI_Common.h:1723
HAPI_DECL HAPI_CommitGeo(const HAPI_Session *session, HAPI_NodeId node_id)
Commit the current input geometry to the cook engine. Nodes that use this geometry node will re-cook ...
GA_API const UT_StringHolder trans
#define HAPI_DECL_DEPRECATED_REPLACE(hapi_ver, houdini_ver, replacement)
Definition: HAPI_API.h:102
HAPI_DECL HAPI_SetAttributeUInt8ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set unsigned 8-bit integer array attribute data asynchronously.
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:278
HAPI_DECL HAPI_SaveGeoToMemory(const HAPI_Session *session, HAPI_NodeId node_id, char *buffer, int length)
Saves the cached geometry to your buffer in memory, whose format and required size is identified by t...
HAPI_DECL HAPI_QueryNodeInput(const HAPI_Session *session, HAPI_NodeId node_to_query, int input_index, HAPI_NodeId *connected_node_id)
Query which node is connected to another node's input.
HAPI_DECL HAPI_RemoveMultiparmInstance(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, int instance_position)
Remove the instance of a multiparm given by instance_position.
HAPI_DECL HAPI_GetPDGEvents(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id, HAPI_PDG_EventInfo *event_array, int length, int *event_count, int *remaining_events)
Returns PDG events that have been collected. Calling this function will remove those events from the ...
HAPI_DECL HAPI_ParmHasTag(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, const char *tag_name, HAPI_Bool *has_tag)
See if a parameter has a specific tag.
HAPI_DECL HAPI_GetParmChoiceLists(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmChoiceInfo *parm_choices_array, int start, int length)
Fill an array of HAPI_ParmChoiceInfo structs with parameter choice list information from the asset in...
HAPI_ImagePacking
Definition: HAPI_Common.h:810
HAPI_DECL HAPI_LoadHIPFile(const HAPI_Session *session, const char *file_name, HAPI_Bool cook_on_load)
Loads a .hip file into the main Houdini scene.
HAPI_DECL HAPI_GetAssetLibraryIds(const HAPI_Session *session, HAPI_AssetLibraryId *asset_library_ids_array, int start, int length)
Gets the HAPI_AssetLibraryId's for HDAs that are loaded in Houdini.
HAPI_DECL HAPI_GetJobStatus(const HAPI_Session *session, int job_id, HAPI_JobStatus *job_status)
Get status of a job.
GLint GLint GLsizei GLint GLenum format
Definition: glcorearb.h:108
Meta-data for a Houdini Node.
Definition: HAPI_Common.h:1354
HAPI_DECL HAPI_GetWorkItemIntAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, int *data_array, int length)
Gets int data from a work item attribute.
HAPI_DECL HAPI_SetAttributeInt16UniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute 16-bit int data to the same unique value.
HAPI_SessionType
Definition: HAPI_Common.h:280
GLint GLenum GLboolean GLsizei stride
Definition: glcorearb.h:872
HAPI_DECL HAPI_SetWorkItemIntAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, const int *values_array, int length)
Adds integer data to a pending PDG work item attribute for the given node.
HAPI_DECL HAPI_GetOutputNodeId(const HAPI_Session *session, HAPI_NodeId node_id, int output, HAPI_NodeId *output_node_id)
Gets the node id of an output node in a SOP network.
HAPI_DECL HAPI_GetAttributeStringDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_array, int start, int length, int *job_id)
Get attribute string data asynchronously.
HAPI_DECL HAPI_GetHeightFieldData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, float *values_array, int start, int length)
Get the height field data for a terrain volume as a flattened 2D array of float heights. Should call HAPI_GetVolumeInfo() first to make sure the volume info is initialized.
HAPI_SetWorkitemStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, int data_index, const char *value)
Adds integer data to a pending PDG workitem data member for the given node.
HAPI_DECL HAPI_SetAttributeStringDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_array, int start, int length, int *job_id)
Set attribute string data asynchronously.
Configuration options for Houdini's compositing context.
Definition: HAPI_Common.h:2160
HAPI_DECL HAPI_GetAttributeDictionaryArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute dictionary data. Each entry in an array attribute can have varying array lengths...
HAPI_DECL HAPI_GetParmExpression(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, HAPI_StringHandle *value)
Get single integer or float parm expression by name or Null string if no expression is present...
HAPI_GetWorkitemIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, int *data_array, int length)
Gets int data from a work item member.
HAPI_DECL HAPI_GetWorkItemOutputFiles(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, HAPI_PDG_WorkItemOutputFile *resultinfo_array, int resultinfo_count)
Gets the info for work item output files. The number of work item results is found on the HAPI_PDG_Wo...
HAPI_DECL HAPI_GetAttributeInt64DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int64 *data_array, int start, int length, int *job_id)
Get attribute 64-bit integer data asynchronously.
HAPI_DECL HAPI_SetGroupMembership(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, const char *group_name, const int *membership_array, int start, int length)
Set group membership.
HAPI_DECL HAPI_GetParmStringValues(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_Bool evaluate, HAPI_StringHandle *values_array, int start, int length)
Fill an array of parameter string handles. These handles must be used in conjunction with HAPI_GetStr...
HAPI_DECL HAPI_SetServerEnvString(const HAPI_Session *session, const char *variable_name, const char *value)
Set environment variable for the server process as a string.
HAPI_DECL HAPI_SetPartInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_PartInfo *part_info)
Set the main part info struct (HAPI_PartInfo).
HAPI_DECL HAPI_SetAttributeInt16UniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute 16-bit int data to the same unique value asynchronously.
HAPI_DECL HAPI_CreateHeightfieldInputVolumeNode(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeId *new_node_id, const char *name, int xsize, int ysize, float voxelsize)
Creates a volume input node that can be used with Heightfields.
HAPI_DECL HAPI_SetParmFloatValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, float value)
Set single parm float value by name.
HAPI_DECL HAPI_CancelPDGCook(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id)
Cancel the PDG cooking operation.
HAPI_DECL HAPI_ComposeNodeCookResult(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_StatusVerbosity verbosity, int *buffer_length)
Compose the cook result string (errors and warnings) of a specific node.
HAPI_DECL HAPI_CheckForSpecificErrors(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ErrorCodeBits errors_to_look_for, HAPI_ErrorCodeBits *errors_found)
Recursively check for specific errors by error code on a node.
HAPI_DECL HAPI_GetManagerNodeId(const HAPI_Session *session, HAPI_NodeType node_type, HAPI_NodeId *node_id)
Get the root node of a particular network type (ie. OBJ).
HAPI_DECL HAPI_SetAttributeDictionaryArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set attribute dictionary array data asynchronously. The dictionary should be provided as JSON-encoded...
HAPI_HeightFieldSampling
Type of sampling for heightfield.
Definition: HAPI_Common.h:910
HAPI_DECL HAPI_SetVolumeVoxelIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int x_index, int y_index, int z_index, const int *values_array, int value_count)
Set the values of a integer voxel in the volume.
HAPI_DECL HAPI_SetServerEnvInt(const HAPI_Session *session, const char *variable_name, int value)
Set environment variable for the server process as an integer.
HAPI_DECL HAPI_GetAttributeIntArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length)
Get array attribute integer data. Each entry in an array attribute can have varying array lengths...
HAPI_DECL HAPI_SetAttributeInt16DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_array, int start, int length, int *job_id)
Set 16-bit attribute integer data asynchronously.
HAPI_DECL HAPI_GetAttributeDictionaryArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_StringHandle *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute dictionary data asynchronously. Each entry in an array attribute can have varying...
GLuint const GLchar * name
Definition: glcorearb.h:786
int HAPI_ProcessId
Definition: HAPI_Common.h:152
HAPI_DECL HAPI_CreateThriftSocketSession(HAPI_Session *session, const char *host_name, int port, const HAPI_SessionInfo *session_info)
Creates a Thrift RPC session using a TCP socket as transport.
HAPI_DECL HAPI_GetNodeInputName(const HAPI_Session *session, HAPI_NodeId node_id, int input_idx, HAPI_StringHandle *name)
Get the name of an node's input. This function will return a string handle for the name which will be...
HAPI_DECL HAPI_SetSessionSyncInfo(const HAPI_Session *session, const HAPI_SessionSyncInfo *session_sync_info)
Set the HAPI_SessionSyncInfo for synchronizing SessionSync state between Houdini and Houdini Engine i...
HAPI_DECL HAPI_SetTime(const HAPI_Session *session, double time)
Sets the global time of the scene. All API calls will deal with this time to cook.
HAPI_DECL HAPI_GetMaterialInfo(const HAPI_Session *session, HAPI_NodeId material_node_id, HAPI_MaterialInfo *material_info)
Get the material info.
Configurations for sessions.
Definition: HAPI_Common.h:1124
HAPI_DECL HAPI_CreateCustomSession(HAPI_SessionType session_type, void *session_info, HAPI_Session *session)
Creates a new session using a custom implementation. Note that the implementation DLL must already ha...
Options which affect how nodes are cooked.
Definition: HAPI_Common.h:1255
HAPI_DECL HAPI_SetHeightFieldData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const float *values_array, int start, int length)
Set the height field data for a terrain volume with the values from a flattened 2D array of float...
HAPI_DECL HAPI_SetAttributeStringArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set string array attribute data asynchronously.
HAPI_DECL HAPI_GetStatus(const HAPI_Session *session, HAPI_StatusType status_type, int *status)
Gives back the status code for a specific status type.
HAPI_DECL HAPI_GetConnectionError(char *string_value, int length, HAPI_Bool clear)
Return the connection error message.
HAPI_DECL HAPI_CreateCOPImage(const HAPI_Session *session, HAPI_NodeId parent_node_id, const int width, const int height, const HAPI_ImagePacking packing, HAPI_Bool flip_x, HAPI_Bool flip_y, const float *data_array, int start, int length)
Loads some raw image data into a COP node.
HAPI_DECL HAPI_SetAttributeUInt8UniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute unsigned 8-bit int data to the same unique value.
HAPI_DECL HAPI_GetCurveOrders(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int *orders_array, int start, int length)
Retrieve the orders for each curve in the part if the curve has varying order.
GA_API const UT_StringHolder transform
HAPI_DECL HAPI_GetCurveKnots(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, float *knots_array, int start, int length)
Retrieve the knots of the curves in this part.
HAPI_DECL HAPI_GetAttributeInt64ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_Int64 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute 64-bit integer data asynchronously. Each entry in an array attribute can have var...
HAPI_DECL HAPI_GetAttributeInt64Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int64 *data_array, int start, int length)
Get attribute 64-bit integer data.
HAPI_DECL HAPI_SetAttributeFloat64ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set 64-bit float array attribute data asynchronously.
HAPI_DECL HAPI_GetParmWithTag(const HAPI_Session *session, HAPI_NodeId node_id, const char *tag_name, HAPI_ParmId *parm_id)
Get the first parm with a specific, ideally unique, tag on it. This is particularly useful for gettin...
HAPI_SetWorkitemIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId workitem_id, const char *data_name, const int *values_array, int length)
Adds integer data to a pending PDG workitem data member for the given node.
HAPI_DECL HAPI_SetAttributeStringArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set string array attribute data.
HAPI_DECL HAPI_SetObjectTransform(const HAPI_Session *session, HAPI_NodeId node_id, const HAPI_TransformEuler *trans)
Set the transform of an individual object. Note that the object nodes have to either be editable or h...
HAPI_DECL HAPI_GetPDGGraphContextsCount(const HAPI_Session *session, int *num_contexts)
Return the total number of PDG graph contexts found.
HAPI_DECL HAPI_ConvertMatrixToEuler(const HAPI_Session *session, const float *matrix, HAPI_RSTOrder rst_order, HAPI_XYZOrder rot_order, HAPI_TransformEuler *transform_out)
Converts a 4x4 matrix into its TRS form.
HAPI_DECL HAPI_GetAvailableAssets(const HAPI_Session *session, HAPI_AssetLibraryId library_id, HAPI_StringHandle *asset_names_array, int asset_count)
Get the names of the assets contained in an asset library.
HAPI_DECL HAPI_RemoveCustomString(const HAPI_Session *session, const HAPI_StringHandle string_handle)
Removes the specified string from the server and invalidates the handle.
HAPI_DECL HAPI_GetAttributeInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeOwner owner, HAPI_AttributeInfo *attr_info)
Get the attribute info struct for the attribute specified by name.
HAPI_DECL HAPI_GetAssetDefinitionParmInfos(const HAPI_Session *session, HAPI_AssetLibraryId library_id, const char *asset_name, HAPI_ParmInfo *parm_infos_array, int start, int length)
Fill an array of HAPI_ParmInfo structs with parameter information for the specified asset in the spec...
HAPI_DECL HAPI_StartThriftSocketServer(const HAPI_ThriftServerOptions *options, int port, HAPI_ProcessId *process_id, const char *log_file)
Starts a Thrift RPC server process on the local host serving clients on a TCP socket and waits for it...
HAPI_DECL HAPI_RemoveParmExpression(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, int index)
Remove the expression string, leaving the value of the parm at the current value of the expression...
HAPI_DECL HAPI_SetAttributeIndexedStringDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **string_array, int string_count, const int *indices_array, int indices_start, int indices_length, int *job_id)
Set attribute string data by index asynchronously.
HAPI_DECL HAPI_InsertMultiparmInstance(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, int instance_position)
Insert an instance of a multiparm before instance_position.
HAPI_DECL HAPI_GetAssetDefinitionParmTagName(const HAPI_Session *session, HAPI_AssetLibraryId library_id, const char *asset_name, HAPI_ParmId parm_id, int tag_index, HAPI_StringHandle *tag_name)
HAPI_DECL HAPI_Initialize(const HAPI_Session *session, const HAPI_CookOptions *cook_options, HAPI_Bool use_cooking_thread, int cooking_thread_stack_size, const char *houdini_environment_files, const char *otl_search_path, const char *dso_search_path, const char *image_dso_search_path, const char *audio_dso_search_path)
Create the asset manager, set up environment variables, and initialize the main Houdini scene...
Identifies a session.
Definition: HAPI_Common.h:1111
#define HAPI_DECL
Definition: HAPI_API.h:108
HAPI_DECL HAPI_SetInputCurvePositions(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const float *positions_array, int start, int length)
Sets the positions for input curves, doing checks for curve validity, and adjusting the curve setting...
HAPI_DECL HAPI_GetHIPFileNodeCount(const HAPI_Session *session, HAPI_HIPFileId id, int *count)
Gets the number of nodes that were created as a result of loading a .hip file.
HAPI_DECL HAPI_GetWorkItemInfo(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id, HAPI_PDG_WorkItemId work_item_id, HAPI_PDG_WorkItemInfo *work_item_info)
Retrieves the info of a given work item by id.
HAPI_DECL HAPI_CookNode(const HAPI_Session *session, HAPI_NodeId node_id, const HAPI_CookOptions *cook_options)
Initiate a cook on this node. Note that this may trigger cooks on other nodes if they are connected...
HAPI_DECL HAPI_GetAttributeNames(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_AttributeOwner owner, HAPI_StringHandle *attribute_names_array, int count)
Get list of attribute names by attribute owner. Note that the name string handles are only valid unti...
HAPI_DECL HAPI_SetPreset(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PresetType preset_type, const char *preset_name, const char *buffer, int buffer_length)
Sets a particular asset to a given preset.
Meta-data for a SOP Node.
Definition: HAPI_Common.h:1679
HAPI_DECL HAPI_GetAssetDefinitionParmValues(const HAPI_Session *session, HAPI_AssetLibraryId library_id, const char *asset_name, int *int_values_array, int int_start, int int_length, float *float_values_array, int float_start, int float_length, HAPI_Bool string_evaluate, HAPI_StringHandle *string_values_array, int string_start, int string_length, HAPI_ParmChoiceInfo *choice_values_array, int choice_start, int choice_length)
Fill arrays of parameter int values, float values, string values, and choice values for parameters in...
HAPI_DECL HAPI_SetAttributeFloat64Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_array, int start, int length)
Set 64-bit attribute float data.
HAPI_DECL HAPI_ExtractImageToMemory(const HAPI_Session *session, HAPI_NodeId material_node_id, const char *image_file_format_name, const char *image_planes, int *buffer_size)
Extract a rendered image to memory.
HAPI_DECL HAPI_GetMaterialNodeIdsOnFaces(const HAPI_Session *session, HAPI_NodeId geometry_node_id, HAPI_PartId part_id, HAPI_Bool *are_all_the_same, HAPI_NodeId *material_ids_array, int start, int length)
Get material ids by face/primitive. The material ids returned will be valid as long as the asset is a...
GLsizeiptr size
Definition: glcorearb.h:664
A Transform with Euler rotation.
Definition: HAPI_Common.h:1096
HAPI_DECL HAPI_GetParmFile(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, const char *destination_directory, const char *destination_file_name)
Extract a file specified by path on a parameter. This will copy the file to the destination directory...
HAPI_DECL HAPI_GetTotalCookCount(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_NodeTypeBits node_type_filter, HAPI_NodeFlagsBits node_flags_filter, HAPI_Bool recursive, int *count)
Get the specified node's total cook count, including its children, if specified.
HAPI_DECL HAPI_SetAttributeInt16ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Set 16-bit integer array attribute data asynchronously.
HAPI_DECL HAPI_QueryNodeOutputConnectedNodes(const HAPI_Session *session, HAPI_NodeId node_id, int output_idx, HAPI_Bool into_subnets, HAPI_Bool through_dots, HAPI_NodeId *connected_node_ids_array, int start, int length)
Get the ids of nodes currently connected to the given node at the output index.
HAPI_DECL HAPI_GetWorkItemAttributeSize(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, int *length)
Gets the size of the work item attribute. It is the length of the array of data.
HAPI_DECL HAPI_CreateInProcessSession(HAPI_Session *session, const HAPI_SessionInfo *session_info)
Creates a new in-process session. There can only be one such session per host process.
HAPI_DECL HAPI_GetViewport(const HAPI_Session *session, HAPI_Viewport *viewport)
Get the HAPI_Viewport info for synchronizing viewport in SessionSync. When SessionSync is running thi...
int64_t HAPI_Int64
Definition: HAPI_Common.h:144
HAPI_DECL HAPI_GetGroupMembershipOnPackedInstancePart(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_GroupType group_type, const char *group_name, HAPI_Bool *membership_array_all_equal, int *membership_array, int start, int length)
Get group membership for a packed instance part This functions allows you to get the group membership...
Data for global timeline, used with HAPI_SetTimelineOptions()
Definition: HAPI_Common.h:1184
HAPI_DECL HAPI_GetVolumeVoxelIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int x_index, int y_index, int z_index, int *values_array, int value_count)
Retrieve integer point values of the voxel at a specific index. Note that you must call HAPI_GetVolum...
HAPI_DECL HAPI_SetAttributeInt64ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set 64-bit integer array attribute data.
HAPI_DECL HAPI_GetInstanceTransformsOnPart(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_RSTOrder rst_order, HAPI_Transform *transforms_array, int start, int length)
Fill an array of HAPI_Transform structs with the transforms of each instance of this instancer object...
HAPI_DECL HAPI_CookPDGAllOutputs(const HAPI_Session *session, HAPI_NodeId cook_node_id, int generate_only, int blocking)
Starts a PDG cooking operation. This can be asynchronous. Progress can be checked with HAPI_GetPDGSta...
HAPI_DECL HAPI_GetComposedObjectList(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_ObjectInfo *object_infos_array, int start, int length)
Fill an array of HAPI_ObjectInfo structs.
HAPI_DECL HAPI_DirtyPDGNode(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_Bool clean_results)
Dirties the given node. Cancels the cook if necessary and then deletes all workitems on the node...
HAPI_DECL HAPI_SetWorkItemStringAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, int data_index, const char *value)
Adds integer data to a pending PDG work item attribute for the given node.
HAPI_DECL HAPI_GetCacheProperty(const HAPI_Session *session, const char *cache_name, HAPI_CacheProperty cache_property, int *property_value)
Lets you inspect specific properties of the different memory caches in the current Houdini context...
HAPI_DECL HAPI_SetCurveOrders(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const int *orders_array, int start, int length)
Set the orders for each curve in the part if the curve has varying order.
HAPI_DECL HAPI_BindCustomImplementation(HAPI_SessionType session_type, const char *dll_path)
Binds a new implementation DLL to one of the custom session slots.
HAPI_DECL HAPI_GetNodeCookResult(const HAPI_Session *session, char *string_value, int length)
Return the cook result string that was composed during a call to HAPI_GetNodeCookResultLength().
HAPI_DECL HAPI_SetAttributeFloat64DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_array, int start, int length, int *job_id)
Set 64-bit attribute float data asynchronously.
HAPI_DECL HAPI_GetAttributeIntArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, int *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute integer data asynchronously. Each entry in an array attribute can have varying ar...
HAPI_GetWorkitems(const HAPI_Session *session, HAPI_NodeId node_id, int *workitem_ids_array, int length)
Gets the list of work item ids for the given node.
HAPI_DECL HAPI_GetCompositorOptions(const HAPI_Session *session, HAPI_CompositorOptions *compositor_options)
Gets the global compositor options.
HAPI_DECL HAPI_SaveHIPFile(const HAPI_Session *session, const char *file_path, HAPI_Bool lock_nodes)
Saves a .hip file of the current Houdini scene.
HAPI_DECL HAPI_GetPresetCount(const HAPI_Session *session, const char *buffer, int buffer_length, int *count)
Gets the number of presets in an IDX file. When this method is called, the names of the presets are s...
HAPI_DECL HAPI_SetFaceCounts(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const int *face_counts_array, int start, int length)
Set the array of faces where the nth integer in the array is the number of vertices the nth face has...
HAPI_DECL HAPI_SetAttributeInt16ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int16 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set 16-bit integer array attribute data.
HAPI_DECL HAPI_CreateInputNode(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeId *node_id, const char *name)
Creates a simple geometry SOP node that can accept geometry input. Inside the specified parent node...
HAPI_DECL HAPI_PausePDGCook(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id)
Pause the PDG cooking operation.
HAPI_DECL HAPI_CreateNode(const HAPI_Session *session, HAPI_NodeId parent_node_id, const char *operator_name, const char *node_label, HAPI_Bool cook_on_creation, HAPI_NodeId *new_node_id)
Create a node inside a node network. Nodes created this way will have their HAPI_NodeInfo::createdPos...
HAPI_DECL HAPI_SetImageInfo(const HAPI_Session *session, HAPI_NodeId material_node_id, const HAPI_ImageInfo *image_info)
Set image information like resolution and file format. This information will be used when extracting ...
GLuint index
Definition: glcorearb.h:786
HAPI_DECL HAPI_SetAttributeInt64Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_array, int start, int length)
Set 64-bit attribute integer data.
char HAPI_Bool
Definition: HAPI_Common.h:119
HAPI_DECL HAPI_GetParmInfoFromName(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, HAPI_ParmInfo *parm_info)
Get the parm info of a parameter by name.
HAPI_DECL HAPI_CommitWorkItems(const HAPI_Session *session, HAPI_NodeId node_id)
Commits any pending work items.
HAPI_DECL HAPI_GetAttributeInt16DataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_Int16 *data_array, int start, int length, int *job_id)
Get attribute 16-bit integer data asynchronously.
HAPI_DECL HAPI_GetAttributeUInt8Data(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, HAPI_AttributeInfo *attr_info, int stride, HAPI_UInt8 *data_array, int start, int length)
Get attribute unsigned 8-bit integer data.
HAPI_DECL HAPI_GetActiveCacheCount(const HAPI_Session *session, int *active_cache_count)
Get the number of currently active caches.
HAPI_DECL HAPI_LoadAssetLibraryFromMemory(const HAPI_Session *session, const char *library_buffer, int library_buffer_length, HAPI_Bool allow_overwrite, HAPI_AssetLibraryId *library_id)
Loads a Houdini asset library (OTL) from memory. It does NOT create anything inside the Houdini scene...
HAPI_StatusType
Definition: HAPI_Common.h:206
HAPI_DECL HAPI_ClearConnectionError()
Clears the connection error. Should be used before starting or creating Thrift server.
HAPI_DECL HAPI_SetAttributeFloat64UniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute 64-bit float data to the same unique value.
HAPI_DECL HAPI_GetServerEnvInt(const HAPI_Session *session, const char *variable_name, int *value)
Get environment variable from the server process as an integer.
HAPI_DECL HAPI_GetNodeInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_NodeInfo *node_info)
Fill an HAPI_NodeInfo struct.
HAPI_DECL HAPI_GetObjectTransform(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_NodeId relative_to_node_id, HAPI_RSTOrder rst_order, HAPI_Transform *transform)
Get the tranform of an OBJ node.
HAPI_PresetType
Definition: HAPI_Common.h:492
Data for a Box Part.
Definition: HAPI_Common.h:2033
HAPI_DECL HAPI_GetUseHoudiniTime(const HAPI_Session *session, HAPI_Bool *enabled)
Returns whether the Houdini session will use the current time in Houdini when cooking and retrieving ...
HAPI_DECL HAPI_SetAttributeUInt8ArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_UInt8 *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set unsigned 8-bit integer array attribute data.
HAPI_DECL HAPI_SetAttributeFloatData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_array, int start, int length)
Set attribute float data.
HAPI_DECL HAPI_GetVolumeTileIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int fill_value, const HAPI_VolumeTileInfo *tile, int *values_array, int length)
Retrieve integer point values of the voxels pointed to by a tile. Note that a tile may extend beyond ...
HAPI_DECL HAPI_GetAssetDefinitionParmTagValue(const HAPI_Session *session, HAPI_AssetLibraryId library_id, const char *asset_name, HAPI_ParmId parm_id, const char *tag_name, HAPI_StringHandle *tag_value)
HAPI_DECL HAPI_GetSupportedImageFileFormatCount(const HAPI_Session *session, int *file_format_count)
Get the number of supported texture file formats.
HAPI_DECL HAPI_GetParmIntValues(const HAPI_Session *session, HAPI_NodeId node_id, int *values_array, int start, int length)
Fill an array of parameter int values. This is more efficient than calling HAPI_GetParmIntValue() ind...
HAPI_DECL HAPI_IsInitialized(const HAPI_Session *session)
Check whether the runtime has been initialized yet using HAPI_Initialize(). Function will return HAPI...
HAPI_DECL HAPI_Interrupt(const HAPI_Session *session)
Interrupt a cook or load operation.
HAPI_DECL HAPI_GetGeoInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_GeoInfo *geo_info)
Get the geometry info struct (HAPI_GeoInfo) on a SOP node.
HAPI_DECL HAPI_GetHIPFileNodeIds(const HAPI_Session *session, HAPI_HIPFileId id, HAPI_NodeId *node_ids, int length)
Fills an array of HAPI_NodeId of nodes that were created as a result of loading the HIP file specifie...
GT_API const UT_StringHolder profile_id
HAPI_DECL HAPI_GetConnectionErrorLength(int *buffer_length)
Return the length of string buffer storing connection error message.
GLint GLsizei width
Definition: glcorearb.h:103
HAPI_DECL HAPI_GetHandleInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_HandleInfo *handle_infos_array, int start, int length)
Fill an array of HAPI_HandleInfo structs with information about every exposed user manipulation handl...
HAPI_DECL HAPI_GetNextVolumeTile(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_VolumeTileInfo *tile)
Iterate through a volume based on 8x8x8 sections of the volume Continue iterating through the value o...
HAPI_DECL HAPI_GetSessionEnvInt(const HAPI_Session *session, HAPI_SessionEnvIntType int_type, int *value)
Gives back a certain session-specific environment integers like current license type being used...
HAPI_DECL HAPI_GetNodeOutputName(const HAPI_Session *session, HAPI_NodeId node_id, int output_idx, HAPI_StringHandle *name)
Get the name of an node's output. This function will return a string handle for the name which will b...
HAPI_DECL HAPI_RenderCOPToImage(const HAPI_Session *session, HAPI_NodeId cop_node_id)
Render a single texture from a COP to an image for later extraction.
HAPI_DECL HAPI_SetCurveCounts(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const int *counts_array, int start, int length)
Set the number of vertices for each curve in the part.
HAPI_DECL HAPI_GetWorkItemStringAttribute(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PDG_WorkItemId work_item_id, const char *attribute_name, HAPI_StringHandle *data_array, int length)
Gets string ids from a work item attribute.
HAPI_DECL HAPI_GetCookingCurrentCount(const HAPI_Session *session, int *count)
Get current number of nodes that have already cooked in the current session. Note that this is a very...
HAPI_DECL HAPI_GetComposedNodeCookResult(const HAPI_Session *session, char *string_value, int length)
Return cook result string message on a single node.
HAPI_DECL HAPI_SetAttributeFloat64UniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const double *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute 64-bit float data to the same unique asynchronously.
HAPI_DECL HAPI_GetPresetBufLength(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PresetType preset_type, const char *preset_name, int *buffer_length)
Generate a preset blob of the current state of all the parameter values, cache it, and return its size in bytes.
HAPI_DECL HAPI_GetEdgeCountOfEdgeGroup(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *group_name, int *edge_count)
Gets the number of edges that belong to an edge group on a geometry part.
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:560
Data for a Sphere Part.
Definition: HAPI_Common.h:2042
HAPI_DECL HAPI_GetPresetNames(const HAPI_Session *session, const char *buffer, int buffer_length, HAPI_StringHandle *preset_names_array, int preset_names_count)
Gets the names of presets in an IDX file. HAPI_GetPresetCount() must be called before calling this me...
A Transform with Quaternion rotation.
Definition: HAPI_Common.h:1084
HAPI_DECL HAPI_DisconnectNodeInput(const HAPI_Session *session, HAPI_NodeId node_id, int input_index)
Disconnect a node input.
HAPI_GetWorkitemInfo(const HAPI_Session *session, HAPI_PDG_GraphContextId graph_context_id, HAPI_PDG_WorkItemId workitem_id, HAPI_PDG_WorkItemInfo *workitem_info)
Retrieves the info of a given workitem by id.
HAPI_DECL HAPI_SetAttributeInt8UniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int8 *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute 8-bit int data to the same unique value asynchronously.
HAPI_DECL HAPI_SetTransformAnimCurve(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_TransformComponent trans_comp, const HAPI_Keyframe *curve_keyframes_array, int keyframe_count)
A specialized convenience function to set the T,R,S values on an exposed node.
HAPI_GroupType
Definition: HAPI_Common.h:562
HAPI_DECL HAPI_GetAttributeInt8ArrayDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *attr_name, HAPI_AttributeInfo *attr_info, HAPI_Int8 *data_fixed_array, int data_fixed_length, int *sizes_fixed_array, int start, int sizes_fixed_length, int *job_id)
Get array attribute 8-bit integer data asynchronously. Each entry in an array attribute can have vary...
HAPI_DECL HAPI_GetPartInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_PartInfo *part_info)
Get a particular part info struct.
HAPI_DECL HAPI_GetLoadedAssetLibraryCount(const HAPI_Session *session, int *count)
Gets the number of HDAs that have been loaded by Houdini.
HAPI_DECL HAPI_GetStatusString(const HAPI_Session *session, HAPI_StatusType status_type, char *string_value, int length)
Return status string message.
HAPI_DECL HAPI_GetServerEnvVarCount(const HAPI_Session *session, int *env_count)
Provides the number of environment variables that are in the server environment's process...
HAPI_DECL HAPI_SetAttributeFloatUniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute float data to the same unique value asynchronously.
int HAPI_NodeId
See HAPI_Nodes_Basics.
Definition: HAPI_Common.h:165
Describes an image format, used with HAPI_GetSupportedImageFileFormats()
Definition: HAPI_Common.h:1840
HAPI_DECL HAPI_StopPerformanceMonitorProfile(const HAPI_Session *session, int profile_id, const char *file_path)
Stop the Performance Monitor profile that matches the given profile id and save out the profile's sta...
HAPI_CacheProperty
Identifies a memory cache.
Definition: HAPI_Common.h:877
HAPI_DECL HAPI_SetAttributeIndexedStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **string_array, int string_count, const int *indices_array, int indices_start, int indices_length)
Set attribute string data by index.
HAPI_DECL HAPI_SetAttributeInt64UniqueDataAsync(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const HAPI_Int64 *data_array, int data_length, int start_index, int num_indices, int *job_id)
Set multiple attribute 64-bit int data to the same unique value asynchronously.
HAPI_DECL HAPI_SetVolumeInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const HAPI_VolumeInfo *volume_info)
Set the volume info of a geo on a geo input.
HAPI_DECL HAPI_SetUseHoudiniTime(const HAPI_Session *session, HAPI_Bool enabled)
Sets whether the Houdini session should use the current time in Houdini when cooking and retrieving d...
Data for a single Key Frame.
Definition: HAPI_Common.h:1878
HAPI_DECL HAPI_GetGroupCountOnPackedInstancePart(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int *pointGroupCount, int *primitiveGroupCount)
Get group counts for a specific packed instanced part.
HAPI_DECL HAPI_ConnectNodeInput(const HAPI_Session *session, HAPI_NodeId node_id, int input_index, HAPI_NodeId node_id_to_connect, int output_index)
Connect two nodes together.
HAPI_DECL HAPI_CookPDG(const HAPI_Session *session, HAPI_NodeId cook_node_id, int generate_only, int blocking)
Starts a PDG cooking operation. This can be asynchronous. Progress can be checked with HAPI_GetPDGSta...
HAPI_DECL HAPI_GetCurveCounts(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, int *counts_array, int start, int length)
Retrieve the number of vertices for each curve in the part.
HAPI_DECL HAPI_LoadAssetLibraryFromFile(const HAPI_Session *session, const char *file_path, HAPI_Bool allow_overwrite, HAPI_AssetLibraryId *library_id)
Loads a Houdini asset library (OTL) from a .otl file. It does NOT create anything inside the Houdini ...
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:162
HAPI_DECL HAPI_LoadGeoFromFile(const HAPI_Session *session, HAPI_NodeId node_id, const char *file_name)
Loads a geometry file and put its contents onto a SOP node.
HAPI_DECL HAPI_SetAttributeFloatArrayData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const float *data_fixed_array, int data_fixed_length, const int *sizes_fixed_array, int start, int sizes_fixed_length)
Set float array attribute data.
HAPI_DECL HAPI_GetAssetLibraryFilePath(const HAPI_Session *session, HAPI_AssetLibraryId asset_library_id, HAPI_StringHandle *file_path_sh)
Gets the HAPI_StringHandle for the file path of a loaded asset library.
HAPI_TransformComponent
Definition: HAPI_Common.h:752
HAPI_DECL HAPI_GetParmStringValue(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name, int index, HAPI_Bool evaluate, HAPI_StringHandle *value)
Get single parm string value by name.
HAPI_DECL HAPI_GetEnvInt(HAPI_EnvIntType int_type, int *value)
Gives back a certain environment integers like version number. Note that you do not need a session fo...
HAPI_DECL HAPI_GetInstancedObjectIds(const HAPI_Session *session, HAPI_NodeId object_node_id, HAPI_NodeId *instanced_node_id_array, int start, int length)
Get the node ids for the objects being instanced by an Instance OBJ node.
HAPI_DECL HAPI_IsNodeValid(const HAPI_Session *session, HAPI_NodeId node_id, int unique_node_id, HAPI_Bool *answer)
Determine if your instance of the node actually still exists inside the Houdini scene. This is what can be used to determine when the Houdini scene needs to be re-populated using the host application's instances of the nodes. Note that this function will ALWAYS return HAPI_RESULT_SUCCESS.
HAPI_DECL HAPI_StartThriftSharedMemoryServer(const HAPI_ThriftServerOptions *options, const char *shared_mem_name, HAPI_ProcessId *process_id, const char *log_file)
Starts a Thrift RPC server process on the localhost serving clients by utilizing shared memory to tra...
HAPI_DECL HAPI_GetDisplayGeoInfo(const HAPI_Session *session, HAPI_NodeId object_node_id, HAPI_GeoInfo *geo_info)
Get the display geo (SOP) node inside an Object node. If there there are multiple display SOP nodes...
GLint GLsizei count
Definition: glcorearb.h:405
int8_t HAPI_Int8
Definition: HAPI_Common.h:140
HAPI_DECL HAPI_RevertParmToDefaults(const HAPI_Session *session, HAPI_NodeId node_id, const char *parm_name)
Revert all instances of the parm by name to defaults.
HAPI_DECL HAPI_SetAttributeStringUniqueData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char *data_array, int data_length, int start_index, int num_indices)
Set multiple attribute string data to the same unique value.
Meta-data for a combo-box / choice parm.
Definition: HAPI_Common.h:1585
HAPI_CommitWorkitems(const HAPI_Session *session, HAPI_NodeId node_id)
Commits any pending workitems.
int HAPI_PartId
Definition: HAPI_Common.h:173
HAPI_DECL HAPI_GetInstancedPartIds(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_PartId *instanced_parts_array, int start, int length)
Get the part ids that this instancer part is instancing.
HAPI_DECL HAPI_GetParmTagValue(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_ParmId parm_id, const char *tag_name, HAPI_StringHandle *tag_value)
Get the tag value on a parameter given the tag name.
HAPI_DECL HAPI_GetWorkItems(const HAPI_Session *session, HAPI_NodeId node_id, int *work_item_ids_array, int length)
Gets the list of work item ids for the given node.
HAPI_DECL HAPI_SaveNodeToFile(const HAPI_Session *session, HAPI_NodeId node_id, const char *file_name)
Saves the node and all its contents to file. The saved file can be loaded by calling HAPI_LoadNodeFro...
HAPI_DECL HAPI_SetAttributeIntData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const int *data_array, int start, int length)
Set attribute integer data.
uint8_t HAPI_UInt8
Definition: HAPI_Common.h:135