Houdini Engine 8.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator 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  * New parsing tags:
20  *
21  * <!-- string --> Placing this tag in the comment for a method
22  * argument indicates that the argument is a
23  * C-style null-terminated string. This helps
24  * differentiate the argument from const char *
25  * arguments that are simply buffers.
26  * <!-- sizetype name --> This tag is required for input/output buffer
27  * method arguments and specifies the name of the
28  * length argument associated with the buffer.
29  */
30 
31 #ifndef __HAPI_h__
32 #define __HAPI_h__
33 
34 #include "HAPI_API.h"
35 #include "HAPI_Common.h"
36 #include "HAPI_Helpers.h"
37 
38 /// @defgroup Sessions
39 /// Functions for creating and inspecting HAPI session state.
40 
41 /// @brief Creates a new in-process session. There can only be
42 /// one such session per host process.
43 ///
44 /// @ingroup Sessions
45 ///
46 /// @param[out] session
47 /// A ::HAPI_Session struct to receive the session id,
48 /// in this case always 0.
49 ///
50 /// @param[in] session_info
51 /// A ::HAPI_SessionInfo struct to specify session configurations.
52 ///
54  const HAPI_SessionInfo * session_info );
55 
56 /// @brief Starts a Thrift RPC server process on the local host serving
57 /// clients on a TCP socket and waits for it to start serving.
58 /// It is safe to create an RPC session on local host using the
59 /// specified port after this call succeeds.
60 ///
61 /// @ingroup Sessions
62 /// @param[in] options
63 /// Options to configure the server being started.
64 ///
65 /// @param[in] port
66 /// The TCP socket to create on the server.
67 ///
68 /// @param[out] process_id
69 /// The process id of the server, if started successfully.
70 ///
71 /// @param[in] log_file
72 /// When a filepath is provided for this argument, all logs will
73 /// be appended to the specified file. The specfied path must be
74 /// an absolute path. The server will create any intermediate
75 /// directories in the filepath that do not already exist. When
76 /// this argument is NULL/nullptr, logging will be directed to
77 /// the standard streams.
78 /// <!-- string -->
79 ///
81  const HAPI_ThriftServerOptions * options,
82  int port,
83  HAPI_ProcessId * process_id,
84  const char * log_file );
85 
86 /// @brief Creates a Thrift RPC session using a TCP socket as transport.
87 ///
88 /// @ingroup Sessions
89 /// @param[out] session
90 /// A ::HAPI_Session struct to receive the unique session id
91 /// of the new session.
92 ///
93 /// @param[in] host_name
94 /// The name of the server host.
95 /// <!-- string -->
96 ///
97 /// @param[in] port
98 /// The server port to connect to.
99 ///
100 /// @param[in] session_info
101 /// A ::HAPI_SessionInfo struct to specify session configurations.
102 ///
104  const char * host_name,
105  int port,
106  const HAPI_SessionInfo * session_info );
107 
108 /// @brief Starts a Thrift RPC server process on the local host serving
109 /// clients on a Windows named pipe or a Unix domain socket and
110 /// waits for it to start serving. It is safe to create an RPC
111 /// session using the specified pipe or socket after this call
112 /// succeeds.
113 ///
114 /// @ingroup Sessions
115 ///
116 /// @param[in] options
117 /// Options to configure the server being started.
118 ///
119 /// @param[in] pipe_name
120 /// The name of the pipe or socket.
121 /// <!-- string -->
122 ///
123 /// @param[out] process_id
124 /// The process id of the server, if started successfully.
125 ///
126 /// @param[in] log_file
127 /// When a filepath is provided for this argument, all logs will
128 /// be appended to the specified file. The specfied path must be
129 /// an absolute path. The server will create any intermediate
130 /// directories in the filepath that do not already exist. When
131 /// this argument is NULL/nullptr, logging will be directed to
132 /// the standard streams.
133 /// <!-- string -->
134 ///
136  const HAPI_ThriftServerOptions * options,
137  const char * pipe_name,
138  HAPI_ProcessId * process_id,
139  const char * log_file );
140 
141 /// @brief Creates a Thrift RPC session using a Windows named pipe
142 /// or a Unix domain socket as transport.
143 ///
144 /// @ingroup Sessions
145 ///
146 /// @param[out] session
147 /// A ::HAPI_Session struct to receive the unique session id
148 /// of the new session.
149 ///
150 /// @param[in] pipe_name
151 /// The name of the pipe or socket.
152 /// <!-- string -->
153 ///
154 /// @param[in] session_info
155 /// A ::HAPI_SessionInfo struct to specify session configurations.
156 ///
158  const char * pipe_name,
159  const HAPI_SessionInfo * session_info );
160 
161 /// @brief Starts a Thrift RPC server process on the localhost serving clients
162 /// by utilizing shared memory to transfer data between the client and
163 /// server and waits for it to start serving.
164 ///
165 /// @ingroup Sessions
166 ///
167 /// @param[in] options
168 /// Options to configure the server being started.
169 ///
170 /// @param[in] shared_mem_name
171 /// The name of the memory buffer. This must be unique to the
172 /// server in order to avoid any conflicts.
173 /// <!-- string -->
174 ///
175 /// @param[out] process_id
176 /// The process id of the server, if started successfully.
177 ///
178 /// @param[in] log_file
179 /// When a filepath is provided for this argument, all logs will
180 /// be appended to the specified file. The specified path must
181 /// be an absolute path. The server will create any intermediate
182 /// directories in the filepath that do not already exist. When
183 /// this argument is NULL/nullptr, logging will be directed to
184 /// the standard streams.
185 /// <!-- string -->
187  const HAPI_ThriftServerOptions * options,
188  const char * shared_mem_name,
189  HAPI_ProcessId * process_id,
190  const char * log_file);
191 
192 /// @brief Creates a Thrift RPC session using a shared memory buffer as the
193 /// transport mechanism.
194 ///
195 /// @ingroup Sessions
196 ///
197 /// @param[out] session
198 /// A ::HAPI_Session struct to receive the unique session id
199 /// of the new session.
200 ///
201 /// @param[in] shared_mem_name
202 /// The name of the memory buffer. This must match the name of
203 /// the shared memory buffer of the server that you are wishing
204 /// to connect to.
205 /// <!-- string -->
206 ///
207 /// @param[in] session_info
208 /// A ::HAPI_SessionInfo struct to specify session configurations.
209 ///
211  const char * shared_mem_name,
212  const HAPI_SessionInfo * session_info );
213 
214 /// @brief Binds a new implementation DLL to one of the custom session
215 /// slots.
216 ///
217 /// @ingroup Sessions
218 ///
219 /// @param[in] session_type
220 /// Which custom implementation slot to bind the
221 /// DLL to. Must be one of ::HAPI_SESSION_CUSTOM1,
222 /// ::HAPI_SESSION_CUSTOM2, or ::HAPI_SESSION_CUSTOM3.
223 ///
224 /// @param[in] dll_path
225 /// The path to the custom implementation DLL.
226 /// <!-- string -->
227 ///
229  const char * dll_path );
230 
231 /// @brief Creates a new session using a custom implementation.
232 /// Note that the implementation DLL must already have
233 /// been bound to the session via calling
234 /// ::HAPI_BindCustomImplementation().
235 ///
236 /// @ingroup Sessions
237 ///
238 /// @param[in] session_type
239 /// session_type indicates which custom session
240 /// slot to create the session on.
241 ///
242 /// @param[in,out] session_info
243 /// Any data required by the custom implementation to
244 /// create its session.
245 ///
246 /// @param[out] session
247 /// A ::HAPI_Session struct to receive the session id,
248 /// The sessionType parameter of the struct should
249 /// also match the session_type parameter passed in.
250 ///
252  void * session_info,
253  HAPI_Session * session );
254 
255 /// @brief Checks whether the session identified by ::HAPI_Session::id is
256 /// a valid session opened in the implementation identified by
257 /// ::HAPI_Session::type.
258 ///
259 /// @ingroup Sessions
260 ///
261 /// @param[in] session
262 /// The ::HAPI_Session to check.
263 ///
264 /// @return ::HAPI_RESULT_SUCCESS if the session is valid.
265 /// Otherwise, the session is invalid and passing it to
266 /// other HAPI calls may result in undefined behavior.
267 ///
268 HAPI_DECL HAPI_IsSessionValid( const HAPI_Session * session );
269 
270 /// @brief Closes a session. If the session has been established using
271 /// RPC, then the RPC connection is closed.
272 ///
273 /// @ingroup Sessions
274 ///
275 /// @param[in] session
276 /// The HAPI_Session to close. After this call, this
277 /// session is invalid and passing it to HAPI calls other
278 /// than ::HAPI_IsSessionValid() may result in undefined
279 /// behavior.
280 ///
281 HAPI_DECL HAPI_CloseSession( const HAPI_Session * session );
282 
283 // INITIALIZATION / CLEANUP -------------------------------------------------
284 
285 /// @brief Check whether the runtime has been initialized yet using
286 /// ::HAPI_Initialize(). Function will return ::HAPI_RESULT_SUCCESS
287 /// if the runtime has been initialized and ::HAPI_RESULT_NOT_INITIALIZED
288 /// otherwise.
289 ///
290 /// @ingroup Sessions
291 ///
292 /// @param[in] session
293 /// The session of Houdini you are interacting with.
294 /// See @ref HAPI_Sessions for more on sessions.
295 /// Pass NULL to just use the default in-process session.
296 /// <!-- default NULL -->
297 ///
298 HAPI_DECL HAPI_IsInitialized( const HAPI_Session * session );
299 
300 /// @brief Create the asset manager, set up environment variables, and
301 /// initialize the main Houdini scene. No license check is done
302 /// during this step. Only when you try to load an asset library
303 /// (OTL) do we actually check for licenses.
304 ///
305 /// @ingroup Sessions
306 ///
307 /// @param[in] session
308 /// The session of Houdini you are interacting with.
309 /// See @ref HAPI_Sessions for more on sessions.
310 /// Pass NULL to just use the default in-process session.
311 /// <!-- default NULL -->
312 ///
313 /// @param[in] cook_options
314 /// Global cook options used by subsequent default cooks.
315 /// This can be overwritten by individual cooks but if
316 /// you choose to instantiate assets with cook_on_load
317 /// set to true then these cook options will be used.
318 ///
319 /// @param[in] use_cooking_thread
320 /// Use a separate thread for cooking of assets. This
321 /// allows for asynchronous cooking and larger stack size.
322 /// <!-- default true -->
323 ///
324 /// @param[in] cooking_thread_stack_size
325 /// Set the stack size of the cooking thread. Use -1 to
326 /// set the stack size to the Houdini default. This
327 /// value is in bytes.
328 /// <!-- default -1 -->
329 ///
330 /// @param[in] houdini_environment_files
331 /// A list of paths, separated by a ";" on Windows and a ":"
332 /// on Linux and Mac, to .env files that follow the same
333 /// syntax as the houdini.env file in Houdini's user prefs
334 /// folder. These will be applied after the default
335 /// houdini.env file and will overwrite the process'
336 /// environment variable values. You an use this to enforce
337 /// a stricter environment when running engine.
338 /// For more info, see:
339 /// http://www.sidefx.com/docs/houdini/basics/config_env
340 /// <!-- default NULL -->
341 /// <!-- string -->
342 ///
343 /// @param[in] otl_search_path
344 /// The directory where OTLs are searched for. You can
345 /// pass NULL here which will only use the default
346 /// Houdini OTL search paths. You can also pass in
347 /// multiple paths separated by a ";" on Windows and a ":"
348 /// on Linux and Mac. If something other than NULL is
349 /// passed the default Houdini search paths will be
350 /// appended to the end of the path string.
351 /// <!-- default NULL -->
352 /// <!-- string -->
353 ///
354 /// @param[in] dso_search_path
355 /// The directory where generic DSOs (custom plugins) are
356 /// searched for. You can pass NULL here which will
357 /// only use the default Houdini DSO search paths. You
358 /// can also pass in multiple paths separated by a ";"
359 /// on Windows and a ":" on Linux and Mac. If something
360 /// other than NULL is passed the default Houdini search
361 /// paths will be appended to the end of the path string.
362 /// <!-- default NULL -->
363 /// <!-- string -->
364 ///
365 /// @param[in] image_dso_search_path
366 /// The directory where image DSOs (custom plugins) are
367 /// searched for. You can pass NULL here which will
368 /// only use the default Houdini DSO search paths. You
369 /// can also pass in multiple paths separated by a ";"
370 /// on Windows and a ":" on Linux and Mac. If something
371 /// other than NULL is passed the default Houdini search
372 /// paths will be appended to the end of the path string.
373 /// <!-- default NULL -->
374 /// <!-- string -->
375 ///
376 /// @param[in] audio_dso_search_path
377 /// The directory where audio DSOs (custom plugins) are
378 /// searched for. You can pass NULL here which will
379 /// only use the default Houdini DSO search paths. You
380 /// can also pass in multiple paths separated by a ";"
381 /// on Windows and a ":" on Linux and Mac. If something
382 /// other than NULL is passed the default Houdini search
383 /// paths will be appended to the end of the path string.
384 /// <!-- default NULL -->
385 /// <!-- string -->
386 ///
387 HAPI_DECL HAPI_Initialize( const HAPI_Session * session,
388  const HAPI_CookOptions * cook_options,
389  HAPI_Bool use_cooking_thread,
390  int cooking_thread_stack_size,
391  const char * houdini_environment_files,
392  const char * otl_search_path,
393  const char * dso_search_path,
394  const char * image_dso_search_path,
395  const char * audio_dso_search_path );
396 
397 /// @brief Clean up memory. This will unload all assets and you will
398 /// need to call ::HAPI_Initialize() again to be able to use any
399 /// HAPI methods again.
400 ///
401 /// @note This does not release any licenses. The license will be returned when
402 /// the process terminates.
403 ///
404 /// @ingroup Sessions
405 ///
406 /// @param[in] session
407 /// The session of Houdini you are interacting with.
408 /// See @ref HAPI_Sessions for more on sessions.
409 /// Pass NULL to just use the default in-process session.
410 /// <!-- default NULL -->
411 ///
412 HAPI_DECL HAPI_Cleanup( const HAPI_Session * session );
413 
414 /// @brief When using an in-process session, this method **must** be called in
415 /// order for the host process to shutdown cleanly. This method should
416 /// be called before ::HAPI_CloseSession().
417 ///
418 /// @note This method should only be called before exiting the program,
419 /// because HAPI can no longer be used by the process once this method
420 /// has been called.
421 ///
422 /// @ingroup Sessions
423 ///
424 /// @param[in] session
425 /// The session of Houdini you are interacting with.
426 /// See @ref HAPI_Sessions for more on sessions.
427 /// Pass NULL to just use the default in-process session.
428 /// <!-- default NULL -->
429 ///
430 HAPI_DECL HAPI_Shutdown( const HAPI_Session * session );
431 
432 /// @brief Start a Houdini Performance Monitor profile.
433 /// A profile records time and memory statistics from events
434 /// that occur in the Houdini session. A profile records node cooks
435 /// for example; how long it takes to cook a node and how many times
436 /// a node is cooked. Return ::HAPI_RESULT_INVALID_ARGUMENT if NULL
437 /// is passed in for the `profile_id` parameter.
438 ///
439 /// @ingroup Sessions
440 ///
441 /// @param[in] session
442 /// The session of Houdini you are interacting with.
443 /// See @ref HAPI_Sessions for more on sessions.
444 /// Pass NULL to just use the default in-process session.
445 /// <!-- default NULL -->
446 ///
447 /// @param[in] title
448 /// The title of the profile. If NULL is passed into this
449 /// parameter, then a default title will be chosen for the
450 /// profile.
451 /// <!-- string -->
452 ///
453 /// @param[out] profile_id
454 /// The id of the profile. You can pass the id to
455 /// ::HAPI_StopPerformanceMonitorProfile to stop the profile.
456 ///
457 ///
459  const char * title,
460  int * profile_id );
461 
462 /// @brief Stop the Performance Monitor profile that matches the given
463 /// profile id and save out the profile's statistics to the specified
464 /// file path on disk. The profile is cleared from memory after its
465 /// statistics are saved to disk. Return ::HAPI_RESULT_INVALID_ARGUMENT
466 /// if no profile exists for the given id. Return ::HAPI_RESULT_FAILURE
467 /// if the profile statistics could not be saved out to the specified
468 /// file path. In this case, the profile is stopped but is not cleared
469 /// from memory. You can call
470 /// ::HAPI_StopPerformanceMonitorProfile to attempt saving the
471 /// profile to disk again.
472 ///
473 /// @ingroup Sessions
474 ///
475 /// @param[in] session
476 /// The session of Houdini you are interacting with.
477 /// See @ref HAPI_Sessions for more on sessions.
478 /// Pass NULL to just use the default in-process session.
479 /// <!-- default NULL -->
480 ///
481 /// @param[in] profile_id
482 /// The id of the profile to stop.
483 ///
484 /// @param[in] file_path
485 /// The path to the file where the profile statistics should be
486 /// written to. Use the Performance Monitor file extension,
487 /// .hperf, in the file name (i.e. /path/to/myProfile.hperf).
488 /// <!-- string -->
489 ///
491  int profile_id,
492  const char * file_path );
493 
494 /// @defgroup Environment
495 /// Functions for reading and writing to the session environment
496 
497 /// @brief Gives back a certain environment integers like version number.
498 /// Note that you do not need a session for this. These constants
499 /// are hard-coded in all HAPI implementations, including HARC and
500 /// HAPIL. This should be the first API you call to determine if
501 /// any future API calls will mismatch implementation.
502 ///
503 /// @ingroup Environment
504 ///
505 /// @param[in] int_type
506 /// One of ::HAPI_EnvIntType.
507 ///
508 /// @param[out] value
509 /// Int value.
510 ///
511 HAPI_DECL HAPI_GetEnvInt( HAPI_EnvIntType int_type, int * value );
512 
513 /// @brief Gives back a certain session-specific environment integers
514 /// like current license type being used.
515 ///
516 /// @ingroup Environment
517 ///
518 /// @param[in] session
519 /// The session of Houdini you are interacting with.
520 /// See @ref HAPI_Sessions for more on sessions.
521 /// Pass NULL to just use the default in-process session.
522 /// <!-- default NULL -->
523 ///
524 /// @param[in] int_type
525 /// One of ::HAPI_SessionEnvIntType.
526 ///
527 /// @param[out] value
528 /// Int value.
529 ///
531  HAPI_SessionEnvIntType int_type,
532  int * value );
533 
534 /// @brief Get environment variable from the server process as an integer.
535 ///
536 /// @ingroup Environment
537 ///
538 /// @param[in] session
539 /// The session of Houdini you are interacting with.
540 /// See @ref HAPI_Sessions for more on sessions.
541 /// Pass NULL to just use the default in-process session.
542 /// <!-- default NULL -->
543 ///
544 /// @param[in] variable_name
545 /// Name of the environmnet variable.
546 /// <!-- string -->
547 ///
548 /// @param[out] value
549 /// The int pointer to return the value in.
550 ///
552  const char * variable_name,
553  int * value );
554 
555 /// @brief Get environment variable from the server process as a string.
556 ///
557 /// @ingroup Environment
558 ///
559 /// @param[in] session
560 /// The session of Houdini you are interacting with.
561 /// See @ref HAPI_Sessions for more on sessions.
562 /// Pass NULL to just use the default in-process session.
563 /// <!-- default NULL -->
564 ///
565 /// @param[in] variable_name
566 /// Name of the environmnet variable.
567 /// <!-- string -->
568 ///
569 /// @param[out] value
570 /// The HAPI_StringHandle pointer to return the value in.
571 ///
573  const char * variable_name,
574  HAPI_StringHandle * value );
575 
576 /// @brief Provides the number of environment variables that are in
577 /// the server environment's process
578 ///
579 /// Note that ::HAPI_GetServerEnvVarList() should be called directly after
580 /// this method, otherwise there is the possibility that the environment
581 /// variable count of the server will have changed by the time that
582 /// ::HAPI_GetServerEnvVarList() is called.
583 ///
584 /// @ingroup Environment
585 ///
586 /// @param[in] session
587 /// The session of Houdini you are interacting with.
588 /// See @ref HAPI_Sessions for more on sessions.
589 /// Pass NULL to just use the default in-process session.
590 /// <!-- default NULL -->
591 ///
592 /// @param[out] env_count
593 /// A pointer to an int to return the value in
595  int * env_count );
596 
597 /// @brief Provides a list of all of the environment variables
598 /// in the server's process
599 ///
600 /// @ingroup Environment
601 ///
602 /// @param[in] session
603 /// The session of Houdini you are interacting with.
604 /// See @ref HAPI_Sessions for more on sessions.
605 /// Pass NULL to just use the default in-process session.
606 /// <!-- default NULL -->
607 ///
608 /// @param[out] values_array
609 /// An ::HAPI_StringHandle array at least the size of length
610 /// <!-- sizeparm length -->
611 ///
612 /// @param[in] start
613 /// First index of range. Must be at least @c 0 and at most
614 /// @c env_count - 1 where @c env_count is the count returned by
615 /// ::HAPI_GetServerEnvVarCount()
616 /// <!-- min 0 -->
617 /// <!-- max ::HAPI_GetServerEnvVarCount -->
618 /// <!-- default 0 -->
619 ///
620 /// @param[in] length
621 /// Given @c env_count returned by ::HAPI_GetServerEnvVarCount(),
622 /// length should be at least @c 0 and at most <tt>env_count - start.</tt>
623 /// <!-- default 0 -->
625  HAPI_StringHandle * values_array,
626  int start,
627  int length );
628 
629 /// @brief Set environment variable for the server process as an integer.
630 ///
631 /// Note that this may affect other sessions on the same server
632 /// process. The session parameter is mainly there to identify the
633 /// server process, not the specific session.
634 ///
635 /// For in-process sessions, this will affect the current process's
636 /// environment.
637 ///
638 /// @ingroup Environment
639 ///
640 /// @param[in] session
641 /// The session of Houdini you are interacting with.
642 /// See @ref HAPI_Sessions for more on sessions.
643 /// Pass NULL to just use the default in-process session.
644 /// <!-- default NULL -->
645 ///
646 /// @param[in] variable_name
647 /// Name of the environment variable.
648 /// <!-- string -->
649 ///
650 /// @param[in] value
651 /// The integer value.
652 ///
654  const char * variable_name,
655  int value );
656 
657 /// @brief Set environment variable for the server process as a string.
658 ///
659 /// Note that this may affect other sessions on the same server
660 /// process. The session parameter is mainly there to identify the
661 /// server process, not the specific session.
662 ///
663 /// For in-process sessions, this will affect the current process's
664 /// environment.
665 ///
666 /// @ingroup Environment
667 ///
668 /// @param[in] session
669 /// The session of Houdini you are interacting with.
670 /// See @ref HAPI_Sessions for more on sessions.
671 /// Pass NULL to just use the default in-process session.
672 /// <!-- default NULL -->
673 ///
674 /// @param[in] variable_name
675 /// Name of the environmnet variable.
676 /// <!-- string -->
677 ///
678 /// @param[in] value
679 /// The string value.
680 /// <!-- string -->
681 ///
683  const char * variable_name,
684  const char * value );
685 
686 /// @defgroup Status
687 /// Functions for reading session connection and cook status.
688 
689 /// @brief Gives back the status code for a specific status type.
690 ///
691 /// @ingroup Status
692 ///
693 /// @param[in] session
694 /// The session of Houdini you are interacting with.
695 /// See @ref HAPI_Sessions for more on sessions.
696 /// Pass NULL to just use the default in-process session.
697 /// <!-- default NULL -->
698 ///
699 /// @param[in] status_type
700 /// One of ::HAPI_StatusType.
701 ///
702 /// @param[out] status
703 /// Actual status code for the status type given. That is,
704 /// if you pass in ::HAPI_STATUS_CALL_RESULT as
705 /// status_type, you'll get back a ::HAPI_Result for this
706 /// argument. If you pass in ::HAPI_STATUS_COOK_STATE
707 /// as status_type, you'll get back a ::HAPI_State enum
708 /// for this argument.
709 ///
710 HAPI_DECL HAPI_GetStatus( const HAPI_Session * session,
711  HAPI_StatusType status_type,
712  int * status );
713 
714 /// @brief Return length of string buffer storing status string message.
715 ///
716 /// If called with ::HAPI_STATUS_COOK_RESULT this will actually
717 /// parse the node networks for the previously cooked asset(s)
718 /// and aggregate all node errors, warnings, and messages
719 /// (depending on the @c verbosity level set). Usually this is done
720 /// just for the last cooked single asset but if you load a whole
721 /// Houdini scene using ::HAPI_LoadHIPFile() then you'll have
722 /// multiple "previously cooked assets".
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[in] verbosity
745 /// Preferred verbosity level.
746 ///
747 /// @param[out] buffer_length
748 /// Length of buffer char array ready to be filled.
749 ///
751  HAPI_StatusType status_type,
752  HAPI_StatusVerbosity verbosity,
753  int * buffer_length );
754 
755 /// @brief Return status string message.
756 ///
757 /// You MUST call ::HAPI_GetStatusStringBufLength() before calling
758 /// ::HAPI_GetStatusString() because ::HAPI_GetStatusString() will
759 /// not return the real status string and instead return a
760 /// cached version of the string that was created inside
761 /// ::HAPI_GetStatusStringBufLength(). The reason for this is that
762 /// the length of the real status string may change between
763 /// the call to ::HAPI_GetStatusStringBufLength() and the call to
764 /// ::HAPI_GetStatusString().
765 ///
766 /// @ingroup Status
767 ///
768 /// @param[in] session
769 /// The session of Houdini you are interacting with.
770 /// See @ref HAPI_Sessions for more on sessions.
771 /// Pass NULL to just use the default in-process session.
772 /// <!-- default NULL -->
773 ///
774 /// @param[in] status_type
775 /// One of ::HAPI_StatusType.
776 ///
777 /// @param[out] string_value
778 /// Buffer char array ready to be filled.
779 /// <!-- sizeparm length -->
780 ///
781 /// @param[in] length
782 /// Length of the string buffer (must match size of
783 /// @p string_value - so including NULL terminator).
784 /// <!-- source ::HAPI_GetStatusStringBufLength -->
785 ///
787  HAPI_StatusType status_type,
788  char * string_value,
789  int length );
790 
791 /// @brief Compose the cook result string (errors and warnings) of a
792 /// specific node.
793 ///
794 /// This will actually parse the node network inside the given
795 /// node and return ALL errors/warnings/messages of all child nodes,
796 /// combined into a single string. If you'd like a more narrowed
797 /// search, call this function on one of the child nodes.
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[in] node_id
818 /// The node id.
819 ///
820 /// @param[in] verbosity
821 /// Preferred verbosity level.
822 ///
823 /// @param[out] buffer_length
824 /// Length of buffer char array ready to be filled.
825 ///
827  HAPI_NodeId node_id,
828  HAPI_StatusVerbosity verbosity,
829  int * buffer_length );
830 
831 /// @brief Return cook result string message on a single node.
832 ///
833 /// You MUST call ::HAPI_ComposeNodeCookResult() before calling
834 /// ::HAPI_GetComposedNodeCookResult() because
835 /// ::HAPI_GetComposedNodeCookResult() will
836 /// not return the real result string and instead return a
837 /// cached version of the string that was created inside
838 /// ::HAPI_ComposeNodeCookResult(). The reason for this is that
839 /// the length of the real status string may change between
840 /// the call to ::HAPI_ComposeNodeCookResult() and the call to
841 /// ::HAPI_GetComposedNodeCookResult().
842 ///
843 /// @ingroup Status
844 ///
845 /// @param[in] session
846 /// The session of Houdini you are interacting with.
847 /// See @ref HAPI_Sessions for more on sessions.
848 /// Pass NULL to just use the default in-process session.
849 /// <!-- default NULL -->
850 ///
851 /// @param[out] string_value
852 /// Buffer char array ready to be filled.
853 /// <!-- sizeparm length -->
854 ///
855 /// @param[in] length
856 /// Length of the string buffer (must match size of
857 /// @p string_value - so including NULL terminator).
858 /// <!-- source ::HAPI_ComposeNodeCookResult -->
859 ///
861  char * string_value,
862  int length );
863 
864 /// @brief Gets the length of the cook result string (errors and warnings) of
865 /// a specific node.
866 ///
867 /// Unlike ::HAPI_ComposeNodeCookResult(), this node does not parse
868 /// inside the node network. Only errors, warnings, and messages that
869 /// appear on the specified node will be a part of the cook result
870 /// string.
871 ///
872 /// You MUST call ::HAPI_GetNodeCookResultLength() before calling
873 /// ::HAPI_GetNodeCookResult() because ::HAPI_GetNodeCookResult() will
874 /// not return the real result and instead returns a cached version of
875 /// the string that was created during the call to
876 /// ::HAPI_GetNodeCookResultLength(). The reason for this is that the
877 /// length of the real status string may change between the call to
878 /// ::HAPI_GetNodeCookResultLength() and ::HAPI_GetNodeCookResult().
879 ///
880 /// @ingroup Status
881 ///
882 /// @param[in] session
883 /// The session of Houdini you are interacting with.
884 /// See @ref HAPI_Sessions for more on sessions.
885 /// Pass NULL to just use the default in-process session.
886 /// <!-- default NULL -->
887 ///
888 /// @param[in] node_id
889 /// The node id.
890 ///
891 /// @param[in] verbosity
892 /// Preferred verbosity level.
893 ///
894 /// @param[out] buffer_length
895 /// Lenght of buffer char array ready to be filled.
896 ///
898  HAPI_NodeId node_id,
899  HAPI_StatusVerbosity verbosity,
900  int * buffer_length );
901 
902 /// @brief Return the cook result string that was composed during a call to
903 /// ::HAPI_GetNodeCookResultLength().
904 ///
905 /// You MUST call ::HAPI_GetNodeCookResultLength() before calling
906 /// ::HAPI_GetNodeCookResult() because ::HAPI_GetNodeCookResult() will
907 /// not return the real result and instead returns a cached version of
908 /// the string that was created during the call to
909 /// ::HAPI_GetNodeCookResultLength(). The reason for this is that the
910 /// length of the real status string may change between the call to
911 /// ::HAPI_GetNodeCookResultLength() and ::HAPI_GetNodeCookResult().
912 ///
913 /// @ingroup Status
914 ///
915 /// @param[in] session
916 /// The session of Houdini you are interacting with.
917 /// See @ref HAPI_Sessions for more on sessions.
918 /// Pass NULL to just use the default in-process session.
919 /// <!-- default NULL -->
920 ///
921 /// @param[out] string_value
922 /// Buffer char array that will be filled with the cook result
923 /// string.
924 /// <!-- sizeparm length -->
925 ///
926 /// @param[in] length
927 /// Length of the char buffer (must match size of
928 /// @p string_value - so include NULL terminator).
929 /// <!-- source ::HAPI_GetNodeCookResultLength -->
930 ///
932  char * string_value,
933  int length );
934 
935 /// @brief Get the number of message nodes set in "Type Properties".
936 ///
937 /// @ingroup Status
938 ///
939 /// @param[in] session
940 /// The session of Houdini you are interacting with.
941 /// See @ref HAPI_Sessions for more on sessions.
942 /// Pass NULL to just use the default in-process session.
943 /// <!-- default NULL -->
944 ///
945 /// @param[in] node_id
946 /// The node id.
947 ///
948 /// @param[out] count
949 /// The number of message nodes.
950 ///
952  HAPI_NodeId node_id,
953  int * count );
954 
955 /// @brief Get the ids of message nodes set in the "Type Properties".
956 ///
957 /// @ingroup Status
958 ///
959 /// @param[in] session
960 /// The session of Houdini you are interacting with.
961 /// See @ref HAPI_Sessions for more on sessions.
962 /// Pass NULL to just use the default in-process session.
963 /// <!-- default NULL -->
964 ///
965 /// @param[in] node_id
966 /// The node id.
967 ///
968 /// @param[out] message_node_ids_array
969 /// The array of node IDs to be filled.
970 /// <!-- sizeparm count -->
971 ///
972 /// @param[in] count
973 /// The number of message nodes.
974 ///
976  HAPI_NodeId node_id,
977  HAPI_NodeId * message_node_ids_array,
978  int count );
979 
980 /// @brief Recursively check for specific errors by error code on a node.
981 ///
982 /// Note that checking for errors can be expensive because it checks
983 /// ALL child nodes within a node and then tries to do a string match
984 /// for the errors being looked for. This is why such error checking
985 /// is part of a standalone function and not done during the cooking
986 /// step.
987 ///
988 /// @ingroup Status
989 ///
990 /// @param[in] session
991 /// The session of Houdini you are interacting with.
992 /// See @ref HAPI_Sessions for more on sessions.
993 /// Pass NULL to just use the default in-process session.
994 /// <!-- default NULL -->
995 ///
996 /// @param[in] node_id
997 /// The node id.
998 ///
999 /// @param[in] errors_to_look_for
1000 /// The HAPI_ErrorCode error codes (as a bitfield) to look for.
1001 ///
1002 /// @param[out] errors_found
1003 /// Returned HAPI_ErrorCode bitfield indicating which of the
1004 /// looked for errors have been found.
1005 ///
1007  HAPI_NodeId node_id,
1008  HAPI_ErrorCodeBits errors_to_look_for,
1009  HAPI_ErrorCodeBits * errors_found );
1010 
1011 /// @brief Clears the connection error. Should be used before starting
1012 /// or creating Thrift server.
1013 ///
1014 /// Only available when using Thrift connections.
1015 ///
1016 /// @ingroup Status
1017 ///
1019 
1020 /// @brief Return the length of string buffer storing connection error
1021 /// message.
1022 ///
1023 /// @ingroup Status
1024 ///
1025 /// Only available when using Thrift connections.
1026 ///
1027 /// @param[out] buffer_length
1028 /// Length of buffer char array ready to be filled.
1029 ///
1030 HAPI_DECL HAPI_GetConnectionErrorLength( int * buffer_length );
1031 
1032 /// @brief Return the connection error message.
1033 ///
1034 /// You MUST call ::HAPI_GetConnectionErrorLength() before calling
1035 /// this to get the correct string length.
1036 ///
1037 /// Only available when using Thrift connections.
1038 ///
1039 /// @ingroup Status
1040 ///
1041 /// @param[out] string_value
1042 /// Buffer char array ready to be filled.
1043 /// <!-- sizeparm length -->
1044 ///
1045 /// @param[in] length
1046 /// Length of the string buffer (must match size of
1047 /// string_value - so including NULL terminator).
1048 /// Use ::HAPI_GetConnectionErrorLength to get this length.
1049 ///
1050 /// @param[in] clear
1051 /// If true, will clear the error when HAPI_RESULT_SUCCESS
1052 /// is returned.
1053 ///
1054 HAPI_DECL HAPI_GetConnectionError( char * string_value,
1055  int length,
1056  HAPI_Bool clear );
1057 
1058 /// @brief Get total number of nodes that need to cook in the current
1059 /// session.
1060 ///
1061 /// @ingroup Status
1062 ///
1063 /// @param[in] session
1064 /// The session of Houdini you are interacting with.
1065 /// See @ref HAPI_Sessions for more on sessions.
1066 /// Pass NULL to just use the default in-process session.
1067 /// <!-- default NULL -->
1068 ///
1069 /// @param[out] count
1070 /// Total cook count.
1071 ///
1073  int * count );
1074 
1075 /// @brief Get current number of nodes that have already cooked in the
1076 /// current session. Note that this is a very crude approximation
1077 /// of the cooking progress - it may never make it to 100% or it
1078 /// might spend another hour at 100%. Use ::HAPI_GetStatusString
1079 /// to get a better idea of progress if this number gets stuck.
1080 ///
1081 /// @ingroup Status
1082 ///
1083 /// @param[in] session
1084 /// The session of Houdini you are interacting with.
1085 /// See @ref HAPI_Sessions for more on sessions.
1086 /// Pass NULL to just use the default in-process session.
1087 /// <!-- default NULL -->
1088 ///
1089 /// @param[out] count
1090 /// Current cook count.
1091 ///
1093  int * count );
1094 
1095 /// @brief Interrupt a cook or load operation.
1096 ///
1097 /// @ingroup Status
1098 ///
1099 /// @param[in] session
1100 /// The session of Houdini you are interacting with.
1101 /// See @ref HAPI_Sessions for more on sessions.
1102 /// Pass NULL to just use the default in-process session.
1103 /// <!-- default NULL -->
1104 ///
1105 HAPI_DECL HAPI_Interrupt( const HAPI_Session * session );
1106 
1107 /// @defgroup Utility
1108 /// Utility math and other functions
1109 
1110 /// @brief Converts the transform described by a ::HAPI_TransformEuler
1111 /// struct into a different transform and rotation order.
1112 ///
1113 /// @ingroup Utility
1114 ///
1115 /// @param[in] session
1116 /// The session of Houdini you are interacting with.
1117 /// See @ref HAPI_Sessions for more on sessions.
1118 /// Pass NULL to just use the default in-process session.
1119 /// <!-- default NULL -->
1120 ///
1121 /// @param[in] transform_in
1122 /// The transform to be converted.
1123 ///
1124 /// @param[in] rst_order
1125 /// The desired transform order of the output.
1126 ///
1127 /// @param[in] rot_order
1128 /// The desired rotation order of the output.
1129 ///
1130 /// @param[out] transform_out
1131 /// The converted transform.
1132 ///
1134  const HAPI_TransformEuler * transform_in,
1135  HAPI_RSTOrder rst_order,
1136  HAPI_XYZOrder rot_order,
1137  HAPI_TransformEuler * transform_out );
1138 
1139 /// @brief Converts a 4x4 matrix into its TRS form.
1140 ///
1141 /// @ingroup Utility
1142 ///
1143 /// @param[in] session
1144 /// The session of Houdini you are interacting with.
1145 /// See @ref HAPI_Sessions for more on sessions.
1146 /// Pass NULL to just use the default in-process session.
1147 /// <!-- default NULL -->
1148 ///
1149 /// @param[in] matrix
1150 /// A 4x4 matrix expressed in a 16 element float array.
1151 ///
1152 /// @param[in] rst_order
1153 /// The desired transform order of the output.
1154 ///
1155 /// @param[out] transform_out
1156 /// Used for the output.
1157 ///
1159  const float * matrix,
1160  HAPI_RSTOrder rst_order,
1161  HAPI_Transform * transform_out );
1162 
1163 /// @brief Converts a 4x4 matrix into its TRS form.
1164 ///
1165 /// @ingroup Utility
1166 ///
1167 /// @param[in] session
1168 /// The session of Houdini you are interacting with.
1169 /// See @ref HAPI_Sessions for more on sessions.
1170 /// Pass NULL to just use the default in-process session.
1171 /// <!-- default NULL -->
1172 ///
1173 /// @param[in] matrix
1174 /// A 4x4 matrix expressed in a 16 element float array.
1175 ///
1176 /// @param[in] rst_order
1177 /// The desired transform order of the output.
1178 ///
1179 /// @param[in] rot_order
1180 /// The desired rotation order of the output.
1181 ///
1182 /// @param[out] transform_out
1183 /// Used for the output.
1184 ///
1186  const float * matrix,
1187  HAPI_RSTOrder rst_order,
1188  HAPI_XYZOrder rot_order,
1189  HAPI_TransformEuler * transform_out );
1190 
1191 /// @brief Converts ::HAPI_Transform into a 4x4 transform matrix.
1192 ///
1193 /// @ingroup Utility
1194 ///
1195 /// @param[in] session
1196 /// The session of Houdini you are interacting with.
1197 /// See @ref HAPI_Sessions for more on sessions.
1198 /// Pass NULL to just use the default in-process session.
1199 /// <!-- default NULL -->
1200 ///
1201 /// @param[in] transform
1202 /// The ::HAPI_Transform you wish to convert.
1203 ///
1204 /// @param[out] matrix
1205 /// A 16 element float array that will contain the result.
1206 ///
1208  const HAPI_Transform * transform,
1209  float * matrix );
1210 
1211 /// @brief Converts ::HAPI_TransformEuler into a 4x4 transform matrix.
1212 ///
1213 /// @ingroup Utility
1214 ///
1215 /// @param[in] session
1216 /// The session of Houdini you are interacting with.
1217 /// See @ref HAPI_Sessions for more on sessions.
1218 /// Pass NULL to just use the default in-process session.
1219 /// <!-- default NULL -->
1220 ///
1221 /// @param[in] transform
1222 /// The ::HAPI_TransformEuler you wish to convert.
1223 ///
1224 /// @param[out] matrix
1225 /// A 16 element float array that will contain the result.
1226 ///
1228  const HAPI_Session * session,
1229  const HAPI_TransformEuler * transform,
1230  float * matrix );
1231 
1232 /// @brief Acquires or releases the Python interpreter lock. This is
1233 /// needed if HAPI is called from Python and HAPI is in threaded
1234 /// mode (see ::HAPI_Initialize()).
1235 ///
1236 /// The problem arises when async functions like
1237 /// ::HAPI_CreateNode() may start a cooking thread that
1238 /// may try to run Python code. That is, we would now have
1239 /// Python running on two different threads - something not
1240 /// allowed by Python by default.
1241 ///
1242 /// We need to tell Python to explicitly "pause" the Python state
1243 /// on the client thread while we run Python in our cooking thread.
1244 ///
1245 /// You must call this function first with locked == true before
1246 /// any async HAPI call. Then, after the async call finished,
1247 /// detected via calls to ::HAPI_GetStatus(), call this method
1248 /// again to release the lock with locked == false.
1249 ///
1250 /// @ingroup Utility
1251 ///
1252 /// @param[in] session
1253 /// The session of Houdini you are interacting with.
1254 /// See @ref HAPI_Sessions for more on sessions.
1255 /// Pass NULL to just use the default in-process session.
1256 /// <!-- default NULL -->
1257 ///
1258 /// @param[in] locked
1259 /// True will acquire the interpreter lock to use it for
1260 /// the HAPI cooking thread. False will release the lock
1261 /// back to the client thread.
1262 ///
1264  HAPI_Bool locked );
1265 
1266 /// @defgroup Strings
1267 /// Functions for handling strings.
1268 
1269 /// @brief Gives back the string length of the string with the
1270 /// given handle.
1271 ///
1272 /// @ingroup Strings
1273 ///
1274 /// @param[in] session
1275 /// The session of Houdini you are interacting with.
1276 /// See @ref HAPI_Sessions for more on sessions.
1277 /// Pass NULL to just use the default in-process session.
1278 /// <!-- default NULL -->
1279 ///
1280 /// @param[in] string_handle
1281 /// Handle of the string to query.
1282 ///
1283 /// @param[out] buffer_length
1284 /// Buffer length of the queried string (including NULL
1285 /// terminator).
1286 ///
1288  HAPI_StringHandle string_handle,
1289  int * buffer_length );
1290 
1291 /// @brief Gives back the string value of the string with the
1292 /// given handle.
1293 ///
1294 /// @ingroup Strings
1295 ///
1296 /// @param[in] session
1297 /// The session of Houdini you are interacting with.
1298 /// See @ref HAPI_Sessions for more on sessions.
1299 /// Pass NULL to just use the default in-process session.
1300 /// <!-- default NULL -->
1301 ///
1302 /// @param[in] string_handle
1303 /// Handle of the string to query.
1304 ///
1305 /// @param[out] string_value
1306 /// Actual string value (character array).
1307 /// <!-- sizeparm length -->
1308 ///
1309 /// @param[in] length
1310 /// Length of the string buffer (must match size of
1311 /// @p string_value - so including NULL terminator).
1312 ///
1313 HAPI_DECL HAPI_GetString( const HAPI_Session * session,
1314  HAPI_StringHandle string_handle,
1315  char * string_value,
1316  int length );
1317 
1318 /// @brief Adds the given string to the string table and returns
1319 /// the handle. It is the responsibility of the caller to
1320 /// manage access to the string. The intended use for custom strings
1321 /// is to allow structs that reference strings to be passed in to HAPI
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_value
1332 /// Actual string value (character array).
1333 /// <!-- string -->
1334 ///
1335 /// @param[out] handle_value
1336 /// Handle of the string that was added
1337 ///
1339  const char * string_value,
1340  HAPI_StringHandle * handle_value );
1341 
1342 /// @brief Removes the specified string from the server
1343 /// and invalidates the handle
1344 ///
1345 /// @ingroup Strings
1346 ///
1347 /// @param[in] session
1348 /// The session of Houdini you are interacting with.
1349 /// See @ref HAPI_Sessions for more on sessions.
1350 /// Pass NULL to just use the default in-process session.
1351 /// <!-- default NULL -->
1352 ///
1353 /// @param[in] string_handle
1354 /// Handle of the string that was added
1355 ///
1357  const HAPI_StringHandle string_handle );
1358 
1359 /// @brief Gives back the length of the buffer needed to hold
1360 /// all the values null-separated for the given string
1361 /// handles. Used with ::HAPI_GetStringBatch().
1362 ///
1363 /// @ingroup Strings
1364 ///
1365 /// @param[in] session
1366 /// The session of Houdini you are interacting with.
1367 /// See @ref HAPI_Sessions for more on sessions.
1368 /// Pass NULL to just use the default in-process session.
1369 /// <!-- default NULL -->
1370 ///
1371 /// @param[in] string_handle_array
1372 /// Array of string handles to be read.
1373 /// <!-- sizeparm string_handle_count -->
1374 ///
1375 /// @param[in] string_handle_count
1376 /// Length of @p string_handle_array
1377 ///
1378 /// @param[out] string_buffer_size
1379 /// Buffer length required for subsequent call to
1380 /// HAPI_GetStringBatch to hold all the given
1381 /// string values null-terminated
1382 ///
1384  const int * string_handle_array,
1385  int string_handle_count,
1386  int * string_buffer_size );
1387 
1388 /// @brief Gives back the values of the given string handles.
1389 /// The given char array is filled with null-separated
1390 /// values, and the final value is null-terminated.
1391 /// Used with ::HAPI_GetStringBatchSize(). Using this function
1392 /// instead of repeated calls to ::HAPI_GetString() can be more
1393 /// more efficient for a large number of strings.
1394 ///
1395 /// @ingroup Strings
1396 ///
1397 /// @param[in] session
1398 /// The session of Houdini you are interacting with.
1399 /// See @ref HAPI_Sessions for more on sessions.
1400 /// Pass NULL to just use the default in-process session.
1401 /// <!-- default NULL -->
1402 ///
1403 /// @param[out] char_buffer
1404 /// Array of characters to hold string values.
1405 /// <!-- sizeparm char_array_length -->
1406 ///
1407 /// @param[in] char_array_length
1408 /// Length of @p char_array. Must be large enough to hold
1409 /// all the string values including null separators.
1410 /// <!-- min ::HAPI_GetStringBatchSize -->
1411 /// <!-- source ::HAPI_GetStringBatchSize -->
1412 ///
1413 HAPI_DECL HAPI_GetStringBatch( const HAPI_Session * session,
1414  char * char_buffer,
1415  int char_array_length );
1416 
1417 
1418 /// @defgroup Time
1419 /// Time related functions
1420 
1421 /// @brief Gets the global time of the scene. All API calls deal with
1422 /// this time to cook.
1423 ///
1424 /// @ingroup Time
1425 ///
1426 /// @param[in] session
1427 /// The session of Houdini you are interacting with.
1428 /// See @ref HAPI_Sessions for more on sessions.
1429 /// Pass NULL to just use the default in-process session.
1430 /// <!-- default NULL -->
1431 ///
1432 /// @param[out] time
1433 /// Time as a double in seconds.
1434 ///
1435 HAPI_DECL HAPI_GetTime( const HAPI_Session * session, double * time );
1436 
1437 /// @brief Sets the global time of the scene. All API calls will deal
1438 /// with this time to cook.
1439 ///
1440 /// @ingroup Time
1441 ///
1442 /// @param[in] session
1443 /// The session of Houdini you are interacting with.
1444 /// See @ref HAPI_Sessions for more on sessions.
1445 /// Pass NULL to just use the default in-process session.
1446 /// <!-- default NULL -->
1447 ///
1448 /// @param[in] time
1449 /// Time as a double in seconds.
1450 ///
1451 HAPI_DECL HAPI_SetTime( const HAPI_Session * session, double time );
1452 
1453 /// @brief Returns whether the Houdini session will use the current time in
1454 /// Houdini when cooking and retrieving data. By default this is
1455 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1456 /// In SessionSync, it is enabled by default, but can be overridden.
1457 /// Note that this function will ALWAYS return
1458 /// ::HAPI_RESULT_SUCCESS.
1459 ///
1460 /// @ingroup Time
1461 ///
1462 /// @param[in] session
1463 /// The session of Houdini you are interacting with.
1464 /// See @ref HAPI_Sessions for more on sessions.
1465 /// Pass NULL to just use the default in-process session.
1466 /// <!-- default NULL -->
1467 ///
1468 /// @param[out] enabled
1469 /// Whether use Houdini time is enabled or not.
1470 ///
1472  HAPI_Bool * enabled );
1473 
1474 /// @brief Sets whether the Houdini session should use the current time in
1475 /// Houdini when cooking and retrieving data. By default this is
1476 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1477 /// In SessionSync, it is enabled by default, but can be overridden.
1478 /// Note that this function will ALWAYS return
1479 /// ::HAPI_RESULT_SUCCESS.
1480 ///
1481 /// @ingroup Time
1482 ///
1483 /// @param[in] session
1484 /// The session of Houdini you are interacting with.
1485 /// See @ref HAPI_Sessions for more on sessions.
1486 /// Pass NULL to just use the default in-process session.
1487 /// <!-- default NULL -->
1488 ///
1489 /// @param[in] enabled
1490 /// Set to true to use Houdini time.
1491 ///
1493  HAPI_Bool enabled );
1494 
1495 /// @brief Gets the current global timeline options.
1496 ///
1497 /// @ingroup Time
1498 ///
1499 /// @param[in] session
1500 /// The session of Houdini you are interacting with.
1501 /// See @ref HAPI_Sessions for more on sessions.
1502 /// Pass NULL to just use the default in-process session.
1503 /// <!-- default NULL -->
1504 ///
1505 /// @param[out] timeline_options
1506 /// The global timeline options struct.
1507 ///
1509  HAPI_TimelineOptions * timeline_options );
1510 
1511 /// @brief Sets the global timeline options.
1512 ///
1513 /// @ingroup Time
1514 ///
1515 /// @param[in] session
1516 /// The session of Houdini you are interacting with.
1517 /// See @ref HAPI_Sessions for more on sessions.
1518 /// Pass NULL to just use the default in-process session.
1519 /// <!-- default NULL -->
1520 ///
1521 /// @param[in] timeline_options
1522 /// The global timeline options struct.
1523 ///
1525  const HAPI_Session * session,
1526  const HAPI_TimelineOptions * timeline_options );
1527 
1528 /// @brief Gets the global compositor options.
1529 ///
1530 /// @param[in] session
1531 /// The session of Houdini you are interacting with.
1532 /// See @ref HAPI_Sessions for more on sessions.
1533 /// Pass NULL to just use the default in-process session.
1534 /// <!-- default NULL -->
1535 ///
1536 /// @param[out] compositor_options
1537 /// The compositor options struct.
1538 ///
1540  const HAPI_Session * session,
1541  HAPI_CompositorOptions * compositor_options);
1542 
1543 /// @brief Sets the global compositor options.
1544 ///
1545 /// @param[in] session
1546 /// The session of Houdini you are interacting with.
1547 /// See @ref HAPI_Sessions for more on sessions.
1548 /// Pass NULL to just use the default in-process session.
1549 /// <!-- default NULL -->
1550 ///
1551 /// @param[in] compositor_options
1552 /// The compositor options.
1553 ///
1555  const HAPI_Session * session,
1556  const HAPI_CompositorOptions * compositor_options);
1557 
1558 /// @defgroup Assets
1559 /// Functions for managing asset libraries
1560 
1561 /// @brief Loads a Houdini asset library (OTL) from a .otl file.
1562 /// It does NOT create anything inside the Houdini scene.
1563 ///
1564 /// @note This is when we actually check for valid licenses.
1565 ///
1566 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1567 /// to get the number of assets contained in the library using the
1568 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1569 /// to get the list of available assets by name. Use the asset
1570 /// names with ::HAPI_CreateNode() to actually create
1571 /// one of these nodes in the Houdini scene and get back
1572 /// an asset_id.
1573 ///
1574 /// @note The HIP file saved using ::HAPI_SaveHIPFile() will only
1575 /// have an absolute path reference to the loaded OTL meaning
1576 /// that if the OTL is moved or renamed the HIP file won't
1577 /// load properly. It also means that if you change the OTL
1578 /// using the saved HIP scene the same OTL file will change
1579 /// as the one used with Houdini Engine.
1580 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1581 ///
1582 /// @ingroup Assets
1583 ///
1584 /// @param[in] session
1585 /// The session of Houdini you are interacting with.
1586 /// See @ref HAPI_Sessions for more on sessions.
1587 /// Pass NULL to just use the default in-process session.
1588 /// <!-- default NULL -->
1589 ///
1590 /// @param[in] file_path
1591 /// Absolute path to the .otl file.
1592 /// <!-- string -->
1593 ///
1594 /// @param[in] allow_overwrite
1595 /// With this true, if the library file being loaded
1596 /// contains asset definitions that have already been
1597 /// loaded they will overwrite the existing definitions.
1598 /// Otherwise, a library containing asset definitions that
1599 /// already exist will fail to load, returning a
1600 /// ::HAPI_Result of
1601 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1602 ///
1603 /// @param[out] library_id
1604 /// Newly loaded otl id to be used with
1605 /// ::HAPI_GetAvailableAssetCount() and
1606 /// ::HAPI_GetAvailableAssets().
1607 ///
1609  const char * file_path,
1610  HAPI_Bool allow_overwrite,
1611  HAPI_AssetLibraryId * library_id );
1612 
1613 /// @brief Loads a Houdini asset library (OTL) from memory.
1614 /// It does NOT create anything inside the Houdini scene.
1615 ///
1616 /// @note This is when we actually check for valid licenses.
1617 ///
1618 /// Please note that the performance benefit of loading a library
1619 /// from memory are negligible at best. Due to limitations of
1620 /// Houdini's library manager, there is still some disk access
1621 /// and file writes because every asset library needs to be
1622 /// saved to a real file. Use this function only as a convenience
1623 /// if you already have the library file in memory and don't wish
1624 /// to have to create your own temporary library file and then
1625 /// call ::HAPI_LoadAssetLibraryFromFile().
1626 ///
1627 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1628 /// to get the number of assets contained in the library using the
1629 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1630 /// to get the list of available assets by name. Use the asset
1631 /// names with ::HAPI_CreateNode() to actually create
1632 /// one of these nodes in the Houdini scene and get back
1633 /// an asset_id.
1634 ///
1635 /// @note The saved HIP file using ::HAPI_SaveHIPFile() will
1636 /// @a contain the OTL loaded as part of its @b Embedded OTLs.
1637 /// This means that you can safely move or rename the original
1638 /// OTL file and the HIP will continue to work but if you make
1639 /// changes to the OTL while using the saved HIP the changes
1640 /// won't be saved to the original OTL.
1641 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1642 ///
1643 /// @ingroup Assets
1644 ///
1645 /// @param[in] session
1646 /// The session of Houdini you are interacting with.
1647 /// See @ref HAPI_Sessions for more on sessions.
1648 /// Pass NULL to just use the default in-process session.
1649 /// <!-- default NULL -->
1650 ///
1651 /// @param[in] library_buffer
1652 /// The memory buffer containing the asset definitions
1653 /// in the same format as a standard Houdini .otl file.
1654 /// <!-- sizeparm library_buffer_length -->
1655 ///
1656 /// @param[in] library_buffer_length
1657 /// The size of the OTL memory buffer.
1658 ///
1659 /// @param[in] allow_overwrite
1660 /// With this true, if the library file being loaded
1661 /// contains asset definitions that have already been
1662 /// loaded they will overwrite the existing definitions.
1663 /// Otherwise, a library containing asset definitions that
1664 /// already exist will fail to load, returning a
1665 /// ::HAPI_Result of
1666 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1667 ///
1668 /// @param[out] library_id
1669 /// Newly loaded otl id to be used with
1670 /// ::HAPI_GetAvailableAssetCount() and
1671 /// ::HAPI_GetAvailableAssets().
1672 ///
1674  const char * library_buffer,
1675  int library_buffer_length,
1676  HAPI_Bool allow_overwrite,
1677  HAPI_AssetLibraryId * library_id );
1678 
1679 /// @brief Get the number of assets contained in an asset library.
1680 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1681 /// get a library_id.
1682 ///
1683 /// @ingroup Assets
1684 ///
1685 /// @param[in] session
1686 /// The session of Houdini you are interacting with.
1687 /// See @ref HAPI_Sessions for more on sessions.
1688 /// Pass NULL to just use the default in-process session.
1689 /// <!-- default NULL -->
1690 ///
1691 /// @param[in] library_id
1692 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1693 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1694 ///
1695 /// @param[out] asset_count
1696 /// The number of assets contained in this asset library.
1697 ///
1699  HAPI_AssetLibraryId library_id,
1700  int * asset_count );
1701 
1702 /// @brief Get the names of the assets contained in an asset library.
1703 ///
1704 /// The asset names will contain additional information about
1705 /// the type of asset, namespace, and version, along with the
1706 /// actual asset name. For example, if you have an Object type
1707 /// asset, in the "hapi" namespace, of version 2.0, named
1708 /// "foo", the asset name returned here will be:
1709 /// hapi::Object/foo::2.0
1710 ///
1711 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1712 /// get a library_id. Then, you should call
1713 /// ::HAPI_GetAvailableAssetCount() to get the number of assets to
1714 /// know how large of a string handles array you need to allocate.
1715 ///
1716 /// @ingroup Assets
1717 ///
1718 /// @param[in] session
1719 /// The session of Houdini you are interacting with.
1720 /// See @ref HAPI_Sessions for more on sessions.
1721 /// Pass NULL to just use the default in-process session.
1722 /// <!-- default NULL -->
1723 ///
1724 /// @param[in] library_id
1725 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1726 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1727 ///
1728 /// @param[out] asset_names_array
1729 /// Array of string handles (integers) that should be
1730 /// at least the size of asset_count.
1731 /// <!-- sizeparm asset_count -->
1732 ///
1733 /// @param[in] asset_count
1734 /// Should be the same or less than the value returned by
1735 /// ::HAPI_GetAvailableAssetCount().
1736 /// <!-- max ::HAPI_GetAvailableAssetCount -->
1737 /// <!-- source ::HAPI_GetAvailableAssetCount -->
1738 ///
1740  HAPI_AssetLibraryId library_id,
1741  HAPI_StringHandle * asset_names_array,
1742  int asset_count );
1743 
1744 /// @brief Fill an asset_info struct from a node.
1745 ///
1746 /// @ingroup Assets
1747 ///
1748 /// @param[in] session
1749 /// The session of Houdini you are interacting with.
1750 /// See @ref HAPI_Sessions for more on sessions.
1751 /// Pass NULL to just use the default in-process session.
1752 /// <!-- default NULL -->
1753 ///
1754 /// @param[in] node_id
1755 /// The node id.
1756 ///
1757 /// @param[out] asset_info
1758 /// Returned ::HAPI_AssetInfo struct.
1759 ///
1760 HAPI_DECL HAPI_GetAssetInfo( const HAPI_Session * session,
1761  HAPI_NodeId node_id,
1762  HAPI_AssetInfo * asset_info );
1763 
1764 /// @brief Get the number of asset parameters contained in an asset
1765 /// library, as well as the number of parameter int, float,
1766 /// string, and choice values.
1767 ///
1768 /// This does not create the asset in the session.
1769 /// Use this for faster querying of asset parameters compared to
1770 /// creating the asset node and querying the node's parameters.
1771 ///
1772 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1773 /// called prior, in order to load the asset library and
1774 /// acquire library_id. Then ::HAPI_GetAvailableAssetCount and
1775 /// ::HAPI_GetAvailableAssets should be called to get the
1776 /// asset_name.
1777 ///
1778 /// @ingroup Assets
1779 ///
1780 /// @param[in] session
1781 /// The session of Houdini you are interacting with.
1782 /// See @ref HAPI_Sessions for more on sessions.
1783 /// Pass NULL to just use the default in-process session.
1784 /// <!-- default NULL -->
1785 ///
1786 /// @param[in] library_id
1787 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1788 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1789 ///
1790 /// @param[in] asset_name
1791 /// Name of the asset to get the parm counts for.
1792 /// <!-- string -->
1793 ///
1794 /// @param[out] parm_count
1795 /// The number of parameters in the asset library.
1796 ///
1797 /// @param[out] int_value_count
1798 /// The number of int values for parameters in the asset
1799 /// library.
1800 ///
1801 /// @param[out] float_value_count
1802 /// The number of float values for parameters in the asset
1803 /// library.
1804 ///
1805 /// @param[out] string_value_count
1806 /// The number of string values for parameters in the asset
1807 /// library.
1808 ///
1809 /// @param[out] choice_value_count
1810 /// The number of choice values for parameters in the asset
1811 /// library.
1812 ///
1814  HAPI_AssetLibraryId library_id,
1815  const char * asset_name,
1816  int * parm_count,
1817  int * int_value_count,
1818  int * float_value_count,
1819  int * string_value_count,
1820  int * choice_value_count );
1821 
1822 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
1823 /// information for the specified asset in the specified asset
1824 /// library.
1825 ///
1826 /// This does not create the asset in the session.
1827 /// Use this for faster querying of asset parameters compared to
1828 /// creating the asset node and querying the node's parameters.
1829 ///
1830 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1831 /// called prior, in order to load the asset library and
1832 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1833 /// be called prior to acquire the count for the size of
1834 /// parm_infos_array.
1835 ///
1836 /// @ingroup Assets
1837 ///
1838 /// @param[in] session
1839 /// The session of Houdini you are interacting with.
1840 /// See @ref HAPI_Sessions for more on sessions.
1841 /// Pass NULL to just use the default in-process session.
1842 /// <!-- default NULL -->
1843 ///
1844 /// @param[in] library_id
1845 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1846 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1847 ///
1848 /// @param[in] asset_name
1849 /// Name of the asset to get the parm counts for.
1850 /// <!-- string -->
1851 ///
1852 /// @param[out] parm_infos_array
1853 /// Array of ::HAPI_ParmInfo at least the size of
1854 /// length.
1855 /// <!-- sizeparm length -->
1856 ///
1857 /// @param[in] start
1858 /// First index of range. Must be at least 0 and at
1859 /// most parm_count - 1 acquired from
1860 /// ::HAPI_GetAssetInfo.
1861 /// <!-- min 0 -->
1862 /// <!-- max ::HAPI_GetAssetInfo::parm_count - 1 -->
1863 /// <!-- default 0 -->
1864 ///
1865 /// @param[in] length
1866 /// Must be at least 1 and at most parm_count - start acquired
1867 /// from ::HAPI_GetAssetInfo
1868 /// <!-- min 1 -->
1869 /// <!-- max ::HAPI_GetAssetInfo::parm_count - start -->
1870 /// <!-- source ::HAPI_GetAssetInfo::parm_count -->
1871 ///
1873  HAPI_AssetLibraryId library_id,
1874  const char * asset_name,
1875  HAPI_ParmInfo * parm_infos_array,
1876  int start,
1877  int length );
1878 
1879 /// @brief Fill arrays of parameter int values, float values, string values,
1880 /// and choice values for parameters in the specified asset in the
1881 /// specified asset library.
1882 ///
1883 /// This does not create the asset in the session.
1884 /// Use this for faster querying of asset parameters compared to
1885 /// creating the asset node and querying the node's parameters.
1886 /// Note that only default values are retrieved.
1887 ///
1888 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1889 /// called prior, in order to load the asset library and
1890 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1891 /// be called prior to acquire the counts for the sizes of
1892 /// the values arrays.
1893 ///
1894 /// @ingroup Assets
1895 ///
1896 /// @param[in] session
1897 /// The session of Houdini you are interacting with.
1898 /// See @ref HAPI_Sessions for more on sessions.
1899 /// Pass NULL to just use the default in-process session.
1900 /// <!-- default NULL -->
1901 ///
1902 /// @param[in] library_id
1903 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1904 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1905 ///
1906 /// @param[in] asset_name
1907 /// Name of the asset to get the parm counts for.
1908 /// <!-- string -->
1909 ///
1910 /// @param[out] int_values_array
1911 /// Array of ints at least the size of int_length.
1912 /// <!-- sizeparm int_length -->
1913 ///
1914 /// @param[in] int_start
1915 /// First index of range for int_values_array. Must be at
1916 /// least 0 and at most int_value_count - 1 acquired from
1917 /// ::HAPI_GetAssetDefinitionParmCounts.
1918 /// <!-- min 0 -->
1919 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - 1 -->
1920 /// <!-- default 0 -->
1921 ///
1922 /// @param[in] int_length
1923 /// Must be at least 0 and at most int_value_count - int_start
1924 /// acquired from ::HAPI_GetAssetDefinitionParmCounts.
1925 /// <!-- min 0 -->
1926 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1927 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1928 ///
1929 /// @param[out] float_values_array
1930 /// Array of floats at least the size of float_length.
1931 /// <!-- sizeparm float_length -->
1932 ///
1933 /// @param[in] float_start
1934 /// First index of range for float_values_array. Must be at
1935 /// least 0 and at most float_value_count - 1 acquired from
1936 /// ::HAPI_GetAssetDefinitionParmCounts.
1937 /// <!-- min 0 -->
1938 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - 1 -->
1939 /// <!-- default 0 -->
1940 ///
1941 /// @param[in] float_length
1942 /// Must be at least 0 and at most float_value_count -
1943 /// float_start acquired from
1944 /// ::HAPI_GetAssetDefinitionParmCounts.
1945 /// <!-- min 0 -->
1946 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1947 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1948 ///
1949 /// @param[in] string_evaluate
1950 /// Whether or not to evaluate the string expressions.
1951 /// For example, the string "$F" would evaluate to the
1952 /// current frame number. So, passing in evaluate = false
1953 /// would give you back the string "$F" and passing
1954 /// in evaluate = true would give you back "1" (assuming
1955 /// the current frame is 1).
1956 /// <!-- default true -->
1957 ///
1958 /// @param[out] string_values_array
1959 /// Array of HAPI_StringHandle at least the size of
1960 /// string_length.
1961 /// <!-- sizeparm string_length -->
1962 ///
1963 /// @param[in] string_start
1964 /// First index of range for string_values_array. Must be at
1965 /// least 0 and at most string_value_count - 1 acquired from
1966 /// ::HAPI_GetAssetDefinitionParmCounts.
1967 /// <!-- min 0 -->
1968 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - 1 -->
1969 /// <!-- default 0 -->
1970 ///
1971 /// @param[in] string_length
1972 /// Must be at least 0 and at most string_value_count -
1973 /// string_start acquired from
1974 /// ::HAPI_GetAssetDefinitionParmCounts.
1975 /// <!-- min 0 -->
1976 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1977 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1978 ///
1979 /// @param[out] choice_values_array
1980 /// Array of ::HAPI_ParmChoiceInfo at least the size of
1981 /// choice_length.
1982 /// <!-- sizeparm choice_length -->
1983 ///
1984 /// @param[in] choice_start
1985 /// First index of range for choice_values_array. Must be at
1986 /// least 0 and at most choice_value_count - 1 acquired from
1987 /// ::HAPI_GetAssetDefinitionParmCounts.
1988 /// <!-- min 0 -->
1989 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - 1 -->
1990 /// <!-- default 0 -->
1991 ///
1992 /// @param[in] choice_length
1993 /// Must be at least 0 and at most choice_value_count -
1994 /// choice_start acquired from
1995 /// ::HAPI_GetAssetDefinitionParmCounts.
1996 /// <!-- min 0 -->
1997 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
1998 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
1999 ///
2001  const HAPI_Session * session,
2002  HAPI_AssetLibraryId library_id,
2003  const char * asset_name,
2004  int * int_values_array,
2005  int int_start,
2006  int int_length,
2007  float * float_values_array,
2008  int float_start,
2009  int float_length,
2010  HAPI_Bool string_evaluate,
2011  HAPI_StringHandle * string_values_array,
2012  int string_start,
2013  int string_length,
2014  HAPI_ParmChoiceInfo * choice_values_array,
2015  int choice_start,
2016  int choice_length );
2017 
2018 /// @brief
2019 ///
2020 /// @ingroup Assets
2021 ///
2022 /// @param[in] session
2023 /// The session of Houdini you are interacting with.
2024 /// See @ref HAPI_Sessions for more on sessions.
2025 /// Pass NULL to just use the default in-process session.
2026 /// <!-- default NULL -->
2027 ///
2028 /// @param[in] library_id
2029 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
2030 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
2031 ///
2032 /// @param[in] asset_name
2033 /// Name of the asset that the parm tag is being retrieved from.
2034 /// <!-- string -->
2035 ///
2036 /// @param[in] parm_id
2037 /// Id of the parm that the tag belongs to.
2038 ///
2039 /// @param[in] tag_index
2040 /// The index of the parm tag to retrieve the name of.
2041 ///
2042 /// @param[out] tag_name
2043 /// The string handle for the specified parm tag's name.
2044 ///
2046  const HAPI_Session * session,
2047  HAPI_AssetLibraryId library_id,
2048  const char * asset_name,
2049  HAPI_ParmId parm_id,
2050  int tag_index,
2051  HAPI_StringHandle * tag_name );
2052 
2053 /// @brief
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[in] library_id
2064 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
2065 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
2066 ///
2067 /// @param[in] asset_name
2068 /// Name of the asset that the parm tag is being retrieved from.
2069 /// <!-- string -->
2070 ///
2071 /// @param[in] parm_id
2072 /// Id of the parm that the tag belongs to.
2073 ///
2074 /// @param[in] tag_name
2075 /// The name of the parm tag to retrieve the value of.
2076 /// <!-- string -->
2077 ///
2078 /// @param[out] tag_value
2079 /// The string handle for the specified parm tag's value.
2080 ///
2082  const HAPI_Session * session,
2083  HAPI_AssetLibraryId library_id,
2084  const char * asset_name,
2085  HAPI_ParmId parm_id,
2086  const char * tag_name,
2087  HAPI_StringHandle * tag_value );
2088 
2089 /// @brief Gets the number of HDAs that have been loaded by Houdini.
2090 ///
2091 /// @note This only includes HDAs that have been loaded from disk.
2092 /// Embedded HDAs will be excluded.
2093 ///
2094 /// @ingroup Assets
2095 ///
2096 /// @param[in] session
2097 /// The session of Houdini you are interacting with.
2098 /// See @ref HAPI_Sessions for more on sessions.
2099 /// Pass NULL to just use the default in-process session.
2100 /// <!-- default NULL -->
2101 ///
2102 /// @param[out] count
2103 /// The returned number of loaded HDAs.
2104 ///
2106  const HAPI_Session * session,
2107  int * count);
2108 
2109 /// @brief Gets the HAPI_AssetLibraryId's for HDAs that are loaded in Houdini.
2110 ///
2111 /// @ingroup Assets
2112 ///
2113 /// @param[in] session
2114 /// The session of Houdini you are interacting with.
2115 /// See @ref HAPI_Sessions for more on sessions.
2116 /// Pass NULL to just use the default in-process session.
2117 /// <!-- default NULL -->
2118 ///
2119 /// @param[out] asset_library_ids_array
2120 /// Array of HAPI_AssetLibraryId's at least the size of length.
2121 /// <!-- sizeparm length -->
2122 ///
2123 /// @param[in] start
2124 /// First index from the list of HAPI_AssetLibraryId's to
2125 /// return. Must be at least 0 and at most count - 1 where count
2126 /// is the value returned by ::HAPI_GetLoadedAssetLibraryCount.
2127 ///
2128 /// @param[in] length
2129 /// The number of HAPI_AssetLibraryId's to return. Must be at
2130 /// least 0 and at most count - start where count is the value
2131 /// returned by HAPI_GetLoadedAssetLibraryCount.
2132 ///
2134  const HAPI_Session * session,
2135  HAPI_AssetLibraryId * asset_library_ids_array,
2136  int start,
2137  int length);
2138 
2139 /// @brief Gets the HAPI_StringHandle for the file path of a loaded asset
2140 /// library.
2141 ///
2142 /// @ingroup Assets
2143 ///
2144 /// @param[in] session
2145 /// The session of Houdini you are interacting with.
2146 /// See @ref HAPI_Sessions for more on sessions.
2147 /// Pass NULL to just use the default in-process session.
2148 ///
2149 /// @param[in] asset_library_id
2150 /// The HAPI_AssetLibraryId of the asset library.
2151 ///
2152 /// @param[out] file_path_sh
2153 /// The returned HAPI_StringHandle of the asset's file path on
2154 /// disk.
2155 ///
2157  const HAPI_Session * session,
2158  HAPI_AssetLibraryId asset_library_id,
2159  HAPI_StringHandle * file_path_sh);
2160 
2161 /// @defgroup HipFiles Hip Files
2162 /// Functions for managing hip files
2163 
2164 /// @brief Loads a .hip file into the main Houdini scene.
2165 ///
2166 /// @note In threaded mode, this is an _async call_!
2167 ///
2168 /// @note This method will load the HIP file into the scene. This means
2169 /// that any registered `hou.hipFile` event callbacks will be triggered
2170 /// with the `hou.hipFileEventType.BeforeMerge` and
2171 /// `hou.hipFileEventType.AfterMerge` events.
2172 ///
2173 /// @note This method loads a HIP file, completely overwriting
2174 /// everything that already exists in the scene. Therefore, any HAPI ids
2175 /// (node ids, part ids, etc.) that were obtained before calling this
2176 /// method will be invalidated.
2177 ///
2178 /// @ingroup HipFiles
2179 ///
2180 /// @param[in] session
2181 /// The session of Houdini you are interacting with.
2182 /// See @ref HAPI_Sessions for more on sessions.
2183 /// Pass NULL to just use the default in-process session.
2184 /// <!-- default NULL -->
2185 ///
2186 /// @param[in] file_name
2187 /// Absolute path to the .hip file to load.
2188 /// <!-- string -->
2189 ///
2190 /// @param[in] cook_on_load
2191 /// Set to true if you wish the nodes to cook as soon
2192 /// as they are created. Otherwise, you will have to
2193 /// call ::HAPI_CookNode() explicitly for each after you
2194 /// call this function.
2195 /// <!-- default false -->
2196 ///
2197 HAPI_DECL HAPI_LoadHIPFile( const HAPI_Session * session,
2198  const char * file_name,
2199  HAPI_Bool cook_on_load );
2200 
2201 /// @brief Loads a .hip file into the main Houdini scene.
2202 ///
2203 /// @note In threaded mode, this is an _async call_!
2204 ///
2205 /// @note This method will merge the HIP file into the scene. This means
2206 /// that any registered `hou.hipFile` event callbacks will be triggered
2207 /// with the `hou.hipFileEventType.BeforeMerge` and
2208 /// `hou.hipFileEventType.AfterMerge` events.
2209 ///
2210 /// @ingroup HipFiles
2211 ///
2212 /// @param[in] session
2213 /// The session of Houdini you are interacting with.
2214 /// See @ref HAPI_Sessions for more on sessions.
2215 /// Pass NULL to just use the default in-process session.
2216 ///
2217 /// @param[in] file_name
2218 /// Absolute path to the .hip file to load.
2219 /// <!-- string -->
2220 ///
2221 /// @param[in] cook_on_load
2222 /// Set to true if you wish the nodes to cook as soon
2223 /// as they are created. Otherwise, you will have to
2224 /// call ::HAPI_CookNode() explicitly for each after you
2225 /// call this function.
2226 ///
2227 /// @param[out] file_id
2228 /// This parameter will be set to the HAPI_HIPFileId of the
2229 /// loaded HIP file. This can be used to lookup nodes that were
2230 /// created as a result of loading this HIP file.
2231 ///
2232 HAPI_DECL HAPI_MergeHIPFile(const HAPI_Session * session,
2233  const char * file_name,
2234  HAPI_Bool cook_on_load,
2235  HAPI_HIPFileId * file_id);
2236 
2237 /// @brief Saves a .hip file of the current Houdini scene.
2238 ///
2239 /// @ingroup HipFiles
2240 ///
2241 /// @param[in] session
2242 /// The session of Houdini you are interacting with.
2243 /// See @ref HAPI_Sessions for more on sessions.
2244 /// Pass NULL to just use the default in-process session.
2245 /// <!-- default NULL -->
2246 ///
2247 /// @param[in] file_path
2248 /// Absolute path to the .hip file to save to.
2249 /// <!-- string -->
2250 ///
2251 /// @param[in] lock_nodes
2252 /// Specify whether to lock all SOP nodes before saving
2253 /// the scene file. This way, when you load the scene
2254 /// file you can see exactly the state of each SOP at
2255 /// the time it was saved instead of relying on the
2256 /// re-cook to accurately reproduce the state. It does,
2257 /// however, take a lot more space and time locking all
2258 /// nodes like this.
2259 /// <!-- default false -->
2260 ///
2261 HAPI_DECL HAPI_SaveHIPFile( const HAPI_Session * session,
2262  const char * file_path,
2263  HAPI_Bool lock_nodes );
2264 
2265 /// @brief Gets the number of nodes that were created as a result of loading a
2266 /// .hip file
2267 ///
2268 /// @ingroup HipFiles
2269 ///
2270 /// @param[in] session
2271 /// The session of Houdini you are interacting with.
2272 /// See @ref HAPI_Sessions for more on sessions.
2273 /// Pass NULL to just use the default in-process session.
2274 ///
2275 /// @param[in] id
2276 /// The HIP file id.
2277 ///
2278 /// @param[out] count
2279 /// Pointer to an int where the HIP file node count will be
2280 /// stored.
2282  HAPI_HIPFileId id,
2283  int * count);
2284 
2285 /// @brief Fills an array of ::HAPI_NodeId of nodes that were created as a
2286 /// result of loading the HIP file specified by the ::HAPI_HIPFileId
2287 ///
2288 /// @ingroup HipFiles
2289 ///
2290 /// @param[in] session
2291 /// The session of Houdini you are interacting with.
2292 /// See @ref HAPI_Sessions for more on sessions.
2293 /// Pass NULL to just use the default in-process session.
2294 ///
2295 /// @param[in] id
2296 /// The HIP file id.
2297 ///
2298 /// @param[out] node_ids
2299 /// Array of ::HAPI_NodeId at least the size of length.
2300 /// <!-- sizeparm length -->
2301 ///
2302 /// @param[in] length
2303 /// The number of ::HAPI_NodeId to be stored. This should be at
2304 /// least 0 and at most the count provided by
2305 /// HAPI_GetHIPFileNodeCount
2307  HAPI_HIPFileId id,
2308  HAPI_NodeId * node_ids,
2309  int length);
2310 
2311 /// @defgroup Nodes
2312 /// Functions for working with nodes
2313 
2314 /// @brief Determine if your instance of the node actually still exists
2315 /// inside the Houdini scene. This is what can be used to
2316 /// determine when the Houdini scene needs to be re-populated
2317 /// using the host application's instances of the nodes.
2318 /// Note that this function will ALWAYS return
2319 /// ::HAPI_RESULT_SUCCESS.
2320 ///
2321 /// @ingroup Nodes
2322 ///
2323 /// @param[in] session
2324 /// The session of Houdini you are interacting with.
2325 /// See @ref HAPI_Sessions for more on sessions.
2326 /// Pass NULL to just use the default in-process session.
2327 /// <!-- default NULL -->
2328 ///
2329 /// @param[in] node_id
2330 /// The node id.
2331 ///
2332 /// @param[in] unique_node_id
2333 /// The unique node id from
2334 /// ::HAPI_NodeInfo::uniqueHoudiniNodeId.
2335 /// <!-- source ::HAPI_NodeInfo::uniqueHoudiniNodeId -->
2336 ///
2337 /// @param[out] answer
2338 /// Answer to the question.
2339 ///
2340 HAPI_DECL HAPI_IsNodeValid( const HAPI_Session * session,
2341  HAPI_NodeId node_id,
2342  int unique_node_id,
2343  HAPI_Bool * answer );
2344 
2345 /// @brief Fill an ::HAPI_NodeInfo struct.
2346 ///
2347 /// @ingroup Nodes
2348 ///
2349 /// @param[in] session
2350 /// The session of Houdini you are interacting with.
2351 /// See @ref HAPI_Sessions for more on sessions.
2352 /// Pass NULL to just use the default in-process session.
2353 /// <!-- default NULL -->
2354 ///
2355 /// @param[in] node_id
2356 /// The node id.
2357 ///
2358 /// @param[out] node_info
2359 /// Return value - contains things like asset id.
2360 ///
2361 HAPI_DECL HAPI_GetNodeInfo( const HAPI_Session * session,
2362  HAPI_NodeId node_id,
2363  HAPI_NodeInfo * node_info );
2364 
2365 /// @brief Get the node absolute path in the Houdini node network or a
2366 /// relative path any other node.
2367 ///
2368 /// @ingroup Nodes
2369 ///
2370 /// @param[in] session
2371 /// The session of Houdini you are interacting with.
2372 /// See @ref HAPI_Sessions for more on sessions.
2373 /// Pass NULL to just use the default in-process session.
2374 /// <!-- default NULL -->
2375 ///
2376 /// @param[in] node_id
2377 /// The node id.
2378 ///
2379 /// @param[in] relative_to_node_id
2380 /// Set this to -1 to get the absolute path of the node_id.
2381 /// Otherwise, the path will be relative to this node id.
2382 ///
2383 /// @param[out] path
2384 /// The returned path string, valid until the next call to
2385 /// this function.
2386 ///
2387 HAPI_DECL HAPI_GetNodePath( const HAPI_Session * session,
2388  HAPI_NodeId node_id,
2389  HAPI_NodeId relative_to_node_id,
2390  HAPI_StringHandle * path );
2391 
2392 /// @brief Get the root node of a particular network type (ie. OBJ).
2393 ///
2394 /// @ingroup Nodes
2395 ///
2396 /// @param[in] session
2397 /// The session of Houdini you are interacting with.
2398 /// See @ref HAPI_Sessions for more on sessions.
2399 /// Pass NULL to just use the default in-process session.
2400 /// <!-- default NULL -->
2401 ///
2402 /// @param[in] node_type
2403 /// The node network type.
2404 ///
2405 /// @param[out] node_id
2406 /// The node id of the root node network.
2407 ///
2409  HAPI_NodeType node_type,
2410  HAPI_NodeId * node_id );
2411 
2412 /// @brief Compose a list of child nodes based on given filters.
2413 ///
2414 /// This function will only compose the list of child nodes. It will
2415 /// not return this list. After your call to this function, call
2416 /// HAPI_GetComposedChildNodeList() to get the list of child node ids.
2417 ///
2418 /// Note: When looking for all Display SOP nodes using this function,
2419 /// and using recursive mode, the recursion will stop as soon as a
2420 /// display SOP is found within each OBJ geometry network. It is
2421 /// almost never useful to get a list of ALL display SOP nodes
2422 /// recursively as they would all containt the same geometry. Even so,
2423 /// this special case only comes up if the display SOP itself is a
2424 /// subnet.
2425 ///
2426 /// @ingroup Nodes
2427 ///
2428 /// @param[in] session
2429 /// The session of Houdini you are interacting with.
2430 /// See @ref HAPI_Sessions for more on sessions.
2431 /// Pass NULL to just use the default in-process session.
2432 /// <!-- default NULL -->
2433 ///
2434 /// @param[in] parent_node_id
2435 /// The node id of the parent node.
2436 ///
2437 /// @param[in] node_type_filter
2438 /// The node type by which to filter the children.
2439 ///
2440 /// @param[in] node_flags_filter
2441 /// The node flags by which to filter the children.
2442 ///
2443 /// @param[in] recursive
2444 /// Whether or not to compose the list recursively.
2445 ///
2446 /// @param[out] count
2447 /// The number of child nodes composed. Use this as the
2448 /// argument to ::HAPI_GetComposedChildNodeList().
2449 ///
2451  HAPI_NodeId parent_node_id,
2452  HAPI_NodeTypeBits node_type_filter,
2453  HAPI_NodeFlagsBits node_flags_filter,
2454  HAPI_Bool recursive,
2455  int * count );
2456 
2457 /// @brief Get the composed list of child node ids from the previous call
2458 /// to HAPI_ComposeChildNodeList().
2459 ///
2460 /// @ingroup Nodes
2461 ///
2462 /// @param[in] session
2463 /// The session of Houdini you are interacting with.
2464 /// See @ref HAPI_Sessions for more on sessions.
2465 /// Pass NULL to just use the default in-process session.
2466 /// <!-- default NULL -->
2467 ///
2468 /// @param[in] parent_node_id
2469 /// The node id of the parent node.
2470 ///
2471 /// @param[out] child_node_ids_array
2472 /// The array of ::HAPI_NodeId for the child nodes.
2473 /// <!-- sizeparm count -->
2474 ///
2475 /// @param[in] count
2476 /// The number of children in the composed list. MUST match
2477 /// the count returned by HAPI_ComposeChildNodeList().
2478 /// <!-- source ::HAPI_ComposeChildNodeList -->
2479 /// <!-- min ::HAPI_ComposeChildNodeList -->
2480 /// <!-- max ::HAPI_ComposeChildNodeList -->
2481 ///
2483  HAPI_NodeId parent_node_id,
2484  HAPI_NodeId * child_node_ids_array,
2485  int count );
2486 
2487 /// @brief Create a node inside a node network. Nodes created this way
2488 /// will have their ::HAPI_NodeInfo::createdPostAssetLoad set
2489 /// to true.
2490 ///
2491 /// @note In threaded mode, this is an _async call_!
2492 ///
2493 /// @note This is also when we actually check for valid licenses.
2494 ///
2495 /// This API will invoke the cooking thread if threading is
2496 /// enabled. This means it will return immediately with a call
2497 /// result of ::HAPI_RESULT_SUCCESS, even if fed garbage. Use
2498 /// the status and cooking count APIs under DIAGNOSTICS to get
2499 /// a sense of the progress. All other API calls will block
2500 /// until the creation (and, optionally, the first cook)
2501 /// of the node has finished.
2502 ///
2503 /// Also note that the cook result won't be of type
2504 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2505 /// Whenever the threading cook is done it will fill the
2506 /// @a cook result which is queried using
2507 /// ::HAPI_STATUS_COOK_RESULT.
2508 ///
2509 /// @ingroup Nodes
2510 ///
2511 /// @param[in] session
2512 /// The session of Houdini you are interacting with.
2513 /// See @ref HAPI_Sessions for more on sessions.
2514 /// Pass NULL to just use the default in-process session.
2515 /// <!-- default NULL -->
2516 ///
2517 /// @param[in] parent_node_id
2518 /// The parent node network's node id or -1 if the parent
2519 /// network is the manager (top-level) node. In that case,
2520 /// the manager must be identified by the table name in the
2521 /// operator_name.
2522 /// <!-- min -1 -->
2523 /// <!-- default -1 -->
2524 ///
2525 /// @param[in] operator_name
2526 /// The name of the node operator type.
2527 ///
2528 /// If you are creating an Object or SOP node, you can pass
2529 /// parent_node_id == -1 as long as you include the table name
2530 /// (ie. Object/ or Sop/) as a prefix to the operator_name.
2531 /// This covenience is only available for Object or SOP nodes.
2532 /// This is the common case for when creating asset nodes
2533 /// from a loaded asset library. In that case, just pass
2534 /// whatever ::HAPI_GetAvailableAssets() returns.
2535 ///
2536 /// If you have a parent_node_id then you should
2537 /// include only the namespace, name, and version.
2538 ///
2539 /// For example, lets say you have an Object type asset, in
2540 /// the "hapi" namespace, of version 2.0, named "foo". If
2541 /// you pass parent_node_id == -1, then set the operator_name
2542 /// as "Object/hapi::foo::2.0". Otherwise, if you have a valid
2543 /// parent_node_id, then just pass operator_name as
2544 /// "hapi::foo::2.0".
2545 /// <!-- string -->
2546 ///
2547 /// @param[in] node_label
2548 /// (Optional) The label of the newly created node.
2549 /// <!-- default NULL -->
2550 /// <!-- string -->
2551 ///
2552 /// @param[in] cook_on_creation
2553 /// Set whether the node should cook once created or not.
2554 /// <!-- default false -->
2555 ///
2556 /// @param[out] new_node_id
2557 /// The returned node id of the just-created node.
2558 ///
2559 HAPI_DECL HAPI_CreateNode( const HAPI_Session * session,
2560  HAPI_NodeId parent_node_id,
2561  const char * operator_name,
2562  const char * node_label,
2563  HAPI_Bool cook_on_creation,
2564  HAPI_NodeId * new_node_id );
2565 
2566 /// @brief Creates a simple geometry SOP node that can accept geometry input.
2567 /// Inside the specified parent node, this will create a Null SOP
2568 /// you can set the geometry of using the geometry SET APIs.
2569 /// You can then connect this node to any other node as a geometry
2570 /// input.
2571 ///
2572 /// Note that when saving the Houdini scene using
2573 /// ::HAPI_SaveHIPFile() the nodes created with this
2574 /// method will be green and will start with the name "input".
2575 ///
2576 /// @ingroup Nodes
2577 ///
2578 /// @param[in] session
2579 /// The session of Houdini you are interacting with.
2580 /// See @ref HAPI_Sessions for more on sessions.
2581 /// Pass NULL to just use the default in-process session.
2582 /// <!-- default NULL -->
2583 ///
2584 /// @param[in] parent_node_id
2585 /// The node id of the parent OBJ node or SOP subnetwork node in
2586 /// which the input node should be created, or -1 to create a
2587 /// new dummy parent OBJ node for this input node.
2588 /// <!-- min -1 -->
2589 /// <!-- default -1 -->
2590 ///
2591 /// @param[out] node_id
2592 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2593 /// to get more information about the node.
2594 ///
2595 /// @param[in] name
2596 /// Give this input node a name for easy debugging.
2597 /// The node's parent OBJ node and the Null SOP node will both
2598 /// get this given name with "input_" prepended.
2599 /// You can also pass NULL in which case the name will
2600 /// be "input#" where # is some number.
2601 /// <!-- default NULL -->
2602 /// <!-- string -->
2603 ///
2605  HAPI_NodeId parent_node_id,
2606  HAPI_NodeId * node_id,
2607  const char * name );
2608 
2609 /// @brief Helper for creating specifically creating a curve input geometry SOP.
2610 /// Inside the specified parent node, this will create a Null SOP that
2611 /// contains the the HAPI_ATTRIB_INPUT_CURVE_COORDS attribute.
2612 /// It will setup the node as a curve part with no points.
2613 /// In addition to creating the input node, it will also commit and cook
2614 /// the geometry.
2615 ///
2616 /// Note that when saving the Houdini scene using
2617 /// ::HAPI_SaveHIPFile() the nodes created with this
2618 /// method will be green and will start with the name "input".
2619 ///
2620 /// @ingroup InputCurves
2621 ///
2622 /// @param[in] session
2623 /// The session of Houdini you are interacting with.
2624 /// See @ref HAPI_Sessions for more on sessions.
2625 /// Pass NULL to just use the default in-process session.
2626 /// <!-- default NULL -->
2627 ///
2628 /// @param[in] parent_node_id
2629 /// The node id of the parent OBJ node or SOP subnetwork node in
2630 /// which the input node should be created, or -1 to create a
2631 /// new dummy parent OBJ node for this input node.
2632 /// <!-- min -1 -->
2633 /// <!-- default -1 -->
2634 ///
2635 /// @param[out] node_id
2636 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2637 /// to get more information about the node.
2638 ///
2639 /// @param[in] name
2640 /// Give this input node a name for easy debugging.
2641 /// The node's parent OBJ node and the Null SOP node will both
2642 /// get this given name with "input_" prepended.
2643 /// You can also pass NULL in which case the name will
2644 /// be "input#" where # is some number.
2645 /// <!-- default NULL -->
2646 /// <!-- string -->
2647 ///
2649  HAPI_NodeId parent_node_id,
2650  HAPI_NodeId * node_id,
2651  const char * name );
2652 
2653 
2654 /// @defgroup HeightFields Height Fields
2655 /// Functions for creating and inspecting HAPI session state.
2656 
2657 /// @brief Creates the required node hierarchy needed for heightfield inputs.
2658 ///
2659 /// Note that when saving the Houdini scene using
2660 /// ::HAPI_SaveHIPFile() the nodes created with this
2661 /// method will be green and will start with the name "input".
2662 ///
2663 /// @ingroup HeightFields
2664 ///
2665 /// @param[in] session
2666 /// The session of Houdini you are interacting with.
2667 /// See @ref HAPI_Sessions for more on sessions.
2668 /// Pass NULL to just use the default in-process session.
2669 /// <!-- default NULL -->
2670 ///
2671 /// @param[in] parent_node_id
2672 /// The parent node network's node id or -1 if the parent
2673 /// network is the manager (top-level) node. In that case,
2674 /// the manager must be identified by the table name in the
2675 /// operator_name.
2676 /// <!-- min -1 -->
2677 /// <!-- default -1 -->
2678 ///
2679 /// @param[in] name
2680 /// Give this input node a name for easy debugging.
2681 /// The node's parent OBJ node and the Null SOP node will both
2682 /// get this given name with "input_" prepended.
2683 /// You can also pass NULL in which case the name will
2684 /// be "input#" where # is some number.
2685 /// <!-- default NULL -->
2686 /// <!-- string -->
2687 ///
2688 /// @param[in] xsize
2689 /// size of the heightfield in X
2690 ///
2691 /// @param[in] ysize
2692 /// size of the heightfield in y
2693 ///
2694 /// @param[in] voxelsize
2695 /// Size of the voxel
2696 ///
2697 /// @param[in] sampling
2698 /// Type of sampling which should be either center or corner.
2699 ///
2700 /// @param[out] heightfield_node_id
2701 /// Newly created node id for the heightfield node.
2702 /// Use ::HAPI_GetNodeInfo() to get more information about
2703 /// the node.
2704 ///
2705 /// @param[out] height_node_id
2706 /// Newly created node id for the height volume.
2707 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2708 ///
2709 /// @param[out] mask_node_id
2710 /// Newly created node id for the mask volume.
2711 /// Use ::HAPI_GetNodeInfo() to get more information about the
2712 /// node.
2713 ///
2714 /// @param[out] merge_node_id
2715 /// Newly created merge node id.
2716 /// The merge node can be used to connect additional input masks.
2717 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2718 ///
2720  HAPI_NodeId parent_node_id,
2721  const char * name,
2722  int xsize,
2723  int ysize,
2724  float voxelsize,
2725  HAPI_HeightFieldSampling sampling,
2726  HAPI_NodeId * heightfield_node_id,
2727  HAPI_NodeId * height_node_id,
2728  HAPI_NodeId * mask_node_id,
2729  HAPI_NodeId * merge_node_id );
2730 
2731 /// @brief Creates a volume input node that can be used with Heightfields
2732 ///
2733 /// Note that when saving the Houdini scene using
2734 /// ::HAPI_SaveHIPFile() the nodes created with this
2735 /// method will be green and will start with the name "input".
2736 ///
2737 /// @ingroup HeightFields
2738 ///
2739 /// @param[in] session
2740 /// The session of Houdini you are interacting with.
2741 /// See @ref HAPI_Sessions for more on sessions.
2742 /// Pass NULL to just use the default in-process session.
2743 /// <!-- default NULL -->
2744 ///
2745 /// @param[in] parent_node_id
2746 /// The parent node network's node id or -1 if the parent
2747 /// network is the manager (top-level) node. In that case,
2748 /// the manager must be identified by the table name in the
2749 /// operator_name.
2750 /// <!-- min -1 -->
2751 /// <!-- default -1 -->
2752 ///
2753 /// @param[out] new_node_id
2754 /// Newly created node id for the volume.
2755 /// Use ::HAPI_GetNodeInfo() to get more information about the
2756 /// node.
2757 ///
2758 /// @param[in] name
2759 /// The name of the volume to create.
2760 /// You can also pass NULL in which case the name will
2761 /// be "input#" where # is some number.
2762 /// <!-- default NULL -->
2763 /// <!-- string -->
2764 ///
2765 /// @param[in] xsize
2766 /// size of the heightfield in X
2767 ///
2768 /// @param[in] ysize
2769 /// size of the heightfield in y
2770 ///
2771 /// @param[in] voxelsize
2772 /// Size of the voxel
2773 ///
2775  HAPI_NodeId parent_node_id,
2776  HAPI_NodeId * new_node_id,
2777  const char * name,
2778  int xsize,
2779  int ysize,
2780  float voxelsize );
2781 
2782 /// @brief Initiate a cook on this node. Note that this may trigger
2783 /// cooks on other nodes if they are connected.
2784 ///
2785 /// @note In threaded mode, this is an _async call_!
2786 ///
2787 /// This API will invoke the cooking thread if threading is
2788 /// enabled. This means it will return immediately. Use
2789 /// the status and cooking count APIs under DIAGNOSTICS to get
2790 /// a sense of the progress. All other API calls will block
2791 /// until the cook operation has finished.
2792 ///
2793 /// Also note that the cook result won't be of type
2794 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2795 /// Whenever the threading cook is done it will fill the
2796 /// @a cook result which is queried using
2797 /// ::HAPI_STATUS_COOK_RESULT.
2798 ///
2799 /// @ingroup Nodes
2800 ///
2801 /// @param[in] session
2802 /// The session of Houdini you are interacting with.
2803 /// See @ref HAPI_Sessions for more on sessions.
2804 /// Pass NULL to just use the default in-process session.
2805 /// <!-- default NULL -->
2806 ///
2807 /// @param[in] node_id
2808 /// The node id.
2809 ///
2810 /// @param[in] cook_options
2811 /// The cook options. Pass in NULL to use the global
2812 /// cook options that you specified when calling
2813 /// ::HAPI_Initialize().
2814 /// <!-- default NULL -->
2815 ///
2816 HAPI_DECL HAPI_CookNode( const HAPI_Session * session,
2817  HAPI_NodeId node_id,
2818  const HAPI_CookOptions * cook_options );
2819 
2820 /// @brief Delete a node from a node network. Only nodes with their
2821 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2822 /// deleted this way.
2823 ///
2824 /// @ingroup Nodes
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 /// @param[in] node_id
2833 /// The node to delete.
2834 ///
2835 HAPI_DECL HAPI_DeleteNode( const HAPI_Session * session,
2836  HAPI_NodeId node_id );
2837 
2838 /// @brief Rename a node that you created. Only nodes with their
2839 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2840 /// renamed this way.
2841 ///
2842 /// @ingroup Nodes
2843 ///
2844 /// @param[in] session
2845 /// The session of Houdini you are interacting with.
2846 /// See @ref HAPI_Sessions for more on sessions.
2847 /// Pass NULL to just use the default in-process session.
2848 /// <!-- default NULL -->
2849 ///
2850 /// @param[in] node_id
2851 /// The node to rename.
2852 ///
2853 /// @param[in] new_name
2854 /// The new node name.
2855 /// <!-- string -->
2856 ///
2857 HAPI_DECL HAPI_RenameNode( const HAPI_Session * session,
2858  HAPI_NodeId node_id,
2859  const char * new_name );
2860 
2861 /// @brief Connect two nodes together.
2862 ///
2863 /// @param[in] session
2864 /// The session of Houdini you are interacting with.
2865 /// See @ref HAPI_Sessions for more on sessions.
2866 /// Pass NULL to just use the default in-process session.
2867 /// <!-- default NULL -->
2868 ///
2869 /// @ingroup Nodes
2870 ///
2871 /// @param[in] node_id
2872 /// The node whom's input to connect to.
2873 ///
2874 /// @param[in] input_index
2875 /// The input index. Should be between 0 and the
2876 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2877 /// <!-- min 0 -->
2878 ///
2879 /// @param[in] node_id_to_connect
2880 /// The node to connect to node_id's input.
2881 ///
2882 /// @param[in] output_index
2883 /// The output index. Should be between 0 and the
2884 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
2885 /// <!-- min 0 -->
2886 ///
2888  HAPI_NodeId node_id,
2889  int input_index,
2890  HAPI_NodeId node_id_to_connect,
2891  int output_index );
2892 
2893 /// @brief Disconnect a node input.
2894 ///
2895 /// @param[in] session
2896 /// The session of Houdini you are interacting with.
2897 /// See @ref HAPI_Sessions for more on sessions.
2898 /// Pass NULL to just use the default in-process session.
2899 /// <!-- default NULL -->
2900 ///
2901 /// @ingroup Nodes
2902 ///
2903 /// @param[in] node_id
2904 /// The node whom's input to disconnect.
2905 ///
2906 /// @param[in] input_index
2907 /// The input index. Should be between 0 and the
2908 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2909 /// <!-- min 0 -->
2910 ///
2912  HAPI_NodeId node_id,
2913  int input_index );
2914 
2915 /// @brief Query which node is connected to another node's input.
2916 ///
2917 /// @param[in] session
2918 /// The session of Houdini you are interacting with.
2919 /// See @ref HAPI_Sessions for more on sessions.
2920 /// Pass NULL to just use the default in-process session.
2921 /// <!-- default NULL -->
2922 ///
2923 /// @ingroup Nodes
2924 ///
2925 /// @param[in] node_to_query
2926 /// The node to query.
2927 ///
2928 /// @param[in] input_index
2929 /// The input index. Should be between 0 and the
2930 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2931 /// <!-- min 0 -->
2932 ///
2933 /// @param[out] connected_node_id
2934 /// The node id of the connected node to this input. If
2935 /// nothing is connected then -1 will be returned.
2936 ///
2937 HAPI_DECL HAPI_QueryNodeInput( const HAPI_Session * session,
2938  HAPI_NodeId node_to_query,
2939  int input_index,
2940  HAPI_NodeId * connected_node_id );
2941 
2942 /// @brief Get the name of an node's input. This function will return
2943 /// a string handle for the name which will be valid (persist)
2944 /// until the next call to this function.
2945 ///
2946 /// @ingroup Nodes
2947 ///
2948 /// @param[in] session
2949 /// The session of Houdini you are interacting with.
2950 /// See @ref HAPI_Sessions for more on sessions.
2951 /// Pass NULL to just use the default in-process session.
2952 /// <!-- default NULL -->
2953 ///
2954 /// @param[in] node_id
2955 /// The node id.
2956 ///
2957 /// @param[in] input_idx
2958 /// The input index. Should be between 0 and the
2959 /// node_to_query's ::HAPI_NodeInfo::inputCount - 1.
2960 /// <!-- min 0 -->
2961 ///
2962 /// @param[out] name
2963 /// Input name string handle return value - valid until
2964 /// the next call to this function.
2965 ///
2967  HAPI_NodeId node_id,
2968  int input_idx,
2969  HAPI_StringHandle * name );
2970 
2971 /// @brief Disconnect all of the node's output connections at the output index.
2972 ///
2973 /// @ingroup Nodes
2974 ///
2975 /// @param[in] session
2976 /// The session of Houdini you are interacting with.
2977 /// See @ref HAPI_Sessions for more on sessions.
2978 /// Pass NULL to just use the default in-process session.
2979 /// <!-- default NULL -->
2980 ///
2981 /// @param[in] node_id
2982 /// The node whom's outputs to disconnect.
2983 ///
2984 /// @param[in] output_index
2985 /// The output index. Should be between 0 and the
2986 /// to_node's ::HAPI_NodeInfo::outputCount.
2987 /// <!-- min 0 -->
2988 ///
2990  HAPI_NodeId node_id,
2991  int output_index );
2992 
2993 /// @brief Get the number of nodes currently connected to the given node at
2994 /// the output index.
2995 ///
2996 /// @ingroup Nodes
2997 ///
2998 /// Use the @c count returned by this function to get the
2999 /// ::HAPI_NodeId of connected nodes using
3000 /// ::HAPI_QueryNodeOutputConnectedNodes().
3001 ///
3002 /// @param[in] session
3003 /// The session of Houdini you are interacting with.
3004 /// See @ref HAPI_Sessions for more on sessions.
3005 /// Pass NULL to just use the default in-process session.
3006 /// <!-- default NULL -->
3007 ///
3008 /// @param[in] node_id
3009 /// The node id.
3010 ///
3011 /// @param[in] output_idx
3012 /// The output index. Should be between 0 and the
3013 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3014 /// <!-- min 0 -->
3015 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3016 ///
3017 /// @param[in] into_subnets
3018 /// Whether to search by diving into subnets.
3019 /// <!-- default true -->
3020 ///
3021 /// @param[in] through_dots
3022 /// Whether to search through dots.
3023 /// <!-- default true -->
3024 ///
3025 /// @param[out] connected_count
3026 /// The number of nodes currently connected to this node at
3027 /// given output index. Use this count with a call to
3028 /// ::HAPI_QueryNodeOutputConnectedNodes() to get list of
3029 /// connected nodes.
3030 ///
3032  HAPI_NodeId node_id,
3033  int output_idx,
3034  HAPI_Bool into_subnets,
3035  HAPI_Bool through_dots,
3036  int * connected_count );
3037 
3038 /// @brief Get the ids of nodes currently connected to the given node
3039 /// at the output index.
3040 ///
3041 /// Use the @c connected_count returned by
3042 /// ::HAPI_QueryNodeOutputConnectedCount().
3043 ///
3044 /// @ingroup Nodes
3045 ///
3046 /// @param[in] session
3047 /// The session of Houdini you are interacting with.
3048 /// See @ref HAPI_Sessions for more on sessions.
3049 /// Pass NULL to just use the default in-process session.
3050 /// <!-- default NULL -->
3051 ///
3052 /// @param[in] node_id
3053 /// The node id.
3054 ///
3055 /// @param[in] output_idx
3056 /// The output index. Should be between 0 and the
3057 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3058 /// <!-- min 0 -->
3059 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3060 ///
3061 /// @param[in] into_subnets
3062 /// Whether to search by diving into subnets.
3063 /// <!-- default true -->
3064 ///
3065 /// @param[in] through_dots
3066 /// Whether to search through dots.
3067 /// <!-- default true -->
3068 ///
3069 /// @param[out] connected_node_ids_array
3070 /// Array of ::HAPI_NodeId at least the size of @c length.
3071 /// <!-- sizeparm length -->
3072 ///
3073 /// @param[in] start
3074 /// At least @c 0 and at most @c connected_count returned by
3075 /// ::HAPI_QueryNodeOutputConnectedCount().
3076 /// <!-- min 0 -->
3077 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount -->
3078 /// <!-- default 0 -->
3079 ///
3080 /// @param[in] length
3081 /// Given @c connected_count returned by
3082 /// ::HAPI_QueryNodeOutputConnectedCount(), @c length should
3083 /// be at least @c 1 and at most <tt>connected_count - start</tt>.
3084 /// <!-- min 1 -->
3085 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount - start -->
3086 /// <!-- source ::HAPI_QueryNodeOutputConnectedCount - start -->
3087 ///
3089  HAPI_NodeId node_id,
3090  int output_idx,
3091  HAPI_Bool into_subnets,
3092  HAPI_Bool through_dots,
3093  HAPI_NodeId * connected_node_ids_array,
3094  int start, int length );
3095 
3096 /// @brief Get the name of an node's output. This function will return
3097 /// a string handle for the name which will be valid (persist)
3098 /// until the next call to this function.
3099 /// Only COPs and VOPs can have output names - other node types
3100 /// will return their node label when this is called
3101 ///
3102 /// @ingroup Nodes
3103 ///
3104 /// @param[in] session
3105 /// The session of Houdini you are interacting with.
3106 /// See @ref HAPI_Sessions for more on sessions.
3107 /// Pass NULL to just use the default in-process session.
3108 /// <!-- default NULL -->
3109 ///
3110 /// @param[in] node_id
3111 /// The node id.
3112 ///
3113 /// @param[in] output_idx
3114 /// The output index. Should be between 0 and the
3115 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3116 /// <!-- min 0 -->
3117 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3118 ///
3119 /// @param[out] name
3120 /// Output name string handle return value - valid until
3121 /// the next call to this function.
3122 ///
3124  HAPI_NodeId node_id,
3125  int output_idx,
3126  HAPI_StringHandle * name );
3127 
3128 /// @brief Get the id of the node with the specified path.
3129 ///
3130 /// @ingroup Nodes
3131 ///
3132 /// @param[in] session
3133 /// The session of Houdini you are interacting with.
3134 /// See @ref HAPI_Sessions for more on sessions.
3135 /// Pass NULL to just use the default in-process session.
3136 /// <!-- default NULL -->
3137 ///
3138 /// @param[in] parent_node_id
3139 /// If @c path does not start with "/", search for the path
3140 /// relative to this node. Provide -1 if @c path is an absolute
3141 /// path.
3142 ///
3143 /// @param[in] path
3144 /// The path of the node. If the path does not start with "/",
3145 /// it is treated as a relative path from the node specified in
3146 /// @c parent_node_id.
3147 /// <!-- string -->
3148 ///
3149 /// @param[out] node_id
3150 /// The id of the found node.
3151 ///
3153  const HAPI_NodeId parent_node_id,
3154  const char * path,
3155  HAPI_NodeId * node_id );
3156 
3157 /// @brief Gets the node id of an output node in a SOP network.
3158 ///
3159 /// @ingroup Nodes
3160 ///
3161 /// @param[in] session
3162 /// The session of Houdini you are interacting with.
3163 /// See @ref HAPI_Sessions for more on sessions.
3164 /// Pass NULL to just use the default in-process session.
3165 /// <!-- default NULL -->
3166 ///
3167 /// @param[in] node_id
3168 /// The node id of a SOP node with at least one output node. The
3169 /// total number of node outputs can be found from the node's
3170 /// ::HAPI_NodeInfo::outputCount
3171 ///
3172 /// @param[in] output
3173 /// The output index. Should be between 0 and the node's
3174 /// ::HAPI_NodeInfo::outputCount - 1.
3175 /// <!-- min 0 -->
3176 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3177 ///
3178 /// @param[out] output_node_id
3179 /// Pointer to a HAPI_NodeId where the node id of the output
3180 /// node will be stored.
3182  HAPI_NodeId node_id,
3183  int output,
3184  HAPI_NodeId * output_node_id );
3185 
3186 /// @defgroup Parms Parms
3187 /// Functions for wroking with Node parameters (parms)
3188 
3189 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
3190 /// information from the asset instance node.
3191 ///
3192 /// @ingroup Parms
3193 ///
3194 /// @param[in] session
3195 /// The session of Houdini you are interacting with.
3196 /// See @ref HAPI_Sessions for more on sessions.
3197 /// Pass NULL to just use the default in-process session.
3198 /// <!-- default NULL -->
3199 ///
3200 /// @param[in] node_id
3201 /// The node id.
3202 ///
3203 /// @param[out] parm_infos_array
3204 /// Array of ::HAPI_ParmInfo at least the size of
3205 /// length.
3206 /// <!-- sizeparm length -->
3207 ///
3208 /// @param[in] start
3209 /// First index of range. Must be at least 0 and at
3210 /// most ::HAPI_NodeInfo::parmCount - 1.
3211 /// <!-- min 0 -->
3212 /// <!-- max ::HAPI_NodeInfo::parmCount - 1 -->
3213 /// <!-- default 0 -->
3214 ///
3215 /// @param[in] length
3216 /// Must be at least 1 and at most
3217 /// ::HAPI_NodeInfo::parmCount - start.
3218 /// <!-- min 1 -->
3219 /// <!-- max ::HAPI_NodeInfo::parmCount - start -->
3220 /// <!-- source ::HAPI_NodeInfo::parmCount - start -->
3221 ///
3222 HAPI_DECL HAPI_GetParameters( const HAPI_Session * session,
3223  HAPI_NodeId node_id,
3224  HAPI_ParmInfo * parm_infos_array,
3225  int start, int length );
3226 
3227 /// @brief Get the parm info of a parameter by parm id.
3228 ///
3229 /// @ingroup Parms
3230 ///
3231 /// @param[in] session
3232 /// The session of Houdini you are interacting with.
3233 /// See @ref HAPI_Sessions for more on sessions.
3234 /// Pass NULL to just use the default in-process session.
3235 /// <!-- default NULL -->
3236 ///
3237 /// @param[in] node_id
3238 /// The node id.
3239 ///
3240 /// @param[in] parm_id
3241 /// The parm id.
3242 ///
3243 /// @param[out] parm_info
3244 /// The returned parm info.
3245 ///
3246 HAPI_DECL HAPI_GetParmInfo( const HAPI_Session * session,
3247  HAPI_NodeId node_id,
3248  HAPI_ParmId parm_id,
3249  HAPI_ParmInfo * parm_info );
3250 
3251 /// @brief All parameter APIs require a ::HAPI_ParmId but if you know the
3252 /// parameter you wish to operate on by name than you can use
3253 /// this function to get its ::HAPI_ParmId. If the parameter with
3254 /// the given name is not found the parameter id returned
3255 /// will be -1.
3256 ///
3257 /// @ingroup Parms
3258 ///
3259 /// @param[in] session
3260 /// The session of Houdini you are interacting with.
3261 /// See @ref HAPI_Sessions for more on sessions.
3262 /// Pass NULL to just use the default in-process session.
3263 /// <!-- default NULL -->
3264 ///
3265 /// @param[in] node_id
3266 /// The node id.
3267 ///
3268 /// @param[in] parm_name
3269 /// The parm name.
3270 /// <!-- string -->
3271 ///
3272 /// @param[out] parm_id
3273 /// The return value. The parameter's ::HAPI_ParmId. If
3274 /// the parameter with the given name is not found the
3275 /// parameter id returned will be -1.
3276 ///
3278  HAPI_NodeId node_id,
3279  const char * parm_name,
3280  HAPI_ParmId * parm_id );
3281 
3282 /// @brief Get the parm info of a parameter by name.
3283 ///
3284 /// @ingroup Parms
3285 ///
3286 /// @param[in] session
3287 /// The session of Houdini you are interacting with.
3288 /// See @ref HAPI_Sessions for more on sessions.
3289 /// Pass NULL to just use the default in-process session.
3290 /// <!-- default NULL -->
3291 ///
3292 /// @param[in] node_id
3293 /// The node id.
3294 ///
3295 /// @param[in] parm_name
3296 /// The parm name.
3297 /// <!-- string -->
3298 ///
3299 /// @param[out] parm_info
3300 /// The returned parm info.
3301 ///
3303  HAPI_NodeId node_id,
3304  const char * parm_name,
3305  HAPI_ParmInfo * parm_info );
3306 
3307 /// @brief Get the tag name on a parameter given an index.
3308 ///
3309 /// @ingroup Parms
3310 ///
3311 /// @param[in] session
3312 /// The session of Houdini you are interacting with.
3313 /// See @ref HAPI_Sessions for more on sessions.
3314 /// Pass NULL to just use the default in-process session.
3315 /// <!-- default NULL -->
3316 ///
3317 /// @param[in] node_id
3318 /// The node id.
3319 ///
3320 /// @param[in] parm_id
3321 /// The parm id.
3322 ///
3323 /// @param[in] tag_index
3324 /// The tag index, which should be between 0 and
3325 /// ::HAPI_ParmInfo::tagCount - 1.
3326 /// @note These indices are invalidated whenever tags are added
3327 /// to parameters. Do not store these or expect them to be the
3328 /// same if the scene is modified.
3329 /// <!-- min 0 -->
3330 /// <!-- max ::HAPI_ParmInfo::tagCount - 1 -->
3331 ///
3332 /// @param[out] tag_name
3333 /// The returned tag name. This string handle will be valid
3334 /// until another call to ::HAPI_GetParmTagName().
3335 ///
3336 HAPI_DECL HAPI_GetParmTagName( const HAPI_Session * session,
3337  HAPI_NodeId node_id,
3338  HAPI_ParmId parm_id,
3339  int tag_index,
3340  HAPI_StringHandle * tag_name );
3341 
3342 /// @brief Get the tag value on a parameter given the tag name.
3343 ///
3344 /// @ingroup Parms
3345 ///
3346 /// @param[in] session
3347 /// The session of Houdini you are interacting with.
3348 /// See @ref HAPI_Sessions for more on sessions.
3349 /// Pass NULL to just use the default in-process session.
3350 /// <!-- default NULL -->
3351 ///
3352 /// @param[in] node_id
3353 /// The node id.
3354 ///
3355 /// @param[in] parm_id
3356 /// The parm id.
3357 ///
3358 /// @param[in] tag_name
3359 /// The tag name, either known or returned by
3360 /// ::HAPI_GetParmTagName().
3361 /// <!-- string -->
3362 ///
3363 /// @param[out] tag_value
3364 /// The returned tag value. This string handle will be valid
3365 /// until another call to ::HAPI_GetParmTagValue().
3366 ///
3368  HAPI_NodeId node_id,
3369  HAPI_ParmId parm_id,
3370  const char * tag_name,
3371  HAPI_StringHandle * tag_value );
3372 
3373 /// @brief See if a parameter has a specific tag.
3374 ///
3375 /// @ingroup Parms
3376 ///
3377 /// @param[in] session
3378 /// The session of Houdini you are interacting with.
3379 /// See @ref HAPI_Sessions for more on sessions.
3380 /// Pass NULL to just use the default in-process session.
3381 /// <!-- default NULL -->
3382 ///
3383 /// @param[in] node_id
3384 /// The node id.
3385 ///
3386 /// @param[in] parm_id
3387 /// The parm id.
3388 ///
3389 /// @param[in] tag_name
3390 /// The tag name to look for.
3391 /// <!-- string -->
3392 ///
3393 /// @param[out] has_tag
3394 /// True if the tag exists on the parameter, false otherwise.
3395 ///
3396 HAPI_DECL HAPI_ParmHasTag( const HAPI_Session * session,
3397  HAPI_NodeId node_id,
3398  HAPI_ParmId parm_id,
3399  const char * tag_name,
3400  HAPI_Bool * has_tag );
3401 
3402 /// @brief See if a parameter has an expression
3403 ///
3404 /// @ingroup Parms
3405 ///
3406 /// @param[in] session
3407 /// The session of Houdini you are interacting with.
3408 /// See @ref HAPI_Sessions for more on sessions.
3409 /// Pass NULL to just use the default in-process session.
3410 /// <!-- default NULL -->
3411 ///
3412 /// @param[in] node_id
3413 /// The node id.
3414 ///
3415 /// @param[in] parm_name
3416 /// The parm name.
3417 /// <!-- string -->
3418 ///
3419 /// @param[in] index
3420 /// The parm index.
3421 ///
3422 /// @param[out] has_expression
3423 /// True if an expression exists on the parameter, false otherwise.
3424 ///
3426  HAPI_NodeId node_id,
3427  const char * parm_name,
3428  int index,
3429  HAPI_Bool * has_expression );
3430 
3431 /// @brief Get the first parm with a specific, ideally unique, tag on it.
3432 /// This is particularly useful for getting the ogl parameters on a
3433 /// material node.
3434 ///
3435 /// @ingroup Parms
3436 ///
3437 /// @param[in] session
3438 /// The session of Houdini you are interacting with.
3439 /// See @ref HAPI_Sessions for more on sessions.
3440 /// Pass NULL to just use the default in-process session.
3441 /// <!-- default NULL -->
3442 ///
3443 /// @param[in] node_id
3444 /// The node id.
3445 ///
3446 /// @param[in] tag_name
3447 /// The tag name to look for.
3448 /// <!-- string -->
3449 ///
3450 /// @param[out] parm_id
3451 /// The returned parm id. This will be -1 if no parm was found
3452 /// with this tag.
3453 ///
3454 HAPI_DECL HAPI_GetParmWithTag( const HAPI_Session * session,
3455  HAPI_NodeId node_id,
3456  const char * tag_name,
3457  HAPI_ParmId * parm_id );
3458 
3459 /// @brief Get single integer or float parm expression by name
3460 /// or Null string if no expression is present
3461 ///
3462 /// @ingroup Parms
3463 ///
3464 /// @param[in] session
3465 /// The session of Houdini you are interacting with.
3466 /// See @ref HAPI_Sessions for more on sessions.
3467 /// Pass NULL to just use the default in-process session.
3468 /// <!-- default NULL -->
3469 ///
3470 /// @param[in] node_id
3471 /// The node id.
3472 ///
3473 /// @param[in] parm_name
3474 /// The parm name.
3475 /// <!-- string -->
3476 ///
3477 /// @param[in] index
3478 /// Index within the parameter's values tuple.
3479 ///
3480 /// @param[out] value
3481 /// The returned string value.
3482 ///
3484  HAPI_NodeId node_id,
3485  const char * parm_name,
3486  int index,
3487  HAPI_StringHandle * value );
3488 
3489 /// @brief Revert single parm by name to default
3490 ///
3491 /// @ingroup Parms
3492 ///
3493 /// @param[in] session
3494 /// The session of Houdini you are interacting with.
3495 /// See @ref HAPI_Sessions for more on sessions.
3496 /// Pass NULL to just use the default in-process session.
3497 /// <!-- default NULL -->
3498 ///
3499 /// @param[in] node_id
3500 /// The node id.
3501 ///
3502 /// @param[in] parm_name
3503 /// The parm name.
3504 /// <!-- string -->
3505 ///
3506 /// @param[in] index
3507 /// Index within the parameter's values tuple.
3508 ///
3510  HAPI_NodeId node_id,
3511  const char * parm_name,
3512  int index );
3513 
3514 /// @brief Revert all instances of the parm by name to defaults
3515 ///
3516 /// @ingroup Parms
3517 ///
3518 /// @param[in] session
3519 /// The session of Houdini you are interacting with.
3520 /// See @ref HAPI_Sessions for more on sessions.
3521 /// Pass NULL to just use the default in-process session.
3522 /// <!-- default NULL -->
3523 ///
3524 /// @param[in] node_id
3525 /// The node id.
3526 ///
3527 /// @param[in] parm_name
3528 /// The parm name.
3529 /// <!-- string -->
3530 ///
3532  HAPI_NodeId node_id,
3533  const char * parm_name );
3534 
3535 /// @brief Set (push) an expression string. We can only set a single value at
3536 /// a time because we want to avoid fixed size string buffers.
3537 ///
3538 /// @note Regardless of the value, when calling this function
3539 /// on a parameter, if that parameter has a callback function
3540 /// attached to it, that callback function will be called. For
3541 /// example, if the parameter is a button the button will be
3542 /// pressed.
3543 ///
3544 /// @note In threaded mode, this is an _async call_!
3545 ///
3546 /// This API will invoke the cooking thread if threading is
3547 /// enabled. This means it will return immediately. Use
3548 /// the status and cooking count APIs under DIAGNOSTICS to get
3549 /// a sense of the progress. All other API calls will block
3550 /// until the cook operation has finished.
3551 ///
3552 /// Also note that the cook result won't be of type
3553 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3554 /// Whenever the threading cook is done it will fill the
3555 /// @a cook result which is queried using
3556 /// ::HAPI_STATUS_COOK_RESULT.
3557 ///
3558 /// @ingroup Parms
3559 ///
3560 /// @param[in] session
3561 /// The session of Houdini you are interacting with.
3562 /// See @ref HAPI_Sessions for more on sessions.
3563 /// Pass NULL to just use the default in-process session.
3564 /// <!-- default NULL -->
3565 ///
3566 /// @param[in] node_id
3567 /// The node id.
3568 ///
3569 /// @param[in] value
3570 /// The expression string.
3571 /// <!-- string -->
3572 ///
3573 /// @param[in] parm_id
3574 /// Parameter id of the parameter being updated.
3575 ///
3576 /// @param[in] index
3577 /// Index within the parameter's values tuple.
3578 ///
3580  HAPI_NodeId node_id,
3581  const char * value,
3582  HAPI_ParmId parm_id, int index );
3583 
3584 /// @brief Remove the expression string, leaving the value of the
3585 /// parm at the current value of the expression
3586 ///
3587 /// @note Regardless of the value, when calling this function
3588 /// on a parameter, if that parameter has a callback function
3589 /// attached to it, that callback function will be called. For
3590 /// example, if the parameter is a button the button will be
3591 /// pressed.
3592 ///
3593 /// @note In threaded mode, this is an _async call_!
3594 ///
3595 /// This API will invoke the cooking thread if threading is
3596 /// enabled. This means it will return immediately. Use
3597 /// the status and cooking count APIs under DIAGNOSTICS to get
3598 /// a sense of the progress. All other API calls will block
3599 /// until the cook operation has finished.
3600 ///
3601 /// Also note that the cook result won't be of type
3602 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3603 /// Whenever the threading cook is done it will fill the
3604 /// @a cook result which is queried using
3605 /// ::HAPI_STATUS_COOK_RESULT.
3606 ///
3607 /// @ingroup Parms
3608 ///
3609 /// @param[in] session
3610 /// The session of Houdini you are interacting with.
3611 /// See @ref HAPI_Sessions for more on sessions.
3612 /// Pass NULL to just use the default in-process session.
3613 /// <!-- default NULL -->
3614 ///
3615 /// @param[in] node_id
3616 /// The node id.
3617 ///
3618 /// @param[in] parm_id
3619 /// Parameter id of the parameter being updated.
3620 ///
3621 /// @param[in] index
3622 /// Index within the parameter's values tuple.
3623 ///
3625  HAPI_NodeId node_id,
3626  HAPI_ParmId parm_id, int index );
3627 
3628 /// @brief Get single parm int value by name.
3629 ///
3630 /// @ingroup Parms
3631 ///
3632 /// @param[in] session
3633 /// The session of Houdini you are interacting with.
3634 /// See @ref HAPI_Sessions for more on sessions.
3635 /// Pass NULL to just use the default in-process session.
3636 /// <!-- default NULL -->
3637 ///
3638 /// @param[in] node_id
3639 /// The node id.
3640 ///
3641 /// @param[in] parm_name
3642 /// The parm name.
3643 /// <!-- string -->
3644 ///
3645 /// @param[in] index
3646 /// Index within the parameter's values tuple.
3647 ///
3648 /// @param[out] value
3649 /// The returned int value.
3650 ///
3652  HAPI_NodeId node_id,
3653  const char * parm_name,
3654  int index,
3655  int * value );
3656 
3657 /// @brief Fill an array of parameter int values. This is more efficient
3658 /// than calling ::HAPI_GetParmIntValue() individually for each
3659 /// parameter value.
3660 ///
3661 /// @ingroup Parms
3662 ///
3663 /// @param[in] session
3664 /// The session of Houdini you are interacting with.
3665 /// See @ref HAPI_Sessions for more on sessions.
3666 /// Pass NULL to just use the default in-process session.
3667 /// <!-- default NULL -->
3668 ///
3669 /// @param[in] node_id
3670 /// The node id.
3671 ///
3672 /// @param[out] values_array
3673 /// Array of ints at least the size of length.
3674 /// <!-- sizeparm length -->
3675 ///
3676 /// @param[in] start
3677 /// First index of range. Must be at least 0 and at
3678 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
3679 /// <!-- min 0 -->
3680 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
3681 /// <!-- default 0 -->
3682 ///
3683 /// @param[in] length
3684 /// Must be at least 1 and at most
3685 /// ::HAPI_NodeInfo::parmIntValueCount - start.
3686 /// <!-- min 1 -->
3687 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
3688 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
3689 ///
3691  HAPI_NodeId node_id,
3692  int * values_array,
3693  int start, int length );
3694 
3695 /// @brief Get single parm float value by name.
3696 ///
3697 /// @ingroup Parms
3698 ///
3699 /// @param[in] session
3700 /// The session of Houdini you are interacting with.
3701 /// See @ref HAPI_Sessions for more on sessions.
3702 /// Pass NULL to just use the default in-process session.
3703 /// <!-- default NULL -->
3704 ///
3705 /// @param[in] node_id
3706 /// The node id.
3707 ///
3708 /// @param[in] parm_name
3709 /// The parm name.
3710 /// <!-- string -->
3711 ///
3712 /// @param[in] index
3713 /// Index within the parameter's values tuple.
3714 ///
3715 /// @param[out] value
3716 /// The returned float value.
3717 ///
3719  HAPI_NodeId node_id,
3720  const char * parm_name,
3721  int index,
3722  float * value );
3723 
3724 /// @brief Fill an array of parameter float values. This is more efficient
3725 /// than calling ::HAPI_GetParmFloatValue() individually for each
3726 /// parameter value.
3727 ///
3728 /// @ingroup Parms
3729 ///
3730 /// @param[in] session
3731 /// The session of Houdini you are interacting with.
3732 /// See @ref HAPI_Sessions for more on sessions.
3733 /// Pass NULL to just use the default in-process session.
3734 /// <!-- default NULL -->
3735 ///
3736 /// @param[in] node_id
3737 /// The node id.
3738 ///
3739 /// @param[out] values_array
3740 /// Array of floats at least the size of length.
3741 /// <!-- sizeparm length -->
3742 ///
3743 /// @param[in] start
3744 /// First index of range. Must be at least 0 and at
3745 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
3746 /// <!-- min 0 -->
3747 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - 1 -->
3748 /// <!-- default 0 -->
3749 ///
3750 /// @param[in] length
3751 /// Must be at least 1 and at most
3752 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
3753 /// <!-- min 1 -->
3754 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - start -->
3755 /// <!-- source ::HAPI_NodeInfo::parmFloatValueCount - start -->
3756 ///
3758  HAPI_NodeId node_id,
3759  float * values_array,
3760  int start, int length );
3761 
3762 /// @brief Get single parm string value by name.
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 /// <!-- string -->
3778 ///
3779 /// @param[in] index
3780 /// Index within the parameter's values tuple.
3781 ///
3782 /// @param[in] evaluate
3783 /// Whether or not to evaluate the string expression.
3784 /// For example, the string "$F" would evaluate to the
3785 /// current frame number. So, passing in evaluate = false
3786 /// would give you back the string "$F" and passing
3787 /// in evaluate = true would give you back "1" (assuming
3788 /// the current frame is 1).
3789 /// <!-- default true -->
3790 ///
3791 /// @param[out] value
3792 /// The returned string value.
3793 ///
3795  HAPI_NodeId node_id,
3796  const char * parm_name,
3797  int index,
3798  HAPI_Bool evaluate,
3799  HAPI_StringHandle * value );
3800 
3801 /// @brief Fill an array of parameter string handles. These handles must
3802 /// be used in conjunction with ::HAPI_GetString() to get the
3803 /// actual string values. This is more efficient than calling
3804 /// ::HAPI_GetParmStringValue() individually for each
3805 /// parameter value.
3806 ///
3807 /// @ingroup Parms
3808 ///
3809 /// @param[in] session
3810 /// The session of Houdini you are interacting with.
3811 /// See @ref HAPI_Sessions for more on sessions.
3812 /// Pass NULL to just use the default in-process session.
3813 /// <!-- default NULL -->
3814 ///
3815 /// @param[in] node_id
3816 /// The node id.
3817 ///
3818 /// @param[in] evaluate
3819 /// Whether or not to evaluate the string expression.
3820 /// For example, the string "$F" would evaluate to the
3821 /// current frame number. So, passing in evaluate = false
3822 /// would give you back the string "$F" and passing
3823 /// in evaluate = true would give you back "1" (assuming
3824 /// the current frame is 1).
3825 ///
3826 /// @param[out] values_array
3827 /// Array of integers at least the size of length.
3828 /// <!-- sizeparm length -->
3829 ///
3830 /// @param[in] start
3831 /// First index of range. Must be at least 0 and at
3832 /// most ::HAPI_NodeInfo::parmStringValueCount - 1.
3833 /// <!-- min 0 -->
3834 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - 1 -->
3835 /// <!-- default 0 -->
3836 ///
3837 /// @param[in] length
3838 /// Must be at least 1 and at most
3839 /// ::HAPI_NodeInfo::parmStringValueCount - start.
3840 /// <!-- min 1 -->
3841 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - start -->
3842 /// <!-- source ::HAPI_NodeInfo::parmStringValueCount - start -->
3843 ///
3845  HAPI_NodeId node_id,
3846  HAPI_Bool evaluate,
3847  HAPI_StringHandle * values_array,
3848  int start, int length );
3849 
3850 /// @brief Get a single node id parm value of an Op Path parameter. This is
3851 /// how you see which node is connected as an input for the current
3852 /// node (via parameter).
3853 ///
3854 /// @ingroup Parms
3855 ///
3856 /// @param[in] session
3857 /// The session of Houdini you are interacting with.
3858 /// See @ref HAPI_Sessions for more on sessions.
3859 /// Pass NULL to just use the default in-process session.
3860 /// <!-- default NULL -->
3861 ///
3862 /// @param[in] node_id
3863 /// The node id.
3864 ///
3865 /// @param[in] parm_name
3866 /// The name of the parameter.
3867 /// <!-- string -->
3868 ///
3869 /// @param[out] value
3870 /// The node id of the node being pointed to by the parm.
3871 /// If there is no node found, -1 will be returned.
3872 ///
3874  HAPI_NodeId node_id,
3875  const char * parm_name,
3876  HAPI_NodeId * value );
3877 
3878 /// @brief Extract a file specified by path on a parameter. This will copy
3879 /// the file to the destination directory from wherever it might be,
3880 /// inlcuding inside the asset definition or online.
3881 ///
3882 /// @ingroup Parms
3883 ///
3884 /// @param[in] session
3885 /// The session of Houdini you are interacting with.
3886 /// See @ref HAPI_Sessions for more on sessions.
3887 /// Pass NULL to just use the default in-process session.
3888 /// <!-- default NULL -->
3889 ///
3890 /// @param[in] node_id
3891 /// The node id.
3892 ///
3893 /// @param[in] parm_name
3894 /// The name of the parameter.
3895 /// <!-- string -->
3896 ///
3897 /// @param[in] destination_directory
3898 /// The destination directory to copy the file to.
3899 /// <!-- string -->
3900 ///
3901 /// @param[in] destination_file_name
3902 /// The destination file name.
3903 /// <!-- string -->
3904 ///
3905 HAPI_DECL HAPI_GetParmFile( const HAPI_Session * session,
3906  HAPI_NodeId node_id,
3907  const char * parm_name,
3908  const char * destination_directory,
3909  const char * destination_file_name );
3910 
3911 /// @brief Fill an array of ::HAPI_ParmChoiceInfo structs with parameter
3912 /// choice list information from the asset instance node.
3913 ///
3914 /// @ingroup Parms
3915 ///
3916 /// @param[in] session
3917 /// The session of Houdini you are interacting with.
3918 /// See @ref HAPI_Sessions for more on sessions.
3919 /// Pass NULL to just use the default in-process session.
3920 /// <!-- default NULL -->
3921 ///
3922 /// @param[in] node_id
3923 /// The node id.
3924 ///
3925 /// @param[out] parm_choices_array
3926 /// Array of ::HAPI_ParmChoiceInfo exactly the size of
3927 /// length.
3928 /// <!-- sizeparm length -->
3929 ///
3930 /// @param[in] start
3931 /// First index of range. Must be at least 0 and at
3932 /// most ::HAPI_NodeInfo::parmChoiceCount - 1.
3933 /// <!-- min 0 -->
3934 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - 1 -->
3935 /// <!-- default 0 -->
3936 ///
3937 /// @param[in] length
3938 /// Must be at least 1 and at most
3939 /// ::HAPI_NodeInfo::parmChoiceCount - start.
3940 /// <!-- min 1 -->
3941 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - start -->
3942 /// <!-- source ::HAPI_NodeInfo::parmChoiceCount - start -->
3943 ///
3945  HAPI_NodeId node_id,
3946  HAPI_ParmChoiceInfo * parm_choices_array,
3947  int start, int length );
3948 
3949 /// @brief Set single parm int value by name.
3950 ///
3951 /// @note Regardless of the value, when calling this function
3952 /// on a parameter, if that parameter has a callback function
3953 /// attached to it, that callback function will be called. For
3954 /// example, if the parameter is a button the button will be
3955 /// pressed.
3956 ///
3957 /// @note In threaded mode, this is an _async call_!
3958 ///
3959 /// This API will invoke the cooking thread if threading is
3960 /// enabled. This means it will return immediately. Use
3961 /// the status and cooking count APIs under DIAGNOSTICS to get
3962 /// a sense of the progress. All other API calls will block
3963 /// until the cook operation has finished.
3964 ///
3965 /// Also note that the cook result won't be of type
3966 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3967 /// Whenever the threading cook is done it will fill the
3968 /// @a cook result which is queried using
3969 /// ::HAPI_STATUS_COOK_RESULT.
3970 ///
3971 /// @ingroup Parms
3972 ///
3973 /// @param[in] session
3974 /// The session of Houdini you are interacting with.
3975 /// See @ref HAPI_Sessions for more on sessions.
3976 /// Pass NULL to just use the default in-process session.
3977 /// <!-- default NULL -->
3978 ///
3979 /// @param[in] node_id
3980 /// The node id.
3981 ///
3982 /// @param[in] parm_name
3983 /// The parm name.
3984 /// <!-- string -->
3985 ///
3986 /// @param[in] index
3987 /// Index within the parameter's values tuple.
3988 ///
3989 /// @param[in] value
3990 /// The int value.
3991 ///
3993  HAPI_NodeId node_id,
3994  const char * parm_name,
3995  int index,
3996  int value );
3997 
3998 /// @brief Set (push) an array of parameter int values.
3999 ///
4000 /// @note Regardless of the values, when calling this function
4001 /// on a set of parameters, if any parameter has a callback
4002 /// function attached to it, that callback function will be called.
4003 /// For example, if the parameter is a button the button will be
4004 /// pressed.
4005 ///
4006 /// @note In threaded mode, this is an _async call_!
4007 ///
4008 /// This API will invoke the cooking thread if threading is
4009 /// enabled. This means it will return immediately. Use
4010 /// the status and cooking count APIs under DIAGNOSTICS to get
4011 /// a sense of the progress. All other API calls will block
4012 /// until the cook operation has finished.
4013 ///
4014 /// Also note that the cook result won't be of type
4015 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4016 /// Whenever the threading cook is done it will fill the
4017 /// @a cook result which is queried using
4018 /// ::HAPI_STATUS_COOK_RESULT.
4019 ///
4020 /// @ingroup Parms
4021 ///
4022 /// @param[in] session
4023 /// The session of Houdini you are interacting with.
4024 /// See @ref HAPI_Sessions for more on sessions.
4025 /// Pass NULL to just use the default in-process session.
4026 /// <!-- default NULL -->
4027 ///
4028 /// @param[in] node_id
4029 /// The node id.
4030 ///
4031 /// @param[in] values_array
4032 /// Array of integers at least the size of length.
4033 /// <!-- min length -->
4034 /// <!-- sizeparm length -->
4035 ///
4036 /// @param[in] start
4037 /// First index of range. Must be at least 0 and at
4038 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
4039 /// <!-- min 0 -->
4040 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
4041 /// <!-- default 0 -->
4042 ///
4043 /// @param[in] length
4044 /// Must be at least 1 and at most
4045 /// ::HAPI_NodeInfo::parmIntValueCount - start.
4046 /// <!-- min 1 -->
4047 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
4048 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
4049 ///
4051  HAPI_NodeId node_id,
4052  const int * values_array,
4053  int start, int length );
4054 
4055 /// @brief Set single parm float value by name.
4056 ///
4057 /// @note Regardless of the value, when calling this function
4058 /// on a parameter, if that parameter has a callback function
4059 /// attached to it, that callback function will be called. For
4060 /// example, if the parameter is a button the button will be
4061 /// pressed.
4062 ///
4063 /// @note In threaded mode, this is an _async call_!
4064 ///
4065 /// This API will invoke the cooking thread if threading is
4066 /// enabled. This means it will return immediately. Use
4067 /// the status and cooking count APIs under DIAGNOSTICS to get
4068 /// a sense of the progress. All other API calls will block
4069 /// until the cook operation has finished.
4070 ///
4071 /// Also note that the cook result won't be of type
4072 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4073 /// Whenever the threading cook is done it will fill the
4074 /// @a cook result which is queried using
4075 /// ::HAPI_STATUS_COOK_RESULT.
4076 ///
4077 /// @ingroup Parms
4078 ///
4079 /// @param[in] session
4080 /// The session of Houdini you are interacting with.
4081 /// See @ref HAPI_Sessions for more on sessions.
4082 /// Pass NULL to just use the default in-process session.
4083 /// <!-- default NULL -->
4084 ///
4085 /// @param[in] node_id
4086 /// The node id.
4087 ///
4088 /// @param[in] parm_name
4089 /// The parm name.
4090 /// <!-- string -->
4091 ///
4092 /// @param[in] index
4093 /// Index within the parameter's values tuple.
4094 ///
4095 /// @param[in] value
4096 /// The float value.
4097 ///
4099  HAPI_NodeId node_id,
4100  const char * parm_name,
4101  int index,
4102  float value );
4103 
4104 /// @brief Set (push) an array of parameter float values.
4105 ///
4106 /// @note Regardless of the values, when calling this function
4107 /// on a set of parameters, if any parameter has a callback
4108 /// function attached to it, that callback function will be called.
4109 /// For example, if the parameter is a button the button will be
4110 /// pressed.
4111 ///
4112 /// @note In threaded mode, this is an _async call_!
4113 ///
4114 /// This API will invoke the cooking thread if threading is
4115 /// enabled. This means it will return immediately. Use
4116 /// the status and cooking count APIs under DIAGNOSTICS to get
4117 /// a sense of the progress. All other API calls will block
4118 /// until the cook operation has finished.
4119 ///
4120 /// Also note that the cook result won't be of type
4121 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4122 /// Whenever the threading cook is done it will fill the
4123 /// @a cook result which is queried using
4124 /// ::HAPI_STATUS_COOK_RESULT.
4125 ///
4126 /// @ingroup Parms
4127 ///
4128 /// @param[in] session
4129 /// The session of Houdini you are interacting with.
4130 /// See @ref HAPI_Sessions for more on sessions.
4131 /// Pass NULL to just use the default in-process session.
4132 /// <!-- default NULL -->
4133 ///
4134 /// @param[in] node_id
4135 /// The node id.
4136 ///
4137 /// @param[in] values_array
4138 /// Array of floats at least the size of length.
4139 /// <!-- sizeparm length -->
4140 ///
4141 /// @param[in] start
4142 /// First index of range. Must be at least 0 and at
4143 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
4144 ///
4145 /// @param[in] length
4146 /// Must be at least 1 and at most
4147 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
4148 ///
4150  HAPI_NodeId node_id,
4151  const float * values_array,
4152  int start, int length );
4153 
4154 /// @brief Set (push) a string value. We can only set a single value at
4155 /// a time because we want to avoid fixed size string buffers.
4156 ///
4157 /// @note Regardless of the value, when calling this function
4158 /// on a parameter, if that parameter has a callback function
4159 /// attached to it, that callback function will be called. For
4160 /// example, if the parameter is a button the button will be
4161 /// pressed.
4162 ///
4163 /// @note In threaded mode, this is an _async call_!
4164 ///
4165 /// This API will invoke the cooking thread if threading is
4166 /// enabled. This means it will return immediately. Use
4167 /// the status and cooking count APIs under DIAGNOSTICS to get
4168 /// a sense of the progress. All other API calls will block
4169 /// until the cook operation has finished.
4170 ///
4171 /// Also note that the cook result won't be of type
4172 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4173 /// Whenever the threading cook is done it will fill the
4174 /// @a cook result which is queried using
4175 /// ::HAPI_STATUS_COOK_RESULT.
4176 ///
4177 /// @ingroup Parms
4178 ///
4179 /// @param[in] session
4180 /// The session of Houdini you are interacting with.
4181 /// See @ref HAPI_Sessions for more on sessions.
4182 /// Pass NULL to just use the default in-process session.
4183 /// <!-- default NULL -->
4184 ///
4185 /// @param[in] node_id
4186 /// The node id.
4187 ///
4188 /// @param[in] value
4189 /// The string value.
4190 /// <!-- string -->
4191 ///
4192 /// @param[in] parm_id
4193 /// Parameter id of the parameter being updated.
4194 ///
4195 /// @param[in] index
4196 /// Index within the parameter's values tuple.
4197 ///
4199  HAPI_NodeId node_id,
4200  const char * value,
4201  HAPI_ParmId parm_id, int index );
4202 
4203 /// @brief Set a node id parm value of an Op Path parameter. For example,
4204 /// This is how you connect the geometry output of an asset to the
4205 /// geometry input of another asset - whether the input is a parameter
4206 /// or a node input (the top of the node). Node inputs get converted
4207 /// top parameters in HAPI.
4208 ///
4209 /// @ingroup Parms
4210 ///
4211 /// @param[in] session
4212 /// The session of Houdini you are interacting with.
4213 /// See @ref HAPI_Sessions for more on sessions.
4214 /// Pass NULL to just use the default in-process session.
4215 /// <!-- default NULL -->
4216 ///
4217 /// @param[in] node_id
4218 /// The node id.
4219 ///
4220 /// @param[in] parm_name
4221 /// The name of the parameter.
4222 /// <!-- string -->
4223 ///
4224 /// @param[in] value
4225 /// The node id of the node being connected. Pass -1 to
4226 /// disconnect.
4227 ///
4229  HAPI_NodeId node_id,
4230  const char * parm_name,
4231  HAPI_NodeId value );
4232 
4233 /// @brief Insert an instance of a multiparm before instance_position.
4234 ///
4235 /// @ingroup Parms
4236 ///
4237 /// @param[in] session
4238 /// The session of Houdini you are interacting with.
4239 /// See @ref HAPI_Sessions for more on sessions.
4240 /// Pass NULL to just use the default in-process session.
4241 /// <!-- default NULL -->
4242 ///
4243 /// @param[in] node_id
4244 /// The node id.
4245 ///
4246 /// @param[in] parm_id
4247 /// A parm id given by a ::HAPI_ParmInfo struct that
4248 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4249 ///
4250 /// @param[in] instance_position
4251 /// The new instance will be inserted at this position
4252 /// index. Do note the multiparms can start at position
4253 /// 1 or 0. Use ::HAPI_ParmInfo::instanceStartOffset to
4254 /// distinguish.
4255 ///
4257  HAPI_NodeId node_id,
4258  HAPI_ParmId parm_id,
4259  int instance_position );
4260 
4261 /// @brief Remove the instance of a multiparm given by instance_position.
4262 ///
4263 /// @ingroup Parms
4264 ///
4265 /// @param[in] session
4266 /// The session of Houdini you are interacting with.
4267 /// See @ref HAPI_Sessions for more on sessions.
4268 /// Pass NULL to just use the default in-process session.
4269 /// <!-- default NULL -->
4270 ///
4271 /// @param[in] node_id
4272 /// The node id.
4273 ///
4274 /// @param[in] parm_id
4275 /// A parm id given by a ::HAPI_ParmInfo struct that
4276 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4277 ///
4278 /// @param[in] instance_position
4279 /// The instance at instance_position will removed.
4280 ///
4282  HAPI_NodeId node_id,
4283  HAPI_ParmId parm_id,
4284  int instance_position );
4285 
4286 // HANDLES ------------------------------------------------------------------
4287 
4288 /// @brief Fill an array of ::HAPI_HandleInfo structs with information
4289 /// about every exposed user manipulation handle on the node.
4290 ///
4291 /// @ingroup Parms
4292 ///
4293 /// @param[in] session
4294 /// The session of Houdini you are interacting with.
4295 /// See @ref HAPI_Sessions for more on sessions.
4296 /// Pass NULL to just use the default in-process session.
4297 /// <!-- default NULL -->
4298 ///
4299 /// @param[in] node_id
4300 /// The node id.
4301 ///
4302 /// @param[out] handle_infos_array
4303 /// Array of ::HAPI_HandleInfo at least the size of length.
4304 /// <!-- sizeparm length -->
4305 ///
4306 /// @param[in] start
4307 /// First index of range. Must be at least 0 and at
4308 /// most ::HAPI_AssetInfo::handleCount - 1.
4309 /// <!-- default 0 -->
4310 ///
4311 /// @param[in] length
4312 /// Must be at least 1 and at most
4313 /// ::HAPI_AssetInfo::handleCount - start.
4314 /// <!-- source ::HAPI_AssetInfo::handleCount - start -->
4315 ///
4316 HAPI_DECL HAPI_GetHandleInfo( const HAPI_Session * session,
4317  HAPI_NodeId node_id,
4318  HAPI_HandleInfo * handle_infos_array,
4319  int start, int length );
4320 
4321 /// @brief Fill an array of ::HAPI_HandleBindingInfo structs with information
4322 /// about the binding of a particular handle on the given node.
4323 ///
4324 /// @ingroup Parms
4325 ///
4326 /// @param[in] session
4327 /// The session of Houdini you are interacting with.
4328 /// See @ref HAPI_Sessions for more on sessions.
4329 /// Pass NULL to just use the default in-process session.
4330 /// <!-- default NULL -->
4331 ///
4332 /// @param[in] node_id
4333 /// The node id.
4334 ///
4335 /// @param[in] handle_index
4336 /// The index of the handle, from 0 to handleCount - 1
4337 /// from the call to ::HAPI_GetAssetInfo().
4338 ///
4339 /// @param[out] handle_binding_infos_array
4340 /// Array of ::HAPI_HandleBindingInfo at least the size
4341 /// of length.
4342 /// <!-- sizeparm length -->
4343 ///
4344 /// @param[in] start
4345 /// First index of range. Must be at least 0 and at
4346 /// most ::HAPI_HandleInfo::bindingsCount - 1.
4347 /// <!-- default 0 -->
4348 ///
4349 /// @param[in] length
4350 /// Must be at least 1 and at most
4351 /// ::HAPI_HandleInfo::bindingsCount - start.
4352 /// <!-- source ::HAPI_AssetInfo::bindingsCount - start -->
4353 ///
4355  const HAPI_Session * session,
4356  HAPI_NodeId node_id,
4357  int handle_index,
4358  HAPI_HandleBindingInfo * handle_binding_infos_array,
4359  int start, int length );
4360 
4361 /// @defgroup Presets Presets
4362 /// Functions for working with Node presets
4363 
4364 /// @brief Generate a preset blob of the current state of all the
4365 /// parameter values, cache it, and return its size in bytes.
4366 ///
4367 /// @ingroup Presets
4368 ///
4369 /// @param[in] session
4370 /// The session of Houdini you are interacting with.
4371 /// See @ref HAPI_Sessions for more on sessions.
4372 /// Pass NULL to just use the default in-process session.
4373 /// <!-- default NULL -->
4374 ///
4375 /// @param[in] node_id
4376 /// The exposed node id.
4377 ///
4378 /// @param[in] preset_type
4379 /// The preset type.
4380 ///
4381 /// @param[in] preset_name
4382 /// Optional. This is only used if the @p preset_type is
4383 /// ::HAPI_PRESETTYPE_IDX. If NULL is given, the preset
4384 /// name will be the same as the name of the node with
4385 /// the given @p node_id.
4386 /// <!-- string -->
4387 ///
4388 /// @param[out] buffer_length
4389 /// Size of the buffer.
4390 ///
4392  HAPI_NodeId node_id,
4393  HAPI_PresetType preset_type,
4394  const char * preset_name,
4395  int * buffer_length );
4396 
4397 /// @brief Generates a preset for the given asset.
4398 ///
4399 /// @ingroup Presets
4400 ///
4401 /// @param[in] session
4402 /// The session of Houdini you are interacting with.
4403 /// See @ref HAPI_Sessions for more on sessions.
4404 /// Pass NULL to just use the default in-process session.
4405 /// <!-- default NULL -->
4406 ///
4407 /// @param[in] node_id
4408 /// The exposed node id.
4409 ///
4410 /// @param[out] buffer
4411 /// Buffer to hold the preset data.
4412 /// <!-- sizeparm buffer_length -->
4413 ///
4414 /// @param[in] buffer_length
4415 /// Size of the buffer. Should be the same as the length
4416 /// returned by ::HAPI_GetPresetBufLength().
4417 ///
4418 HAPI_DECL HAPI_GetPreset( const HAPI_Session * session,
4419  HAPI_NodeId node_id,
4420  char * buffer,
4421  int buffer_length );
4422 
4423 /// @brief Sets a particular asset to a given preset.
4424 ///
4425 /// @ingroup Presets
4426 ///
4427 /// @param[in] session
4428 /// The session of Houdini you are interacting with.
4429 /// See @ref HAPI_Sessions for more on sessions.
4430 /// Pass NULL to just use the default in-process session.
4431 /// <!-- default NULL -->
4432 ///
4433 /// @param[in] node_id
4434 /// The exposed node id.
4435 ///
4436 /// @param[in] preset_type
4437 /// The preset type.
4438 ///
4439 /// @param[in] preset_name
4440 /// Optional. This is only used if the @p preset_type is
4441 /// ::HAPI_PRESETTYPE_IDX. If NULL is give, the first
4442 /// preset in the IDX file will be chosen.
4443 /// <!-- default NULL -->
4444 /// <!-- string -->
4445 ///
4446 /// @param[in] buffer
4447 /// Buffer to hold the preset data.
4448 /// <!-- sizeparm buffer_length -->
4449 ///
4450 /// @param[in] buffer_length
4451 /// Size of the buffer.
4452 ///
4453 HAPI_DECL HAPI_SetPreset( const HAPI_Session * session,
4454  HAPI_NodeId node_id,
4455  HAPI_PresetType preset_type,
4456  const char * preset_name,
4457  const char * buffer,
4458  int buffer_length );
4459 
4460 /// @brief Gets the number of presets in an IDX file. When this method is
4461 /// called, the names of the presets are stored in a single internal
4462 /// buffer from which they can be retrieved by calling
4463 /// HAPI_GetPresetNames().
4464 ///
4465 /// Note that calling HAPI_GetPresetCount() will overwrite the preset
4466 /// names that were previously stored in the internal buffer. Therefore,
4467 /// ensure that you have called HAPI_GetPresetNames() before calling
4468 /// HAPI_GetPresetCount() again.
4469 ///
4470 /// @ingroup Presets
4471 ///
4472 /// @param[in] session
4473 /// The session of Houdini you are interacting with.
4474 /// See @ref HAPI_Sessions for more on sessions.
4475 /// Pass NULL to just use the default in-process session.
4476 /// <!-- default NULL -->
4477 ///
4478 /// @param[in] buffer
4479 /// A buffer containing the raw binary data of the .idx file.
4480 /// <!-- sizeparm buffer_length -->
4481 ///
4482 /// @param[in] buffer_length
4483 /// Size of the buffer.
4484 ///
4485 /// @param[out] count
4486 /// Number of presets in the file.
4487 ///
4488 HAPI_DECL HAPI_GetPresetCount( const HAPI_Session * session,
4489  const char * buffer,
4490  int buffer_length,
4491  int * count );
4492 
4493 /// @brief Gets the names of presets in an IDX file. HAPI_GetPresetCount() must
4494 /// be called before calling this method. See the HAPI_GetPresetCount()
4495 /// documentation for more information.
4496 ///
4497 /// @ingroup Presets
4498 ///
4499 /// @param[in] session
4500 /// The session of Houdini you are interacting with.
4501 /// See @ref HAPI_Sessions for more on sessions.
4502 /// Pass NULL to just use the default in-process session.
4503 /// <!-- default NULL -->
4504 ///
4505 /// @param[in] buffer
4506 /// A buffer containing the raw binary data of the .idx file.
4507 /// This should be the same buffer that was passed into
4508 /// HAPI_GetPresetCount().
4509 /// <!-- sizeparm buffer_length -->
4510 ///
4511 /// @param[in] buffer_length
4512 /// Size of the buffer.
4513 ///
4514 /// @param[out] preset_names_array
4515 /// Array of preset names to be filled
4516 /// <!-- sizeparm preset_names_count -->
4517 ///
4518 /// @param[in] preset_names_count
4519 /// Number of presets in the file. Should be the same as
4520 /// the count returned by ::HAPI_GetPresetCount()
4521 ///
4522 HAPI_DECL HAPI_GetPresetNames( const HAPI_Session * session,
4523  const char * buffer,
4524  int buffer_length,
4525  HAPI_StringHandle * preset_names_array,
4526  int preset_names_count );
4527 
4528 /// @defgroup Objects
4529 /// Functions for working with OBJ Nodes
4530 
4531 /// @brief Get the object info on an OBJ node.
4532 ///
4533 /// @ingroup Objects
4534 ///
4535 /// @param[in] session
4536 /// The session of Houdini you are interacting with.
4537 /// See @ref HAPI_Sessions for more on sessions.
4538 /// Pass NULL to just use the default in-process session.
4539 /// <!-- default NULL -->
4540 ///
4541 /// @param[in] node_id
4542 /// The node id.
4543 ///
4544 /// @param[out] object_info
4545 /// The output ::HAPI_ObjectInfo.
4546 ///
4547 HAPI_DECL HAPI_GetObjectInfo( const HAPI_Session * session,
4548  HAPI_NodeId node_id,
4549  HAPI_ObjectInfo * object_info );
4550 
4551 /// @brief Get the tranform of an OBJ node.
4552 ///
4553 /// @ingroup Objects
4554 ///
4555 /// @param[in] session
4556 /// The session of Houdini you are interacting with.
4557 /// See @ref HAPI_Sessions for more on sessions.
4558 /// Pass NULL to just use the default in-process session.
4559 /// <!-- default NULL -->
4560 ///
4561 /// @param[in] node_id
4562 /// The object node id.
4563 ///
4564 /// @param[in] relative_to_node_id
4565 /// The object node id for the object to which the returned
4566 /// transform will be relative to. Pass -1 or the node_id
4567 /// to just get the object's local transform.
4568 ///
4569 /// @param[in] rst_order
4570 /// The order of application of translation, rotation and
4571 /// scale.
4572 ///
4573 /// @param[out] transform
4574 /// The output ::HAPI_Transform transform.
4575 ///
4577  HAPI_NodeId node_id,
4578  HAPI_NodeId relative_to_node_id,
4579  HAPI_RSTOrder rst_order,
4580  HAPI_Transform * transform );
4581 
4582 /// @brief Compose a list of child object nodes given a parent node id.
4583 ///
4584 /// Use the @c object_count returned by this function to get the
4585 /// ::HAPI_ObjectInfo structs for each child object using
4586 /// ::HAPI_GetComposedObjectList().
4587 ///
4588 /// Note, if not using the @c categories arg, this is equivalent to:
4589 /// @code
4590 /// HAPI_ComposeChildNodeList(
4591 /// session, parent_node_id,
4592 /// HAPI_NODETYPE_OBJ,
4593 /// HAPI_NODEFLAGS_OBJ_GEOMETRY,
4594 /// true, &object_count );
4595 /// @endcode
4596 ///
4597 /// @ingroup Objects
4598 ///
4599 /// @param[in] session
4600 /// The session of Houdini you are interacting with.
4601 /// See @ref HAPI_Sessions for more on sessions.
4602 /// Pass NULL to just use the default in-process session.
4603 /// <!-- default NULL -->
4604 ///
4605 /// @param[in] parent_node_id
4606 /// The parent node id.
4607 ///
4608 /// @param[in] categories
4609 /// (Optional) Lets you filter object nodes by their render
4610 /// categories. This is a standard OBJ parameter, usually
4611 /// under the Render > Shading tab. If an OBJ node does not
4612 /// have this parameter, one can always add it as a spare.
4613 ///
4614 /// The value of this string argument should be NULL if not
4615 /// used or a space-separated list of category names.
4616 /// Multiple category names will be treated as an AND op.
4617 /// <!-- default NULL -->
4618 /// <!-- string -->
4619 ///
4620 /// @param[out] object_count
4621 /// The number of object nodes currently under the parent.
4622 /// Use this count with a call to
4623 /// ::HAPI_GetComposedObjectList() to get the object infos.
4624 ///
4626  HAPI_NodeId parent_node_id,
4627  const char * categories,
4628  int * object_count );
4629 
4630 /// @brief Fill an array of ::HAPI_ObjectInfo structs.
4631 ///
4632 /// This is best used with ::HAPI_ComposeObjectList() with.
4633 ///
4634 /// @ingroup Objects
4635 ///
4636 /// @param[in] session
4637 /// The session of Houdini you are interacting with.
4638 /// See @ref HAPI_Sessions for more on sessions.
4639 /// Pass NULL to just use the default in-process session.
4640 /// <!-- default NULL -->
4641 ///
4642 /// @param[in] parent_node_id
4643 /// The parent node id.
4644 ///
4645 /// @param[out] object_infos_array
4646 /// Array of ::HAPI_ObjectInfo at least the size of
4647 /// @c length.
4648 /// <!-- sizeparm length -->
4649 ///
4650 /// @param[in] start
4651 /// At least @c 0 and at most @c object_count returned by
4652 /// ::HAPI_ComposeObjectList().
4653 /// <!-- default 0 -->
4654 ///
4655 /// @param[in] length
4656 /// Given @c object_count returned by
4657 /// ::HAPI_ComposeObjectList(), @c length should be at least
4658 /// @c 0 and at most <tt>object_count - start</tt>.
4659 /// <!-- source ::HAPI_ComposeObjectList - start -->
4660 ///
4662  HAPI_NodeId parent_node_id,
4663  HAPI_ObjectInfo * object_infos_array,
4664  int start, int length );
4665 
4666 /// @brief Fill an array of ::HAPI_Transform structs.
4667 ///
4668 /// This is best used with ::HAPI_ComposeObjectList() with.
4669 ///
4670 /// Note that these transforms will be relative to the
4671 /// @c parent_node_id originally given to ::HAPI_ComposeObjectList()
4672 /// and expected to be the same with this call. If @c parent_node_id
4673 /// is not an OBJ node, the transforms will be given as they are on
4674 /// the object node itself.
4675 ///
4676 /// @ingroup Objects
4677 ///
4678 /// @param[in] session
4679 /// The session of Houdini you are interacting with.
4680 /// See @ref HAPI_Sessions for more on sessions.
4681 /// Pass NULL to just use the default in-process session.
4682 /// <!-- default NULL -->
4683 ///
4684 /// @param[in] parent_node_id
4685 /// The parent node id. The object transforms will be
4686 /// relative to this node unless this node is not an OBJ.
4687 ///
4688 /// @param[in] rst_order
4689 /// The order of application of translation, rotation and
4690 /// scale.
4691 ///
4692 /// @param[out] transform_array
4693 /// Array of ::HAPI_Transform at least the size of
4694 /// length.
4695 /// <!-- sizeparm length -->
4696 ///
4697 /// @param[in] start
4698 /// At least @c 0 and at most @c object_count returned by
4699 /// ::HAPI_ComposeObjectList().
4700 /// <!-- default 0 -->
4701 ///
4702 /// @param[in] length
4703 /// Given @c object_count returned by
4704 /// ::HAPI_ComposeObjectList(), @c length should be at least
4705 /// @c 0 and at most <tt>object_count - start</tt>.
4706 /// <!-- source ::HAPI_ComposeObjectList - start -->
4707 ///
4709  HAPI_NodeId parent_node_id,
4710  HAPI_RSTOrder rst_order,
4711  HAPI_Transform * transform_array,
4712  int start, int length );
4713 
4714 /// @brief Get the node ids for the objects being instanced by an
4715 /// Instance OBJ node.
4716 ///
4717 /// @ingroup Objects
4718 ///
4719 /// @param[in] session
4720 /// The session of Houdini you are interacting with.
4721 /// See @ref HAPI_Sessions for more on sessions.
4722 /// Pass NULL to just use the default in-process session.
4723 /// <!-- default NULL -->
4724 ///
4725 /// @param[in] object_node_id
4726 /// The object node id.
4727 ///
4728 /// @param[out] instanced_node_id_array
4729 /// Array of ::HAPI_NodeId at least the size of length.
4730 /// <!-- sizeparm length -->
4731 ///
4732 /// @param[in] start
4733 /// At least @c 0 and at most @c object_count returned by
4734 /// ::HAPI_ComposeObjectList().
4735 /// <!-- default 0 -->
4736 ///
4737 /// @param[in] length
4738 /// Given @c object_count returned by
4739 /// ::HAPI_ComposeObjectList(), @c length should be at least
4740 /// @c 0 and at most <tt>object_count - start</tt>.
4741 /// <!-- source ::HAPI_ComposeObjectList - start -->
4742 ///
4744  HAPI_NodeId object_node_id,
4745  HAPI_NodeId * instanced_node_id_array,
4746  int start, int length );
4747 
4748 /// @brief Fill an array of ::HAPI_Transform structs with the transforms
4749 /// of each instance of this instancer object for a given part.
4750 ///
4751 /// @ingroup Objects
4752 ///
4753 /// @param[in] session
4754 /// The session of Houdini you are interacting with.
4755 /// See @ref HAPI_Sessions for more on sessions.
4756 /// Pass NULL to just use the default in-process session.
4757 /// <!-- default NULL -->
4758 ///
4759 /// @param[in] node_id
4760 /// The object node id.
4761 ///
4762 /// @param[in] part_id
4763 /// The part id.
4764 ///
4765 /// @param[in] rst_order
4766 /// The order of application of translation, rotation and
4767 /// scale.
4768 ///
4769 /// @param[out] transforms_array
4770 /// Array of ::HAPI_Transform at least the size of length.
4771 /// <!-- sizeparm length -->
4772 ///
4773 /// @param[in] start
4774 /// First index of range. Must be at least 0 and at
4775 /// most ::HAPI_PartInfo::pointCount - 1. This is the 0th
4776 /// part of the display geo of the instancer object node.
4777 /// <!-- default 0 -->
4778 ///
4779 /// @param[in] length
4780 /// Must be at least 0 and at most
4781 /// ::HAPI_PartInfo::pointCount - @p start. This is the 0th
4782 /// part of the display geo of the instancer object node.
4783 /// <!-- source ::HAPI_PartInfo::pointCount - start -->
4784 ///
4786  HAPI_NodeId node_id,
4787  HAPI_PartId part_id,
4788  HAPI_RSTOrder rst_order,
4789  HAPI_Transform * transforms_array,
4790  int start, int length );
4791 
4792 /// @brief Set the transform of an individual object. Note that the object
4793 /// nodes have to either be editable or have their transform
4794 /// parameters exposed at the asset level. This won't work otherwise.
4795 ///
4796 /// @ingroup Objects
4797 ///
4798 /// @param[in] session
4799 /// The session of Houdini you are interacting with.
4800 /// See @ref HAPI_Sessions for more on sessions.
4801 /// Pass NULL to just use the default in-process session.
4802 /// <!-- default NULL -->
4803 ///
4804 /// @param[in] node_id
4805 /// The object node id.
4806 ///
4807 /// @param[in] trans
4808 /// A ::HAPI_TransformEuler that stores the transform.
4809 ///
4811  HAPI_NodeId node_id,
4812  const HAPI_TransformEuler * trans );
4813 
4814 /// @defgroup GeometryGetters Geometry Getters
4815 /// Functions for reading Geometry (SOP) data
4816 
4817 /// @brief Get the display geo (SOP) node inside an Object node. If there
4818 /// there are multiple display SOP nodes, only the first one is
4819 /// returned. If the node is a display SOP itself, even if a network,
4820 /// it will return its own geo info. If the node is a SOP but not
4821 /// a network and not the display SOP, this function will fail.
4822 ///
4823 /// The above implies that you can safely call this function on both
4824 /// OBJ and SOP asset nodes and get the same (equivalent) geometry
4825 /// display node back. SOP asset nodes will simply return themselves.
4826 ///
4827 /// @ingroup GeometryGetters
4828 ///
4829 /// @param[in] session
4830 /// The session of Houdini you are interacting with.
4831 /// See @ref HAPI_Sessions for more on sessions.
4832 /// Pass NULL to just use the default in-process session.
4833 /// <!-- default NULL -->
4834 ///
4835 /// @param[in] object_node_id
4836 /// The object node id.
4837 ///
4838 /// @param[out] geo_info
4839 /// ::HAPI_GeoInfo return value.
4840 ///
4842  HAPI_NodeId object_node_id,
4843  HAPI_GeoInfo * geo_info );
4844 
4845 /// @brief A helper method that gets the number of main geometry outputs inside
4846 /// an Object node or SOP node. If the node is an Object node, this
4847 /// method will return the cumulative number of geometry outputs for all
4848 /// geometry nodes that it contains. When searching for output geometry,
4849 /// this method will only consider subnetworks that have their display
4850 /// flag enabled.
4851 ///
4852 /// This method must be called before HAPI_GetOutputGeoInfos() is
4853 /// called.
4854 ///
4855 /// @ingroup GeometryGetters
4856 ///
4857 /// @param[in] session
4858 /// The session of Houdini you are interacting with.
4859 /// See @ref HAPI_Sessions for more on sessions.
4860 /// Pass NULL to just use the default in-process session.
4861 /// <!-- default NULL -->
4862 ///
4863 /// @param[in] node_id
4864 /// The node id of the Object or SOP node to get the geometry
4865 /// output count of.
4866 ///
4867 /// @param[out] count
4868 /// The number of geometry (SOP) outputs.
4870  HAPI_NodeId node_id,
4871  int* count);
4872 
4873 /// @brief Gets the geometry info structs (::HAPI_GeoInfo) for a node's
4874 /// main geometry outputs. This method can only be called after
4875 /// HAPI_GetOutputGeoCount() has been called with the same node id.
4876 ///
4877 /// @ingroup GeometryGetters
4878 ///
4879 /// @param[in] session
4880 /// The session of Houdini you are interacting with.
4881 /// See @ref HAPI_Sessions for more on sessions.
4882 /// Pass NULL to just use the default in-process session.
4883 /// <!-- default NULL -->
4884 ///
4885 /// @param[in] node_id
4886 /// The node id of the Object or SOP node to get the output
4887 /// geometry info structs (::HAPI_GeoInfo) for.
4888 ///
4889 /// @param[out] geo_infos_array
4890 /// Output array where the output geometry info structs will be
4891 /// stored. The size of the array must match the count argument
4892 /// returned by the HAPI_GetOutputGeoCount() method.
4893 /// <!-- sizeparm count -->
4894 ///
4895 /// @param[in] count
4896 /// Sanity check count. The count must be equal to the count
4897 /// returned by the HAPI_GetOutputGeoCount() method.
4899  HAPI_NodeId node_id,
4900  HAPI_GeoInfo* geo_infos_array,
4901  int count );
4902 
4903 /// @brief Get the geometry info struct (::HAPI_GeoInfo) on a SOP node.
4904 ///
4905 /// @ingroup GeometryGetters
4906 ///
4907 /// @param[in] session
4908 /// The session of Houdini you are interacting with.
4909 /// See @ref HAPI_Sessions for more on sessions.
4910 /// Pass NULL to just use the default in-process session.
4911 /// <!-- default NULL -->
4912 ///
4913 /// @param[in] node_id
4914 /// The node id.
4915 ///
4916 /// @param[out] geo_info
4917 /// ::HAPI_GeoInfo return value.
4918 ///
4919 HAPI_DECL HAPI_GetGeoInfo( const HAPI_Session * session,
4920  HAPI_NodeId node_id,
4921  HAPI_GeoInfo * geo_info );
4922 
4923 /// @brief Get a particular part info struct.
4924 ///
4925 /// @ingroup GeometryGetters
4926 ///
4927 /// @param[in] session
4928 /// The session of Houdini you are interacting with.
4929 /// See @ref HAPI_Sessions for more on sessions.
4930 /// Pass NULL to just use the default in-process session.
4931 /// <!-- default NULL -->
4932 ///
4933 /// @param[in] node_id
4934 /// The SOP node id.
4935 ///
4936 /// @param[in] part_id
4937 /// The part id.
4938 ///
4939 /// @param[out] part_info
4940 /// ::HAPI_PartInfo return value.
4941 ///
4942 HAPI_DECL HAPI_GetPartInfo( const HAPI_Session * session,
4943  HAPI_NodeId node_id,
4944  HAPI_PartId part_id,
4945  HAPI_PartInfo * part_info );
4946 
4947 
4948 /// @brief Gets the number of edges that belong to an edge group on a geometry
4949 /// part.
4950 ///
4951 /// @ingroup GeometryGetters
4952 ///
4953 /// @param[in] session
4954 /// The session of Houdini you are interacting with.
4955 /// See @ref HAPI_Sessions for more on sessions.
4956 /// Pass NULL to just use the default in-process session.
4957 /// <!-- default NULL -->
4958 ///
4959 /// @param[in] node_id
4960 /// The SOP node id.
4961 ///
4962 /// @param[in] part_id
4963 /// The part id.
4964 ///
4965 /// @param[in] group_name
4966 /// The name of the edge group.
4967 /// <!-- string -->
4968 ///
4969 /// @param[out] edge_count
4970 /// The number of edges that belong to the group.
4971 ///
4973  HAPI_NodeId node_id,
4974  HAPI_PartId part_id,
4975  const char * group_name,
4976  int * edge_count );
4977 
4978 /// @brief Get the array of faces where the nth integer in the array is
4979 /// the number of vertices the nth face has.
4980 ///
4981 /// @ingroup GeometryGetters
4982 ///
4983 /// @param[in] session
4984 /// The session of Houdini you are interacting with.
4985 /// See @ref HAPI_Sessions for more on sessions.
4986 /// Pass NULL to just use the default in-process session.
4987 /// <!-- default NULL -->
4988 ///
4989 /// @param[in] node_id
4990 /// The node id.
4991 ///
4992 /// @param[in] part_id
4993 /// The part id.
4994 ///
4995 /// @param[out] face_counts_array
4996 /// An integer array at least the size of length.
4997 /// <!-- sizeparm length -->
4998 ///
4999 /// @param[in] start
5000 /// First index of range. Must be at least 0 and at
5001 /// most ::HAPI_PartInfo::faceCount - 1.
5002 /// <!-- default 0 -->
5003 ///
5004 /// @param[in] length
5005 /// Must be at least 0 and at most
5006 /// ::HAPI_PartInfo::faceCount - @p start.
5007 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
5008 ///
5009 HAPI_DECL HAPI_GetFaceCounts( const HAPI_Session * session,
5010  HAPI_NodeId node_id,
5011  HAPI_PartId part_id,
5012  int * face_counts_array,
5013  int start, int length );
5014 
5015 /// @brief Get array containing the vertex-point associations where the
5016 /// ith element in the array is the point index the ith vertex
5017 /// associates with.
5018 ///
5019 /// @ingroup GeometryGetters
5020 ///
5021 /// @param[in] session
5022 /// The session of Houdini you are interacting with.
5023 /// See @ref HAPI_Sessions for more on sessions.
5024 /// Pass NULL to just use the default in-process session.
5025 /// <!-- default NULL -->
5026 ///
5027 /// @param[in] node_id
5028 /// The node id.
5029 ///
5030 /// @param[in] part_id
5031 /// The part id.
5032 ///
5033 /// @param[out] vertex_list_array
5034 /// An integer array at least the size of length.
5035 /// <!-- sizeparm length -->
5036 ///
5037 /// @param[in] start
5038 /// First index of range. Must be at least 0 and at
5039 /// most ::HAPI_PartInfo::vertexCount - 1.
5040 /// <!-- default 0 -->
5041 ///
5042 /// @param[in] length
5043 /// Must be at least 0 and at most
5044 /// ::HAPI_PartInfo::vertexCount - @p start.
5045 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
5046 ///
5047 HAPI_DECL HAPI_GetVertexList( const HAPI_Session * session,
5048  HAPI_NodeId node_id,
5049  HAPI_PartId part_id,
5050  int * vertex_list_array,
5051  int start, int length );
5052 
5053 /// @defgroup Attributes
5054 /// Functions for working with attributes.
5055 
5056 /// @brief Get the attribute info struct for the attribute specified by name.
5057 ///
5058 /// @ingroup Attributes
5059 ///
5060 /// @param[in] session
5061 /// The session of Houdini you are interacting with.
5062 /// See @ref HAPI_Sessions for more on sessions.
5063 /// Pass NULL to just use the default in-process session.
5064 /// <!-- default NULL -->
5065 ///
5066 /// @param[in] node_id
5067 /// The node id.
5068 ///
5069 /// @param[in] part_id
5070 /// The part id.
5071 ///
5072 /// @param[in] name
5073 /// Attribute name.
5074 /// <!-- string -->
5075 ///
5076 /// @param[in] owner
5077 /// Attribute owner.
5078 ///
5079 /// @param[out] attr_info
5080 /// ::HAPI_AttributeInfo to be filled. Check
5081 /// ::HAPI_AttributeInfo::exists to see if this attribute
5082 /// exists.
5083 ///
5085  HAPI_NodeId node_id,
5086  HAPI_PartId part_id,
5087  const char * name,
5088  HAPI_AttributeOwner owner,
5089  HAPI_AttributeInfo * attr_info );
5090 
5091 /// @brief Get list of attribute names by attribute owner. Note that the
5092 /// name string handles are only valid until the next time this
5093 /// function is called.
5094 ///
5095 /// @ingroup Attributes
5096 ///
5097 /// @param[in] session
5098 /// The session of Houdini you are interacting with.
5099 /// See @ref HAPI_Sessions for more on sessions.
5100 /// Pass NULL to just use the default in-process session.
5101 /// <!-- default NULL -->
5102 ///
5103 /// @param[in] node_id
5104 /// The node id.
5105 ///
5106 /// @param[in] part_id
5107 /// The part id.
5108 ///
5109 /// @param[in] owner
5110 /// The ::HAPI_AttributeOwner enum value specifying the
5111 /// owner of the attribute.
5112 ///
5113 /// @param[out] attribute_names_array
5114 /// Array of ints (string handles) to house the
5115 /// attribute names. Should be exactly the size of the
5116 /// appropriate attribute owner type count
5117 /// in ::HAPI_PartInfo.
5118 /// <!-- sizeparm count -->
5119 ///
5120 /// @param[in] count
5121 /// Sanity check count. Must be equal to the appropriate
5122 /// attribute owner type count in ::HAPI_PartInfo.
5123 ///
5125  HAPI_NodeId node_id,
5126  HAPI_PartId part_id,
5127  HAPI_AttributeOwner owner,
5128  HAPI_StringHandle * attribute_names_array,
5129  int count );
5130 
5131 /// @brief Get attribute integer data.
5132 ///
5133 /// @ingroup GeometryGetters Attributes
5134 ///
5135 /// @param[in] session
5136 /// The session of Houdini you are interacting with.
5137 /// See @ref HAPI_Sessions for more on sessions.
5138 /// Pass NULL to just use the default in-process session.
5139 /// <!-- default NULL -->
5140 ///
5141 /// @param[in] node_id
5142 /// The node id.
5143 ///
5144 /// @param[in] part_id
5145 /// The part id.
5146 ///
5147 /// @param[in] name
5148 /// Attribute name.
5149 /// <!-- string -->
5150 ///
5151 /// @param[in] attr_info
5152 /// ::HAPI_AttributeInfo used as input for what tuple size.
5153 /// you want. Also contains some sanity checks like
5154 /// data type. Generally should be the same struct
5155 /// returned by ::HAPI_GetAttributeInfo().
5156 ///
5157 /// @param[in] stride
5158 /// Specifies how many items to skip over for each element.
5159 /// With a stride of -1, the stride will be set to
5160 /// @c attr_info->tuple_size. Otherwise, the stride will be
5161 /// set to the maximum of @c attr_info->tuple_size and
5162 /// @c stride.
5163 ///
5164 /// @param[out] data_array
5165 /// An integer array at least the size of
5166 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5167 /// <!-- sizeparm length -->
5168 ///
5169 /// @param[in] start
5170 /// First index of range. Must be at least 0 and at
5171 /// most ::HAPI_AttributeInfo::count - 1.
5172 /// <!-- default 0 -->
5173 ///
5174 /// @param[in] length
5175 /// Must be at least 0 and at most
5176 /// ::HAPI_AttributeInfo::count - @p start.
5177 /// Note, if 0 is passed for length, the function will just
5178 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5179 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5180 ///
5182  HAPI_NodeId node_id,
5183  HAPI_PartId part_id,
5184  const char * name,
5185  HAPI_AttributeInfo * attr_info,
5186  int stride,
5187  int * data_array,
5188  int start, int length );
5189 
5190 /// @brief Get array attribute integer data.
5191 /// Each entry in an array attribute can have varying array lengths.
5192 /// Therefore the array values are returned as a flat array, with
5193 /// another sizes array containing the lengths of each array entry.
5194 ///
5195 /// @ingroup GeometryGetters Attributes
5196 ///
5197 /// @param[in] session
5198 /// The session of Houdini you are interacting with.
5199 /// See @ref HAPI_Sessions for more on sessions.
5200 /// Pass NULL to just use the default in-process session.
5201 /// <!-- default NULL -->
5202 ///
5203 /// @param[in] node_id
5204 /// The node id.
5205 ///
5206 /// @param[in] part_id
5207 /// The part id.
5208 ///
5209 /// @param[in] name
5210 /// Attribute name.
5211 /// <!-- string -->
5212 ///
5213 /// @param[in] attr_info
5214 /// ::HAPI_AttributeInfo used as input for what tuple size.
5215 /// you want. Also contains some sanity checks like
5216 /// data type. Generally should be the same struct
5217 /// returned by ::HAPI_GetAttributeInfo().
5218 ///
5219 /// @param[out] data_fixed_array
5220 /// An integer array at least the size of
5221 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5222 /// <!-- sizeparm data_fixed_length -->
5223 ///
5224 /// @param[in] data_fixed_length
5225 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5226 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5227 ///
5228 /// @param[out] sizes_fixed_array
5229 /// An integer array at least the size of
5230 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5231 /// <!-- source ::HAPI_AttributeInfo::count -->
5232 /// <!-- sizeparm sizes_fixed_length -->
5233 ///
5234 /// @param[in] start
5235 /// First index of range. Must be at least 0 and at
5236 /// most ::HAPI_AttributeInfo::count - 1.
5237 /// <!-- default 0 -->
5238 ///
5239 /// @param[in] sizes_fixed_length
5240 /// Must be at least 0 and at most
5241 /// ::HAPI_AttributeInfo::count - @p start.
5242 /// Note, if 0 is passed for length, the function will just
5243 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5244 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5245 ///
5247  HAPI_NodeId node_id,
5248  HAPI_PartId part_id,
5249  const char * name,
5250  HAPI_AttributeInfo * attr_info,
5251  int * data_fixed_array,
5252  int data_fixed_length,
5253  int * sizes_fixed_array,
5254  int start, int sizes_fixed_length );
5255 
5256 /// @brief Get attribute unsigned 8-bit integer data.
5257 ///
5258 /// @ingroup GeometryGetters Attributes
5259 ///
5260 /// @param[in] session
5261 /// The session of Houdini you are interacting with.
5262 /// See @ref HAPI_Sessions for more on sessions.
5263 /// Pass NULL to just use the default in-process session.
5264 /// <!-- default NULL -->
5265 ///
5266 /// @param[in] node_id
5267 /// The node id.
5268 ///
5269 /// @param[in] part_id
5270 /// The part id.
5271 ///
5272 /// @param[in] name
5273 /// Attribute name.
5274 /// <!-- string -->
5275 ///
5276 /// @param[in] attr_info
5277 /// ::HAPI_AttributeInfo used as input for what tuple size.
5278 /// you want. Also contains some sanity checks like
5279 /// data type. Generally should be the same struct
5280 /// returned by ::HAPI_GetAttributeInfo().
5281 ///
5282 /// @param[in] stride
5283 /// Specifies how many items to skip over for each element.
5284 /// With a stride of -1, the stride will be set to
5285 /// @c attr_info->tuple_size. Otherwise, the stride will be
5286 /// set to the maximum of @c attr_info->tuple_size and
5287 /// @c stride.
5288 ///
5289 /// @param[out] data_array
5290 /// An unsigned 8-bit integer array at least the size of
5291 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5292 /// <!-- sizeparm length -->
5293 ///
5294 /// @param[in] start
5295 /// First index of range. Must be at least 0 and at
5296 /// most ::HAPI_AttributeInfo::count - 1.
5297 /// <!-- default 0 -->
5298 ///
5299 /// @param[in] length
5300 /// Must be at least 0 and at most
5301 /// ::HAPI_AttributeInfo::count - @p start.
5302 /// Note, if 0 is passed for length, the function will just
5303 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5304 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5305 ///
5307  HAPI_NodeId node_id,
5308  HAPI_PartId part_id,
5309  const char * name,
5310  HAPI_AttributeInfo * attr_info,
5311  int stride,
5312  HAPI_UInt8 * data_array,
5313  int start, int length );
5314 
5315 /// @brief Get array attribute unsigned 8-bit integer data.
5316 /// Each entry in an array attribute can have varying array lengths.
5317 /// Therefore the array values are returned as a flat array, with
5318 /// another sizes array containing the lengths of each array entry.
5319 ///
5320 /// @ingroup GeometryGetters Attributes
5321 ///
5322 /// @param[in] session
5323 /// The session of Houdini you are interacting with.
5324 /// See @ref HAPI_Sessions for more on sessions.
5325 /// Pass NULL to just use the default in-process session.
5326 /// <!-- default NULL -->
5327 ///
5328 /// @param[in] node_id
5329 /// The node id.
5330 ///
5331 /// @param[in] part_id
5332 /// The part id.
5333 ///
5334 /// @param[in] name
5335 /// Attribute name.
5336 /// <!-- string -->
5337 ///
5338 /// @param[in] attr_info
5339 /// ::HAPI_AttributeInfo used as input for what tuple size.
5340 /// you want. Also contains some sanity checks like
5341 /// data type. Generally should be the same struct
5342 /// returned by ::HAPI_GetAttributeInfo().
5343 ///
5344 /// @param[out] data_fixed_array
5345 /// An unsigned 8-bit integer array at least the size of
5346 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5347 /// <!-- sizeparm data_fixed_length -->
5348 ///
5349 /// @param[in] data_fixed_length
5350 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5351 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5352 ///
5353 /// @param[out] sizes_fixed_array
5354 /// An integer array at least the size of
5355 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5356 /// <!-- sizeparm sizes_fixed_length -->
5357 ///
5358 /// @param[in] start
5359 /// First index of range. Must be at least 0 and at
5360 /// most ::HAPI_AttributeInfo::count - 1.
5361 /// <!-- default 0 -->
5362 ///
5363 /// @param[in] sizes_fixed_length
5364 /// Must be at least 0 and at most
5365 /// ::HAPI_AttributeInfo::count - @p start.
5366 /// Note, if 0 is passed for length, the function will just
5367 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5368 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5369 ///
5371  HAPI_NodeId node_id,
5372  HAPI_PartId part_id,
5373  const char * name,
5374  HAPI_AttributeInfo * attr_info,
5375  HAPI_UInt8 * data_fixed_array,
5376  int data_fixed_length,
5377  int * sizes_fixed_array,
5378  int start, int sizes_fixed_length );
5379 
5380 /// @brief Get attribute 8-bit integer data.
5381 ///
5382 /// @ingroup GeometryGetters Attributes
5383 ///
5384 /// @param[in] session
5385 /// The session of Houdini you are interacting with.
5386 /// See @ref HAPI_Sessions for more on sessions.
5387 /// Pass NULL to just use the default in-process session.
5388 /// <!-- default NULL -->
5389 ///
5390 /// @param[in] node_id
5391 /// The node id.
5392 ///
5393 /// @param[in] part_id
5394 /// The part id.
5395 ///
5396 /// @param[in] name
5397 /// Attribute name.
5398 /// <!-- string -->
5399 ///
5400 /// @param[in] attr_info
5401 /// ::HAPI_AttributeInfo used as input for what tuple size.
5402 /// you want. Also contains some sanity checks like
5403 /// data type. Generally should be the same struct
5404 /// returned by ::HAPI_GetAttributeInfo().
5405 ///
5406 /// @param[in] stride
5407 /// Specifies how many items to skip over for each element.
5408 /// With a stride of -1, the stride will be set to
5409 /// @c attr_info->tuple_size. Otherwise, the stride will be
5410 /// set to the maximum of @c attr_info->tuple_size and
5411 /// @c stride.
5412 ///
5413 /// @param[out] data_array
5414 /// An 8-bit integer array at least the size of
5415 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5416 /// <!-- sizeparm length -->
5417 ///
5418 /// @param[in] start
5419 /// First index of range. Must be at least 0 and at
5420 /// most ::HAPI_AttributeInfo::count - 1.
5421 /// <!-- default 0 -->
5422 ///
5423 /// @param[in] length
5424 /// Must be at least 0 and at most
5425 /// ::HAPI_AttributeInfo::count - @p start.
5426 /// Note, if 0 is passed for length, the function will just
5427 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5428 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5429 ///
5431  HAPI_NodeId node_id,
5432  HAPI_PartId part_id,
5433  const char * name,
5434  HAPI_AttributeInfo * attr_info,
5435  int stride,
5436  HAPI_Int8 * data_array,
5437  int start, int length );
5438 
5439 /// @brief Get array attribute 8-bit integer data.
5440 /// Each entry in an array attribute can have varying array lengths.
5441 /// Therefore the array values are returned as a flat array, with
5442 /// another sizes array containing the lengths of each array entry.
5443 ///
5444 /// @ingroup GeometryGetters Attributes
5445 ///
5446 /// @param[in] session
5447 /// The session of Houdini you are interacting with.
5448 /// See @ref HAPI_Sessions for more on sessions.
5449 /// Pass NULL to just use the default in-process session.
5450 /// <!-- default NULL -->
5451 ///
5452 /// @param[in] node_id
5453 /// The node id.
5454 ///
5455 /// @param[in] part_id
5456 /// The part id.
5457 ///
5458 /// @param[in] name
5459 /// Attribute name.
5460 /// <!-- string -->
5461 ///
5462 /// @param[in] attr_info
5463 /// ::HAPI_AttributeInfo used as input for what tuple size.
5464 /// you want. Also contains some sanity checks like
5465 /// data type. Generally should be the same struct
5466 /// returned by ::HAPI_GetAttributeInfo().
5467 ///
5468 /// @param[out] data_fixed_array
5469 /// An 8-bit integer array at least the size of
5470 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5471 /// <!-- sizeparm data_fixed_length -->
5472 ///
5473 /// @param[in] data_fixed_length
5474 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5475 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5476 ///
5477 /// @param[out] sizes_fixed_array
5478 /// An integer array at least the size of
5479 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5480 /// <!-- sizeparm sizes_fixed_length -->
5481 ///
5482 /// @param[in] start
5483 /// First index of range. Must be at least 0 and at
5484 /// most ::HAPI_AttributeInfo::count - 1.
5485 /// <!-- default 0 -->
5486 ///
5487 /// @param[in] sizes_fixed_length
5488 /// Must be at least 0 and at most
5489 /// ::HAPI_AttributeInfo::count - @p start.
5490 /// Note, if 0 is passed for length, the function will just
5491 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5492 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5493 ///
5495  HAPI_NodeId node_id,
5496  HAPI_PartId part_id,
5497  const char * name,
5498  HAPI_AttributeInfo * attr_info,
5499  HAPI_Int8 * data_fixed_array,
5500  int data_fixed_length,
5501  int * sizes_fixed_array,
5502  int start, int sizes_fixed_length );
5503 
5504 /// @brief Get attribute 16-bit integer data.
5505 ///
5506 /// @ingroup GeometryGetters Attributes
5507 ///
5508 /// @param[in] session
5509 /// The session of Houdini you are interacting with.
5510 /// See @ref HAPI_Sessions for more on sessions.
5511 /// Pass NULL to just use the default in-process session.
5512 /// <!-- default NULL -->
5513 ///
5514 /// @param[in] node_id
5515 /// The node id.
5516 ///
5517 /// @param[in] part_id
5518 /// The part id.
5519 ///
5520 /// @param[in] name
5521 /// Attribute name.
5522 /// <!-- string -->
5523 ///
5524 /// @param[in] attr_info
5525 /// ::HAPI_AttributeInfo used as input for what tuple size.
5526 /// you want. Also contains some sanity checks like
5527 /// data type. Generally should be the same struct
5528 /// returned by ::HAPI_GetAttributeInfo().
5529 ///
5530 /// @param[in] stride
5531 /// Specifies how many items to skip over for each element.
5532 /// With a stride of -1, the stride will be set to
5533 /// @c attr_info->tuple_size. Otherwise, the stride will be
5534 /// set to the maximum of @c attr_info->tuple_size and
5535 /// @c stride.
5536 ///
5537 /// @param[out] data_array
5538 /// An 16-bit integer array at least the size of
5539 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5540 /// <!-- sizeparm length -->
5541 ///
5542 /// @param[in] start
5543 /// First index of range. Must be at least 0 and at
5544 /// most ::HAPI_AttributeInfo::count - 1.
5545 /// <!-- default 0 -->
5546 ///
5547 /// @param[in] length
5548 /// Must be at least 0 and at most
5549 /// ::HAPI_AttributeInfo::count - @p start.
5550 /// Note, if 0 is passed for length, the function will just
5551 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5552 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5553 ///
5555  HAPI_NodeId node_id,
5556  HAPI_PartId part_id,
5557  const char * name,
5558  HAPI_AttributeInfo * attr_info,
5559  int stride,
5560  HAPI_Int16 * data_array,
5561  int start, int length );
5562 
5563 /// @brief Get array attribute 16-bit integer data.
5564 /// Each entry in an array attribute can have varying array lengths.
5565 /// Therefore the array values are returned as a flat array, with
5566 /// another sizes array containing the lengths of each array entry.
5567 ///
5568 /// @ingroup GeometryGetters Attributes
5569 ///
5570 /// @param[in] session
5571 /// The session of Houdini you are interacting with.
5572 /// See @ref HAPI_Sessions for more on sessions.
5573 /// Pass NULL to just use the default in-process session.
5574 /// <!-- default NULL -->
5575 ///
5576 /// @param[in] node_id
5577 /// The node id.
5578 ///
5579 /// @param[in] part_id
5580 /// The part id.
5581 ///
5582 /// @param[in] name
5583 /// Attribute name.
5584 /// <!-- string -->
5585 ///
5586 /// @param[in] attr_info
5587 /// ::HAPI_AttributeInfo used as input for what tuple size.
5588 /// you want. Also contains some sanity checks like
5589 /// data type. Generally should be the same struct
5590 /// returned by ::HAPI_GetAttributeInfo().
5591 ///
5592 /// @param[out] data_fixed_array
5593 /// An 16-bit integer array at least the size of
5594 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5595 /// <!-- sizeparm data_fixed_length -->
5596 ///
5597 /// @param[in] data_fixed_length
5598 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5599 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5600 ///
5601 /// @param[out] sizes_fixed_array
5602 /// An integer array at least the size of
5603 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5604 /// <!-- sizeparm sizes_fixed_length -->
5605 ///
5606 /// @param[in] start
5607 /// First index of range. Must be at least 0 and at
5608 /// most ::HAPI_AttributeInfo::count - 1.
5609 /// <!-- default 0 -->
5610 ///
5611 /// @param[in] sizes_fixed_length
5612 /// Must be at least 0 and at most
5613 /// ::HAPI_AttributeInfo::count - @p start.
5614 /// Note, if 0 is passed for length, the function will just
5615 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5616 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5617 ///
5619  HAPI_NodeId node_id,
5620  HAPI_PartId part_id,
5621  const char * name,
5622  HAPI_AttributeInfo * attr_info,
5623  HAPI_Int16 * data_fixed_array,
5624  int data_fixed_length,
5625  int * sizes_fixed_array,
5626  int start, int sizes_fixed_length );
5627 
5628 /// @brief Get attribute 64-bit integer data.
5629 ///
5630 /// @ingroup GeometryGetters Attributes
5631 ///
5632 /// @param[in] session
5633 /// The session of Houdini you are interacting with.
5634 /// See @ref HAPI_Sessions for more on sessions.
5635 /// Pass NULL to just use the default in-process session.
5636 /// <!-- default NULL -->
5637 ///
5638 /// @param[in] node_id
5639 /// The node id.
5640 ///
5641 /// @param[in] part_id
5642 /// The part id.
5643 ///
5644 /// @param[in] name
5645 /// Attribute name.
5646 /// <!-- string -->
5647 ///
5648 /// @param[in] attr_info
5649 /// ::HAPI_AttributeInfo used as input for what tuple size.
5650 /// you want. Also contains some sanity checks like
5651 /// data type. Generally should be the same struct
5652 /// returned by ::HAPI_GetAttributeInfo().
5653 ///
5654 /// @param[in] stride
5655 /// Specifies how many items to skip over for each element.
5656 /// With a stride of -1, the stride will be set to
5657 /// @c attr_info->tuple_size. Otherwise, the stride will be
5658 /// set to the maximum of @c attr_info->tuple_size and
5659 /// @c stride.
5660 ///
5661 /// @param[out] data_array
5662 /// An 64-bit integer array at least the size of
5663 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5664 /// <!-- sizeparm length -->
5665 ///
5666 /// @param[in] start
5667 /// First index of range. Must be at least 0 and at
5668 /// most ::HAPI_AttributeInfo::count - 1.
5669 /// <!-- default 0 -->
5670 ///
5671 /// @param[in] length
5672 /// Must be at least 0 and at most
5673 /// ::HAPI_AttributeInfo::count - @p start.
5674 /// Note, if 0 is passed for length, the function will just
5675 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5676 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5677 ///
5679  HAPI_NodeId node_id,
5680  HAPI_PartId part_id,
5681  const char * name,
5682  HAPI_AttributeInfo * attr_info,
5683  int stride,
5684  HAPI_Int64 * data_array,
5685  int start, int length );
5686 
5687 /// @brief Get array attribute 64-bit integer data.
5688 /// Each entry in an array attribute can have varying array lengths.
5689 /// Therefore the array values are returned as a flat array, with
5690 /// another sizes array containing the lengths of each array entry.
5691 ///
5692 /// @ingroup GeometryGetters Attributes
5693 ///
5694 /// @param[in] session
5695 /// The session of Houdini you are interacting with.
5696 /// See @ref HAPI_Sessions for more on sessions.
5697 /// Pass NULL to just use the default in-process session.
5698 /// <!-- default NULL -->
5699 ///
5700 /// @param[in] node_id
5701 /// The node id.
5702 ///
5703 /// @param[in] part_id
5704 /// The part id.
5705 ///
5706 /// @param[in] name
5707 /// Attribute name.
5708 /// <!-- string -->
5709 ///
5710 /// @param[in] attr_info
5711 /// ::HAPI_AttributeInfo used as input for what tuple size.
5712 /// you want. Also contains some sanity checks like
5713 /// data type. Generally should be the same struct
5714 /// returned by ::HAPI_GetAttributeInfo().
5715 ///
5716 /// @param[out] data_fixed_array
5717 /// An 64-bit integer array at least the size of
5718 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5719 /// <!-- sizeparm data_fixed_length -->
5720 ///
5721 /// @param[in] data_fixed_length
5722 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5723 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5724 ///
5725 /// @param[out] sizes_fixed_array
5726 /// An integer array at least the size of
5727 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5728 /// <!-- sizeparm sizes_fixed_length -->
5729 ///
5730 /// @param[in] start
5731 /// First index of range. Must be at least 0 and at
5732 /// most ::HAPI_AttributeInfo::count - 1.
5733 /// <!-- default 0 -->
5734 ///
5735 /// @param[in] sizes_fixed_length
5736 /// Must be at least 0 and at most
5737 /// ::HAPI_AttributeInfo::count - @p start.
5738 /// Note, if 0 is passed for length, the function will just
5739 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5740 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5741 ///
5743  HAPI_NodeId node_id,
5744  HAPI_PartId part_id,
5745  const char * name,
5746  HAPI_AttributeInfo * attr_info,
5747  HAPI_Int64 * data_fixed_array,
5748  int data_fixed_length,
5749  int * sizes_fixed_array,
5750  int start, int sizes_fixed_length );
5751 
5752 /// @brief Get attribute float data.
5753 ///
5754 /// @ingroup GeometryGetters Attributes
5755 ///
5756 /// @param[in] session
5757 /// The session of Houdini you are interacting with.
5758 /// See @ref HAPI_Sessions for more on sessions.
5759 /// Pass NULL to just use the default in-process session.
5760 /// <!-- default NULL -->
5761 ///
5762 /// @param[in] node_id
5763 /// The node id.
5764 ///
5765 /// @param[in] part_id
5766 /// The part id.
5767 ///
5768 /// @param[in] name
5769 /// Attribute name.
5770 /// <!-- string -->
5771 ///
5772 /// @param[in] attr_info
5773 /// ::HAPI_AttributeInfo used as input for what tuple size.
5774 /// you want. Also contains some sanity checks like
5775 /// data type. Generally should be the same struct
5776 /// returned by ::HAPI_GetAttributeInfo().
5777 ///
5778 /// @param[in] stride
5779 /// Specifies how many items to skip over for each element.
5780 /// With a stride of -1, the stride will be set to
5781 /// @c attr_info->tuple_size. Otherwise, the stride will be
5782 /// set to the maximum of @c attr_info->tuple_size and
5783 /// @c stride.
5784 ///
5785 /// @param[out] data_array
5786 /// An float array at least the size of
5787 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5788 /// <!-- sizeparm length -->
5789 ///
5790 /// @param[in] start
5791 /// First index of range. Must be at least 0 and at
5792 /// most ::HAPI_AttributeInfo::count - 1.
5793 /// <!-- default 0 -->
5794 ///
5795 /// @param[in] length
5796 /// Must be at least 0 and at most
5797 /// ::HAPI_AttributeInfo::count - @p start.
5798 /// Note, if 0 is passed for length, the function will just
5799 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5800 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5801 ///
5803  HAPI_NodeId node_id,
5804  HAPI_PartId part_id,
5805  const char * name,
5806  HAPI_AttributeInfo * attr_info,
5807  int stride,
5808  float * data_array,
5809  int start, int length );
5810 
5811 /// @brief Get array attribute float data.
5812 /// Each entry in an array attribute can have varying array lengths.
5813 /// Therefore the array values are returned as a flat array, with
5814 /// another sizes array containing the lengths of each array entry.
5815 ///
5816 /// @ingroup GeometryGetters Attributes
5817 ///
5818 /// @param[in] session
5819 /// The session of Houdini you are interacting with.
5820 /// See @ref HAPI_Sessions for more on sessions.
5821 /// Pass NULL to just use the default in-process session.
5822 /// <!-- default NULL -->
5823 ///
5824 /// @param[in] node_id
5825 /// The node id.
5826 ///
5827 /// @param[in] part_id
5828 /// The part id.
5829 ///
5830 /// @param[in] name
5831 /// Attribute name.
5832 /// <!-- string -->
5833 ///
5834 /// @param[in] attr_info
5835 /// ::HAPI_AttributeInfo used as input for what tuple size.
5836 /// you want. Also contains some sanity checks like
5837 /// data type. Generally should be the same struct
5838 /// returned by ::HAPI_GetAttributeInfo().
5839 ///
5840 /// @param[out] data_fixed_array
5841 /// An float array at least the size of
5842 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5843 /// <!-- sizeparm data_fixed_length -->
5844 ///
5845 /// @param[in] data_fixed_length
5846 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5847 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5848 ///
5849 /// @param[out] sizes_fixed_array
5850 /// An integer array at least the size of
5851 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5852 /// <!-- sizeparm sizes_fixed_length -->
5853 ///
5854 /// @param[in] start
5855 /// First index of range. Must be at least 0 and at
5856 /// most ::HAPI_AttributeInfo::count - 1.
5857 /// <!-- default 0 -->
5858 ///
5859 /// @param[in] sizes_fixed_length
5860 /// Must be at least 0 and at most
5861 /// ::HAPI_AttributeInfo::count - @p start.
5862 /// Note, if 0 is passed for length, the function will just
5863 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5864 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5865 ///
5867  HAPI_NodeId node_id,
5868  HAPI_PartId part_id,
5869  const char * name,
5870  HAPI_AttributeInfo * attr_info,
5871  float * data_fixed_array,
5872  int data_fixed_length,
5873  int * sizes_fixed_array,
5874  int start, int sizes_fixed_length );
5875 
5876 /// @brief Get 64-bit attribute float data.
5877 ///
5878 /// @ingroup GeometryGetters Attributes
5879 ///
5880 /// @param[in] session
5881 /// The session of Houdini you are interacting with.
5882 /// See @ref HAPI_Sessions for more on sessions.
5883 /// Pass NULL to just use the default in-process session.
5884 /// <!-- default NULL -->
5885 ///
5886 /// @param[in] node_id
5887 /// The node id.
5888 ///
5889 /// @param[in] part_id
5890 /// The part id.
5891 ///
5892 /// @param[in] name
5893 /// Attribute name.
5894 /// <!-- string -->
5895 ///
5896 /// @param[in] attr_info
5897 /// ::HAPI_AttributeInfo used as input for what tuple size.
5898 /// you want. Also contains some sanity checks like
5899 /// data type. Generally should be the same struct
5900 /// returned by ::HAPI_GetAttributeInfo().
5901 ///
5902 /// @param[in] stride
5903 /// Specifies how many items to skip over for each element.
5904 /// With a stride of -1, the stride will be set to
5905 /// @c attr_info->tuple_size. Otherwise, the stride will be
5906 /// set to the maximum of @c attr_info->tuple_size and
5907 /// @c stride.
5908 ///
5909 /// @param[out] data_array
5910 /// An 64-bit float array at least the size of
5911 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5912 /// <!-- sizeparm length -->
5913 ///
5914 /// @param[in] start
5915 /// First index of range. Must be at least 0 and at
5916 /// most ::HAPI_AttributeInfo::count - 1.
5917 /// <!-- default 0 -->
5918 ///
5919 /// @param[in] length
5920 /// Must be at least 0 and at most
5921 /// ::HAPI_AttributeInfo::count - @p start.
5922 /// Note, if 0 is passed for length, the function will just
5923 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5924 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5925 ///
5927  HAPI_NodeId node_id,
5928  HAPI_PartId part_id,
5929  const char * name,
5930  HAPI_AttributeInfo * attr_info,
5931  int stride,
5932  double * data_array,
5933  int start, int length );
5934 
5935 /// @brief Get array attribute 64-bit float data.
5936 /// Each entry in an array attribute can have varying array lengths.
5937 /// Therefore the array values are returned as a flat array, with
5938 /// another sizes array containing the lengths of each array entry.
5939 ///
5940 /// @ingroup GeometryGetters Attributes
5941 ///
5942 /// @param[in] session
5943 /// The session of Houdini you are interacting with.
5944 /// See @ref HAPI_Sessions for more on sessions.
5945 /// Pass NULL to just use the default in-process session.
5946 /// <!-- default NULL -->
5947 ///
5948 /// @param[in] node_id
5949 /// The node id.
5950 ///
5951 /// @param[in] part_id
5952 /// The part id.
5953 ///
5954 /// @param[in] name
5955 /// Attribute name.
5956 /// <!-- string -->
5957 ///
5958 /// @param[in] attr_info
5959 /// ::HAPI_AttributeInfo used as input for the.
5960 /// totalArrayElements. Also contains some sanity checks like
5961 /// data type. Generally should be the same struct
5962 /// returned by ::HAPI_GetAttributeInfo().
5963 ///
5964 /// @param[out] data_fixed_array
5965 /// An 64-bit float array at least the size of
5966 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5967 /// <!-- sizeparm data_fixed_length -->
5968 ///
5969 /// @param[in] data_fixed_length
5970 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5971 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5972 ///
5973 /// @param[out] sizes_fixed_array
5974 /// An integer array at least the size of
5975 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5976 /// <!-- sizeparm sizes_fixed_length -->
5977 ///
5978 /// @param[in] start
5979 /// First index of range. Must be at least 0 and at
5980 /// most ::HAPI_AttributeInfo::count - 1.
5981 /// <!-- default 0 -->
5982 ///
5983 /// @param[in] sizes_fixed_length
5984 /// Must be at least 0 and at most
5985 /// ::HAPI_AttributeInfo::count - @p start.
5986 /// Note, if 0 is passed for length, the function will just
5987 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5988 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5989 ///
5991  HAPI_NodeId node_id,
5992  HAPI_PartId part_id,
5993  const char * name,
5994  HAPI_AttributeInfo * attr_info,
5995  double * data_fixed_array,
5996  int data_fixed_length,
5997  int * sizes_fixed_array,
5998  int start, int sizes_fixed_length );
5999 
6000 /// @brief Get attribute string data. Note that the string handles
6001 /// returned are only valid until the next time this function
6002 /// is called.
6003 ///
6004 /// @ingroup GeometryGetters Attributes
6005 ///
6006 /// @param[in] session
6007 /// The session of Houdini you are interacting with.
6008 /// See @ref HAPI_Sessions for more on sessions.
6009 /// Pass NULL to just use the default in-process session.
6010 /// <!-- default NULL -->
6011 ///
6012 /// @param[in] node_id
6013 /// The node id.
6014 ///
6015 /// @param[in] part_id
6016 /// The part id.
6017 ///
6018 /// @param[in] name
6019 /// Attribute name.
6020 /// <!-- string -->
6021 ///
6022 /// @param[in] attr_info
6023 /// ::HAPI_AttributeInfo used as input for what tuple size.
6024 /// you want. Also contains some sanity checks like
6025 /// data type. Generally should be the same struct
6026 /// returned by ::HAPI_GetAttributeInfo().
6027 ///
6028 /// @param[out] data_array
6029 /// An ::HAPI_StringHandle array at least the size of
6030 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6031 /// <!-- sizeparm length -->
6032 ///
6033 /// @param[in] start
6034 /// First index of range. Must be at least 0 and at
6035 /// most ::HAPI_AttributeInfo::count - 1.
6036 /// <!-- default 0 -->
6037 ///
6038 /// @param[in] length
6039 /// Must be at least 0 and at most
6040 /// ::HAPI_AttributeInfo::count - @p start.
6041 /// Note, if 0 is passed for length, the function will just
6042 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6043 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6044 ///
6045 /// @warning The string handles should be used to retrieve the strings
6046 /// immediately and are invalidated when another call to get
6047 /// this attribute's data is made.
6048 ///
6050  HAPI_NodeId node_id,
6051  HAPI_PartId part_id,
6052  const char * name,
6053  HAPI_AttributeInfo * attr_info,
6054  HAPI_StringHandle * data_array,
6055  int start, int length );
6056 
6057 /// @brief Get array attribute string data.
6058 /// Each entry in an array attribute can have varying array lengths.
6059 /// Therefore the array values are returned as a flat array, with
6060 /// another sizes array containing the lengths of each array entry.
6061 /// Note that the string handles returned are only valid until
6062 /// the next time this function is called.
6063 ///
6064 /// @ingroup GeometryGetters Attributes
6065 ///
6066 /// @param[in] session
6067 /// The session of Houdini you are interacting with.
6068 /// See @ref HAPI_Sessions for more on sessions.
6069 /// Pass NULL to just use the default in-process session.
6070 /// <!-- default NULL -->
6071 ///
6072 /// @param[in] node_id
6073 /// The node id.
6074 ///
6075 /// @param[in] part_id
6076 /// The part id.
6077 ///
6078 /// @param[in] name
6079 /// Attribute name.
6080 /// <!-- string -->
6081 ///
6082 /// @param[in] attr_info
6083 /// ::HAPI_AttributeInfo used as input for the.
6084 /// totalArrayElements. Also contains some sanity checks like
6085 /// data type. Generally should be the same struct
6086 /// returned by ::HAPI_GetAttributeInfo().
6087 ///
6088 /// @param[out] data_fixed_array
6089 /// An ::HAPI_StringHandle array at least the size of
6090 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6091 /// <!-- sizeparm data_fixed_length -->
6092 ///
6093 /// @param[in] data_fixed_length
6094 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6095 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6096 ///
6097 /// @param[out] sizes_fixed_array
6098 /// An integer array at least the size of
6099 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6100 /// <!-- sizeparm sizes_fixed_length -->
6101 ///
6102 /// @param[in] start
6103 /// First index of range. Must be at least 0 and at
6104 /// most ::HAPI_AttributeInfo::count - 1.
6105 /// <!-- default 0 -->
6106 ///
6107 /// @param[in] sizes_fixed_length
6108 /// Must be at least 0 and at most
6109 /// ::HAPI_AttributeInfo::count - @p start.
6110 /// Note, if 0 is passed for length, the function will just
6111 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6112 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6113 ///
6114 /// @warning The string handles should be used to retrieve the strings
6115 /// immediately and are invalidated when another call to get
6116 /// this attribute's data is made.
6117 ///
6119  HAPI_NodeId node_id,
6120  HAPI_PartId part_id,
6121  const char * name,
6122  HAPI_AttributeInfo * attr_info,
6123  HAPI_StringHandle * data_fixed_array,
6124  int data_fixed_length,
6125  int * sizes_fixed_array,
6126  int start, int sizes_fixed_length );
6127 
6128 /// @brief Get attribute dictionary data.
6129 ///
6130 /// Dictionary data is serialized as JSON-encoded strings.
6131 /// Note that the string handles returned are only valid until the next
6132 /// time this function is called.
6133 ///
6134 /// @ingroup GeometryGetters Attributes
6135 ///
6136 /// @param[in] session
6137 /// The session of Houdini you are interacting with.
6138 /// See @ref HAPI_Sessions for more on sessions.
6139 /// Pass NULL to just use the default in-process session.
6140 /// <!-- default NULL -->
6141 ///
6142 /// @param[in] node_id
6143 /// The node id.
6144 ///
6145 /// @param[in] part_id
6146 /// The part id.
6147 ///
6148 /// @param[in] name
6149 /// Attribute name.
6150 /// <!-- string -->
6151 ///
6152 /// @param[in] attr_info
6153 /// ::HAPI_AttributeInfo used as input for what tuple size
6154 /// you want. Also contains some sanity checks like
6155 /// data type. Generally should be the same struct
6156 /// returned by ::HAPI_GetAttributeInfo().
6157 ///
6158 /// @param[out] data_array
6159 /// An ::HAPI_StringHandle array at least the size of
6160 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6161 /// <!-- sizeparm length -->
6162 ///
6163 /// @param[in] start
6164 /// First index of range. Must be at least 0 and at
6165 /// most ::HAPI_AttributeInfo::count - 1.
6166 /// <!-- default 0 -->
6167 ///
6168 /// @param[in] length
6169 /// Must be at least 0 and at most
6170 /// ::HAPI_AttributeInfo::count - @p start.
6171 /// Note, if 0 is passed for length, the function will just
6172 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6173 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6174 ///
6175 /// @warning The string handles should be used to retrieve the strings
6176 /// immediately and are invalidated when another call to get
6177 /// this attribute's data is made.
6178 ///
6180  HAPI_NodeId node_id,
6181  HAPI_PartId part_id,
6182  const char* name,
6183  HAPI_AttributeInfo* attr_info,
6184  HAPI_StringHandle* data_array,
6185  int start,
6186  int length );
6187 
6188 /// @brief Get array attribute dictionary data.
6189 /// Each entry in an array attribute can have varying array lengths.
6190 /// Therefore the array values are returned as a flat array, with
6191 /// another sizes array containing the lengths of each array entry.
6192 ///
6193 /// Dictionary data is serialized as JSON-encoded strings.
6194 /// Note that the string handles returned are only valid until
6195 /// the next time this function is called.
6196 ///
6197 /// @ingroup GeometryGetters Attributes
6198 ///
6199 /// @param[in] session
6200 /// The session of Houdini you are interacting with.
6201 /// See @ref HAPI_Sessions for more on sessions.
6202 /// Pass NULL to just use the default in-process session.
6203 /// <!-- default NULL -->
6204 ///
6205 /// @param[in] node_id
6206 /// The node id.
6207 ///
6208 /// @param[in] part_id
6209 /// The part id.
6210 ///
6211 /// @param[in] name
6212 /// Attribute name.
6213 /// <!-- string -->
6214 ///
6215 /// @param[in] attr_info
6216 /// ::HAPI_AttributeInfo used as input for the.
6217 /// totalArrayElements. Also contains some sanity checks like
6218 /// data type. Generally should be the same struct
6219 /// returned by ::HAPI_GetAttributeInfo().
6220 ///
6221 /// @param[out] data_fixed_array
6222 /// An ::HAPI_StringHandle array at least the size of
6223 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6224 /// <!-- sizeparm data_fixed_length -->
6225 ///
6226 /// @param[in] data_fixed_length
6227 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6228 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6229 ///
6230 /// @param[out] sizes_fixed_array
6231 /// An integer array at least the size of
6232 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6233 /// <!-- sizeparm sizes_fixed_length -->
6234 ///
6235 /// @param[in] start
6236 /// First index of range. Must be at least 0 and at
6237 /// most ::HAPI_AttributeInfo::count - 1.
6238 /// <!-- default 0 -->
6239 ///
6240 /// @param[in] sizes_fixed_length
6241 /// Must be at least 0 and at most
6242 /// ::HAPI_AttributeInfo::count - @p start.
6243 /// Note, if 0 is passed for length, the function will just
6244 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6245 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6246 ///
6247 /// @warning The string handles should be used to retrieve the strings
6248 /// immediately and are invalidated when another call to get
6249 /// this attribute's data is made.
6250 ///
6252  HAPI_NodeId node_id,
6253  HAPI_PartId part_id,
6254  const char* name,
6255  HAPI_AttributeInfo* attr_info,
6256  HAPI_StringHandle* data_fixed_array,
6257  int data_fixed_length,
6258  int* sizes_fixed_array,
6259  int start,
6260  int sizes_fixed_length );
6261 
6262 
6263 /// @brief Get attribute integer data asynchronously.
6264 ///
6265 /// @ingroup GeometryGetters Attributes
6266 ///
6267 /// @param[in] session
6268 /// The session of Houdini you are interacting with.
6269 /// See @ref HAPI_Sessions for more on sessions.
6270 /// Pass NULL to just use the default in-process session.
6271 /// <!-- default NULL -->
6272 ///
6273 /// @param[in] node_id
6274 /// The node id.
6275 ///
6276 /// @param[in] part_id
6277 /// The part id.
6278 ///
6279 /// @param[in] name
6280 /// Attribute name.
6281 /// <!-- string -->
6282 ///
6283 /// @param[in] attr_info
6284 /// ::HAPI_AttributeInfo used as input for what tuple size.
6285 /// you want. Also contains some sanity checks like
6286 /// data type. Generally should be the same struct
6287 /// returned by ::HAPI_GetAttributeInfo().
6288 ///
6289 /// @param[in] stride
6290 /// Specifies how many items to skip over for each element.
6291 /// With a stride of -1, the stride will be set to
6292 /// @c attr_info->tuple_size. Otherwise, the stride will be
6293 /// set to the maximum of @c attr_info->tuple_size and
6294 /// @c stride.
6295 ///
6296 /// @param[out] data_array
6297 /// An integer array at least the size of
6298 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6299 /// <!-- sizeparm length -->
6300 ///
6301 /// @param[in] start
6302 /// First index of range. Must be at least 0 and at
6303 /// most ::HAPI_AttributeInfo::count - 1.
6304 /// <!-- default 0 -->
6305 ///
6306 /// @param[in] length
6307 /// Must be at least 0 and at most
6308 /// ::HAPI_AttributeInfo::count - @p start.
6309 /// Note, if 0 is passed for length, the function will just
6310 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6311 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6312 ///
6313 /// @param[out] job_id
6314 /// The id assigned to the job.
6315 ///
6317  HAPI_NodeId node_id,
6318  HAPI_PartId part_id,
6319  const char * name,
6320  HAPI_AttributeInfo * attr_info,
6321  int stride,
6322  int * data_array,
6323  int start, int length,
6324  int * job_id );
6325 
6326 
6327 /// @brief Get attribute unsigned 8-bit integer data asynchronously.
6328 ///
6329 /// @ingroup GeometryGetters Attributes
6330 ///
6331 /// @param[in] session
6332 /// The session of Houdini you are interacting with.
6333 /// See @ref HAPI_Sessions for more on sessions.
6334 /// Pass NULL to just use the default in-process session.
6335 /// <!-- default NULL -->
6336 ///
6337 /// @param[in] node_id
6338 /// The node id.
6339 ///
6340 /// @param[in] part_id
6341 /// The part id.
6342 ///
6343 /// @param[in] name
6344 /// Attribute name.
6345 /// <!-- string -->
6346 ///
6347 /// @param[in] attr_info
6348 /// ::HAPI_AttributeInfo used as input for what tuple size.
6349 /// you want. Also contains some sanity checks like
6350 /// data type. Generally should be the same struct
6351 /// returned by ::HAPI_GetAttributeInfo().
6352 ///
6353 /// @param[in] stride
6354 /// Specifies how many items to skip over for each element.
6355 /// With a stride of -1, the stride will be set to
6356 /// @c attr_info->tuple_size. Otherwise, the stride will be
6357 /// set to the maximum of @c attr_info->tuple_size and
6358 /// @c stride.
6359 ///
6360 /// @param[out] data_array
6361 /// An integer array at least the size of
6362 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6363 /// <!-- sizeparm length -->
6364 ///
6365 /// @param[in] start
6366 /// First index of range. Must be at least 0 and at
6367 /// most ::HAPI_AttributeInfo::count - 1.
6368 /// <!-- default 0 -->
6369 ///
6370 /// @param[in] length
6371 /// Must be at least 0 and at most
6372 /// ::HAPI_AttributeInfo::count - @p start.
6373 /// Note, if 0 is passed for length, the function will just
6374 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6375 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6376 ///
6377 /// @param[out] job_id
6378 /// The id assigned to the job.
6379 ///
6381  HAPI_NodeId node_id,
6382  HAPI_PartId part_id,
6383  const char * name,
6384  HAPI_AttributeInfo * attr_info,
6385  int stride,
6386  HAPI_UInt8 * data_array,
6387  int start, int length,
6388  int * job_id );
6389 
6390 
6391 /// @brief Get attribute 8-bit integer data asynchronously.
6392 ///
6393 /// @ingroup GeometryGetters Attributes
6394 ///
6395 /// @param[in] session
6396 /// The session of Houdini you are interacting with.
6397 /// See @ref HAPI_Sessions for more on sessions.
6398 /// Pass NULL to just use the default in-process session.
6399 /// <!-- default NULL -->
6400 ///
6401 /// @param[in] node_id
6402 /// The node id.
6403 ///
6404 /// @param[in] part_id
6405 /// The part id.
6406 ///
6407 /// @param[in] name
6408 /// Attribute name.
6409 /// <!-- string -->
6410 ///
6411 /// @param[in] attr_info
6412 /// ::HAPI_AttributeInfo used as input for what tuple size.
6413 /// you want. Also contains some sanity checks like
6414 /// data type. Generally should be the same struct
6415 /// returned by ::HAPI_GetAttributeInfo().
6416 ///
6417 /// @param[in] stride
6418 /// Specifies how many items to skip over for each element.
6419 /// With a stride of -1, the stride will be set to
6420 /// @c attr_info->tuple_size. Otherwise, the stride will be
6421 /// set to the maximum of @c attr_info->tuple_size and
6422 /// @c stride.
6423 ///
6424 /// @param[out] data_array
6425 /// An integer array at least the size of
6426 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6427 /// <!-- sizeparm length -->
6428 ///
6429 /// @param[in] start
6430 /// First index of range. Must be at least 0 and at
6431 /// most ::HAPI_AttributeInfo::count - 1.
6432 /// <!-- default 0 -->
6433 ///
6434 /// @param[in] length
6435 /// Must be at least 0 and at most
6436 /// ::HAPI_AttributeInfo::count - @p start.
6437 /// Note, if 0 is passed for length, the function will just
6438 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6439 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6440 ///
6441 /// @param[out] job_id
6442 /// The id assigned to the job.
6443 ///
6445  HAPI_NodeId node_id,
6446  HAPI_PartId part_id,
6447  const char * name,
6448  HAPI_AttributeInfo * attr_info,
6449  int stride,
6450  HAPI_Int8 * data_array,
6451  int start, int length,
6452  int * job_id );
6453 
6454 /// @brief Get attribute 16-bit integer data asynchronously.
6455 ///
6456 /// @ingroup GeometryGetters Attributes
6457 ///
6458 /// @param[in] session
6459 /// The session of Houdini you are interacting with.
6460 /// See @ref HAPI_Sessions for more on sessions.
6461 /// Pass NULL to just use the default in-process session.
6462 /// <!-- default NULL -->
6463 ///
6464 /// @param[in] node_id
6465 /// The node id.
6466 ///
6467 /// @param[in] part_id
6468 /// The part id.
6469 ///
6470 /// @param[in] name
6471 /// Attribute name.
6472 /// <!-- string -->
6473 ///
6474 /// @param[in] attr_info
6475 /// ::HAPI_AttributeInfo used as input for what tuple size.
6476 /// you want. Also contains some sanity checks like
6477 /// data type. Generally should be the same struct
6478 /// returned by ::HAPI_GetAttributeInfo().
6479 ///
6480 /// @param[in] stride
6481 /// Specifies how many items to skip over for each element.
6482 /// With a stride of -1, the stride will be set to
6483 /// @c attr_info->tuple_size. Otherwise, the stride will be
6484 /// set to the maximum of @c attr_info->tuple_size and
6485 /// @c stride.
6486 ///
6487 /// @param[out] data_array
6488 /// An integer array at least the size of
6489 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6490 /// <!-- sizeparm length -->
6491 ///
6492 /// @param[in] start
6493 /// First index of range. Must be at least 0 and at
6494 /// most ::HAPI_AttributeInfo::count - 1.
6495 /// <!-- default 0 -->
6496 ///
6497 /// @param[in] length
6498 /// Must be at least 0 and at most
6499 /// ::HAPI_AttributeInfo::count - @p start.
6500 /// Note, if 0 is passed for length, the function will just
6501 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6502 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6503 ///
6504 /// @param[out] job_id
6505 /// The id assigned to the job.
6506 ///
6508  HAPI_NodeId node_id,
6509  HAPI_PartId part_id,
6510  const char * name,
6511  HAPI_AttributeInfo * attr_info,
6512  int stride,
6513  HAPI_Int16 * data_array,
6514  int start, int length,
6515  int * job_id );
6516 
6517 /// @brief Get attribute 64-bit integer data asynchronously.
6518 ///
6519 /// @ingroup GeometryGetters Attributes
6520 ///
6521 /// @param[in] session
6522 /// The session of Houdini you are interacting with.
6523 /// See @ref HAPI_Sessions for more on sessions.
6524 /// Pass NULL to just use the default in-process session.
6525 /// <!-- default NULL -->
6526 ///
6527 /// @param[in] node_id
6528 /// The node id.
6529 ///
6530 /// @param[in] part_id
6531 /// The part id.
6532 ///
6533 /// @param[in] name
6534 /// Attribute name.
6535 /// <!-- string -->
6536 ///
6537 /// @param[in] attr_info
6538 /// ::HAPI_AttributeInfo used as input for what tuple size.
6539 /// you want. Also contains some sanity checks like
6540 /// data type. Generally should be the same struct
6541 /// returned by ::HAPI_GetAttributeInfo().
6542 ///
6543 /// @param[in] stride
6544 /// Specifies how many items to skip over for each element.
6545 /// With a stride of -1, the stride will be set to
6546 /// @c attr_info->tuple_size. Otherwise, the stride will be
6547 /// set to the maximum of @c attr_info->tuple_size and
6548 /// @c stride.
6549 ///
6550 /// @param[out] data_array
6551 /// An integer array at least the size of
6552 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6553 /// <!-- sizeparm length -->
6554 ///
6555 /// @param[in] start
6556 /// First index of range. Must be at least 0 and at
6557 /// most ::HAPI_AttributeInfo::count - 1.
6558 /// <!-- default 0 -->
6559 ///
6560 /// @param[in] length
6561 /// Must be at least 0 and at most
6562 /// ::HAPI_AttributeInfo::count - @p start.
6563 /// Note, if 0 is passed for length, the function will just
6564 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6565 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6566 ///
6567 /// @param[out] job_id
6568 /// The id assigned to the job.
6569 ///
6571  HAPI_NodeId node_id,
6572  HAPI_PartId part_id,
6573  const char * name,
6574  HAPI_AttributeInfo * attr_info,
6575  int stride,
6576  HAPI_Int64 * data_array,
6577  int start, int length,
6578  int * job_id );
6579 
6580 
6581 /// @brief Get attribute float data asynchronously.
6582 ///
6583 /// @ingroup GeometryGetters Attributes
6584 ///
6585 /// @param[in] session
6586 /// The session of Houdini you are interacting with.
6587 /// See @ref HAPI_Sessions for more on sessions.
6588 /// Pass NULL to just use the default in-process session.
6589 /// <!-- default NULL -->
6590 ///
6591 /// @param[in] node_id
6592 /// The node id.
6593 ///
6594 /// @param[in] part_id
6595 /// The part id.
6596 ///
6597 /// @param[in] name
6598 /// Attribute name.
6599 /// <!-- string -->
6600 ///
6601 /// @param[in] attr_info
6602 /// ::HAPI_AttributeInfo used as input for what tuple size.
6603 /// you want. Also contains some sanity checks like
6604 /// data type. Generally should be the same struct
6605 /// returned by ::HAPI_GetAttributeInfo().
6606 ///
6607 /// @param[in] stride
6608 /// Specifies how many items to skip over for each element.
6609 /// With a stride of -1, the stride will be set to
6610 /// @c attr_info->tuple_size. Otherwise, the stride will be
6611 /// set to the maximum of @c attr_info->tuple_size and
6612 /// @c stride.
6613 ///
6614 /// @param[out] data_array
6615 /// An integer array at least the size of
6616 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6617 /// <!-- sizeparm length -->
6618 ///
6619 /// @param[in] start
6620 /// First index of range. Must be at least 0 and at
6621 /// most ::HAPI_AttributeInfo::count - 1.
6622 /// <!-- default 0 -->
6623 ///
6624 /// @param[in] length
6625 /// Must be at least 0 and at most
6626 /// ::HAPI_AttributeInfo::count - @p start.
6627 /// Note, if 0 is passed for length, the function will just
6628 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6629 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6630 ///
6631 /// @param[out] job_id
6632 /// The id assigned to the job.
6633 ///
6635  HAPI_NodeId node_id,
6636  HAPI_PartId part_id,
6637  const char * name,
6638  HAPI_AttributeInfo * attr_info,
6639  int stride,
6640  float * data_array,
6641  int start, int length,
6642  int * job_id );
6643 
6644 /// @brief Get attribute 64-bit float data asynchronously.
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] name
6661 /// Attribute name.
6662 /// <!-- string -->
6663 ///
6664 /// @param[in] attr_info
6665 /// ::HAPI_AttributeInfo used as input for what tuple size.
6666 /// you want. Also contains some sanity checks like
6667 /// data type. Generally should be the same struct
6668 /// returned by ::HAPI_GetAttributeInfo().
6669 ///
6670 /// @param[in] stride
6671 /// Specifies how many items to skip over for each element.
6672 /// With a stride of -1, the stride will be set to
6673 /// @c attr_info->tuple_size. Otherwise, the stride will be
6674 /// set to the maximum of @c attr_info->tuple_size and
6675 /// @c stride.
6676 ///
6677 /// @param[out] data_array
6678 /// An integer array at least the size of
6679 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6680 /// <!-- sizeparm length -->
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] 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 * name,
6701  HAPI_AttributeInfo * attr_info,
6702  int stride,
6703  double * data_array,
6704  int start, int length,
6705  int * job_id );
6706 
6707 /// @brief Get attribute string data asynchronously.
6708 ///
6709 /// @ingroup GeometryGetters Attributes
6710 ///
6711 /// @param[in] session
6712 /// The session of Houdini you are interacting with.
6713 /// See @ref HAPI_Sessions for more on sessions.
6714 /// Pass NULL to just use the default in-process session.
6715 /// <!-- default NULL -->
6716 ///
6717 /// @param[in] node_id
6718 /// The node id.
6719 ///
6720 /// @param[in] part_id
6721 /// The part id.
6722 ///
6723 /// @param[in] name
6724 /// Attribute name.
6725 /// <!-- string -->
6726 ///
6727 /// @param[in] attr_info
6728 /// ::HAPI_AttributeInfo used as input for what tuple size.
6729 /// you want. Also contains some sanity checks like
6730 /// data type. Generally should be the same struct
6731 /// returned by ::HAPI_GetAttributeInfo().
6732 ///
6733 /// @param[out] data_array
6734 /// An integer array at least the size of
6735 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6736 /// <!-- sizeparm length -->
6737 ///
6738 /// @param[in] start
6739 /// First index of range. Must be at least 0 and at
6740 /// most ::HAPI_AttributeInfo::count - 1.
6741 /// <!-- default 0 -->
6742 ///
6743 /// @param[in] length
6744 /// Must be at least 0 and at most
6745 /// ::HAPI_AttributeInfo::count - @p start.
6746 /// Note, if 0 is passed for length, the function will just
6747 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6748 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6749 ///
6750 /// @param[out] job_id
6751 /// The id assigned to the job.
6752 ///
6753 /// @warning The string handles should be used to retrieve the strings
6754 /// immediately and are invalidated when another call to get
6755 /// this attribute's data is made.
6756 ///
6758  HAPI_NodeId node_id,
6759  HAPI_PartId part_id,
6760  const char * name,
6761  HAPI_AttributeInfo * attr_info,
6762  HAPI_StringHandle * data_array,
6763  int start, int length,
6764  int * job_id );
6765 
6766 /// @brief Get attribute dictionary data asynchronously.
6767 ///
6768 /// @ingroup GeometryGetters Attributes
6769 ///
6770 /// @param[in] session
6771 /// The session of Houdini you are interacting with.
6772 /// See @ref HAPI_Sessions for more on sessions.
6773 /// Pass NULL to just use the default in-process session.
6774 /// <!-- default NULL -->
6775 ///
6776 /// @param[in] node_id
6777 /// The node id.
6778 ///
6779 /// @param[in] part_id
6780 /// The part id.
6781 ///
6782 /// @param[in] name
6783 /// Attribute name.
6784 /// <!-- string -->
6785 ///
6786 /// @param[in] attr_info
6787 /// ::HAPI_AttributeInfo used as input for what tuple size.
6788 /// you want. Also contains some sanity checks like
6789 /// data type. Generally should be the same struct
6790 /// returned by ::HAPI_GetAttributeInfo().
6791 ///
6792 /// @param[out] data_array
6793 /// An integer array at least the size of
6794 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6795 /// <!-- sizeparm length -->
6796 ///
6797 /// @param[in] start
6798 /// First index of range. Must be at least 0 and at
6799 /// most ::HAPI_AttributeInfo::count - 1.
6800 /// <!-- default 0 -->
6801 ///
6802 /// @param[in] length
6803 /// Must be at least 0 and at most
6804 /// ::HAPI_AttributeInfo::count - @p start.
6805 /// Note, if 0 is passed for length, the function will just
6806 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6807 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6808 ///
6809 /// @param[out] job_id
6810 /// The id assigned to the job.
6811 ///
6812 /// @warning The string handles should be used to retrieve the strings
6813 /// immediately and are invalidated when another call to get
6814 /// this attribute's data is made.
6815 ///
6817  HAPI_NodeId node_id,
6818  HAPI_PartId part_id,
6819  const char * name,
6820  HAPI_AttributeInfo * attr_info,
6821  HAPI_StringHandle * data_array,
6822  int start, int length,
6823  int * job_id );
6824 
6825 /// @brief Get array attribute integer data asynchronously.
6826 /// Each entry in an array attribute can have varying array lengths.
6827 /// Therefore the array values are returned as a flat array, with
6828 /// another sizes array containing the lengths of each array entry.
6829 ///
6830 /// @ingroup GeometryGetters Attributes
6831 ///
6832 /// @param[in] session
6833 /// The session of Houdini you are interacting with.
6834 /// See @ref HAPI_Sessions for more on sessions.
6835 /// Pass NULL to just use the default in-process session.
6836 /// <!-- default NULL -->
6837 ///
6838 /// @param[in] node_id
6839 /// The node id.
6840 ///
6841 /// @param[in] part_id
6842 /// The part id.
6843 ///
6844 /// @param[in] attr_name
6845 /// Attribute name.
6846 /// <!-- string -->
6847 ///
6848 /// @param[in] attr_info
6849 /// ::HAPI_AttributeInfo used as input for what tuple size.
6850 /// you want. Also contains some sanity checks like
6851 /// data type. Generally should be the same struct
6852 /// returned by ::HAPI_GetAttributeInfo().
6853 ///
6854 /// @param[out] data_fixed_array
6855 /// An integer array at least the size of
6856 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6857 /// <!-- sizeparm data_fixed_length -->
6858 ///
6859 /// @param[in] data_fixed_length
6860 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6861 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6862 ///
6863 /// @param[out] sizes_fixed_array
6864 /// An integer array at least the size of
6865 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6866 /// <!-- source ::HAPI_AttributeInfo::count -->
6867 /// <!-- sizeparm sizes_fixed_length -->
6868 ///
6869 /// @param[in] start
6870 /// First index of range. Must be at least 0 and at
6871 /// most ::HAPI_AttributeInfo::count - 1.
6872 /// <!-- default 0 -->
6873 ///
6874 /// @param[in] sizes_fixed_length
6875 /// Must be at least 0 and at most
6876 /// ::HAPI_AttributeInfo::count - @p start.
6877 /// Note, if 0 is passed for length, the function will just
6878 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6879 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6880 ///
6881 /// @param[out] job_id
6882 /// The id assigned to the job.
6883 ///
6885  HAPI_NodeId node_id,
6886  HAPI_PartId part_id,
6887  const char * attr_name,
6888  HAPI_AttributeInfo * attr_info,
6889  int * data_fixed_array,
6890  int data_fixed_length,
6891  int * sizes_fixed_array,
6892  int start, int sizes_fixed_length,
6893  int * job_id );
6894 
6895 /// @brief Get array attribute unsigned 8-bit integer data asynchronously.
6896 /// Each entry in an array attribute can have varying array lengths.
6897 /// Therefore the array values are returned as a flat array, with
6898 /// another sizes array containing the lengths of each array entry.
6899 ///
6900 /// @ingroup GeometryGetters Attributes
6901 ///
6902 /// @param[in] session
6903 /// The session of Houdini you are interacting with.
6904 /// See @ref HAPI_Sessions for more on sessions.
6905 /// Pass NULL to just use the default in-process session.
6906 /// <!-- default NULL -->
6907 ///
6908 /// @param[in] node_id
6909 /// The node id.
6910 ///
6911 /// @param[in] part_id
6912 /// The part id.
6913 ///
6914 /// @param[in] attr_name
6915 /// Attribute name.
6916 /// <!-- string -->
6917 ///
6918 /// @param[in] attr_info
6919 /// ::HAPI_AttributeInfo used as input for what tuple size.
6920 /// you want. Also contains some sanity checks like
6921 /// data type. Generally should be the same struct
6922 /// returned by ::HAPI_GetAttributeInfo().
6923 ///
6924 /// @param[out] data_fixed_array
6925 /// An integer array at least the size of
6926 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6927 /// <!-- sizeparm data_fixed_length -->
6928 ///
6929 /// @param[in] data_fixed_length
6930 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6931 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6932 ///
6933 /// @param[out] sizes_fixed_array
6934 /// An integer array at least the size of
6935 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6936 /// <!-- source ::HAPI_AttributeInfo::count -->
6937 /// <!-- sizeparm sizes_fixed_length -->
6938 ///
6939 /// @param[in] start
6940 /// First index of range. Must be at least 0 and at
6941 /// most ::HAPI_AttributeInfo::count - 1.
6942 /// <!-- default 0 -->
6943 ///
6944 /// @param[in] sizes_fixed_length
6945 /// Must be at least 0 and at most
6946 /// ::HAPI_AttributeInfo::count - @p start.
6947 /// Note, if 0 is passed for length, the function will just
6948 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6949 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6950 ///
6951 /// @param[out] job_id
6952 /// The id assigned to the job.
6953 ///
6955  HAPI_NodeId node_id,
6956  HAPI_PartId part_id,
6957  const char * attr_name,
6958  HAPI_AttributeInfo * attr_info,
6959  HAPI_UInt8 * data_fixed_array,
6960  int data_fixed_length,
6961  int * sizes_fixed_array,
6962  int start, int sizes_fixed_length,
6963  int * job_id );
6964 
6965 /// @brief Get array attribute 8-bit integer data asynchronously.
6966 /// Each entry in an array attribute can have varying array lengths.
6967 /// Therefore the array values are returned as a flat array, with
6968 /// another sizes array containing the lengths of each array entry.
6969 ///
6970 /// @ingroup GeometryGetters Attributes
6971 ///
6972 /// @param[in] session
6973 /// The session of Houdini you are interacting with.
6974 /// See @ref HAPI_Sessions for more on sessions.
6975 /// Pass NULL to just use the default in-process session.
6976 /// <!-- default NULL -->
6977 ///
6978 /// @param[in] node_id
6979 /// The node id.
6980 ///
6981 /// @param[in] part_id
6982 /// The part id.
6983 ///
6984 /// @param[in] attr_name
6985 /// Attribute name.
6986 /// <!-- string -->
6987 ///
6988 /// @param[in] attr_info
6989 /// ::HAPI_AttributeInfo used as input for what tuple size.
6990 /// you want. Also contains some sanity checks like
6991 /// data type. Generally should be the same struct
6992 /// returned by ::HAPI_GetAttributeInfo().
6993 ///
6994 /// @param[out] data_fixed_array
6995 /// An integer array at least the size of
6996 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6997 /// <!-- sizeparm data_fixed_length -->
6998 ///
6999 /// @param[in] data_fixed_length
7000 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7001 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7002 ///
7003 /// @param[out] sizes_fixed_array
7004 /// An integer array at least the size of
7005 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7006 /// <!-- source ::HAPI_AttributeInfo::count -->
7007 /// <!-- sizeparm sizes_fixed_length -->
7008 ///
7009 /// @param[in] start
7010 /// First index of range. Must be at least 0 and at
7011 /// most ::HAPI_AttributeInfo::count - 1.
7012 /// <!-- default 0 -->
7013 ///
7014 /// @param[in] sizes_fixed_length
7015 /// Must be at least 0 and at most
7016 /// ::HAPI_AttributeInfo::count - @p start.
7017 /// Note, if 0 is passed for length, the function will just
7018 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7019 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7020 ///
7021 /// @param[out] job_id
7022 /// The id assigned to the job.
7023 ///
7025  HAPI_NodeId node_id,
7026  HAPI_PartId part_id,
7027  const char * attr_name,
7028  HAPI_AttributeInfo * attr_info,
7029  HAPI_Int8 * data_fixed_array,
7030  int data_fixed_length,
7031  int * sizes_fixed_array,
7032  int start, int sizes_fixed_length,
7033  int * job_id );
7034 
7035 /// @brief Get array attribute 16-bit integer data asynchronously.
7036 /// Each entry in an array attribute can have varying array lengths.
7037 /// Therefore the array values are returned as a flat array, with
7038 /// another sizes array containing the lengths of each array entry.
7039 ///
7040 /// @ingroup GeometryGetters Attributes
7041 ///
7042 /// @param[in] session
7043 /// The session of Houdini you are interacting with.
7044 /// See @ref HAPI_Sessions for more on sessions.
7045 /// Pass NULL to just use the default in-process session.
7046 /// <!-- default NULL -->
7047 ///
7048 /// @param[in] node_id
7049 /// The node id.
7050 ///
7051 /// @param[in] part_id
7052 /// The part id.
7053 ///
7054 /// @param[in] attr_name
7055 /// Attribute name.
7056 /// <!-- string -->
7057 ///
7058 /// @param[in] attr_info
7059 /// ::HAPI_AttributeInfo used as input for what tuple size.
7060 /// you want. Also contains some sanity checks like
7061 /// data type. Generally should be the same struct
7062 /// returned by ::HAPI_GetAttributeInfo().
7063 ///
7064 /// @param[out] data_fixed_array
7065 /// An integer array at least the size of
7066 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7067 /// <!-- sizeparm data_fixed_length -->
7068 ///
7069 /// @param[in] data_fixed_length
7070 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7071 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7072 ///
7073 /// @param[out] sizes_fixed_array
7074 /// An integer array at least the size of
7075 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7076 /// <!-- source ::HAPI_AttributeInfo::count -->
7077 /// <!-- sizeparm sizes_fixed_length -->
7078 ///
7079 /// @param[in] start
7080 /// First index of range. Must be at least 0 and at
7081 /// most ::HAPI_AttributeInfo::count - 1.
7082 /// <!-- default 0 -->
7083 ///
7084 /// @param[in] sizes_fixed_length
7085 /// Must be at least 0 and at most
7086 /// ::HAPI_AttributeInfo::count - @p start.
7087 /// Note, if 0 is passed for length, the function will just
7088 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7089 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7090 ///
7091 /// @param[out] job_id
7092 /// The id assigned to the job.
7093 ///
7095  HAPI_NodeId node_id,
7096  HAPI_PartId part_id,
7097  const char * attr_name,
7098  HAPI_AttributeInfo * attr_info,
7099  HAPI_Int16 * data_fixed_array,
7100  int data_fixed_length,
7101  int * sizes_fixed_array,
7102  int start, int sizes_fixed_length,
7103  int * job_id );
7104 
7105 /// @brief Get array attribute 64-bit integer data asynchronously.
7106 /// Each entry in an array attribute can have varying array lengths.
7107 /// Therefore the array values are returned as a flat array, with
7108 /// another sizes array containing the lengths of each array entry.
7109 ///
7110 /// @ingroup GeometryGetters Attributes
7111 ///
7112 /// @param[in] session
7113 /// The session of Houdini you are interacting with.
7114 /// See @ref HAPI_Sessions for more on sessions.
7115 /// Pass NULL to just use the default in-process session.
7116 /// <!-- default NULL -->
7117 ///
7118 /// @param[in] node_id
7119 /// The node id.
7120 ///
7121 /// @param[in] part_id
7122 /// The part id.
7123 ///
7124 /// @param[in] attr_name
7125 /// Attribute name.
7126 /// <!-- string -->
7127 ///
7128 /// @param[in] attr_info
7129 /// ::HAPI_AttributeInfo used as input for what tuple size.
7130 /// you want. Also contains some sanity checks like
7131 /// data type. Generally should be the same struct
7132 /// returned by ::HAPI_GetAttributeInfo().
7133 ///
7134 /// @param[out] data_fixed_array
7135 /// An integer array at least the size of
7136 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7137 /// <!-- sizeparm data_fixed_length -->
7138 ///
7139 /// @param[in] data_fixed_length
7140 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7141 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7142 ///
7143 /// @param[out] sizes_fixed_array
7144 /// An integer array at least the size of
7145 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7146 /// <!-- source ::HAPI_AttributeInfo::count -->
7147 /// <!-- sizeparm sizes_fixed_length -->
7148 ///
7149 /// @param[in] start
7150 /// First index of range. Must be at least 0 and at
7151 /// most ::HAPI_AttributeInfo::count - 1.
7152 /// <!-- default 0 -->
7153 ///
7154 /// @param[in] sizes_fixed_length
7155 /// Must be at least 0 and at most
7156 /// ::HAPI_AttributeInfo::count - @p start.
7157 /// Note, if 0 is passed for length, the function will just
7158 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7159 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7160 ///
7161 /// @param[out] job_id
7162 /// The id assigned to the job.
7163 ///
7165  HAPI_NodeId node_id,
7166  HAPI_PartId part_id,
7167  const char * attr_name,
7168  HAPI_AttributeInfo * attr_info,
7169  HAPI_Int64 * data_fixed_array,
7170  int data_fixed_length,
7171  int * sizes_fixed_array,
7172  int start, int sizes_fixed_length,
7173  int * job_id );
7174 
7175 /// @brief Get array attribute float data asynchronously.
7176 /// Each entry in an array attribute can have varying array lengths.
7177 /// Therefore the array values are returned as a flat array, with
7178 /// another sizes array containing the lengths of each array entry.
7179 ///
7180 /// @ingroup GeometryGetters Attributes
7181 ///
7182 /// @param[in] session
7183 /// The session of Houdini you are interacting with.
7184 /// See @ref HAPI_Sessions for more on sessions.
7185 /// Pass NULL to just use the default in-process session.
7186 /// <!-- default NULL -->
7187 ///
7188 /// @param[in] node_id
7189 /// The node id.
7190 ///
7191 /// @param[in] part_id
7192 /// The part id.
7193 ///
7194 /// @param[in] attr_name
7195 /// Attribute name.
7196 /// <!-- string -->
7197 ///
7198 /// @param[in] attr_info
7199 /// ::HAPI_AttributeInfo used as input for what tuple size.
7200 /// you want. Also contains some sanity checks like
7201 /// data type. Generally should be the same struct
7202 /// returned by ::HAPI_GetAttributeInfo().
7203 ///
7204 /// @param[out] data_fixed_array
7205 /// An integer array at least the size of
7206 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7207 /// <!-- sizeparm data_fixed_length -->
7208 ///
7209 /// @param[in] data_fixed_length
7210 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7211 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7212 ///
7213 /// @param[out] sizes_fixed_array
7214 /// An integer array at least the size of
7215 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7216 /// <!-- source ::HAPI_AttributeInfo::count -->
7217 /// <!-- sizeparm sizes_fixed_length -->
7218 ///
7219 /// @param[in] start
7220 /// First index of range. Must be at least 0 and at
7221 /// most ::HAPI_AttributeInfo::count - 1.
7222 /// <!-- default 0 -->
7223 ///
7224 /// @param[in] sizes_fixed_length
7225 /// Must be at least 0 and at most
7226 /// ::HAPI_AttributeInfo::count - @p start.
7227 /// Note, if 0 is passed for length, the function will just
7228 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7229 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7230 ///
7231 /// @param[out] job_id
7232 /// The id assigned to the job.
7233 ///
7235  HAPI_NodeId node_id,
7236  HAPI_PartId part_id,
7237  const char * attr_name,
7238  HAPI_AttributeInfo * attr_info,
7239  float * data_fixed_array,
7240  int data_fixed_length,
7241  int * sizes_fixed_array,
7242  int start, int sizes_fixed_length,
7243  int * job_id );
7244 
7245 /// @brief Get array attribute 64-bit float data asynchronously.
7246 /// Each entry in an array attribute can have varying array lengths.
7247 /// Therefore the array values are returned as a flat array, with
7248 /// another sizes array containing the lengths of each array entry.
7249 ///
7250 /// @ingroup GeometryGetters Attributes
7251 ///
7252 /// @param[in] session
7253 /// The session of Houdini you are interacting with.
7254 /// See @ref HAPI_Sessions for more on sessions.
7255 /// Pass NULL to just use the default in-process session.
7256 /// <!-- default NULL -->
7257 ///
7258 /// @param[in] node_id
7259 /// The node id.
7260 ///
7261 /// @param[in] part_id
7262 /// The part id.
7263 ///
7264 /// @param[in] attr_name
7265 /// Attribute name.
7266 /// <!-- string -->
7267 ///
7268 /// @param[in] attr_info
7269 /// ::HAPI_AttributeInfo used as input for what tuple size.
7270 /// you want. Also contains some sanity checks like
7271 /// data type. Generally should be the same struct
7272 /// returned by ::HAPI_GetAttributeInfo().
7273 ///
7274 /// @param[out] data_fixed_array
7275 /// An integer array at least the size of
7276 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7277 /// <!-- sizeparm data_fixed_length -->
7278 ///
7279 /// @param[in] data_fixed_length
7280 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7281 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7282 ///
7283 /// @param[out] sizes_fixed_array
7284 /// An integer array at least the size of
7285 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7286 /// <!-- source ::HAPI_AttributeInfo::count -->
7287 /// <!-- sizeparm sizes_fixed_length -->
7288 ///
7289 /// @param[in] start
7290 /// First index of range. Must be at least 0 and at
7291 /// most ::HAPI_AttributeInfo::count - 1.
7292 /// <!-- default 0 -->
7293 ///
7294 /// @param[in] sizes_fixed_length
7295 /// Must be at least 0 and at most
7296 /// ::HAPI_AttributeInfo::count - @p start.
7297 /// Note, if 0 is passed for length, the function will just
7298 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7299 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7300 ///
7301 /// @param[out] job_id
7302 /// The id assigned to the job.
7303 ///
7305  HAPI_NodeId node_id,
7306  HAPI_PartId part_id,
7307  const char * attr_name,
7308  HAPI_AttributeInfo * attr_info,
7309  double * data_fixed_array,
7310  int data_fixed_length,
7311  int * sizes_fixed_array,
7312  int start, int sizes_fixed_length,
7313  int * job_id );
7314 
7315 /// @brief Get array attribute string data asynchronously.
7316 /// Each entry in an array attribute can have varying array lengths.
7317 /// Therefore the array values are returned as a flat array, with
7318 /// another sizes array containing the lengths of each array entry.
7319 ///
7320 /// @ingroup GeometryGetters Attributes
7321 ///
7322 /// @param[in] session
7323 /// The session of Houdini you are interacting with.
7324 /// See @ref HAPI_Sessions for more on sessions.
7325 /// Pass NULL to just use the default in-process session.
7326 /// <!-- default NULL -->
7327 ///
7328 /// @param[in] node_id
7329 /// The node id.
7330 ///
7331 /// @param[in] part_id
7332 /// The part id.
7333 ///
7334 /// @param[in] attr_name
7335 /// Attribute name.
7336 /// <!-- string -->
7337 ///
7338 /// @param[in] attr_info
7339 /// ::HAPI_AttributeInfo used as input for what tuple size.
7340 /// you want. Also contains some sanity checks like
7341 /// data type. Generally should be the same struct
7342 /// returned by ::HAPI_GetAttributeInfo().
7343 ///
7344 /// @param[out] data_fixed_array
7345 /// An integer array at least the size of
7346 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7347 /// <!-- sizeparm data_fixed_length -->
7348 ///
7349 /// @param[in] data_fixed_length
7350 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7351 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7352 ///
7353 /// @param[out] sizes_fixed_array
7354 /// An integer array at least the size of
7355 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7356 /// <!-- source ::HAPI_AttributeInfo::count -->
7357 /// <!-- sizeparm sizes_fixed_length -->
7358 ///
7359 /// @param[in] start
7360 /// First index of range. Must be at least 0 and at
7361 /// most ::HAPI_AttributeInfo::count - 1.
7362 /// <!-- default 0 -->
7363 ///
7364 /// @param[in] sizes_fixed_length
7365 /// Must be at least 0 and at most
7366 /// ::HAPI_AttributeInfo::count - @p start.
7367 /// Note, if 0 is passed for length, the function will just
7368 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7369 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7370 ///
7371 /// @param[out] job_id
7372 /// The id assigned to the job.
7373 ///
7374 /// @warning The string handles should be used to retrieve the strings
7375 /// immediately and are invalidated when another call to get
7376 /// this attribute's data is made.
7377 ///
7379  HAPI_NodeId node_id,
7380  HAPI_PartId part_id,
7381  const char * attr_name,
7382  HAPI_AttributeInfo * attr_info,
7383  HAPI_StringHandle * data_fixed_array,
7384  int data_fixed_length,
7385  int * sizes_fixed_array,
7386  int start, int sizes_fixed_length,
7387  int * job_id );
7388 
7389 /// @brief Get array attribute dictionary data asynchronously.
7390 /// Each entry in an array attribute can have varying array lengths.
7391 /// Therefore the array values are returned as a flat array, with
7392 /// another sizes array containing the lengths of each array entry.
7393 ///
7394 /// @ingroup GeometryGetters Attributes
7395 ///
7396 /// @param[in] session
7397 /// The session of Houdini you are interacting with.
7398 /// See @ref HAPI_Sessions for more on sessions.
7399 /// Pass NULL to just use the default in-process session.
7400 /// <!-- default NULL -->
7401 ///
7402 /// @param[in] node_id
7403 /// The node id.
7404 ///
7405 /// @param[in] part_id
7406 /// The part id.
7407 ///
7408 /// @param[in] attr_name
7409 /// Attribute name.
7410 /// <!-- string -->
7411 ///
7412 /// @param[in] attr_info
7413 /// ::HAPI_AttributeInfo used as input for what tuple size.
7414 /// you want. Also contains some sanity checks like
7415 /// data type. Generally should be the same struct
7416 /// returned by ::HAPI_GetAttributeInfo().
7417 ///
7418 /// @param[out] data_fixed_array
7419 /// An integer array at least the size of
7420 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7421 /// <!-- sizeparm data_fixed_length -->
7422 ///
7423 /// @param[in] data_fixed_length
7424 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7425 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7426 ///
7427 /// @param[out] sizes_fixed_array
7428 /// An integer array at least the size of
7429 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7430 /// <!-- source ::HAPI_AttributeInfo::count -->
7431 /// <!-- sizeparm sizes_fixed_length -->
7432 ///
7433 /// @param[in] start
7434 /// First index of range. Must be at least 0 and at
7435 /// most ::HAPI_AttributeInfo::count - 1.
7436 /// <!-- default 0 -->
7437 ///
7438 /// @param[in] sizes_fixed_length
7439 /// Must be at least 0 and at most
7440 /// ::HAPI_AttributeInfo::count - @p start.
7441 /// Note, if 0 is passed for length, the function will just
7442 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7443 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7444 ///
7445 /// @param[out] job_id
7446 /// The id assigned to the job.
7447 ///
7448 /// @warning The string handles should be used to retrieve the strings
7449 /// immediately and are invalidated when another call to get
7450 /// this attribute's data is made.
7451 ///
7453  HAPI_NodeId node_id,
7454  HAPI_PartId part_id,
7455  const char * attr_name,
7456  HAPI_AttributeInfo * attr_info,
7457  HAPI_StringHandle * data_fixed_array,
7458  int data_fixed_length,
7459  int * sizes_fixed_array,
7460  int start, int sizes_fixed_length,
7461  int * job_id );
7462 
7463 /// @brief Get status of a job.
7464 ///
7465 /// @ingroup Status
7466 ///
7467 /// @param[in] session
7468 /// The session of Houdini you are interacting with.
7469 /// See @ref HAPI_Sessions for more on sessions.
7470 /// Pass NULL to just use the default in-process session.
7471 /// <!-- default NULL -->
7472 ///
7473 /// @param[in] job_id
7474 /// The id assigned to the job. It must equal to the index
7475 /// assigned through a previous call to an asynchronous HAPI
7476 /// method.
7477 ///
7478 /// @param[out] job_status
7479 /// The current status of the job. One of ::HAPI_JobStatus.
7480 ///
7481 HAPI_DECL HAPI_GetJobStatus( const HAPI_Session * session,
7482  int job_id,
7483  HAPI_JobStatus * job_status );
7484 
7485 /// @brief Get group names for an entire geo. Please note that this
7486 /// function is NOT per-part, but it is per-geo. The companion
7487 /// function ::HAPI_GetGroupMembership() IS per-part. Also keep
7488 /// in mind that the name string handles are only
7489 /// valid until the next time this function is called.
7490 ///
7491 /// @ingroup GeometryGetters
7492 ///
7493 /// @param[in] session
7494 /// The session of Houdini you are interacting with.
7495 /// See @ref HAPI_Sessions for more on sessions.
7496 /// Pass NULL to just use the default in-process session.
7497 /// <!-- default NULL -->
7498 ///
7499 /// @param[in] node_id
7500 /// The node id.
7501 ///
7502 /// @param[in] group_type
7503 /// The group type.
7504 ///
7505 /// @param[out] group_names_array
7506 /// The array of names to be filled. Should be the size
7507 /// given by ::HAPI_GeoInfo_GetGroupCountByType() with
7508 /// @p group_type and the ::HAPI_GeoInfo of @p geo_id.
7509 /// @note These string handles are only valid until the
7510 /// next call to ::HAPI_GetGroupNames().
7511 /// <!-- sizeparm group_count -->
7512 ///
7513 /// @param[in] group_count
7514 /// Sanity check. Should be less than or equal to the size
7515 /// of @p group_names.
7516 ///
7517 HAPI_DECL HAPI_GetGroupNames( const HAPI_Session * session,
7518  HAPI_NodeId node_id,
7519  HAPI_GroupType group_type,
7520  HAPI_StringHandle * group_names_array,
7521  int group_count );
7522 
7523 /// @brief Get group membership.
7524 ///
7525 /// @ingroup GeometryGetters
7526 ///
7527 /// @param[in] session
7528 /// The session of Houdini you are interacting with.
7529 /// See @ref HAPI_Sessions for more on sessions.
7530 /// Pass NULL to just use the default in-process session.
7531 /// <!-- default NULL -->
7532 ///
7533 /// @param[in] node_id
7534 /// The node id.
7535 ///
7536 /// @param[in] part_id
7537 /// The part id.
7538 ///
7539 /// @param[in] group_type
7540 /// The group type.
7541 ///
7542 /// @param[in] group_name
7543 /// The group name.
7544 /// <!-- string -->
7545 ///
7546 /// @param[out] membership_array_all_equal
7547 /// (optional) Quick way to determine if all items are in
7548 /// the given group or all items our not in the group.
7549 /// If you do not need this information or you are getting edge
7550 /// group information, you can just pass NULL for this argument.
7551 ///
7552 /// @param[out] membership_array
7553 /// Array of ints that represent the membership of this
7554 /// group. When getting membership information for a point or
7555 /// primitive group, the size of the array should be the size
7556 /// given by ::HAPI_PartInfo_GetElementCountByGroupType() with
7557 /// @p group_type and the ::HAPI_PartInfo of @p part_id. When
7558 /// retrieving the edges belonging to an edge group, the
7559 /// membership array will be filled with point numbers that
7560 /// comprise the edges of the edge group. Each edge is specified
7561 /// by two points, which means that the size of the array should
7562 /// be the size given by ::HAPI_GetEdgeCountOfEdgeGroup() * 2.
7563 /// <!-- sizeparm length -->
7564 ///
7565 /// @param[in] start
7566 /// Start offset into the membership array. Must be
7567 /// less than ::HAPI_PartInfo_GetElementCountByGroupType() when
7568 /// it is a point or primitive group. When getting the
7569 /// membership information for an edge group, this argument must
7570 /// be less than the size returned by
7571 /// ::HAPI_GetEdgeCountOfEdgeGroup() * 2 - 1.
7572 /// <!-- default 0 -->
7573 ///
7574 /// @param[in] length
7575 /// Should be less than or equal to the size
7576 /// of @p membership_array.
7577 ///
7579  HAPI_NodeId node_id,
7580  HAPI_PartId part_id,
7581  HAPI_GroupType group_type,
7582  const char * group_name,
7583  HAPI_Bool * membership_array_all_equal,
7584  int * membership_array,
7585  int start, int length );
7586 
7587 /// @brief Get group counts for a specific packed instanced part.
7588 ///
7589 /// @ingroup GeometryGetters
7590 ///
7591 /// @param[in] session
7592 /// The session of Houdini you are interacting with.
7593 /// See @ref HAPI_Sessions for more on sessions.
7594 /// Pass NULL to just use the default in-process session.
7595 /// <!-- default NULL -->
7596 ///
7597 /// @param[in] node_id
7598 /// The node id.
7599 ///
7600 /// @param[in] part_id
7601 /// The part id. (should be a packed primitive)
7602 ///
7603 /// @param[out] pointGroupCount
7604 /// Number of point groups on the packed instance part.
7605 /// Will be set to -1 if the part is not a valid packed part.
7606 ///
7607 /// @param[out] primitiveGroupCount
7608 /// Number of primitive groups on the instanced part.
7609 /// Will be set to -1 if the part is not a valid instancer
7610 ///
7612  HAPI_NodeId node_id,
7613  HAPI_PartId part_id,
7614  int * pointGroupCount,
7615  int * primitiveGroupCount );
7616 
7617 /// @brief Get the group names for a packed instance part
7618 /// This functions allows you to get the group name for a specific
7619 /// packed primitive part.
7620 /// Keep in mind that the name string handles are only
7621 /// valid until the next time this function is called.
7622 ///
7623 /// @ingroup GeometryGetters
7624 ///
7625 /// @param[in] session
7626 /// The session of Houdini you are interacting with.
7627 /// See @ref HAPI_Sessions for more on sessions.
7628 /// Pass NULL to just use the default in-process session.
7629 /// <!-- default NULL -->
7630 ///
7631 /// @param[in] node_id
7632 /// The node id.
7633 ///
7634 /// @param[in] part_id
7635 /// The part id. (should be a packed primitive)
7636 ///
7637 /// @param[in] group_type
7638 /// The group type.
7639 ///
7640 /// @param[out] group_names_array
7641 /// The array of names to be filled. Should be the size
7642 /// given by ::HAPI_GetGroupCountOnPackedInstancePart() with
7643 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7644 /// @note These string handles are only valid until the
7645 /// next call to ::HAPI_GetGroupNamesOnPackedInstancePart().
7646 /// <!-- sizeparm group_count -->
7647 ///
7648 /// @param[in] group_count
7649 /// Sanity check. Should be less than or equal to the size
7650 /// of @p group_names.
7651 ///
7653  HAPI_NodeId node_id,
7654  HAPI_PartId part_id,
7655  HAPI_GroupType group_type,
7656  HAPI_StringHandle * group_names_array,
7657  int group_count );
7658 
7659 /// @brief Get group membership for a packed instance part
7660 /// This functions allows you to get the group membership for a specific
7661 /// packed primitive part.
7662 ///
7663 /// @ingroup GeometryGetters
7664 ///
7665 /// @param[in] session
7666 /// The session of Houdini you are interacting with.
7667 /// See @ref HAPI_Sessions for more on sessions.
7668 /// Pass NULL to just use the default in-process session.
7669 /// <!-- default NULL -->
7670 ///
7671 /// @param[in] node_id
7672 /// The node id.
7673 ///
7674 /// @param[in] part_id
7675 /// The part id. (should be a packed primitive)
7676 ///
7677 /// @param[in] group_type
7678 /// The group type.
7679 ///
7680 /// @param[in] group_name
7681 /// The group name.
7682 /// <!-- string -->
7683 ///
7684 /// @param[out] membership_array_all_equal
7685 /// (optional) Quick way to determine if all items are in
7686 /// the given group or all items our not in the group.
7687 /// You can just pass NULL here if not interested.
7688 ///
7689 /// @param[out] membership_array
7690 /// Array of ints that represent the membership of this
7691 /// group. Should be the size given by
7692 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
7693 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7694 /// <!-- sizeparm length -->
7695 ///
7696 /// @param[in] start
7697 /// Start offset into the membership array. Must be
7698 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
7699 /// <!-- default 0 -->
7700 ///
7701 /// @param[in] length
7702 /// Should be less than or equal to the size
7703 /// of @p membership_array.
7704 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
7705 ///
7707  HAPI_NodeId node_id,
7708  HAPI_PartId part_id,
7709  HAPI_GroupType group_type,
7710  const char * group_name,
7711  HAPI_Bool * membership_array_all_equal,
7712  int * membership_array,
7713  int start, int length );
7714 
7715 /// @brief Get the part ids that this instancer part is instancing.
7716 ///
7717 /// @ingroup GeometryGetters
7718 ///
7719 /// @param[in] session
7720 /// The session of Houdini you are interacting with.
7721 /// See @ref HAPI_Sessions for more on sessions.
7722 /// Pass NULL to just use the default in-process session.
7723 /// <!-- default NULL -->
7724 ///
7725 /// @param[in] node_id
7726 /// The node id.
7727 ///
7728 /// @param[in] part_id
7729 /// The instancer part id.
7730 ///
7731 /// @param[out] instanced_parts_array
7732 /// Array of ::HAPI_PartId's to instance.
7733 /// <!-- sizeparm length -->
7734 ///
7735 /// @param[in] start
7736 /// Should be less than @p part_id's
7737 /// ::HAPI_PartInfo::instancedPartCount but more than or
7738 /// equal to 0.
7739 /// <!-- default 0 -->
7740 ///
7741 /// @param[in] length
7742 /// Should be less than @p part_id's
7743 /// ::HAPI_PartInfo::instancedPartCount - @p start.
7744 /// <!-- source ::HAPI_PartInfo::instancedPartCount - start -->
7745 ///
7747  HAPI_NodeId node_id,
7748  HAPI_PartId part_id,
7749  HAPI_PartId * instanced_parts_array,
7750  int start, int length );
7751 
7752 /// @brief Get the instancer part's list of transforms on which to
7753 /// instance the instanced parts you got from
7754 /// ::HAPI_GetInstancedPartIds().
7755 ///
7756 /// @ingroup GeometryGetters
7757 ///
7758 /// @param[in] session
7759 /// The session of Houdini you are interacting with.
7760 /// See @ref HAPI_Sessions for more on sessions.
7761 /// Pass NULL to just use the default in-process session.
7762 /// <!-- default NULL -->
7763 ///
7764 /// @param[in] node_id
7765 /// The node id.
7766 ///
7767 /// @param[in] part_id
7768 /// The instancer part id.
7769 ///
7770 /// @param[in] rst_order
7771 /// The order of application of translation, rotation and
7772 /// scale.
7773 ///
7774 /// @param[out] transforms_array
7775 /// Array of ::HAPI_PartId's to instance.
7776 /// <!-- sizeparm length -->
7777 ///
7778 /// @param[in] start
7779 /// Should be less than @p part_id's
7780 /// ::HAPI_PartInfo::instanceCount but more than or
7781 /// equal to 0.
7782 /// <!-- default 0 -->
7783 ///
7784 /// @param[in] length
7785 /// Should be less than @p part_id's
7786 /// ::HAPI_PartInfo::instanceCount - @p start.
7787 /// <!-- source ::HAPI_PartInfo::instanceCount - start -->
7788 ///
7790  HAPI_NodeId node_id,
7791  HAPI_PartId part_id,
7792  HAPI_RSTOrder rst_order,
7793  HAPI_Transform * transforms_array,
7794  int start, int length );
7795 
7796 /// @defgroup GeometrySetters Geometry Setters
7797 /// Functions for setting geometry (SOP) data
7798 
7799 /// @brief Set the main part info struct (::HAPI_PartInfo).
7800 ///
7801 /// @ingroup GeometrySetters
7802 ///
7803 /// @param[in] session
7804 /// The session of Houdini you are interacting with.
7805 /// See @ref HAPI_Sessions for more on sessions.
7806 /// Pass NULL to just use the default in-process session.
7807 /// <!-- default NULL -->
7808 ///
7809 /// @param[in] node_id
7810 /// The SOP node id.
7811 ///
7812 /// @param[in] part_id
7813 /// Currently not used. Just pass 0.
7814 /// <!-- default 0 -->
7815 ///
7816 /// @param[in] part_info
7817 /// ::HAPI_PartInfo value that describes the input
7818 /// geometry.
7819 ///
7820 HAPI_DECL HAPI_SetPartInfo( const HAPI_Session * session,
7821  HAPI_NodeId node_id,
7822  HAPI_PartId part_id,
7823  const HAPI_PartInfo * part_info );
7824 
7825 /// @brief Set the array of faces where the nth integer in the array is
7826 /// the number of vertices the nth face has.
7827 ///
7828 /// @ingroup GeometrySetters
7829 ///
7830 /// @param[in] session
7831 /// The session of Houdini you are interacting with.
7832 /// See @ref HAPI_Sessions for more on sessions.
7833 /// Pass NULL to just use the default in-process session.
7834 /// <!-- default NULL -->
7835 ///
7836 /// @param[in] node_id
7837 /// The SOP node id.
7838 ///
7839 /// @param[in] part_id
7840 /// Currently not used. Just pass 0.
7841 /// <!-- default 0 -->
7842 ///
7843 /// @param[in] face_counts_array
7844 /// An integer array at least the size of @p length.
7845 /// <!-- sizeparm length -->
7846 ///
7847 /// @param[in] start
7848 /// First index of range. Must be at least 0 and at
7849 /// most ::HAPI_PartInfo::faceCount - 1.
7850 /// <!-- default 0 -->
7851 ///
7852 /// @param[in] length
7853 /// Must be at least 0 and at most
7854 /// ::HAPI_PartInfo::faceCount - @p start.
7855 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
7856 ///
7857 HAPI_DECL HAPI_SetFaceCounts( const HAPI_Session * session,
7858  HAPI_NodeId node_id,
7859  HAPI_PartId part_id,
7860  const int * face_counts_array,
7861  int start, int length );
7862 
7863 /// @brief Set array containing the vertex-point associations where the
7864 /// ith element in the array is the point index the ith vertex
7865 /// associates with.
7866 ///
7867 /// @ingroup GeometrySetters
7868 ///
7869 /// @param[in] session
7870 /// The session of Houdini you are interacting with.
7871 /// See @ref HAPI_Sessions for more on sessions.
7872 /// Pass NULL to just use the default in-process session.
7873 /// <!-- default NULL -->
7874 ///
7875 /// @param[in] node_id
7876 /// The SOP node id.
7877 ///
7878 /// @param[in] part_id
7879 /// Currently not used. Just pass 0.
7880 ///
7881 /// @param[in] vertex_list_array
7882 /// An integer array at least the size of length.
7883 /// <!-- sizeparm length -->
7884 ///
7885 /// @param[in] start
7886 /// First index of range. Must be at least 0 and at
7887 /// most ::HAPI_PartInfo::vertexCount - 1.
7888 /// <!-- default 0 -->
7889 ///
7890 /// @param[in] length
7891 /// Must be at least 0 and at most
7892 /// ::HAPI_PartInfo::vertexCount - @p start.
7893 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
7894 ///
7895 HAPI_DECL HAPI_SetVertexList( const HAPI_Session * session,
7896  HAPI_NodeId node_id,
7897  HAPI_PartId part_id,
7898  const int * vertex_list_array,
7899  int start, int length );
7900 
7901 /// @brief Add an attribute.
7902 ///
7903 /// @ingroup GeometrySetters Attributes
7904 ///
7905 /// @param[in] session
7906 /// The session of Houdini you are interacting with.
7907 /// See @ref HAPI_Sessions for more on sessions.
7908 /// Pass NULL to just use the default in-process session.
7909 /// <!-- default NULL -->
7910 ///
7911 /// @param[in] node_id
7912 /// The SOP node id.
7913 ///
7914 /// @param[in] part_id
7915 /// Currently not used. Just pass 0.
7916 ///
7917 /// @param[in] name
7918 /// Attribute name.
7919 /// <!-- string -->
7920 ///
7921 /// @param[in] attr_info
7922 /// ::HAPI_AttributeInfo stores attribute properties.
7923 ///
7924 HAPI_DECL HAPI_AddAttribute( const HAPI_Session * session,
7925  HAPI_NodeId node_id,
7926  HAPI_PartId part_id,
7927  const char * name,
7928  const HAPI_AttributeInfo * attr_info );
7929 
7930 /// @brief Delete an attribute from an input geo
7931 ///
7932 /// @ingroup GeometrySetters Attributes
7933 ///
7934 /// @param[in] session
7935 /// The session of Houdini you are interacting with.
7936 /// See @ref HAPI_Sessions for more on sessions.
7937 /// Pass NULL to just use the default in-process session.
7938 /// <!-- default NULL -->
7939 ///
7940 /// @param[in] node_id
7941 /// The SOP node id.
7942 ///
7943 /// @param[in] part_id
7944 /// Currently not used. Just pass 0.
7945 ///
7946 /// @param[in] name
7947 /// Attribute name.
7948 /// <!-- string -->
7949 ///
7950 /// @param[in] attr_info
7951 /// ::HAPI_AttributeInfo stores attribute properties.
7952 ///
7954  HAPI_NodeId node_id,
7955  HAPI_PartId part_id,
7956  const char * name,
7957  const HAPI_AttributeInfo * attr_info );
7958 
7959 /// @brief Set attribute integer data.
7960 ///
7961 /// @ingroup GeometrySetters Attributes
7962 ///
7963 /// @param[in] session
7964 /// The session of Houdini you are interacting with.
7965 /// See @ref HAPI_Sessions for more on sessions.
7966 /// Pass NULL to just use the default in-process session.
7967 /// <!-- default NULL -->
7968 ///
7969 /// @param[in] node_id
7970 /// The SOP node id.
7971 ///
7972 /// @param[in] part_id
7973 /// Currently not used. Just pass 0.
7974 ///
7975 /// @param[in] name
7976 /// Attribute name.
7977 /// <!-- string -->
7978 ///
7979 /// @param[in] attr_info
7980 /// ::HAPI_AttributeInfo used as input for what tuple size.
7981 /// you want. Also contains some sanity checks like
7982 /// data type. Generally should be the same struct
7983 /// returned by ::HAPI_GetAttributeInfo().
7984 ///
7985 /// @param[in] data_array
7986 /// An integer array at least the size of
7987 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
7988 /// <!-- sizeparm length -->
7989 ///
7990 /// @param[in] start
7991 /// First index of range. Must be at least 0 and at
7992 /// most ::HAPI_AttributeInfo::count - 1.
7993 /// <!-- default 0 -->
7994 ///
7995 /// @param[in] length
7996 /// Must be at least 0 and at most
7997 /// ::HAPI_AttributeInfo::count - @p start.
7998 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7999 ///
8001  HAPI_NodeId node_id,
8002  HAPI_PartId part_id,
8003  const char * name,
8004  const HAPI_AttributeInfo * attr_info,
8005  const int * data_array,
8006  int start, int length );
8007 
8008 /// @brief Set unsigned 8-bit attribute integer data.
8009 ///
8010 /// @ingroup GeometrySetters Attributes
8011 ///
8012 /// @param[in] session
8013 /// The session of Houdini you are interacting with.
8014 /// See @ref HAPI_Sessions for more on sessions.
8015 /// Pass NULL to just use the default in-process session.
8016 /// <!-- default NULL -->
8017 ///
8018 /// @param[in] node_id
8019 /// The SOP node id.
8020 ///
8021 /// @param[in] part_id
8022 /// Currently not used. Just pass 0.
8023 ///
8024 /// @param[in] name
8025 /// Attribute name.
8026 /// <!-- string -->
8027 ///
8028 /// @param[in] attr_info
8029 /// ::HAPI_AttributeInfo used as input for what tuple size.
8030 /// you want. Also contains some sanity checks like
8031 /// data type. Generally should be the same struct
8032 /// returned by ::HAPI_GetAttributeInfo().
8033 ///
8034 /// @param[in] data_array
8035 /// An unsigned 8-bit integer array at least the size of
8036 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8037 /// <!-- sizeparm length -->
8038 ///
8039 /// @param[in] start
8040 /// First index of range. Must be at least 0 and at
8041 /// most ::HAPI_AttributeInfo::count - 1.
8042 /// <!-- default 0 -->
8043 ///
8044 /// @param[in] length
8045 /// Must be at least 0 and at most
8046 /// ::HAPI_AttributeInfo::count - @p start.
8047 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8048 ///
8050  HAPI_NodeId node_id,
8051  HAPI_PartId part_id,
8052  const char * name,
8053  const HAPI_AttributeInfo * attr_info,
8054  const HAPI_UInt8 * data_array,
8055  int start, int length );
8056 
8057 /// @brief Set 8-bit attribute integer data.
8058 ///
8059 /// @ingroup GeometrySetters Attributes
8060 ///
8061 /// @param[in] session
8062 /// The session of Houdini you are interacting with.
8063 /// See @ref HAPI_Sessions for more on sessions.
8064 /// Pass NULL to just use the default in-process session.
8065 /// <!-- default NULL -->
8066 ///
8067 /// @param[in] node_id
8068 /// The SOP node id.
8069 ///
8070 /// @param[in] part_id
8071 /// Currently not used. Just pass 0.
8072 ///
8073 /// @param[in] name
8074 /// Attribute name.
8075 /// <!-- string -->
8076 ///
8077 /// @param[in] attr_info
8078 /// ::HAPI_AttributeInfo used as input for what tuple size.
8079 /// you want. Also contains some sanity checks like
8080 /// data type. Generally should be the same struct
8081 /// returned by ::HAPI_GetAttributeInfo().
8082 ///
8083 /// @param[in] data_array
8084 /// An 8-bit integer array at least the size of
8085 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8086 /// <!-- sizeparm length -->
8087 ///
8088 /// @param[in] start
8089 /// First index of range. Must be at least 0 and at
8090 /// most ::HAPI_AttributeInfo::count - 1.
8091 /// <!-- default 0 -->
8092 ///
8093 /// @param[in] length
8094 /// Must be at least 0 and at most
8095 /// ::HAPI_AttributeInfo::count - @p start.
8096 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8097 ///
8099  HAPI_NodeId node_id,
8100  HAPI_PartId part_id,
8101  const char * name,
8102  const HAPI_AttributeInfo * attr_info,
8103  const HAPI_Int8 * data_array,
8104  int start, int length );
8105 
8106 /// @brief Set 16-bit attribute integer data.
8107 ///
8108 /// @ingroup GeometrySetters Attributes
8109 ///
8110 /// @param[in] session
8111 /// The session of Houdini you are interacting with.
8112 /// See @ref HAPI_Sessions for more on sessions.
8113 /// Pass NULL to just use the default in-process session.
8114 /// <!-- default NULL -->
8115 ///
8116 /// @param[in] node_id
8117 /// The SOP node id.
8118 ///
8119 /// @param[in] part_id
8120 /// Currently not used. Just pass 0.
8121 ///
8122 /// @param[in] name
8123 /// Attribute name.
8124 /// <!-- string -->
8125 ///
8126 /// @param[in] attr_info
8127 /// ::HAPI_AttributeInfo used as input for what tuple size.
8128 /// you want. Also contains some sanity checks like
8129 /// data type. Generally should be the same struct
8130 /// returned by ::HAPI_GetAttributeInfo().
8131 ///
8132 /// @param[in] data_array
8133 /// An 16-bit integer array at least the size of
8134 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8135 /// <!-- sizeparm length -->
8136 ///
8137 /// @param[in] start
8138 /// First index of range. Must be at least 0 and at
8139 /// most ::HAPI_AttributeInfo::count - 1.
8140 /// <!-- default 0 -->
8141 ///
8142 /// @param[in] length
8143 /// Must be at least 0 and at most
8144 /// ::HAPI_AttributeInfo::count - @p start.
8145 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8146 ///
8148  HAPI_NodeId node_id,
8149  HAPI_PartId part_id,
8150  const char * name,
8151  const HAPI_AttributeInfo * attr_info,
8152  const HAPI_Int16 * data_array,
8153  int start, int length );
8154 
8155 /// @brief Set 64-bit attribute integer data.
8156 ///
8157 /// @ingroup GeometrySetters Attributes
8158 ///
8159 /// @param[in] session
8160 /// The session of Houdini you are interacting with.
8161 /// See @ref HAPI_Sessions for more on sessions.
8162 /// Pass NULL to just use the default in-process session.
8163 /// <!-- default NULL -->
8164 ///
8165 /// @param[in] node_id
8166 /// The SOP node id.
8167 ///
8168 /// @param[in] part_id
8169 /// Currently not used. Just pass 0.
8170 ///
8171 /// @param[in] name
8172 /// Attribute name.
8173 /// <!-- string -->
8174 ///
8175 /// @param[in] attr_info
8176 /// ::HAPI_AttributeInfo used as input for what tuple size.
8177 /// you want. Also contains some sanity checks like
8178 /// data type. Generally should be the same struct
8179 /// returned by ::HAPI_GetAttributeInfo().
8180 ///
8181 /// @param[in] data_array
8182 /// An 64-bit integer array at least the size of
8183 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8184 /// <!-- sizeparm length -->
8185 ///
8186 /// @param[in] start
8187 /// First index of range. Must be at least 0 and at
8188 /// most ::HAPI_AttributeInfo::count - 1.
8189 /// <!-- default 0 -->
8190 ///
8191 /// @param[in] length
8192 /// Must be at least 0 and at most
8193 /// ::HAPI_AttributeInfo::count - @p start.
8194 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8195 ///
8197  HAPI_NodeId node_id,
8198  HAPI_PartId part_id,
8199  const char * name,
8200  const HAPI_AttributeInfo * attr_info,
8201  const HAPI_Int64 * data_array,
8202  int start, int length );
8203 
8204 /// @brief Set attribute float data.
8205 ///
8206 /// @ingroup GeometrySetters Attributes
8207 ///
8208 /// @param[in] session
8209 /// The session of Houdini you are interacting with.
8210 /// See @ref HAPI_Sessions for more on sessions.
8211 /// Pass NULL to just use the default in-process session.
8212 /// <!-- default NULL -->
8213 ///
8214 /// @param[in] node_id
8215 /// The SOP node id.
8216 ///
8217 /// @param[in] part_id
8218 /// Currently not used. Just pass 0.
8219 ///
8220 /// @param[in] name
8221 /// Attribute name.
8222 /// <!-- string -->
8223 ///
8224 /// @param[in] attr_info
8225 /// ::HAPI_AttributeInfo used as input for what tuple size.
8226 /// you want. Also contains some sanity checks like
8227 /// data type. Generally should be the same struct
8228 /// returned by ::HAPI_GetAttributeInfo().
8229 ///
8230 /// @param[in] data_array
8231 /// An float array at least the size of
8232 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8233 /// <!-- sizeparm length -->
8234 ///
8235 /// @param[in] start
8236 /// First index of range. Must be at least 0 and at
8237 /// most ::HAPI_AttributeInfo::count - 1.
8238 /// <!-- default 0 -->
8239 ///
8240 /// @param[in] length
8241 /// Must be at least 0 and at most
8242 /// ::HAPI_AttributeInfo::count - @p start.
8243 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8244 ///
8246  HAPI_NodeId node_id,
8247  HAPI_PartId part_id,
8248  const char * name,
8249  const HAPI_AttributeInfo * attr_info,
8250  const float * data_array,
8251  int start, int length );
8252 
8253 /// @brief Set 64-bit attribute float data.
8254 ///
8255 /// @ingroup GeometrySetters Attributes
8256 ///
8257 /// @param[in] session
8258 /// The session of Houdini you are interacting with.
8259 /// See @ref HAPI_Sessions for more on sessions.
8260 /// Pass NULL to just use the default in-process session.
8261 /// <!-- default NULL -->
8262 ///
8263 /// @param[in] node_id
8264 /// The SOP node id.
8265 ///
8266 /// @param[in] part_id
8267 /// Currently not used. Just pass 0.
8268 ///
8269 /// @param[in] name
8270 /// Attribute name.
8271 /// <!-- string -->
8272 ///
8273 /// @param[in] attr_info
8274 /// ::HAPI_AttributeInfo used as input for what tuple size.
8275 /// you want. Also contains some sanity checks like
8276 /// data type. Generally should be the same struct
8277 /// returned by ::HAPI_GetAttributeInfo().
8278 ///
8279 /// @param[in] data_array
8280 /// An 64-bit float array at least the size of
8281 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8282 /// <!-- sizeparm length -->
8283 ///
8284 /// @param[in] start
8285 /// First index of range. Must be at least 0 and at
8286 /// most ::HAPI_AttributeInfo::count - 1.
8287 /// <!-- default 0 -->
8288 ///
8289 /// @param[in] length
8290 /// Must be at least 0 and at most
8291 /// ::HAPI_AttributeInfo::count - @p start.
8292 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8293 ///
8295  HAPI_NodeId node_id,
8296  HAPI_PartId part_id,
8297  const char * name,
8298  const HAPI_AttributeInfo * attr_info,
8299  const double * data_array,
8300  int start, int length );
8301 
8302 /// @brief Set attribute string data.
8303 ///
8304 /// @ingroup GeometrySetters Attributes
8305 ///
8306 /// @param[in] session
8307 /// The session of Houdini you are interacting with.
8308 /// See @ref HAPI_Sessions for more on sessions.
8309 /// Pass NULL to just use the default in-process session.
8310 /// <!-- default NULL -->
8311 ///
8312 /// @param[in] node_id
8313 /// The SOP node id.
8314 ///
8315 /// @param[in] part_id
8316 /// Currently not used. Just pass 0.
8317 ///
8318 /// @param[in] name
8319 /// Attribute name.
8320 /// <!-- string -->
8321 ///
8322 /// @param[in] attr_info
8323 /// ::HAPI_AttributeInfo used as input for what tuple size
8324 /// you want. Also contains some sanity checks like
8325 /// data type. Generally should be the same struct
8326 /// returned by ::HAPI_GetAttributeInfo().
8327 ///
8328 /// @param[in] data_array
8329 /// An ::HAPI_StringHandle array at least the size of
8330 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8331 /// <!-- sizeparm length -->
8332 ///
8333 /// @param[in] start
8334 /// First index of range. Must be at least 0 and at
8335 /// most ::HAPI_AttributeInfo::count - 1.
8336 /// <!-- default 0 -->
8337 ///
8338 /// @param[in] length
8339 /// Must be at least 0 and at most
8340 /// ::HAPI_AttributeInfo::count - @p start.
8341 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8342 ///
8344  HAPI_NodeId node_id,
8345  HAPI_PartId part_id,
8346  const char * name,
8347  const HAPI_AttributeInfo * attr_info,
8348  const char ** data_array,
8349  int start, int length );
8350 
8351 /// @brief Set attribute string data by index.
8352 ///
8353 /// @ingroup GeometrySetters Attributes
8354 ///
8355 /// @param[in] session
8356 /// The session of Houdini you are interacting with.
8357 /// See @ref HAPI_Sessions for more on sessions.
8358 /// Pass NULL to just use the default in-process session.
8359 /// <!-- default NULL -->
8360 ///
8361 /// @param[in] node_id
8362 /// The SOP node id.
8363 ///
8364 /// @param[in] part_id
8365 /// Currently not used. Just pass 0.
8366 ///
8367 /// @param[in] name
8368 /// Attribute name.
8369 /// <!-- string -->
8370 ///
8371 /// @param[in] attr_info
8372 /// ::HAPI_AttributeInfo used as input for what tuple size.
8373 /// you want. Also contains some sanity checks like
8374 /// data type. Generally should be the same struct
8375 /// returned by ::HAPI_GetAttributeInfo().
8376 ///
8377 /// @param[in] string_fixed_array
8378 /// An array of strings at least the size of
8379 /// <tt>string_fixed_length/tt>.
8380 /// <!-- sizeparm string_fixed_length -->
8381 ///
8382 /// @param[in] string_fixed_length
8383 /// Number of strings that are indexed.
8384 ///
8385 /// @param[in] indices_array
8386 /// integer array at least the size of
8387 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
8388 /// entry indexes string_array.
8389 /// <!-- sizeparm indices_length -->
8390 ///
8391 /// @param[in] indices_start
8392 /// First index of range. Must be at least 0 and at
8393 /// most ::HAPI_AttributeInfo::count - 1.
8394 /// <!-- default 0 -->
8395 ///
8396 /// @param[in] indices_length
8397 /// Must be at least 0 and at most
8398 /// ::HAPI_AttributeInfo::count - @p start.
8399 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8400 ///
8402  HAPI_NodeId node_id,
8403  HAPI_PartId part_id,
8404  const char* name,
8405  const HAPI_AttributeInfo* attr_info,
8406  const char** string_fixed_array,
8407  int string_fixed_length,
8408  const int* indices_array,
8409  int indices_start,
8410  int indices_length);
8411 
8412 /// @brief Set multiple attribute string data to the same unique value.
8413 ///
8414 /// @ingroup GeometrySetters Attributes
8415 ///
8416 /// @param[in] session
8417 /// The session of Houdini you are interacting with.
8418 /// See @ref HAPI_Sessions for more on sessions.
8419 /// Pass NULL to just use the default in-process session.
8420 /// <!-- default NULL -->
8421 ///
8422 /// @param[in] node_id
8423 /// The SOP node id.
8424 ///
8425 /// @param[in] part_id
8426 /// Currently not used. Just pass 0.
8427 ///
8428 /// @param[in] name
8429 /// Attribute name.
8430 /// <!-- string -->
8431 ///
8432 /// @param[in] attr_info
8433 /// ::HAPI_AttributeInfo used as input for what tuple size.
8434 /// you want. Also contains some sanity checks like
8435 /// data type. Generally should be the same struct
8436 /// returned by ::HAPI_GetAttributeInfo().
8437 ///
8438 /// @param[in] data_array
8439 /// A string
8440 /// <!-- string -->
8441 ///
8442 /// @param[in] data_length
8443 /// Must be the length of string data.
8444 ///
8445 /// @param[in] start_index
8446 /// Must be at least 0 and at most
8447 /// ::HAPI_AttributeInfo::count - @p start.
8448 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8449 ///
8450 /// @param[in] num_indices
8451 /// Must be at least 0 and at most
8452 /// ::HAPI_AttributeInfo::count - @p start.
8453 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8454 ///
8456  const HAPI_Session* session,
8457  HAPI_NodeId node_id,
8458  HAPI_PartId part_id,
8459  const char* name,
8460  const HAPI_AttributeInfo* attr_info,
8461  const char* data_array,
8462  int data_length,
8463  int start_index,
8464  int num_indices);
8465 
8466 /// @brief Set multiple attribute int data to the same unique value.
8467 ///
8468 /// @ingroup GeometrySetters Attributes
8469 ///
8470 /// @param[in] session
8471 /// The session of Houdini you are interacting with.
8472 /// See @ref HAPI_Sessions for more on sessions.
8473 /// Pass NULL to just use the default in-process session.
8474 /// <!-- default NULL -->
8475 ///
8476 /// @param[in] node_id
8477 /// The SOP node id.
8478 ///
8479 /// @param[in] part_id
8480 /// Currently not used. Just pass 0.
8481 ///
8482 /// @param[in] name
8483 /// Attribute name.
8484 /// <!-- string -->
8485 ///
8486 /// @param[in] attr_info
8487 /// ::HAPI_AttributeInfo used as input for what tuple size.
8488 /// you want. Also contains some sanity checks like
8489 /// data type. Generally should be the same struct
8490 /// returned by ::HAPI_GetAttributeInfo().
8491 ///
8492 /// @param[in] data_array
8493 /// A integer array at least the size of
8494 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8495 /// <!-- sizeparm data_length -->
8496 ///
8497 /// @param[in] data_length
8498 /// An integer of at least the size of
8499 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8500 ///
8501 /// @param[in] start_index
8502 /// First index of range. Must be at least 0 and at
8503 /// most ::HAPI_AttributeInfo::count - 1.
8504 /// <!-- default 0 -->
8505 ///
8506 /// @param[in] num_indices
8507 /// Must be at least 0 and at most
8508 /// ::HAPI_AttributeInfo::count - @p start_index.
8509 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8510 ///
8512  const HAPI_Session* session,
8513  HAPI_NodeId node_id,
8514  HAPI_PartId part_id,
8515  const char* name,
8516  const HAPI_AttributeInfo* attr_info,
8517  const int* data_array,
8518  int data_length,
8519  int start_index,
8520  int num_indices);
8521 
8522 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique value.
8523 ///
8524 /// @ingroup GeometrySetters Attributes
8525 ///
8526 /// @param[in] session
8527 /// The session of Houdini you are interacting with.
8528 /// See @ref HAPI_Sessions for more on sessions.
8529 /// Pass NULL to just use the default in-process session.
8530 /// <!-- default NULL -->
8531 ///
8532 /// @param[in] node_id
8533 /// The SOP node id.
8534 ///
8535 /// @param[in] part_id
8536 /// Currently not used. Just pass 0.
8537 ///
8538 /// @param[in] name
8539 /// Attribute name.
8540 /// <!-- string -->
8541 ///
8542 /// @param[in] attr_info
8543 /// ::HAPI_AttributeInfo used as input for what tuple size.
8544 /// you want. Also contains some sanity checks like
8545 /// data type. Generally should be the same struct
8546 /// returned by ::HAPI_GetAttributeInfo().
8547 ///
8548 /// @param[in] data_array
8549 /// A integer array at least the size of
8550 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8551 /// <!-- sizeparm data_length -->
8552 ///
8553 /// @param[in] data_length
8554 /// An integer of at least the size of
8555 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8556 ///
8557 /// @param[in] start_index
8558 /// First index of range. Must be at least 0 and at
8559 /// most ::HAPI_AttributeInfo::count - 1.
8560 /// <!-- default 0 -->
8561 ///
8562 /// @param[in] num_indices
8563 /// Must be at least 0 and at most
8564 /// ::HAPI_AttributeInfo::count - @p start_index.
8565 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8566 ///
8568  const HAPI_Session* session,
8569  HAPI_NodeId node_id,
8570  HAPI_PartId part_id,
8571  const char* name,
8572  const HAPI_AttributeInfo* attr_info,
8573  const HAPI_UInt8* data_array,
8574  int data_length,
8575  int start_index,
8576  int num_indices);
8577 
8578 /// @brief Set multiple attribute 8-bit int data to the same unique value.
8579 ///
8580 ///
8581 /// @ingroup GeometrySetters Attributes
8582 ///
8583 /// @param[in] session
8584 /// The session of Houdini you are interacting with.
8585 /// See @ref HAPI_Sessions for more on sessions.
8586 /// Pass NULL to just use the default in-process session.
8587 /// <!-- default NULL -->
8588 ///
8589 /// @param[in] node_id
8590 /// The SOP node id.
8591 ///
8592 /// @param[in] part_id
8593 /// Currently not used. Just pass 0.
8594 ///
8595 /// @param[in] name
8596 /// Attribute name.
8597 /// <!-- string -->
8598 ///
8599 /// @param[in] attr_info
8600 /// ::HAPI_AttributeInfo used as input for what tuple size.
8601 /// you want. Also contains some sanity checks like
8602 /// data type. Generally should be the same struct
8603 /// returned by ::HAPI_GetAttributeInfo().
8604 ///
8605 /// @param[in] data_array
8606 /// A integer array at least the size of
8607 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8608 /// <!-- sizeparm data_length -->
8609 ///
8610 /// @param[in] data_length
8611 /// An integer of at least the size of
8612 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8613 ///
8614 /// @param[in] start_index
8615 /// First index of range. Must be at least 0 and at
8616 /// most ::HAPI_AttributeInfo::count - 1.
8617 /// <!-- default 0 -->
8618 ///
8619 /// @param[in] num_indices
8620 /// Must be at least 0 and at most
8621 /// ::HAPI_AttributeInfo::count - @p start_index.
8622 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8623 ///
8625  const HAPI_Session* session,
8626  HAPI_NodeId node_id,
8627  HAPI_PartId part_id,
8628  const char* name,
8629  const HAPI_AttributeInfo* attr_info,
8630  const HAPI_Int8* data_array,
8631  int data_length,
8632  int start_index,
8633  int num_indices);
8634 
8635 /// @brief Set multiple attribute 16-bit int data to the same unique value.
8636 ///
8637 /// @ingroup GeometrySetters Attributes
8638 ///
8639 /// @param[in] session
8640 /// The session of Houdini you are interacting with.
8641 /// See @ref HAPI_Sessions for more on sessions.
8642 /// Pass NULL to just use the default in-process session.
8643 /// <!-- default NULL -->
8644 ///
8645 /// @param[in] node_id
8646 /// The SOP node id.
8647 ///
8648 /// @param[in] part_id
8649 /// Currently not used. Just pass 0.
8650 ///
8651 /// @param[in] name
8652 /// Attribute name.
8653 /// <!-- string -->
8654 ///
8655 /// @param[in] attr_info
8656 /// ::HAPI_AttributeInfo used as input for what tuple size.
8657 /// you want. Also contains some sanity checks like
8658 /// data type. Generally should be the same struct
8659 /// returned by ::HAPI_GetAttributeInfo().
8660 ///
8661 /// @param[in] data_array
8662 /// A integer array at least the size of
8663 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8664 /// <!-- sizeparm data_length -->
8665 ///
8666 /// @param[in] data_length
8667 /// An integer of at least the size of
8668 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8669 ///
8670 /// @param[in] start_index
8671 /// First index of range. Must be at least 0 and at
8672 /// most ::HAPI_AttributeInfo::count - 1.
8673 /// <!-- default 0 -->
8674 ///
8675 /// @param[in] num_indices
8676 /// Must be at least 0 and at most
8677 /// ::HAPI_AttributeInfo::count - @p start_index.
8678 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8679 ///
8681  const HAPI_Session* session,
8682  HAPI_NodeId node_id,
8683  HAPI_PartId part_id,
8684  const char* name,
8685  const HAPI_AttributeInfo* attr_info,
8686  const HAPI_Int16* data_array,
8687  int data_length,
8688  int start_index,
8689  int num_indices);
8690 
8691 /// @brief Set multiple attribute 64-bit int data to the same unique value.
8692 ///
8693 /// @ingroup GeometrySetters Attributes
8694 ///
8695 /// @param[in] session
8696 /// The session of Houdini you are interacting with.
8697 /// See @ref HAPI_Sessions for more on sessions.
8698 /// Pass NULL to just use the default in-process session.
8699 /// <!-- default NULL -->
8700 ///
8701 /// @param[in] node_id
8702 /// The SOP node id.
8703 ///
8704 /// @param[in] part_id
8705 /// Currently not used. Just pass 0.
8706 ///
8707 /// @param[in] name
8708 /// Attribute name.
8709 /// <!-- string -->
8710 ///
8711 /// @param[in] attr_info
8712 /// ::HAPI_AttributeInfo used as input for what tuple size.
8713 /// you want. Also contains some sanity checks like
8714 /// data type. Generally should be the same struct
8715 /// returned by ::HAPI_GetAttributeInfo().
8716 ///
8717 /// @param[in] data_array
8718 /// A integer array at least the size of
8719 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8720 /// <!-- sizeparm data_length -->
8721 ///
8722 /// @param[in] data_length
8723 /// An integer of at least the size of
8724 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8725 ///
8726 /// @param[in] start_index
8727 /// First index of range. Must be at least 0 and at
8728 /// most ::HAPI_AttributeInfo::count - 1.
8729 /// <!-- default 0 -->
8730 ///
8731 /// @param[in] num_indices
8732 /// Must be at least 0 and at most
8733 /// ::HAPI_AttributeInfo::count - @p start_index.
8734 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8735 ///
8737  const HAPI_Session* session,
8738  HAPI_NodeId node_id,
8739  HAPI_PartId part_id,
8740  const char* name,
8741  const HAPI_AttributeInfo* attr_info,
8742  const HAPI_Int64* data_array,
8743  int data_length,
8744  int start_index,
8745  int num_indices);
8746 
8747 /// @brief Set multiple attribute float data to the same unique value.
8748 ///
8749 /// @ingroup GeometrySetters Attributes
8750 ///
8751 /// @param[in] session
8752 /// The session of Houdini you are interacting with.
8753 /// See @ref HAPI_Sessions for more on sessions.
8754 /// Pass NULL to just use the default in-process session.
8755 /// <!-- default NULL -->
8756 ///
8757 /// @param[in] node_id
8758 /// The SOP node id.
8759 ///
8760 /// @param[in] part_id
8761 /// Currently not used. Just pass 0.
8762 ///
8763 /// @param[in] name
8764 /// Attribute name.
8765 /// <!-- string -->
8766 ///
8767 /// @param[in] attr_info
8768 /// ::HAPI_AttributeInfo used as input for what tuple size.
8769 /// you want. Also contains some sanity checks like
8770 /// data type. Generally should be the same struct
8771 /// returned by ::HAPI_GetAttributeInfo().
8772 ///
8773 /// @param[in] data_array
8774 /// A floating point array at least the size of
8775 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8776 /// <!-- sizeparm data_length -->
8777 ///
8778 /// @param[in] data_length
8779 /// An integer of at least the size of
8780 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8781 ///
8782 /// @param[in] start_index
8783 /// First index of range. Must be at least 0 and at
8784 /// most ::HAPI_AttributeInfo::count - 1.
8785 /// <!-- default 0 -->
8786 ///
8787 /// @param[in] num_indices
8788 /// Must be at least 0 and at most
8789 /// ::HAPI_AttributeInfo::count - @p start_index.
8790 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8791 ///
8793  const HAPI_Session* session,
8794  HAPI_NodeId node_id,
8795  HAPI_PartId part_id,
8796  const char* name,
8797  const HAPI_AttributeInfo* attr_info,
8798  const float* data_array,
8799  int data_length,
8800  int start_index,
8801  int num_indices);
8802 
8803 /// @brief Set multiple attribute 64-bit float data to the same unique value.
8804 ///
8805 /// @ingroup GeometrySetters Attributes
8806 ///
8807 /// @param[in] session
8808 /// The session of Houdini you are interacting with.
8809 /// See @ref HAPI_Sessions for more on sessions.
8810 /// Pass NULL to just use the default in-process session.
8811 /// <!-- default NULL -->
8812 ///
8813 /// @param[in] node_id
8814 /// The SOP node id.
8815 ///
8816 /// @param[in] part_id
8817 /// Currently not used. Just pass 0.
8818 ///
8819 /// @param[in] name
8820 /// Attribute name.
8821 /// <!-- string -->
8822 ///
8823 /// @param[in] attr_info
8824 /// ::HAPI_AttributeInfo used as input for what tuple size.
8825 /// you want. Also contains some sanity checks like
8826 /// data type. Generally should be the same struct
8827 /// returned by ::HAPI_GetAttributeInfo().
8828 ///
8829 /// @param[in] data_array
8830 /// A floating point array at least the size of
8831 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8832 /// <!-- sizeparm data_length -->
8833 ///
8834 /// @param[in] data_length
8835 /// An integer of at least the size of
8836 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8837 ///
8838 /// @param[in] start_index
8839 /// First index of range. Must be at least 0 and at
8840 /// most ::HAPI_AttributeInfo::count - 1.
8841 /// <!-- default 0 -->
8842 ///
8843 /// @param[in] num_indices
8844 /// Must be at least 0 and at most
8845 /// ::HAPI_AttributeInfo::count - @p start_index.
8846 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8847 ///
8849  const HAPI_Session* session,
8850  HAPI_NodeId node_id,
8851  HAPI_PartId part_id,
8852  const char* name,
8853  const HAPI_AttributeInfo* attr_info,
8854  const double* data_array,
8855  int data_length,
8856  int start_index,
8857  int num_indices);
8858 
8859 /// @brief Set attribute dictionary data. The dictionary data should
8860 /// be provided as JSON-encoded strings.
8861 ///
8862 /// @ingroup GeometrySetters Attributes
8863 ///
8864 /// @param[in] session
8865 /// The session of Houdini you are interacting with.
8866 /// See @ref HAPI_Sessions for more on sessions.
8867 /// Pass NULL to just use the default in-process session.
8868 /// <!-- default NULL -->
8869 ///
8870 /// @param[in] node_id
8871 /// The SOP node id.
8872 ///
8873 /// @param[in] part_id
8874 /// Currently not used. Just pass 0.
8875 ///
8876 /// @param[in] name
8877 /// Attribute name.
8878 /// <!-- string -->
8879 ///
8880 /// @param[in] attr_info
8881 /// ::HAPI_AttributeInfo used as input for what tuple size
8882 /// you want. Also contains some sanity checks like
8883 /// data type. Generally should be the same struct
8884 /// returned by ::HAPI_GetAttributeInfo().
8885 ///
8886 /// @param[in] data_array
8887 /// An ::HAPI_StringHandle array at least the size of
8888 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8889 /// <!-- sizeparm length -->
8890 ///
8891 /// @param[in] start
8892 /// First index of range. Must be at least 0 and at
8893 /// most ::HAPI_AttributeInfo::count - 1.
8894 /// <!-- default 0 -->
8895 ///
8896 /// @param[in] length
8897 /// Must be at least 0 and at most
8898 /// ::HAPI_AttributeInfo::count - @p start.
8899 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8900 ///
8902  HAPI_NodeId node_id,
8903  HAPI_PartId part_id,
8904  const char* name,
8905  const HAPI_AttributeInfo* attr_info,
8906  const char** data_array,
8907  int start, int length );
8908 
8909 /// @brief Set integer array attribute data.
8910 ///
8911 /// @ingroup GeometrySetters Attributes
8912 ///
8913 /// @param[in] session
8914 /// The session of Houdini you are interacting with.
8915 /// See @ref HAPI_Sessions for more on sessions.
8916 /// Pass NULL to just use the default in-process session.
8917 /// <!-- default NULL -->
8918 ///
8919 /// @param[in] node_id
8920 /// The SOP node id.
8921 ///
8922 /// @param[in] part_id
8923 /// Currently not used. Just pass 0.
8924 ///
8925 /// @param[in] name
8926 /// Attribute name.
8927 /// <!-- string -->
8928 ///
8929 /// @param[in] attr_info
8930 /// ::HAPI_AttributeInfo that contains the description for the
8931 /// attribute that is being set.
8932 ///
8933 /// @param[in] data_fixed_array
8934 /// An array containing the int values of the attribute.
8935 /// <!-- sizeparm data_fixed_length -->
8936 ///
8937 /// @param[in] data_fixed_length
8938 /// The total size of the data array. The size can be no greater
8939 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
8940 /// of the attribute.
8941 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
8942 ///
8943 /// @param[in] sizes_fixed_array
8944 /// An array of integers that contains the sizes of each
8945 /// attribute array. This is required because the attribute
8946 /// array for each geometry component can be of variable size.
8947 /// <!-- sizeparm sizes_fixed_length -->
8948 ///
8949 /// @param[in] start
8950 /// First index of range. Must be at least 0 and at most
8951 /// ::HAPI_AttributeInfo::count - 1.
8952 /// <!-- default 0 -->
8953 ///
8954 /// @param[in] sizes_fixed_length
8955 /// Must be at least 0 and at most
8956 /// ::HAPI_AttributeInfo::count - @p start.
8957 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8959  HAPI_NodeId node_id,
8960  HAPI_PartId part_id,
8961  const char * name,
8962  const HAPI_AttributeInfo * attr_info,
8963  const int * data_fixed_array,
8964  int data_fixed_length,
8965  const int * sizes_fixed_array,
8966  int start,
8967  int sizes_fixed_length );
8968 
8969 /// @brief Set unsigned 8-bit integer array attribute data.
8970 ///
8971 /// @ingroup GeometrySetters Attributes
8972 ///
8973 /// @param[in] session
8974 /// The session of Houdini you are interacting with.
8975 /// See @ref HAPI_Sessions for more on sessions.
8976 /// Pass NULL to just use the default in-process session.
8977 /// <!-- default NULL -->
8978 ///
8979 /// @param[in] node_id
8980 /// The SOP node id.
8981 ///
8982 /// @param[in] part_id
8983 /// Currently not used. Just pass 0.
8984 ///
8985 /// @param[in] name
8986 /// Attribute name.
8987 /// <!-- string -->
8988 ///
8989 /// @param[in] attr_info
8990 /// ::HAPI_AttributeInfo that contains the description for the
8991 /// attribute that is being set.
8992 ///
8993 /// @param[in] data_fixed_array
8994 /// An array containing the HAPI_UInt8 values of the attribute.
8995 /// <!-- sizeparm data_fixed_length -->
8996 ///
8997 /// @param[in] data_fixed_length
8998 /// The total size of the data array. The size can be no greater
8999 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9000 /// of the attribute.
9001 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9002 ///
9003 /// @param[in] sizes_fixed_array
9004 /// An array of integers that contains the sizes of each
9005 /// attribute array. This is required because the attribute
9006 /// array for each geometry component can be of variable size.
9007 /// <!-- sizeparm sizes_fixed_length -->
9008 ///
9009 /// @param[in] start
9010 /// First index of range. Must be at least 0 and at most
9011 /// ::HAPI_AttributeInfo::count - 1.
9012 /// <!-- default 0 -->
9013 ///
9014 /// @param[in] sizes_fixed_length
9015 /// Must be at least 0 and at most
9016 /// ::HAPI_AttributeInfo::count - @p start.
9017 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9019  HAPI_NodeId node_id,
9020  HAPI_PartId part_id,
9021  const char * name,
9022  const HAPI_AttributeInfo * attr_info,
9023  const HAPI_UInt8 * data_fixed_array,
9024  int data_fixed_length,
9025  const int * sizes_fixed_array,
9026  int start,
9027  int sizes_fixed_length );
9028 
9029 /// @brief Set 8-bit integer array attribute data.
9030 ///
9031 /// @ingroup GeometrySetters Attributes
9032 ///
9033 /// @param[in] session
9034 /// The session of Houdini you are interacting with.
9035 /// See @ref HAPI_Sessions for more on sessions.
9036 /// Pass NULL to just use the default in-process session.
9037 /// <!-- default NULL -->
9038 ///
9039 /// @param[in] node_id
9040 /// The SOP node id.
9041 ///
9042 /// @param[in] part_id
9043 /// Currently not used. Just pass 0.
9044 ///
9045 /// @param[in] name
9046 /// Attribute name.
9047 /// <!-- string -->
9048 ///
9049 /// @param[in] attr_info
9050 /// ::HAPI_AttributeInfo that contains the description for the
9051 /// attribute that is being set.
9052 ///
9053 /// @param[in] data_fixed_array
9054 /// An array containing the HAPI_Int8 values of the attribute.
9055 /// <!-- sizeparm data_fixed_length -->
9056 ///
9057 /// @param[in] data_fixed_length
9058 /// The total size of the data array. The size can be no greater
9059 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9060 /// of the attribute.
9061 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9062 ///
9063 /// @param[in] sizes_fixed_array
9064 /// An array of integers that contains the sizes of each
9065 /// attribute array. This is required because the attribute
9066 /// array for each geometry component can be of variable size.
9067 /// <!-- sizeparm sizes_fixed_length -->
9068 ///
9069 /// @param[in] start
9070 /// First index of range. Must be at least 0 and at most
9071 /// ::HAPI_AttributeInfo::count - 1.
9072 /// <!-- default 0 -->
9073 ///
9074 /// @param[in] sizes_fixed_length
9075 /// Must be at least 0 and at most
9076 /// ::HAPI_AttributeInfo::count - @p start.
9077 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9079  HAPI_NodeId node_id,
9080  HAPI_PartId part_id,
9081  const char * name,
9082  const HAPI_AttributeInfo * attr_info,
9083  const HAPI_Int8 * data_fixed_array,
9084  int data_fixed_length,
9085  const int * sizes_fixed_array,
9086  int start,
9087  int sizes_fixed_length);
9088 
9089 /// @brief Set 16-bit integer array attribute data.
9090 ///
9091 /// @ingroup GeometrySetters Attributes
9092 ///
9093 /// @param[in] session
9094 /// The session of Houdini you are interacting with.
9095 /// See @ref HAPI_Sessions for more on sessions.
9096 /// Pass NULL to just use the default in-process session.
9097 /// <!-- default NULL -->
9098 ///
9099 /// @param[in] node_id
9100 /// The SOP node id.
9101 ///
9102 /// @param[in] part_id
9103 /// Currently not used. Just pass 0.
9104 ///
9105 /// @param[in] name
9106 /// Attribute name.
9107 /// <!-- string -->
9108 ///
9109 /// @param[in] attr_info
9110 /// ::HAPI_AttributeInfo that contains the description for the
9111 /// attribute that is being set.
9112 ///
9113 /// @param[in] data_fixed_array
9114 /// An array containing the HAPI_Int16 values of the attribute.
9115 /// <!-- sizeparm data_fixed_length -->
9116 ///
9117 /// @param[in] data_fixed_length
9118 /// The total size of the data array. The size can be no greater
9119 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9120 /// of the attribute.
9121 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9122 ///
9123 /// @param[in] sizes_fixed_array
9124 /// An array of integers that contains the sizes of each
9125 /// attribute array. This is required because the attribute
9126 /// array for each geometry component can be of variable size.
9127 /// <!-- sizeparm sizes_fixed_length -->
9128 ///
9129 /// @param[in] start
9130 /// First index of range. Must be at least 0 and at most
9131 /// ::HAPI_AttributeInfo::count - 1.
9132 /// <!-- default 0 -->
9133 ///
9134 /// @param[in] sizes_fixed_length
9135 /// Must be at least 0 and at most
9136 /// ::HAPI_AttributeInfo::count - @p start.
9137 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9139  HAPI_NodeId node_id,
9140  HAPI_PartId part_id,
9141  const char * name,
9142  const HAPI_AttributeInfo * attr_info,
9143  const HAPI_Int16 * data_fixed_array,
9144  int data_fixed_length,
9145  const int * sizes_fixed_array,
9146  int start,
9147  int sizes_fixed_length );
9148 
9149 /// @brief Set 64-bit integer array attribute data.
9150 ///
9151 /// @ingroup GeometrySetters Attributes
9152 ///
9153 /// @param[in] session
9154 /// The session of Houdini you are interacting with.
9155 /// See @ref HAPI_Sessions for more on sessions.
9156 /// Pass NULL to just use the default in-process session.
9157 /// <!-- default NULL -->
9158 ///
9159 /// @param[in] node_id
9160 /// The SOP node id.
9161 ///
9162 /// @param[in] part_id
9163 /// Currently not used. Just pass 0.
9164 ///
9165 /// @param[in] name
9166 /// Attribute name.
9167 /// <!-- string -->
9168 ///
9169 /// @param[in] attr_info
9170 /// ::HAPI_AttributeInfo that contains the description for the
9171 /// attribute that is being set.
9172 ///
9173 /// @param[in] data_fixed_array
9174 /// An array containing the HAPI_Int64 values of the attribute.
9175 /// <!-- sizeparm data_fixed_length -->
9176 ///
9177 /// @param[in] data_fixed_length
9178 /// The total size of the data array. The size can be no greater
9179 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9180 /// of the attribute.
9181 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9182 ///
9183 /// @param[in] sizes_fixed_array
9184 /// An array of integers that contains the sizes of each
9185 /// attribute array. This is required because the attribute
9186 /// array for each geometry component can be of variable size.
9187 /// <!-- sizeparm sizes_fixed_length -->
9188 ///
9189 /// @param[in] start
9190 /// First index of range. Must be at least 0 and at most
9191 /// ::HAPI_AttributeInfo::count - 1.
9192 /// <!-- default 0 -->
9193 ///
9194 /// @param[in] sizes_fixed_length
9195 /// Must be at least 0 and at most
9196 /// ::HAPI_AttributeInfo::count - @p start.
9197 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9199  HAPI_NodeId node_id,
9200  HAPI_PartId part_id,
9201  const char * name,
9202  const HAPI_AttributeInfo * attr_info,
9203  const HAPI_Int64 * data_fixed_array,
9204  int data_fixed_length,
9205  const int * sizes_fixed_array,
9206  int start,
9207  int sizes_fixed_length );
9208 
9209 /// @brief Set float array attribute data.
9210 ///
9211 /// @ingroup GeometrySetters Attributes
9212 ///
9213 /// @param[in] session
9214 /// The session of Houdini you are interacting with.
9215 /// See @ref HAPI_Sessions for more on sessions.
9216 /// Pass NULL to just use the default in-process session.
9217 /// <!-- default NULL -->
9218 ///
9219 /// @param[in] node_id
9220 /// The SOP node id.
9221 ///
9222 /// @param[in] part_id
9223 /// Currently not used. Just pass 0.
9224 ///
9225 /// @param[in] name
9226 /// Attribute name.
9227 /// <!-- string -->
9228 ///
9229 /// @param[in] attr_info
9230 /// ::HAPI_AttributeInfo that contains the description for the
9231 /// attribute that is being set.
9232 ///
9233 /// @param[in] data_fixed_array
9234 /// An array containing the float values of the attribute.
9235 /// <!-- sizeparm data_fixed_length -->
9236 ///
9237 /// @param[in] data_fixed_length
9238 /// The total size of the data array. The size can be no greater
9239 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9240 /// of the attribute.
9241 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9242 ///
9243 /// @param[in] sizes_fixed_array
9244 /// An array of integers that contains the sizes of each
9245 /// attribute array. This is required because the attribute
9246 /// array for each geometry component can be of variable size.
9247 /// <!-- sizeparm sizes_fixed_length -->
9248 ///
9249 /// @param[in] start
9250 /// First index of range. Must be at least 0 and at most
9251 /// ::HAPI_AttributeInfo::count - 1.
9252 /// <!-- default 0 -->
9253 ///
9254 /// @param[in] sizes_fixed_length
9255 /// Must be at least 0 and at most
9256 /// ::HAPI_AttributeInfo::count - @p start.
9257 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9259  HAPI_NodeId node_id,
9260  HAPI_PartId part_id,
9261  const char * name,
9262  const HAPI_AttributeInfo * attr_info,
9263  const float * data_fixed_array,
9264  int data_fixed_length,
9265  const int * sizes_fixed_array,
9266  int start,
9267  int sizes_fixed_length );
9268 
9269 /// @brief Set 64-bit float array attribute data.
9270 ///
9271 /// @ingroup GeometrySetters Attributes
9272 ///
9273 /// @param[in] session
9274 /// The session of Houdini you are interacting with.
9275 /// See @ref HAPI_Sessions for more on sessions.
9276 /// Pass NULL to just use the default in-process session.
9277 /// <!-- default NULL -->
9278 ///
9279 /// @param[in] node_id
9280 /// The SOP node id.
9281 ///
9282 /// @param[in] part_id
9283 /// Currently not used. Just pass 0.
9284 ///
9285 /// @param[in] name
9286 /// Attribute name.
9287 /// <!-- string -->
9288 ///
9289 /// @param[in] attr_info
9290 /// ::HAPI_AttributeInfo that contains the description for the
9291 /// attribute that is being set.
9292 ///
9293 /// @param[in] data_fixed_array
9294 /// An array containing the double values of the attribute.
9295 /// <!-- sizeparm data_fixed_length -->
9296 ///
9297 /// @param[in] data_fixed_length
9298 /// The total size of the data array. The size can be no greater
9299 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9300 /// of the attribute.
9301 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9302 ///
9303 /// @param[in] sizes_fixed_array
9304 /// An array of integers that contains the sizes of each
9305 /// attribute array. This is required because the attribute
9306 /// array for each geometry component can be of variable size.
9307 /// <!-- sizeparm sizes_fixed_length -->
9308 ///
9309 /// @param[in] start
9310 /// First index of range. Must be at least 0 and at most
9311 /// ::HAPI_AttributeInfo::count - 1.
9312 /// <!-- default 0 -->
9313 ///
9314 /// @param[in] sizes_fixed_length
9315 /// Must be at least 0 and at most
9316 /// ::HAPI_AttributeInfo::count - @p start.
9317 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9319  HAPI_NodeId node_id,
9320  HAPI_PartId part_id,
9321  const char * name,
9322  const HAPI_AttributeInfo * attr_info,
9323  const double * data_fixed_array,
9324  int data_fixed_length,
9325  const int * sizes_fixed_array,
9326  int start,
9327  int sizes_fixed_length );
9328 
9329 /// @brief Set string array attribute data.
9330 ///
9331 /// @ingroup GeometrySetters Attributes
9332 ///
9333 /// @param[in] session
9334 /// The session of Houdini you are interacting with.
9335 /// See @ref HAPI_Sessions for more on sessions.
9336 /// Pass NULL to just use the default in-process session.
9337 /// <!-- default NULL -->
9338 ///
9339 /// @param[in] node_id
9340 /// The SOP node id.
9341 ///
9342 /// @param[in] part_id
9343 /// Currently not used. Just pass 0.
9344 ///
9345 /// @param[in] name
9346 /// Attribute name.
9347 /// <!-- string -->
9348 ///
9349 /// @param[in] attr_info
9350 /// ::HAPI_AttributeInfo that contains the description for the
9351 /// attribute that is being set.
9352 ///
9353 /// @param[in] data_fixed_array
9354 /// An array containing the string values of the attribute.
9355 /// <!-- sizeparm data_fixed_length -->
9356 ///
9357 /// @param[in] data_fixed_length
9358 /// The total size of the data array. The size can be no greater
9359 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9360 /// of the attribute.
9361 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9362 ///
9363 /// @param[in] sizes_fixed_array
9364 /// An array of integers that contains the sizes of each
9365 /// attribute array. This is required because the attribute
9366 /// array for each geometry component can be of variable size.
9367 /// <!-- sizeparm sizes_fixed_length -->
9368 ///
9369 /// @param[in] start
9370 /// First index of range. Must be at least 0 and at most
9371 /// ::HAPI_AttributeInfo::count - 1.
9372 /// <!-- default 0 -->
9373 ///
9374 /// @param[in] sizes_fixed_length
9375 /// Must be at least 0 and at most
9376 /// ::HAPI_AttributeInfo::count - @p start.
9377 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9379  HAPI_NodeId node_id,
9380  HAPI_PartId part_id,
9381  const char * name,
9382  const HAPI_AttributeInfo * attr_info,
9383  const char ** data_fixed_array,
9384  int data_fixed_length,
9385  const int * sizes_fixed_array,
9386  int start,
9387  int sizes_fixed_length );
9388 
9389 /// @brief Set attribute dictionary array data. The dictionary data should
9390 /// be provided as JSON-encoded strings.
9391 ///
9392 /// @ingroup GeometrySetters Attributes
9393 ///
9394 /// @param[in] session
9395 /// The session of Houdini you are interacting with.
9396 /// See @ref HAPI_Sessions for more on sessions.
9397 /// Pass NULL to just use the default in-process session.
9398 /// <!-- default NULL -->
9399 ///
9400 /// @param[in] node_id
9401 /// The SOP node id.
9402 ///
9403 /// @param[in] part_id
9404 /// Currently not used. Just pass 0.
9405 ///
9406 /// @param[in] name
9407 /// Attribute name.
9408 /// <!-- string -->
9409 ///
9410 /// @param[in] attr_info
9411 /// ::HAPI_AttributeInfo that contains the description for the
9412 /// attribute that is being set.
9413 ///
9414 /// @param[in] data_fixed_array
9415 /// An array containing the dictionary values of the attribute.
9416 /// <!-- sizeparm data_fixed_length -->
9417 ///
9418 /// @param[in] data_fixed_length
9419 /// The total size of the data array. The size can be no greater
9420 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9421 /// of the attribute.
9422 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9423 ///
9424 /// @param[in] sizes_fixed_array
9425 /// An array of integers that contains the sizes of each
9426 /// attribute array. This is required because the attribute
9427 /// array for each geometry component can be of variable size.
9428 /// <!-- sizeparm sizes_fixed_length -->
9429 ///
9430 /// @param[in] start
9431 /// First index of range. Must be at least 0 and at most
9432 /// ::HAPI_AttributeInfo::count - 1.
9433 /// <!-- default 0 -->
9434 ///
9435 /// @param[in] sizes_fixed_length
9436 /// Must be at least 0 and at most
9437 /// ::HAPI_AttributeInfo::count - @p start.
9438 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9440  HAPI_NodeId node_id,
9441  HAPI_PartId part_id,
9442  const char* name,
9443  const HAPI_AttributeInfo* attr_info,
9444  const char** data_fixed_array,
9445  int data_fixed_length,
9446  const int* sizes_fixed_array,
9447  int start,
9448  int sizes_fixed_length);
9449 
9450 /// @brief Set attribute integer data asynchronously.
9451 ///
9452 /// @ingroup GeometrySetters Attributes
9453 ///
9454 /// @param[in] session
9455 /// The session of Houdini you are interacting with.
9456 /// See @ref HAPI_Sessions for more on sessions.
9457 /// Pass NULL to just use the default in-process session.
9458 /// <!-- default NULL -->
9459 ///
9460 /// @param[in] node_id
9461 /// The SOP node id.
9462 ///
9463 /// @param[in] part_id
9464 /// Currently not used. Just pass 0.
9465 ///
9466 /// @param[in] name
9467 /// Attribute name.
9468 /// <!-- string -->
9469 ///
9470 /// @param[in] attr_info
9471 /// ::HAPI_AttributeInfo used as input for what tuple size.
9472 /// you want. Also contains some sanity checks like
9473 /// data type. Generally should be the same struct
9474 /// returned by ::HAPI_GetAttributeInfo().
9475 ///
9476 /// @param[in] data_array
9477 /// An integer array at least the size of
9478 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9479 /// <!-- sizeparm length -->
9480 ///
9481 /// @param[in] start
9482 /// First index of range. Must be at least 0 and at
9483 /// most ::HAPI_AttributeInfo::count - 1.
9484 /// <!-- default 0 -->
9485 ///
9486 /// @param[in] length
9487 /// Must be at least 0 and at most
9488 /// ::HAPI_AttributeInfo::count - @p start.
9489 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9490 ///
9491 /// @param[out] job_id
9492 /// The id assigned to the job.
9493 ///
9495  HAPI_NodeId node_id,
9496  HAPI_PartId part_id,
9497  const char * name,
9498  const HAPI_AttributeInfo * attr_info,
9499  const int * data_array,
9500  int start, int length,
9501  int * job_id );
9502 
9503 /// @brief Set unsigned 8-bit attribute integer data asynchronously.
9504 ///
9505 /// @ingroup GeometrySetters Attributes
9506 ///
9507 /// @param[in] session
9508 /// The session of Houdini you are interacting with.
9509 /// See @ref HAPI_Sessions for more on sessions.
9510 /// Pass NULL to just use the default in-process session.
9511 /// <!-- default NULL -->
9512 ///
9513 /// @param[in] node_id
9514 /// The SOP node id.
9515 ///
9516 /// @param[in] part_id
9517 /// Currently not used. Just pass 0.
9518 ///
9519 /// @param[in] name
9520 /// Attribute name.
9521 /// <!-- string -->
9522 ///
9523 /// @param[in] attr_info
9524 /// ::HAPI_AttributeInfo used as input for what tuple size.
9525 /// you want. Also contains some sanity checks like
9526 /// data type. Generally should be the same struct
9527 /// returned by ::HAPI_GetAttributeInfo().
9528 ///
9529 /// @param[in] data_array
9530 /// An unsigned 8-bit integer array at least the size of
9531 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9532 /// <!-- sizeparm length -->
9533 ///
9534 /// @param[in] start
9535 /// First index of range. Must be at least 0 and at
9536 /// most ::HAPI_AttributeInfo::count - 1.
9537 /// <!-- default 0 -->
9538 ///
9539 /// @param[in] length
9540 /// Must be at least 0 and at most
9541 /// ::HAPI_AttributeInfo::count - @p start.
9542 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9543 ///
9544 /// @param[out] job_id
9545 /// The id assigned to the job.
9546 ///
9548  HAPI_NodeId node_id,
9549  HAPI_PartId part_id,
9550  const char * name,
9551  const HAPI_AttributeInfo * attr_info,
9552  const HAPI_UInt8 * data_array,
9553  int start, int length,
9554  int * job_id );
9555 
9556 /// @brief Set 8-bit attribute integer data asynchronously.
9557 ///
9558 /// @ingroup GeometrySetters Attributes
9559 ///
9560 /// @param[in] session
9561 /// The session of Houdini you are interacting with.
9562 /// See @ref HAPI_Sessions for more on sessions.
9563 /// Pass NULL to just use the default in-process session.
9564 /// <!-- default NULL -->
9565 ///
9566 /// @param[in] node_id
9567 /// The SOP node id.
9568 ///
9569 /// @param[in] part_id
9570 /// Currently not used. Just pass 0.
9571 ///
9572 /// @param[in] name
9573 /// Attribute name.
9574 /// <!-- string -->
9575 ///
9576 /// @param[in] attr_info
9577 /// ::HAPI_AttributeInfo used as input for what tuple size.
9578 /// you want. Also contains some sanity checks like
9579 /// data type. Generally should be the same struct
9580 /// returned by ::HAPI_GetAttributeInfo().
9581 ///
9582 /// @param[in] data_array
9583 /// An 8-bit integer array at least the size of
9584 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9585 /// <!-- sizeparm length -->
9586 ///
9587 /// @param[in] start
9588 /// First index of range. Must be at least 0 and at
9589 /// most ::HAPI_AttributeInfo::count - 1.
9590 /// <!-- default 0 -->
9591 ///
9592 /// @param[in] length
9593 /// Must be at least 0 and at most
9594 /// ::HAPI_AttributeInfo::count - @p start.
9595 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9596 ///
9597 /// @param[out] job_id
9598 /// The id assigned to the job.
9599 ///
9601  HAPI_NodeId node_id,
9602  HAPI_PartId part_id,
9603  const char * name,
9604  const HAPI_AttributeInfo * attr_info,
9605  const HAPI_Int8 * data_array,
9606  int start, int length,
9607  int * job_id );
9608 
9609 /// @brief Set 16-bit attribute integer data asynchronously.
9610 ///
9611 /// @ingroup GeometrySetters Attributes
9612 ///
9613 /// @param[in] session
9614 /// The session of Houdini you are interacting with.
9615 /// See @ref HAPI_Sessions for more on sessions.
9616 /// Pass NULL to just use the default in-process session.
9617 /// <!-- default NULL -->
9618 ///
9619 /// @param[in] node_id
9620 /// The SOP node id.
9621 ///
9622 /// @param[in] part_id
9623 /// Currently not used. Just pass 0.
9624 ///
9625 /// @param[in] name
9626 /// Attribute name.
9627 /// <!-- string -->
9628 ///
9629 /// @param[in] attr_info
9630 /// ::HAPI_AttributeInfo used as input for what tuple size.
9631 /// you want. Also contains some sanity checks like
9632 /// data type. Generally should be the same struct
9633 /// returned by ::HAPI_GetAttributeInfo().
9634 ///
9635 /// @param[in] data_array
9636 /// An 16-bit integer array at least the size of
9637 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9638 /// <!-- sizeparm length -->
9639 ///
9640 /// @param[in] start
9641 /// First index of range. Must be at least 0 and at
9642 /// most ::HAPI_AttributeInfo::count - 1.
9643 /// <!-- default 0 -->
9644 ///
9645 /// @param[in] length
9646 /// Must be at least 0 and at most
9647 /// ::HAPI_AttributeInfo::count - @p start.
9648 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9649 ///
9650 /// @param[out] job_id
9651 /// The id assigned to the job.
9652 ///
9654  HAPI_NodeId node_id,
9655  HAPI_PartId part_id,
9656  const char * name,
9657  const HAPI_AttributeInfo * attr_info,
9658  const HAPI_Int16 * data_array,
9659  int start, int length,
9660  int * job_id );
9661 
9662 /// @brief Set 64-bit attribute integer data asynchronously.
9663 ///
9664 /// @ingroup GeometrySetters Attributes
9665 ///
9666 /// @param[in] session
9667 /// The session of Houdini you are interacting with.
9668 /// See @ref HAPI_Sessions for more on sessions.
9669 /// Pass NULL to just use the default in-process session.
9670 /// <!-- default NULL -->
9671 ///
9672 /// @param[in] node_id
9673 /// The SOP node id.
9674 ///
9675 /// @param[in] part_id
9676 /// Currently not used. Just pass 0.
9677 ///
9678 /// @param[in] name
9679 /// Attribute name.
9680 /// <!-- string -->
9681 ///
9682 /// @param[in] attr_info
9683 /// ::HAPI_AttributeInfo used as input for what tuple size.
9684 /// you want. Also contains some sanity checks like
9685 /// data type. Generally should be the same struct
9686 /// returned by ::HAPI_GetAttributeInfo().
9687 ///
9688 /// @param[in] data_array
9689 /// An 64-bit integer array at least the size of
9690 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9691 /// <!-- sizeparm length -->
9692 ///
9693 /// @param[in] start
9694 /// First index of range. Must be at least 0 and at
9695 /// most ::HAPI_AttributeInfo::count - 1.
9696 /// <!-- default 0 -->
9697 ///
9698 /// @param[in] length
9699 /// Must be at least 0 and at most
9700 /// ::HAPI_AttributeInfo::count - @p start.
9701 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9702 ///
9703 /// @param[out] job_id
9704 /// The id assigned to the job.
9705 ///
9707  HAPI_NodeId node_id,
9708  HAPI_PartId part_id,
9709  const char * name,
9710  const HAPI_AttributeInfo * attr_info,
9711  const HAPI_Int64 * data_array,
9712  int start, int length,
9713  int * job_id );
9714 
9715 /// @brief Set attribute float data asynchronously.
9716 ///
9717 /// @ingroup GeometrySetters Attributes
9718 ///
9719 /// @param[in] session
9720 /// The session of Houdini you are interacting with.
9721 /// See @ref HAPI_Sessions for more on sessions.
9722 /// Pass NULL to just use the default in-process session.
9723 /// <!-- default NULL -->
9724 ///
9725 /// @param[in] node_id
9726 /// The SOP node id.
9727 ///
9728 /// @param[in] part_id
9729 /// Currently not used. Just pass 0.
9730 ///
9731 /// @param[in] name
9732 /// Attribute name.
9733 /// <!-- string -->
9734 ///
9735 /// @param[in] attr_info
9736 /// ::HAPI_AttributeInfo used as input for what tuple size.
9737 /// you want. Also contains some sanity checks like
9738 /// data type. Generally should be the same struct
9739 /// returned by ::HAPI_GetAttributeInfo().
9740 ///
9741 /// @param[in] data_array
9742 /// An float array at least the size of
9743 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9744 /// <!-- sizeparm length -->
9745 ///
9746 /// @param[in] start
9747 /// First index of range. Must be at least 0 and at
9748 /// most ::HAPI_AttributeInfo::count - 1.
9749 /// <!-- default 0 -->
9750 ///
9751 /// @param[in] length
9752 /// Must be at least 0 and at most
9753 /// ::HAPI_AttributeInfo::count - @p start.
9754 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9755 ///
9756 /// @param[out] job_id
9757 /// The id assigned to the job.
9758 ///
9760  HAPI_NodeId node_id,
9761  HAPI_PartId part_id,
9762  const char * name,
9763  const HAPI_AttributeInfo * attr_info,
9764  const float * data_array,
9765  int start, int length,
9766  int * job_id );
9767 
9768 /// @brief Set 64-bit attribute float data asynchronously.
9769 ///
9770 /// @ingroup GeometrySetters Attributes
9771 ///
9772 /// @param[in] session
9773 /// The session of Houdini you are interacting with.
9774 /// See @ref HAPI_Sessions for more on sessions.
9775 /// Pass NULL to just use the default in-process session.
9776 /// <!-- default NULL -->
9777 ///
9778 /// @param[in] node_id
9779 /// The SOP node id.
9780 ///
9781 /// @param[in] part_id
9782 /// Currently not used. Just pass 0.
9783 ///
9784 /// @param[in] name
9785 /// Attribute name.
9786 /// <!-- string -->
9787 ///
9788 /// @param[in] attr_info
9789 /// ::HAPI_AttributeInfo used as input for what tuple size.
9790 /// you want. Also contains some sanity checks like
9791 /// data type. Generally should be the same struct
9792 /// returned by ::HAPI_GetAttributeInfo().
9793 ///
9794 /// @param[in] data_array
9795 /// An 64-bit float array at least the size of
9796 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9797 /// <!-- sizeparm length -->
9798 ///
9799 /// @param[in] start
9800 /// First index of range. Must be at least 0 and at
9801 /// most ::HAPI_AttributeInfo::count - 1.
9802 /// <!-- default 0 -->
9803 ///
9804 /// @param[in] length
9805 /// Must be at least 0 and at most
9806 /// ::HAPI_AttributeInfo::count - @p start.
9807 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9808 ///
9809 /// @param[out] job_id
9810 /// The id assigned to the job.
9811 ///
9813  const HAPI_Session * session,
9814  HAPI_NodeId node_id,
9815  HAPI_PartId part_id,
9816  const char * name,
9817  const HAPI_AttributeInfo * attr_info,
9818  const double * data_array,
9819  int start, int length,
9820  int * job_id );
9821 
9822 /// @brief Set attribute string data asynchronously.
9823 ///
9824 /// @ingroup GeometrySetters Attributes
9825 ///
9826 /// @param[in] session
9827 /// The session of Houdini you are interacting with.
9828 /// See @ref HAPI_Sessions for more on sessions.
9829 /// Pass NULL to just use the default in-process session.
9830 /// <!-- default NULL -->
9831 ///
9832 /// @param[in] node_id
9833 /// The SOP node id.
9834 ///
9835 /// @param[in] part_id
9836 /// Currently not used. Just pass 0.
9837 ///
9838 /// @param[in] name
9839 /// Attribute name.
9840 /// <!-- string -->
9841 ///
9842 /// @param[in] attr_info
9843 /// ::HAPI_AttributeInfo used as input for what tuple size
9844 /// you want. Also contains some sanity checks like
9845 /// data type. Generally should be the same struct
9846 /// returned by ::HAPI_GetAttributeInfo().
9847 ///
9848 /// @param[in] data_array
9849 /// An ::HAPI_StringHandle array at least the size of
9850 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9851 /// <!-- sizeparm length -->
9852 ///
9853 /// @param[in] start
9854 /// First index of range. Must be at least 0 and at
9855 /// most ::HAPI_AttributeInfo::count - 1.
9856 /// <!-- default 0 -->
9857 ///
9858 /// @param[in] length
9859 /// Must be at least 0 and at most
9860 /// ::HAPI_AttributeInfo::count - @p start.
9861 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9862 ///
9863 /// @param[out] job_id
9864 /// The id assigned to the job.
9865 ///
9867  const HAPI_Session * session,
9868  HAPI_NodeId node_id,
9869  HAPI_PartId part_id,
9870  const char * name,
9871  const HAPI_AttributeInfo * attr_info,
9872  const char ** data_array,
9873  int start, int length,
9874  int * job_id );
9875 
9876 /// @brief Set attribute string data by index asynchronously.
9877 ///
9878 /// @ingroup GeometrySetters Attributes
9879 ///
9880 /// @param[in] session
9881 /// The session of Houdini you are interacting with.
9882 /// See @ref HAPI_Sessions for more on sessions.
9883 /// Pass NULL to just use the default in-process session.
9884 /// <!-- default NULL -->
9885 ///
9886 /// @param[in] node_id
9887 /// The SOP node id.
9888 ///
9889 /// @param[in] part_id
9890 /// Currently not used. Just pass 0.
9891 ///
9892 /// @param[in] name
9893 /// Attribute name.
9894 /// <!-- string -->
9895 ///
9896 /// @param[in] attr_info
9897 /// ::HAPI_AttributeInfo used as input for what tuple size.
9898 /// you want. Also contains some sanity checks like
9899 /// data type. Generally should be the same struct
9900 /// returned by ::HAPI_GetAttributeInfo().
9901 ///
9902 /// @param[in] string_array
9903 /// An array of strings at least the size of
9904 /// <tt>string_count/tt>.
9905 /// <!-- sizeparm string_count -->
9906 ///
9907 /// @param[in] string_count
9908 /// Number of strings that are indexed.
9909 ///
9910 /// @param[in] indices_array
9911 /// integer array at least the size of
9912 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
9913 /// entry indexes string_array.
9914 /// <!-- sizeparm indices_length -->
9915 ///
9916 /// @param[in] indices_start
9917 /// First index of range. Must be at least 0 and at
9918 /// most ::HAPI_AttributeInfo::count - 1.
9919 /// <!-- default 0 -->
9920 ///
9921 /// @param[in] indices_length
9922 /// Must be at least 0 and at most
9923 /// ::HAPI_AttributeInfo::count - @p start.
9924 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9925 ///
9926 /// @param[out] job_id
9927 /// The id assigned to the job.
9928 ///
9930  const HAPI_Session * session,
9931  HAPI_NodeId node_id,
9932  HAPI_PartId part_id,
9933  const char * name,
9934  const HAPI_AttributeInfo * attr_info,
9935  const char ** string_array,
9936  int string_count,
9937  const int * indices_array,
9938  int indices_start,
9939  int indices_length,
9940  int * job_id );
9941 
9942 /// @brief Set multiple attribute string data to the same unique value
9943 /// asynchronously.
9944 ///
9945 /// @ingroup GeometrySetters Attributes
9946 ///
9947 /// @param[in] session
9948 /// The session of Houdini you are interacting with.
9949 /// See @ref HAPI_Sessions for more on sessions.
9950 /// Pass NULL to just use the default in-process session.
9951 /// <!-- default NULL -->
9952 ///
9953 /// @param[in] node_id
9954 /// The SOP node id.
9955 ///
9956 /// @param[in] part_id
9957 /// Currently not used. Just pass 0.
9958 ///
9959 /// @param[in] name
9960 /// Attribute name.
9961 /// <!-- string -->
9962 ///
9963 /// @param[in] attr_info
9964 /// ::HAPI_AttributeInfo used as input for what tuple size.
9965 /// you want. Also contains some sanity checks like
9966 /// data type. Generally should be the same struct
9967 /// returned by ::HAPI_GetAttributeInfo().
9968 ///
9969 /// @param[in] data_array
9970 /// A string
9971 /// <!-- string -->
9972 ///
9973 /// @param[in] data_length
9974 /// Must be the length of string data.
9975 ///
9976 /// @param[in] start_index
9977 /// Must be at least 0 and at most
9978 /// ::HAPI_AttributeInfo::count - @p start.
9979 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9980 ///
9981 /// @param[in] num_indices
9982 /// Must be at least 0 and at most
9983 /// ::HAPI_AttributeInfo::count - @p start.
9984 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9985 ///
9986 /// @param[out] job_id
9987 /// The id assigned to the job.
9988 ///
9990  const HAPI_Session * session,
9991  HAPI_NodeId node_id,
9992  HAPI_PartId part_id,
9993  const char * name,
9994  const HAPI_AttributeInfo * attr_info,
9995  const char * data_array,
9996  int data_length,
9997  int start_index,
9998  int num_indices,
9999  int * job_id );
10000 
10001 /// @brief Set multiple attribute int data to the same unique value
10002 /// asynchronously.
10003 ///
10004 /// @ingroup GeometrySetters Attributes
10005 ///
10006 /// @param[in] session
10007 /// The session of Houdini you are interacting with.
10008 /// See @ref HAPI_Sessions for more on sessions.
10009 /// Pass NULL to just use the default in-process session.
10010 /// <!-- default NULL -->
10011 ///
10012 /// @param[in] node_id
10013 /// The SOP node id.
10014 ///
10015 /// @param[in] part_id
10016 /// Currently not used. Just pass 0.
10017 ///
10018 /// @param[in] name
10019 /// Attribute name.
10020 /// <!-- string -->
10021 ///
10022 /// @param[in] attr_info
10023 /// ::HAPI_AttributeInfo used as input for what tuple size.
10024 /// you want. Also contains some sanity checks like
10025 /// data type. Generally should be the same struct
10026 /// returned by ::HAPI_GetAttributeInfo().
10027 ///
10028 /// @param[in] data_array
10029 /// A integer array at least the size of
10030 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10031 /// <!-- sizeparm data_length -->
10032 ///
10033 /// @param[in] data_length
10034 /// An integer of at least the size of
10035 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10036 ///
10037 /// @param[in] start_index
10038 /// First index of range. Must be at least 0 and at
10039 /// most ::HAPI_AttributeInfo::count - 1.
10040 /// <!-- default 0 -->
10041 ///
10042 /// @param[in] num_indices
10043 /// Must be at least 0 and at most
10044 /// ::HAPI_AttributeInfo::count - @p start_index.
10045 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10046 ///
10047 /// @param[out] job_id
10048 /// The id assigned to the job.
10049 ///
10051  const HAPI_Session * session,
10052  HAPI_NodeId node_id,
10053  HAPI_PartId part_id,
10054  const char * name,
10055  const HAPI_AttributeInfo * attr_info,
10056  const int * data_array,
10057  int data_length,
10058  int start_index,
10059  int num_indices,
10060  int * job_id );
10061 
10062 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique
10063 /// value asynchronously.
10064 ///
10065 /// @ingroup GeometrySetters Attributes
10066 ///
10067 /// @param[in] session
10068 /// The session of Houdini you are interacting with.
10069 /// See @ref HAPI_Sessions for more on sessions.
10070 /// Pass NULL to just use the default in-process session.
10071 /// <!-- default NULL -->
10072 ///
10073 /// @param[in] node_id
10074 /// The SOP node id.
10075 ///
10076 /// @param[in] part_id
10077 /// Currently not used. Just pass 0.
10078 ///
10079 /// @param[in] name
10080 /// Attribute name.
10081 /// <!-- string -->
10082 ///
10083 /// @param[in] attr_info
10084 /// ::HAPI_AttributeInfo used as input for what tuple size.
10085 /// you want. Also contains some sanity checks like
10086 /// data type. Generally should be the same struct
10087 /// returned by ::HAPI_GetAttributeInfo().
10088 ///
10089 /// @param[in] data_array
10090 /// A integer array at least the size of
10091 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10092 /// <!-- sizeparm data_length -->
10093 ///
10094 /// @param[in] data_length
10095 /// An integer of at least the size of
10096 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10097 ///
10098 /// @param[in] start_index
10099 /// First index of range. Must be at least 0 and at
10100 /// most ::HAPI_AttributeInfo::count - 1.
10101 /// <!-- default 0 -->
10102 ///
10103 /// @param[in] num_indices
10104 /// Must be at least 0 and at most
10105 /// ::HAPI_AttributeInfo::count - @p start_index.
10106 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10107 ///
10108 /// @param[out] job_id
10109 /// The id assigned to the job.
10110 ///
10112  const HAPI_Session * session,
10113  HAPI_NodeId node_id,
10114  HAPI_PartId part_id,
10115  const char * name,
10116  const HAPI_AttributeInfo * attr_info,
10117  const HAPI_UInt8 * data_array,
10118  int data_length,
10119  int start_index,
10120  int num_indices,
10121  int * job_id );
10122 
10123 /// @brief Set multiple attribute 8-bit int data to the same unique value
10124 /// asynchronously.
10125 ///
10126 /// @ingroup GeometrySetters Attributes
10127 ///
10128 /// @param[in] session
10129 /// The session of Houdini you are interacting with.
10130 /// See @ref HAPI_Sessions for more on sessions.
10131 /// Pass NULL to just use the default in-process session.
10132 /// <!-- default NULL -->
10133 ///
10134 /// @param[in] node_id
10135 /// The SOP node id.
10136 ///
10137 /// @param[in] part_id
10138 /// Currently not used. Just pass 0.
10139 ///
10140 /// @param[in] name
10141 /// Attribute name.
10142 /// <!-- string -->
10143 ///
10144 /// @param[in] attr_info
10145 /// ::HAPI_AttributeInfo used as input for what tuple size.
10146 /// you want. Also contains some sanity checks like
10147 /// data type. Generally should be the same struct
10148 /// returned by ::HAPI_GetAttributeInfo().
10149 ///
10150 /// @param[in] data_array
10151 /// A integer array at least the size of
10152 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10153 /// <!-- sizeparm data_length -->
10154 ///
10155 /// @param[in] data_length
10156 /// An integer of at least the size of
10157 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10158 ///
10159 /// @param[in] start_index
10160 /// First index of range. Must be at least 0 and at
10161 /// most ::HAPI_AttributeInfo::count - 1.
10162 /// <!-- default 0 -->
10163 ///
10164 /// @param[in] num_indices
10165 /// Must be at least 0 and at most
10166 /// ::HAPI_AttributeInfo::count - @p start_index.
10167 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10168 ///
10169 /// @param[out] job_id
10170 /// The id assigned to the job.
10171 ///
10173  const HAPI_Session * session,
10174  HAPI_NodeId node_id,
10175  HAPI_PartId part_id,
10176  const char * name,
10177  const HAPI_AttributeInfo * attr_info,
10178  const HAPI_Int8* data_array,
10179  int data_length,
10180  int start_index,
10181  int num_indices,
10182  int * job_id );
10183 
10184 /// @brief Set multiple attribute 16-bit int data to the same unique value
10185 /// asynchronously.
10186 ///
10187 /// @ingroup GeometrySetters Attributes
10188 ///
10189 /// @param[in] session
10190 /// The session of Houdini you are interacting with.
10191 /// See @ref HAPI_Sessions for more on sessions.
10192 /// Pass NULL to just use the default in-process session.
10193 /// <!-- default NULL -->
10194 ///
10195 /// @param[in] node_id
10196 /// The SOP node id.
10197 ///
10198 /// @param[in] part_id
10199 /// Currently not used. Just pass 0.
10200 ///
10201 /// @param[in] name
10202 /// Attribute name.
10203 /// <!-- string -->
10204 ///
10205 /// @param[in] attr_info
10206 /// ::HAPI_AttributeInfo used as input for what tuple size.
10207 /// you want. Also contains some sanity checks like
10208 /// data type. Generally should be the same struct
10209 /// returned by ::HAPI_GetAttributeInfo().
10210 ///
10211 /// @param[in] data_array
10212 /// A integer array at least the size of
10213 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10214 /// <!-- sizeparm data_length -->
10215 ///
10216 /// @param[in] data_length
10217 /// An integer of at least the size of
10218 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10219 ///
10220 /// @param[in] start_index
10221 /// First index of range. Must be at least 0 and at
10222 /// most ::HAPI_AttributeInfo::count - 1.
10223 /// <!-- default 0 -->
10224 ///
10225 /// @param[in] num_indices
10226 /// Must be at least 0 and at most
10227 /// ::HAPI_AttributeInfo::count - @p start_index.
10228 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10229 ///
10230 /// @param[out] job_id
10231 /// The id assigned to the job.
10232 ///
10234  const HAPI_Session* session,
10235  HAPI_NodeId node_id,
10236  HAPI_PartId part_id,
10237  const char* name,
10238  const HAPI_AttributeInfo* attr_info,
10239  const HAPI_Int16* data_array,
10240  int data_length,
10241  int start_index,
10242  int num_indices,
10243  int * job_id );
10244 
10245 /// @brief Set multiple attribute 64-bit int data to the same unique value
10246 /// asynchronously.
10247 ///
10248 /// @ingroup GeometrySetters Attributes
10249 ///
10250 /// @param[in] session
10251 /// The session of Houdini you are interacting with.
10252 /// See @ref HAPI_Sessions for more on sessions.
10253 /// Pass NULL to just use the default in-process session.
10254 /// <!-- default NULL -->
10255 ///
10256 /// @param[in] node_id
10257 /// The SOP node id.
10258 ///
10259 /// @param[in] part_id
10260 /// Currently not used. Just pass 0.
10261 ///
10262 /// @param[in] name
10263 /// Attribute name.
10264 /// <!-- string -->
10265 ///
10266 /// @param[in] attr_info
10267 /// ::HAPI_AttributeInfo used as input for what tuple size.
10268 /// you want. Also contains some sanity checks like
10269 /// data type. Generally should be the same struct
10270 /// returned by ::HAPI_GetAttributeInfo().
10271 ///
10272 /// @param[in] data_array
10273 /// A integer array at least the size of
10274 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10275 /// <!-- sizeparm data_length -->
10276 ///
10277 /// @param[in] data_length
10278 /// An integer of at least the size of
10279 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10280 ///
10281 /// @param[in] start_index
10282 /// First index of range. Must be at least 0 and at
10283 /// most ::HAPI_AttributeInfo::count - 1.
10284 /// <!-- default 0 -->
10285 ///
10286 /// @param[in] num_indices
10287 /// Must be at least 0 and at most
10288 /// ::HAPI_AttributeInfo::count - @p start_index.
10289 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10290 ///
10291 /// @param[out] job_id
10292 /// The id assigned to the job.
10293 ///
10295  const HAPI_Session* session,
10296  HAPI_NodeId node_id,
10297  HAPI_PartId part_id,
10298  const char* name,
10299  const HAPI_AttributeInfo* attr_info,
10300  const HAPI_Int64* data_array,
10301  int data_length,
10302  int start_index,
10303  int num_indices,
10304  int * job_id );
10305 
10306 /// @brief Set multiple attribute float data to the same unique value
10307 /// asynchronously.
10308 ///
10309 /// @ingroup GeometrySetters Attributes
10310 ///
10311 /// @param[in] session
10312 /// The session of Houdini you are interacting with.
10313 /// See @ref HAPI_Sessions for more on sessions.
10314 /// Pass NULL to just use the default in-process session.
10315 /// <!-- default NULL -->
10316 ///
10317 /// @param[in] node_id
10318 /// The SOP node id.
10319 ///
10320 /// @param[in] part_id
10321 /// Currently not used. Just pass 0.
10322 ///
10323 /// @param[in] name
10324 /// Attribute name.
10325 /// <!-- string -->
10326 ///
10327 /// @param[in] attr_info
10328 /// ::HAPI_AttributeInfo used as input for what tuple size.
10329 /// you want. Also contains some sanity checks like
10330 /// data type. Generally should be the same struct
10331 /// returned by ::HAPI_GetAttributeInfo().
10332 ///
10333 /// @param[in] data_array
10334 /// A floating point array at least the size of
10335 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10336 /// <!-- sizeparm data_length -->
10337 ///
10338 /// @param[in] data_length
10339 /// An integer of at least the size of
10340 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10341 ///
10342 /// @param[in] start_index
10343 /// First index of range. Must be at least 0 and at
10344 /// most ::HAPI_AttributeInfo::count - 1.
10345 /// <!-- default 0 -->
10346 ///
10347 /// @param[in] num_indices
10348 /// Must be at least 0 and at most
10349 /// ::HAPI_AttributeInfo::count - @p start_index.
10350 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10351 ///
10352 /// @param[out] job_id
10353 /// The id assigned to the job.
10354 ///
10356  const HAPI_Session* session,
10357  HAPI_NodeId node_id,
10358  HAPI_PartId part_id,
10359  const char* name,
10360  const HAPI_AttributeInfo* attr_info,
10361  const float* data_array,
10362  int data_length,
10363  int start_index,
10364  int num_indices,
10365  int * job_id );
10366 
10367 /// @brief Set multiple attribute 64-bit float data to the same unique
10368 /// asynchronously.
10369 ///
10370 /// @ingroup GeometrySetters Attributes
10371 ///
10372 /// @param[in] session
10373 /// The session of Houdini you are interacting with.
10374 /// See @ref HAPI_Sessions for more on sessions.
10375 /// Pass NULL to just use the default in-process session.
10376 /// <!-- default NULL -->
10377 ///
10378 /// @param[in] node_id
10379 /// The SOP node id.
10380 ///
10381 /// @param[in] part_id
10382 /// Currently not used. Just pass 0.
10383 ///
10384 /// @param[in] name
10385 /// Attribute name.
10386 /// <!-- string -->
10387 ///
10388 /// @param[in] attr_info
10389 /// ::HAPI_AttributeInfo used as input for what tuple size.
10390 /// you want. Also contains some sanity checks like
10391 /// data type. Generally should be the same struct
10392 /// returned by ::HAPI_GetAttributeInfo().
10393 ///
10394 /// @param[in] data_array
10395 /// A floating point array at least the size of
10396 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10397 /// <!-- sizeparm data_length -->
10398 ///
10399 /// @param[in] data_length
10400 /// An integer of at least the size of
10401 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10402 ///
10403 /// @param[in] start_index
10404 /// First index of range. Must be at least 0 and at
10405 /// most ::HAPI_AttributeInfo::count - 1.
10406 /// <!-- default 0 -->
10407 ///
10408 /// @param[in] num_indices
10409 /// Must be at least 0 and at most
10410 /// ::HAPI_AttributeInfo::count - @p start_index.
10411 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10412 ///
10413 /// @param[out] job_id
10414 /// The id assigned to the job.
10415 ///
10417  const HAPI_Session* session,
10418  HAPI_NodeId node_id,
10419  HAPI_PartId part_id,
10420  const char* name,
10421  const HAPI_AttributeInfo* attr_info,
10422  const double* data_array,
10423  int data_length,
10424  int start_index,
10425  int num_indices,
10426  int * job_id );
10427 
10428 /// @brief Set attribute dictionary data asynchronously. The dictionary data
10429 /// should be provided as JSON-encoded strings.
10430 ///
10431 /// @ingroup GeometrySetters Attributes
10432 ///
10433 /// @param[in] session
10434 /// The session of Houdini you are interacting with.
10435 /// See @ref HAPI_Sessions for more on sessions.
10436 /// Pass NULL to just use the default in-process session.
10437 /// <!-- default NULL -->
10438 ///
10439 /// @param[in] node_id
10440 /// The SOP node id.
10441 ///
10442 /// @param[in] part_id
10443 /// Currently not used. Just pass 0.
10444 ///
10445 /// @param[in] name
10446 /// Attribute name.
10447 /// <!-- string -->
10448 ///
10449 /// @param[in] attr_info
10450 /// ::HAPI_AttributeInfo used as input for what tuple size
10451 /// you want. Also contains some sanity checks like
10452 /// data type. Generally should be the same struct
10453 /// returned by ::HAPI_GetAttributeInfo().
10454 ///
10455 /// @param[in] data_array
10456 /// An ::HAPI_StringHandle array at least the size of
10457 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
10458 /// <!-- sizeparm length -->
10459 ///
10460 /// @param[in] start
10461 /// First index of range. Must be at least 0 and at
10462 /// most ::HAPI_AttributeInfo::count - 1.
10463 /// <!-- default 0 -->
10464 ///
10465 /// @param[in] length
10466 /// Must be at least 0 and at most
10467 /// ::HAPI_AttributeInfo::count - @p start.
10468 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10469 ///
10470 /// @param[out] job_id
10471 /// The id assigned to the job.
10472 ///
10474  const HAPI_Session* session,
10475  HAPI_NodeId node_id,
10476  HAPI_PartId part_id,
10477  const char* name,
10478  const HAPI_AttributeInfo* attr_info,
10479  const char** data_array,
10480  int start, int length,
10481  int * job_id );
10482 
10483 /// @brief Set integer array attribute data asynchronously.
10484 ///
10485 /// @ingroup GeometrySetters Attributes
10486 ///
10487 /// @param[in] session
10488 /// The session of Houdini you are interacting with.
10489 /// See @ref HAPI_Sessions for more on sessions.
10490 /// Pass NULL to just use the default in-process session.
10491 /// <!-- default NULL -->
10492 ///
10493 /// @param[in] node_id
10494 /// The SOP node id.
10495 ///
10496 /// @param[in] part_id
10497 /// Currently not used. Just pass 0.
10498 ///
10499 /// @param[in] name
10500 /// Attribute name.
10501 /// <!-- string -->
10502 ///
10503 /// @param[in] attr_info
10504 /// ::HAPI_AttributeInfo that contains the description for the
10505 /// attribute that is being set.
10506 ///
10507 /// @param[in] data_fixed_array
10508 /// An array containing the int values of the attribute.
10509 /// <!-- sizeparm data_fixed_length -->
10510 ///
10511 /// @param[in] data_fixed_length
10512 /// The total size of the data array. The size can be no greater
10513 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10514 /// of the attribute.
10515 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10516 ///
10517 /// @param[in] sizes_fixed_array
10518 /// An array of integers that contains the sizes of each
10519 /// attribute array. This is required because the attribute
10520 /// array for each geometry component can be of variable size.
10521 /// <!-- sizeparm sizes_fixed_length -->
10522 ///
10523 /// @param[in] start
10524 /// First index of range. Must be at least 0 and at most
10525 /// ::HAPI_AttributeInfo::count - 1.
10526 /// <!-- default 0 -->
10527 ///
10528 /// @param[in] sizes_fixed_length
10529 /// Must be at least 0 and at most
10530 /// ::HAPI_AttributeInfo::count - @p start.
10531 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10532 ///
10533 /// @param[out] job_id
10534 /// The id assigned to the job.
10535 ///
10537  const HAPI_Session * session,
10538  HAPI_NodeId node_id,
10539  HAPI_PartId part_id,
10540  const char * name,
10541  const HAPI_AttributeInfo * attr_info,
10542  const int * data_fixed_array,
10543  int data_fixed_length,
10544  const int * sizes_fixed_array,
10545  int start,
10546  int sizes_fixed_length,
10547  int * job_id );
10548 
10549 /// @brief Set unsigned 8-bit integer array attribute data asynchronously.
10550 ///
10551 /// @ingroup GeometrySetters Attributes
10552 ///
10553 /// @param[in] session
10554 /// The session of Houdini you are interacting with.
10555 /// See @ref HAPI_Sessions for more on sessions.
10556 /// Pass NULL to just use the default in-process session.
10557 /// <!-- default NULL -->
10558 ///
10559 /// @param[in] node_id
10560 /// The SOP node id.
10561 ///
10562 /// @param[in] part_id
10563 /// Currently not used. Just pass 0.
10564 ///
10565 /// @param[in] name
10566 /// Attribute name.
10567 /// <!-- string -->
10568 ///
10569 /// @param[in] attr_info
10570 /// ::HAPI_AttributeInfo that contains the description for the
10571 /// attribute that is being set.
10572 ///
10573 /// @param[in] data_fixed_array
10574 /// An array containing the HAPI_UInt8 values of the attribute.
10575 /// <!-- sizeparm data_fixed_length -->
10576 ///
10577 /// @param[in] data_fixed_length
10578 /// The total size of the data array. The size can be no greater
10579 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10580 /// of the attribute.
10581 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10582 ///
10583 /// @param[in] sizes_fixed_array
10584 /// An array of integers that contains the sizes of each
10585 /// attribute array. This is required because the attribute
10586 /// array for each geometry component can be of variable size.
10587 /// <!-- sizeparm sizes_fixed_length -->
10588 ///
10589 /// @param[in] start
10590 /// First index of range. Must be at least 0 and at most
10591 /// ::HAPI_AttributeInfo::count - 1.
10592 /// <!-- default 0 -->
10593 ///
10594 /// @param[in] sizes_fixed_length
10595 /// Must be at least 0 and at most
10596 /// ::HAPI_AttributeInfo::count - @p start.
10597 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10598 ///
10599 /// @param[out] job_id
10600 /// The id assigned to the job.
10601 ///
10603  const HAPI_Session * session,
10604  HAPI_NodeId node_id,
10605  HAPI_PartId part_id,
10606  const char * name,
10607  const HAPI_AttributeInfo * attr_info,
10608  const HAPI_UInt8 * data_fixed_array,
10609  int data_fixed_length,
10610  const int * sizes_fixed_array,
10611  int start,
10612  int sizes_fixed_length,
10613  int * job_id );
10614 
10615 /// @brief Set 8-bit integer array attribute data asynchronously.
10616 ///
10617 /// @ingroup GeometrySetters Attributes
10618 ///
10619 /// @param[in] session
10620 /// The session of Houdini you are interacting with.
10621 /// See @ref HAPI_Sessions for more on sessions.
10622 /// Pass NULL to just use the default in-process session.
10623 /// <!-- default NULL -->
10624 ///
10625 /// @param[in] node_id
10626 /// The SOP node id.
10627 ///
10628 /// @param[in] part_id
10629 /// Currently not used. Just pass 0.
10630 ///
10631 /// @param[in] name
10632 /// Attribute name.
10633 /// <!-- string -->
10634 ///
10635 /// @param[in] attr_info
10636 /// ::HAPI_AttributeInfo that contains the description for the
10637 /// attribute that is being set.
10638 ///
10639 /// @param[in] data_fixed_array
10640 /// An array containing the HAPI_Int8 values of the attribute.
10641 /// <!-- sizeparm data_fixed_length -->
10642 ///
10643 /// @param[in] data_fixed_length
10644 /// The total size of the data array. The size can be no greater
10645 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10646 /// of the attribute.
10647 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10648 ///
10649 /// @param[in] sizes_fixed_array
10650 /// An array of integers that contains the sizes of each
10651 /// attribute array. This is required because the attribute
10652 /// array for each geometry component can be of variable size.
10653 /// <!-- sizeparm sizes_fixed_length -->
10654 ///
10655 /// @param[in] start
10656 /// First index of range. Must be at least 0 and at most
10657 /// ::HAPI_AttributeInfo::count - 1.
10658 /// <!-- default 0 -->
10659 ///
10660 /// @param[in] sizes_fixed_length
10661 /// Must be at least 0 and at most
10662 /// ::HAPI_AttributeInfo::count - @p start.
10663 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10664 ///
10665 /// @param[out] job_id
10666 /// The id assigned to the job.
10667 ///
10669  const HAPI_Session * session,
10670  HAPI_NodeId node_id,
10671  HAPI_PartId part_id,
10672  const char * name,
10673  const HAPI_AttributeInfo * attr_info,
10674  const HAPI_Int8 * data_fixed_array,
10675  int data_fixed_length,
10676  const int * sizes_fixed_array,
10677  int start,
10678  int sizes_fixed_length,
10679  int * job_id );
10680 
10681 /// @brief Set 16-bit integer array attribute data asynchronously.
10682 ///
10683 /// @ingroup GeometrySetters Attributes
10684 ///
10685 /// @param[in] session
10686 /// The session of Houdini you are interacting with.
10687 /// See @ref HAPI_Sessions for more on sessions.
10688 /// Pass NULL to just use the default in-process session.
10689 /// <!-- default NULL -->
10690 ///
10691 /// @param[in] node_id
10692 /// The SOP node id.
10693 ///
10694 /// @param[in] part_id
10695 /// Currently not used. Just pass 0.
10696 ///
10697 /// @param[in] name
10698 /// Attribute name.
10699 /// <!-- string -->
10700 ///
10701 /// @param[in] attr_info
10702 /// ::HAPI_AttributeInfo that contains the description for the
10703 /// attribute that is being set.
10704 ///
10705 /// @param[in] data_fixed_array
10706 /// An array containing the HAPI_Int16 values of the attribute.
10707 /// <!-- sizeparm data_fixed_length -->
10708 ///
10709 /// @param[in] data_fixed_length
10710 /// The total size of the data array. The size can be no greater
10711 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10712 /// of the attribute.
10713 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10714 ///
10715 /// @param[in] sizes_fixed_array
10716 /// An array of integers that contains the sizes of each
10717 /// attribute array. This is required because the attribute
10718 /// array for each geometry component can be of variable size.
10719 /// <!-- sizeparm sizes_fixed_length -->
10720 ///
10721 /// @param[in] start
10722 /// First index of range. Must be at least 0 and at most
10723 /// ::HAPI_AttributeInfo::count - 1.
10724 /// <!-- default 0 -->
10725 ///
10726 /// @param[in] sizes_fixed_length
10727 /// Must be at least 0 and at most
10728 /// ::HAPI_AttributeInfo::count - @p start.
10729 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10730 ///
10731 /// @param[out] job_id
10732 /// The id assigned to the job.
10733 ///
10735  const HAPI_Session * session,
10736  HAPI_NodeId node_id,
10737  HAPI_PartId part_id,
10738  const char * name,
10739  const HAPI_AttributeInfo * attr_info,
10740  const HAPI_Int16 * data_fixed_array,
10741  int data_fixed_length,
10742  const int * sizes_fixed_array,
10743  int start,
10744  int sizes_fixed_length,
10745  int * job_id );
10746 
10747 /// @brief Set 64-bit integer array attribute data asynchronously.
10748 ///
10749 /// @ingroup GeometrySetters Attributes
10750 ///
10751 /// @param[in] session
10752 /// The session of Houdini you are interacting with.
10753 /// See @ref HAPI_Sessions for more on sessions.
10754 /// Pass NULL to just use the default in-process session.
10755 /// <!-- default NULL -->
10756 ///
10757 /// @param[in] node_id
10758 /// The SOP node id.
10759 ///
10760 /// @param[in] part_id
10761 /// Currently not used. Just pass 0.
10762 ///
10763 /// @param[in] name
10764 /// Attribute name.
10765 /// <!-- string -->
10766 ///
10767 /// @param[in] attr_info
10768 /// ::HAPI_AttributeInfo that contains the description for the
10769 /// attribute that is being set.
10770 ///
10771 /// @param[in] data_fixed_array
10772 /// An array containing the HAPI_Int64 values of the attribute.
10773 /// <!-- sizeparm data_fixed_length -->
10774 ///
10775 /// @param[in] data_fixed_length
10776 /// The total size of the data array. The size can be no greater
10777 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10778 /// of the attribute.
10779 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10780 ///
10781 /// @param[in] sizes_fixed_array
10782 /// An array of integers that contains the sizes of each
10783 /// attribute array. This is required because the attribute
10784 /// array for each geometry component can be of variable size.
10785 /// <!-- sizeparm sizes_fixed_length -->
10786 ///
10787 /// @param[in] start
10788 /// First index of range. Must be at least 0 and at most
10789 /// ::HAPI_AttributeInfo::count - 1.
10790 /// <!-- default 0 -->
10791 ///
10792 /// @param[in] sizes_fixed_length
10793 /// Must be at least 0 and at most
10794 /// ::HAPI_AttributeInfo::count - @p start.
10795 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10796 ///
10797 /// @param[out] job_id
10798 /// The id assigned to the job.
10799 ///
10801  const HAPI_Session * session,
10802  HAPI_NodeId node_id,
10803  HAPI_PartId part_id,
10804  const char * name,
10805  const HAPI_AttributeInfo * attr_info,
10806  const HAPI_Int64 * data_fixed_array,
10807  int data_fixed_length,
10808  const int * sizes_fixed_array,
10809  int start,
10810  int sizes_fixed_length,
10811  int * job_id );
10812 
10813 /// @brief Set float array attribute data asynchronously.
10814 ///
10815 /// @ingroup GeometrySetters Attributes
10816 ///
10817 /// @param[in] session
10818 /// The session of Houdini you are interacting with.
10819 /// See @ref HAPI_Sessions for more on sessions.
10820 /// Pass NULL to just use the default in-process session.
10821 /// <!-- default NULL -->
10822 ///
10823 /// @param[in] node_id
10824 /// The SOP node id.
10825 ///
10826 /// @param[in] part_id
10827 /// Currently not used. Just pass 0.
10828 ///
10829 /// @param[in] name
10830 /// Attribute name.
10831 /// <!-- string -->
10832 ///
10833 /// @param[in] attr_info
10834 /// ::HAPI_AttributeInfo that contains the description for the
10835 /// attribute that is being set.
10836 ///
10837 /// @param[in] data_fixed_array
10838 /// An array containing the float values of the attribute.
10839 /// <!-- sizeparm data_fixed_length -->
10840 ///
10841 /// @param[in] data_fixed_length
10842 /// The total size of the data array. The size can be no greater
10843 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10844 /// of the attribute.
10845 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10846 ///
10847 /// @param[in] sizes_fixed_array
10848 /// An array of integers that contains the sizes of each
10849 /// attribute array. This is required because the attribute
10850 /// array for each geometry component can be of variable size.
10851 /// <!-- sizeparm sizes_fixed_length -->
10852 ///
10853 /// @param[in] start
10854 /// First index of range. Must be at least 0 and at most
10855 /// ::HAPI_AttributeInfo::count - 1.
10856 /// <!-- default 0 -->
10857 ///
10858 /// @param[in] sizes_fixed_length
10859 /// Must be at least 0 and at most
10860 /// ::HAPI_AttributeInfo::count - @p start.
10861 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10862 ///
10863 /// @param[out] job_id
10864 /// The id assigned to the job.
10865 ///
10867  const HAPI_Session * session,
10868  HAPI_NodeId node_id,
10869  HAPI_PartId part_id,
10870  const char * name,
10871  const HAPI_AttributeInfo * attr_info,
10872  const float * data_fixed_array,
10873  int data_fixed_length,
10874  const int * sizes_fixed_array,
10875  int start,
10876  int sizes_fixed_length,
10877  int * job_id );
10878 
10879 /// @brief Set 64-bit float array attribute data asynchronously.
10880 ///
10881 /// @ingroup GeometrySetters Attributes
10882 ///
10883 /// @param[in] session
10884 /// The session of Houdini you are interacting with.
10885 /// See @ref HAPI_Sessions for more on sessions.
10886 /// Pass NULL to just use the default in-process session.
10887 /// <!-- default NULL -->
10888 ///
10889 /// @param[in] node_id
10890 /// The SOP node id.
10891 ///
10892 /// @param[in] part_id
10893 /// Currently not used. Just pass 0.
10894 ///
10895 /// @param[in] name
10896 /// Attribute name.
10897 /// <!-- string -->
10898 ///
10899 /// @param[in] attr_info
10900 /// ::HAPI_AttributeInfo that contains the description for the
10901 /// attribute that is being set.
10902 ///
10903 /// @param[in] data_fixed_array
10904 /// An array containing the double values of the attribute.
10905 /// <!-- sizeparm data_fixed_length -->
10906 ///
10907 /// @param[in] data_fixed_length
10908 /// The total size of the data array. The size can be no greater
10909 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10910 /// of the attribute.
10911 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10912 ///
10913 /// @param[in] sizes_fixed_array
10914 /// An array of integers that contains the sizes of each
10915 /// attribute array. This is required because the attribute
10916 /// array for each geometry component can be of variable size.
10917 /// <!-- sizeparm sizes_fixed_length -->
10918 ///
10919 /// @param[in] start
10920 /// First index of range. Must be at least 0 and at most
10921 /// ::HAPI_AttributeInfo::count - 1.
10922 /// <!-- default 0 -->
10923 ///
10924 /// @param[in] sizes_fixed_length
10925 /// Must be at least 0 and at most
10926 /// ::HAPI_AttributeInfo::count - @p start.
10927 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10928 ///
10929 /// @param[out] job_id
10930 /// The id assigned to the job.
10931 ///
10933  const HAPI_Session * session,
10934  HAPI_NodeId node_id,
10935  HAPI_PartId part_id,
10936  const char * name,
10937  const HAPI_AttributeInfo * attr_info,
10938  const double * data_fixed_array,
10939  int data_fixed_length,
10940  const int * sizes_fixed_array,
10941  int start,
10942  int sizes_fixed_length,
10943  int * job_id );
10944 
10945 /// @brief Set string array attribute data asynchronously.
10946 ///
10947 /// @ingroup GeometrySetters Attributes
10948 ///
10949 /// @param[in] session
10950 /// The session of Houdini you are interacting with.
10951 /// See @ref HAPI_Sessions for more on sessions.
10952 /// Pass NULL to just use the default in-process session.
10953 /// <!-- default NULL -->
10954 ///
10955 /// @param[in] node_id
10956 /// The SOP node id.
10957 ///
10958 /// @param[in] part_id
10959 /// Currently not used. Just pass 0.
10960 ///
10961 /// @param[in] name
10962 /// Attribute name.
10963 /// <!-- string -->
10964 ///
10965 /// @param[in] attr_info
10966 /// ::HAPI_AttributeInfo that contains the description for the
10967 /// attribute that is being set.
10968 ///
10969 /// @param[in] data_fixed_array
10970 /// An array containing the string values of the attribute.
10971 /// <!-- sizeparm data_fixed_length -->
10972 ///
10973 /// @param[in] data_fixed_length
10974 /// The total size of the data array. The size can be no greater
10975 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10976 /// of the attribute.
10977 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10978 ///
10979 /// @param[in] sizes_fixed_array
10980 /// An array of integers that contains the sizes of each
10981 /// attribute array. This is required because the attribute
10982 /// array for each geometry component can be of variable size.
10983 /// <!-- sizeparm sizes_fixed_length -->
10984 ///
10985 /// @param[in] start
10986 /// First index of range. Must be at least 0 and at most
10987 /// ::HAPI_AttributeInfo::count - 1.
10988 /// <!-- default 0 -->
10989 ///
10990 /// @param[in] sizes_fixed_length
10991 /// Must be at least 0 and at most
10992 /// ::HAPI_AttributeInfo::count - @p start.
10993 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10994 ///
10995 /// @param[out] job_id
10996 /// The id assigned to the job.
10997 ///
10999  const HAPI_Session * session,
11000  HAPI_NodeId node_id,
11001  HAPI_PartId part_id,
11002  const char * name,
11003  const HAPI_AttributeInfo * attr_info,
11004  const char ** data_fixed_array,
11005  int data_fixed_length,
11006  const int * sizes_fixed_array,
11007  int start,
11008  int sizes_fixed_length,
11009  int * job_id );
11010 
11011 /// @brief Set attribute dictionary array data asynchronously. The dictionary
11012 /// should be provided as JSON-encoded strings.
11013 ///
11014 /// @ingroup GeometrySetters Attributes
11015 ///
11016 /// @param[in] session
11017 /// The session of Houdini you are interacting with.
11018 /// See @ref HAPI_Sessions for more on sessions.
11019 /// Pass NULL to just use the default in-process session.
11020 /// <!-- default NULL -->
11021 ///
11022 /// @param[in] node_id
11023 /// The SOP node id.
11024 ///
11025 /// @param[in] part_id
11026 /// Currently not used. Just pass 0.
11027 ///
11028 /// @param[in] name
11029 /// Attribute name.
11030 /// <!-- string -->
11031 ///
11032 /// @param[in] attr_info
11033 /// ::HAPI_AttributeInfo that contains the description for the
11034 /// attribute that is being set.
11035 ///
11036 /// @param[in] data_fixed_array
11037 /// An array containing the dictionary values of the attribute.
11038 /// <!-- sizeparm data_fixed_length -->
11039 ///
11040 /// @param[in] data_fixed_length
11041 /// The total size of the data array. The size can be no greater
11042 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
11043 /// of the attribute.
11044 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
11045 ///
11046 /// @param[in] sizes_fixed_array
11047 /// An array of integers that contains the sizes of each
11048 /// attribute array. This is required because the attribute
11049 /// array for each geometry component can be of variable size.
11050 /// <!-- sizeparm sizes_fixed_length -->
11051 ///
11052 /// @param[in] start
11053 /// First index of range. Must be at least 0 and at most
11054 /// ::HAPI_AttributeInfo::count - 1.
11055 /// <!-- default 0 -->
11056 ///
11057 /// @param[in] sizes_fixed_length
11058 /// Must be at least 0 and at most
11059 /// ::HAPI_AttributeInfo::count - @p start.
11060 /// <!-- source ::HAPI_AttributeInfo::count - start -->
11061 ///
11062 /// @param[out] job_id
11063 /// The id assigned to the job.
11064 ///
11066  const HAPI_Session * session,
11067  HAPI_NodeId node_id,
11068  HAPI_PartId part_id,
11069  const char * name,
11070  const HAPI_AttributeInfo * attr_info,
11071  const char ** data_fixed_array,
11072  int data_fixed_length,
11073  const int * sizes_fixed_array,
11074  int start,
11075  int sizes_fixed_length,
11076  int * job_id );
11077 
11078 /// @brief Add a group to the input geo with the given type and name.
11079 ///
11080 /// @ingroup GeometrySetters
11081 ///
11082 /// @param[in] session
11083 /// The session of Houdini you are interacting with.
11084 /// See @ref HAPI_Sessions for more on sessions.
11085 /// Pass NULL to just use the default in-process session.
11086 /// <!-- default NULL -->
11087 ///
11088 /// @param[in] node_id
11089 /// The SOP node id.
11090 ///
11091 /// @param[in] part_id
11092 /// Currently not used. Just pass 0.
11093 ///
11094 /// @param[in] group_type
11095 /// The group type.
11096 ///
11097 /// @param[in] group_name
11098 /// Name of new group to be added.
11099 /// <!-- string -->
11100 ///
11101 HAPI_DECL HAPI_AddGroup( const HAPI_Session * session,
11102  HAPI_NodeId node_id,
11103  HAPI_PartId part_id,
11104  HAPI_GroupType group_type,
11105  const char * group_name );
11106 
11107 /// @brief Remove a group from the input geo with the given type and name.
11108 ///
11109 /// @ingroup GeometrySetters
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] node_id
11118 /// The SOP node id.
11119 ///
11120 /// @param[in] part_id
11121 /// Currently not used. Just pass 0.
11122 ///
11123 /// @param[in] group_type
11124 /// The group type.
11125 ///
11126 /// @param[in] group_name
11127 /// Name of the group to be removed
11128 /// <!-- string -->
11129 ///
11130 HAPI_DECL HAPI_DeleteGroup( const HAPI_Session * session,
11131  HAPI_NodeId node_id,
11132  HAPI_PartId part_id,
11133  HAPI_GroupType group_type,
11134  const char * group_name );
11135 
11136 /// @brief Set group membership.
11137 ///
11138 /// @ingroup GeometrySetters
11139 ///
11140 /// @param[in] session
11141 /// The session of Houdini you are interacting with.
11142 /// See @ref HAPI_Sessions for more on sessions.
11143 /// Pass NULL to just use the default in-process session.
11144 /// <!-- default NULL -->
11145 ///
11146 /// @param[in] node_id
11147 /// The SOP node id.
11148 ///
11149 /// @param[in] part_id
11150 /// Currently not used. Just pass 0.
11151 /// <!-- default 0 -->
11152 ///
11153 /// @param[in] group_type
11154 /// The group type.
11155 ///
11156 /// @param[in] group_name
11157 /// The group name.
11158 /// <!-- string -->
11159 ///
11160 /// @param[in] membership_array
11161 /// Array of ints that represent the membership of this
11162 /// group. Should be the size given by
11163 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
11164 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
11165 /// <!-- sizeparm length -->
11166 ///
11167 /// @param[in] start
11168 /// Start offset into the membership array. Must be
11169 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
11170 /// <!-- default 0 -->
11171 ///
11172 /// @param[in] length
11173 /// Should be less than or equal to the size
11174 /// of @p membership_array. When setting edge group membership,
11175 /// this parameter should be set to the number of points (which
11176 /// are used to implictly define the edges), not to the number
11177 /// edges in the group.
11178 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
11179 ///
11181  HAPI_NodeId node_id,
11182  HAPI_PartId part_id,
11183  HAPI_GroupType group_type,
11184  const char * group_name,
11185  const int * membership_array,
11186  int start, int length );
11187 
11188 /// @brief Commit the current input geometry to the cook engine. Nodes
11189 /// that use this geometry node will re-cook using the input
11190 /// geometry given through the geometry setter API calls.
11191 ///
11192 /// @ingroup GeometrySetters
11193 ///
11194 /// @param[in] session
11195 /// The session of Houdini you are interacting with.
11196 /// See @ref HAPI_Sessions for more on sessions.
11197 /// Pass NULL to just use the default in-process session.
11198 /// <!-- default NULL -->
11199 ///
11200 /// @param[in] node_id
11201 /// The SOP node id.
11202 ///
11203 HAPI_DECL HAPI_CommitGeo( const HAPI_Session * session,
11204  HAPI_NodeId node_id );
11205 
11206 /// @brief Remove all changes that have been committed to this
11207 /// geometry. If this is an intermediate result node (Edit SOP), all
11208 /// deltas will be removed. If it's any other type of node, the node
11209 /// will be unlocked if it is locked.
11210 ///
11211 /// @ingroup GeometrySetters
11212 ///
11213 /// @param[in] session
11214 /// The session of Houdini you are interacting with.
11215 /// See @ref HAPI_Sessions for more on sessions.
11216 /// Pass NULL to just use the default in-process session.
11217 /// <!-- default NULL -->
11218 ///
11219 /// @param[in] node_id
11220 /// The SOP node id.
11221 ///
11222 HAPI_DECL HAPI_RevertGeo( const HAPI_Session * session,
11223  HAPI_NodeId node_id );
11224 
11225 /// @defgroup Materials
11226 /// Functions for working with materials
11227 
11228 /// @brief Get material ids by face/primitive. The material ids returned
11229 /// will be valid as long as the asset is alive. You should query
11230 /// this list after every cook to see if the material assignments
11231 /// have changed. You should also query each material individually
11232 /// using ::HAPI_GetMaterialInfo() to see if it is dirty and needs
11233 /// to be re-imported.
11234 ///
11235 /// @ingroup Materials
11236 ///
11237 /// @param[in] session
11238 /// The session of Houdini you are interacting with.
11239 /// See @ref HAPI_Sessions for more on sessions.
11240 /// Pass NULL to just use the default in-process session.
11241 /// <!-- default NULL -->
11242 ///
11243 /// @param[in] geometry_node_id
11244 /// The geometry node id.
11245 ///
11246 /// @param[in] part_id
11247 /// The part id.
11248 ///
11249 /// @param[out] are_all_the_same
11250 /// (optional) If true, all faces on this part have the
11251 /// same material assignment. You can pass NULL here.
11252 ///
11253 /// @param[out] material_ids_array
11254 /// An array of ::HAPI_NodeId at least the size of
11255 /// @p length and at most the size of
11256 /// ::HAPI_PartInfo::faceCount.
11257 /// <!-- sizeparm length -->
11258 ///
11259 /// @param[in] start
11260 /// The starting index into the list of faces from which
11261 /// you wish to get the material ids from. Note that
11262 /// this should be less than ::HAPI_PartInfo::faceCount.
11263 /// <!-- default 0 -->
11264 ///
11265 /// @param[in] length
11266 /// The number of material ids you wish to get. Note that
11267 /// this should be at most:
11268 /// ::HAPI_PartInfo::faceCount - @p start.
11269 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
11270 ///
11272  HAPI_NodeId geometry_node_id,
11273  HAPI_PartId part_id,
11274  HAPI_Bool * are_all_the_same,
11275  HAPI_NodeId * material_ids_array,
11276  int start, int length );
11277 
11278 /// @brief Get the material info.
11279 ///
11280 /// @ingroup Materials
11281 ///
11282 /// @param[in] session
11283 /// The session of Houdini you are interacting with.
11284 /// See @ref HAPI_Sessions for more on sessions.
11285 /// Pass NULL to just use the default in-process session.
11286 /// <!-- default NULL -->
11287 ///
11288 /// @param[in] material_node_id
11289 /// The material node id.
11290 ///
11291 /// @param[out] material_info
11292 /// The returned material info.
11293 ///
11295  HAPI_NodeId material_node_id,
11296  HAPI_MaterialInfo * material_info );
11297 
11298 /// @brief Render a single texture from a COP to an image for
11299 /// later extraction.
11300 ///
11301 /// @ingroup Materials
11302 ///
11303 /// Note that you must call this method,
11304 /// ::HAPI_RenderCOPOutputToImage(), or ::HAPI_RenderTextureToImage()
11305 /// before any of the other material APIs.
11306 ///
11307 /// @param[in] session
11308 /// The session of Houdini you are interacting with.
11309 /// See @ref HAPI_Sessions for more on sessions.
11310 /// Pass NULL to just use the default in-process session.
11311 /// <!-- default NULL -->
11312 ///
11313 /// @param[in] cop_node_id
11314 /// The COP node id.
11315 ///
11317  HAPI_NodeId cop_node_id );
11318 
11319 /// @brief Render a single texture from a COP to an image for
11320 /// later extraction. COPs may have multiple outputs,
11321 /// so this method lets you select which output to use.
11322 ///
11323 /// @ingroup Materials
11324 ///
11325 /// Note that you must call this method,
11326 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderTextureToImage()
11327 /// before any of the other material APIs.
11328 ///
11329 /// @param[in] session
11330 /// The session of Houdini you are interacting with.
11331 /// See @ref HAPI_Sessions for more on sessions.
11332 /// Pass NULL to just use the default in-process session.
11333 /// <!-- default NULL -->
11334 ///
11335 /// @param[in] cop_node_id
11336 /// The COP node id.
11337 ///
11338 /// @param[in] cop_output_name
11339 /// The name of the output to extract. Passing in
11340 /// an empty string will default to the COP's first output.
11341 /// <!-- string -->
11342 ///
11344  HAPI_NodeId cop_node_id,
11345  const char * cop_output_name );
11346 
11347 /// @brief Render only a single texture to an image for later extraction.
11348 /// An example use of this method might be to render the diffuse,
11349 /// normal, and bump texture maps of a material to individual
11350 /// texture files for use within the client application.
11351 ///
11352 /// Note that you must call this method,
11353 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11354 /// before any of the other material APIs.
11355 ///
11356 /// @ingroup Materials
11357 ///
11358 /// @param[in] session
11359 /// The session of Houdini you are interacting with.
11360 /// See @ref HAPI_Sessions for more on sessions.
11361 /// Pass NULL to just use the default in-process session.
11362 /// <!-- default NULL -->
11363 ///
11364 /// @param[in] material_node_id
11365 /// The material node id.
11366 ///
11367 /// @param[in] parm_id
11368 /// This is the index in the parameter list of the
11369 /// material_id's node of the parameter containing the
11370 /// texture map file path.
11371 ///
11373  HAPI_NodeId material_node_id,
11374  HAPI_ParmId parm_id );
11375 
11376 /// @brief Get information about the image that was just rendered, like
11377 /// resolution and default file format. This information will be
11378 /// used when extracting planes to an image.
11379 ///
11380 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11381 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11382 /// first for this method call to make sense.
11383 ///
11384 /// @ingroup Materials
11385 ///
11386 /// @param[in] session
11387 /// The session of Houdini you are interacting with.
11388 /// See @ref HAPI_Sessions for more on sessions.
11389 /// Pass NULL to just use the default in-process session.
11390 /// <!-- default NULL -->
11391 ///
11392 /// @param[in] material_node_id
11393 /// The material node id.
11394 ///
11395 /// @param[out] image_info
11396 /// The struct containing the image information.
11397 ///
11398 HAPI_DECL HAPI_GetImageInfo( const HAPI_Session * session,
11399  HAPI_NodeId material_node_id,
11400  HAPI_ImageInfo * image_info );
11401 
11402 /// @brief Set image information like resolution and file format.
11403 /// This information will be used when extracting planes to
11404 /// an image.
11405 ///
11406 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11407 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11408 /// first for this method call to make sense.
11409 ///
11410 /// You should also first call ::HAPI_GetImageInfo() to get the
11411 /// current Image Info and change only the properties
11412 /// you don't like.
11413 ///
11414 /// @ingroup Materials
11415 ///
11416 /// @param[in] session
11417 /// The session of Houdini you are interacting with.
11418 /// See @ref HAPI_Sessions for more on sessions.
11419 /// Pass NULL to just use the default in-process session.
11420 /// <!-- default NULL -->
11421 ///
11422 /// @param[in] material_node_id
11423 /// The material node id.
11424 ///
11425 /// @param[in] image_info
11426 /// The struct containing the new image information.
11427 ///
11428 HAPI_DECL HAPI_SetImageInfo( const HAPI_Session * session,
11429  HAPI_NodeId material_node_id,
11430  const HAPI_ImageInfo * image_info );
11431 
11432 /// @brief Get the number of image planes for the just rendered image.
11433 ///
11434 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11435 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11436 /// first for this method call to make sense.
11437 ///
11438 /// @ingroup Materials
11439 ///
11440 /// @param[in] session
11441 /// The session of Houdini you are interacting with.
11442 /// See @ref HAPI_Sessions for more on sessions.
11443 /// Pass NULL to just use the default in-process session.
11444 /// <!-- default NULL -->
11445 ///
11446 /// @param[in] material_node_id
11447 /// The material node id.
11448 ///
11449 /// @param[out] image_plane_count
11450 /// The number of image planes.
11451 ///
11453  HAPI_NodeId material_node_id,
11454  int * image_plane_count );
11455 
11456 /// @brief Get the names of the image planes of the just rendered image.
11457 ///
11458 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11459 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11460 /// first for this method call to make sense.
11461 ///
11462 /// You should also call ::HAPI_GetImagePlaneCount() first to get
11463 /// the total number of image planes so you know how large the
11464 /// image_planes string handle array should be.
11465 ///
11466 /// @ingroup Materials
11467 ///
11468 /// @param[in] session
11469 /// The session of Houdini you are interacting with.
11470 /// See @ref HAPI_Sessions for more on sessions.
11471 /// Pass NULL to just use the default in-process session.
11472 /// <!-- default NULL -->
11473 ///
11474 /// @param[in] material_node_id
11475 /// The material node id.
11476 ///
11477 /// @param[out] image_planes_array
11478 /// The image plane names.
11479 /// <!-- sizeparm image_plane_count -->
11480 ///
11481 /// @param[in] image_plane_count
11482 /// The number of image planes to get names for. This
11483 /// must be less than or equal to the count returned
11484 /// by ::HAPI_GetImagePlaneCount().
11485 /// <!-- source ::HAPI_GetImagePlaneCount -->
11486 ///
11487 HAPI_DECL HAPI_GetImagePlanes( const HAPI_Session * session,
11488  HAPI_NodeId material_node_id,
11489  HAPI_StringHandle * image_planes_array,
11490  int image_plane_count );
11491 
11492 /// @brief Extract a rendered image to a file.
11493 ///
11494 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11495 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11496 /// first for this method call to make sense.
11497 ///
11498 /// @ingroup Materials
11499 ///
11500 /// @param[in] session
11501 /// The session of Houdini you are interacting with.
11502 /// See @ref HAPI_Sessions for more on sessions.
11503 /// Pass NULL to just use the default in-process session.
11504 /// <!-- default NULL -->
11505 ///
11506 /// @param[in] material_node_id
11507 /// The material node id.
11508 ///
11509 /// @param[in] image_file_format_name
11510 /// The image file format name you wish the image to be
11511 /// extracted as. You can leave this parameter NULL to
11512 /// get the image in the original format if it comes from
11513 /// another texture file or in the default HAPI format,
11514 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11515 /// is generated.
11516 ///
11517 /// You can get some of the very common standard image
11518 /// file format names from HAPI_Common.h under the
11519 /// "Defines" section.
11520 ///
11521 /// You can also get a list of all supported file formats
11522 /// (and the exact names this parameter expects)
11523 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11524 /// list will include custom file formats you created via
11525 /// custom DSOs (see HDK docs about IMG_Format). You will
11526 /// get back a list of ::HAPI_ImageFileFormat. This
11527 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11528 /// of a given image file format.
11529 /// <!-- string -->
11530 ///
11531 /// @param[in] image_planes
11532 /// The image planes you wish to extract into the file.
11533 /// Multiple image planes should be separated by spaces.
11534 /// <!-- string -->
11535 ///
11536 /// @param[in] destination_folder_path
11537 /// The folder where the image file should be created.
11538 /// <!-- string -->
11539 ///
11540 /// @param[in] destination_file_name
11541 /// Optional parameter to overwrite the name of the
11542 /// extracted texture file. This should NOT include
11543 /// the extension as the file type will be decided
11544 /// by the ::HAPI_ImageInfo you can set using
11545 /// ::HAPI_SetImageInfo(). You still have to use
11546 /// destination_file_path to get the final file path.
11547 ///
11548 /// Pass in NULL to have the file name be automatically
11549 /// generated from the name of the material SHOP node,
11550 /// the name of the texture map parameter if the
11551 /// image was rendered from a texture, and the image
11552 /// plane names specified.
11553 /// <!-- string -->
11554 ///
11555 /// @param[out] destination_file_path
11556 /// The full path string handle, including the
11557 /// destination_folder_path and the texture file name,
11558 /// to the extracted file. Note that this string handle
11559 /// will only be valid until the next call to
11560 /// this function.
11561 ///
11563  HAPI_NodeId material_node_id,
11564  const char * image_file_format_name,
11565  const char * image_planes,
11566  const char * destination_folder_path,
11567  const char * destination_file_name,
11568  int * destination_file_path );
11569 /// @brief Get the file name that this image would be saved to
11570 ///
11571 /// Check to see what file path HAPI_ExtractImageToFile would have
11572 /// saved to given the same parms. Perhaps you might wish to see
11573 /// if it already exists before extracting.
11574 ///
11575 /// @ingroup Materials
11576 ///
11577 /// @param[in] session
11578 /// The session of Houdini you are interacting with.
11579 /// See @ref HAPI_Sessions for more on sessions.
11580 /// Pass NULL to just use the default in-process session.
11581 /// <!-- default NULL -->
11582 ///
11583 /// @param[in] material_node_id
11584 /// The material node id.
11585 ///
11586 /// @param[in] image_file_format_name
11587 /// The image file format name you wish the image to be
11588 /// extracted as. See HAPI_ExtractImageToFile for more information.
11589 /// <!-- string -->
11590 ///
11591 /// @param[in] image_planes
11592 /// The image planes you wish to extract into the file.
11593 /// Multiple image planes should be separated by spaces.
11594 /// <!-- string -->
11595 ///
11596 /// @param[in] destination_folder_path
11597 /// The folder where the image file sould be created.
11598 /// <!-- string -->
11599 ///
11600 /// @param[in] destination_file_name
11601 /// Optional parameter to overwrite the name of the
11602 /// extracted texture file. See HAPI_ExtractImageToFile for more information.
11603 /// <!-- string -->
11604 ///
11605 /// @param[in] texture_parm_id
11606 /// The index in the parameter list of the material node.
11607 /// of the parameter containing the texture map file path
11608 ///
11609 /// @param[out] destination_file_path
11610 /// The full path string handle, including the
11611 /// destination_folder_path and the texture file name,
11612 /// to the extracted file. Note that this string handle
11613 /// will only be valid until the next call to
11614 /// this function.
11615 ///
11617  HAPI_NodeId material_node_id,
11618  const char * image_file_format_name,
11619  const char * image_planes,
11620  const char * destination_folder_path,
11621  const char * destination_file_name,
11622  HAPI_ParmId texture_parm_id,
11623  int * destination_file_path );
11624 
11625 /// @brief Extract a rendered image to memory.
11626 ///
11627 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11628 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11629 /// first for this method call to make sense.
11630 ///
11631 /// Also note that this function will do all the work of
11632 /// extracting and compositing the image into a memory buffer
11633 /// but will not return to you that buffer, only its size. Use
11634 /// the returned size to allocated a sufficiently large buffer
11635 /// and call ::HAPI_GetImageMemoryBuffer() to fill your buffer
11636 /// with the just extracted image.
11637 ///
11638 /// @ingroup Materials
11639 ///
11640 /// @param[in] session
11641 /// The session of Houdini you are interacting with.
11642 /// See @ref HAPI_Sessions for more on sessions.
11643 /// Pass NULL to just use the default in-process session.
11644 /// <!-- default NULL -->
11645 ///
11646 /// @param[in] material_node_id
11647 /// The material node id.
11648 ///
11649 /// @param[in] image_file_format_name
11650 /// The image file format name you wish the image to be
11651 /// extracted as. You can leave this parameter NULL to
11652 /// get the image in the original format if it comes from
11653 /// another texture file or in the default HAPI format,
11654 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11655 /// is generated.
11656 ///
11657 /// You can get some of the very common standard image
11658 /// file format names from HAPI_Common.h under the
11659 /// "Defines" section.
11660 ///
11661 /// You can also get a list of all supported file formats
11662 /// (and the exact names this parameter expects)
11663 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11664 /// list will include custom file formats you created via
11665 /// custom DSOs (see HDK docs about IMG_Format). You will
11666 /// get back a list of ::HAPI_ImageFileFormat. This
11667 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11668 /// of a given image file format.
11669 /// <!-- string -->
11670 ///
11671 /// @param[in] image_planes
11672 /// The image planes you wish to extract into the file.
11673 /// Multiple image planes should be separated by spaces.
11674 /// <!-- string -->
11675 ///
11676 /// @param[out] buffer_size
11677 /// The extraction will be done to an internal buffer
11678 /// who's size you get via this parameter. Use the
11679 /// returned buffer_size when calling
11680 /// ::HAPI_GetImageMemoryBuffer() to get the image
11681 /// buffer you just extracted.
11682 ///
11684  HAPI_NodeId material_node_id,
11685  const char * image_file_format_name,
11686  const char * image_planes,
11687  int * buffer_size );
11688 
11689 /// @brief Fill your allocated buffer with the just extracted
11690 /// image buffer.
11691 ///
11692 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11693 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11694 /// first for this method call to make sense.
11695 ///
11696 /// Also note that you must call ::HAPI_ExtractImageToMemory()
11697 /// first in order to perform the extraction and get the
11698 /// extracted image buffer size that you need to know how much
11699 /// memory to allocated to fit your extracted image.
11700 ///
11701 /// @ingroup Materials
11702 ///
11703 /// @param[in] session
11704 /// The session of Houdini you are interacting with.
11705 /// See @ref HAPI_Sessions for more on sessions.
11706 /// Pass NULL to just use the default in-process session.
11707 /// <!-- default NULL -->
11708 ///
11709 /// @param[in] material_node_id
11710 /// The material node id.
11711 ///
11712 /// @param[out] buffer
11713 /// The buffer passed in here will be filled with the
11714 /// image buffer created during the call to
11715 /// ::HAPI_ExtractImageToMemory().
11716 /// <!-- sizeparm length -->
11717 ///
11718 /// @param[in] length
11719 /// Sanity check. This size should be the same as the
11720 /// size allocated for the buffer passed in and should
11721 /// be at least as large as the buffer_size returned by
11722 /// the call to ::HAPI_ExtractImageToMemory().
11723 /// <!-- source ::HAPI_ExtractImageToMemory -->
11724 ///
11726  HAPI_NodeId material_node_id,
11727  char * buffer, int length );
11728 
11729 /// @brief Get the number of supported texture file formats.
11730 ///
11731 /// @ingroup Materials
11732 ///
11733 /// @param[in] session
11734 /// The session of Houdini you are interacting with.
11735 /// See @ref HAPI_Sessions for more on sessions.
11736 /// Pass NULL to just use the default in-process session.
11737 /// <!-- default NULL -->
11738 ///
11739 /// @param[out] file_format_count
11740 /// The number of supported texture file formats.
11741 ///
11743  int * file_format_count );
11744 
11745 /// @brief Get a list of support image file formats - their names,
11746 /// descriptions and a list of recognized extensions.
11747 ///
11748 /// Note that you MUST call
11749 /// ::HAPI_GetSupportedImageFileFormatCount()
11750 /// before calling this function for the first time.
11751 ///
11752 /// @ingroup Materials
11753 ///
11754 /// @param[in] session
11755 /// The session of Houdini you are interacting with.
11756 /// See @ref HAPI_Sessions for more on sessions.
11757 /// Pass NULL to just use the default in-process session.
11758 /// <!-- default NULL -->
11759 ///
11760 /// @param[out] formats_array
11761 /// The list of ::HAPI_ImageFileFormat structs to
11762 /// be filled.
11763 /// <!-- sizeparm file_format_count -->
11764 ///
11765 /// @param[in] file_format_count
11766 /// The number of supported texture file formats. This
11767 /// should be at least as large as the count returned
11768 /// by ::HAPI_GetSupportedImageFileFormatCount().
11769 /// <!-- source ::HAPI_GetSupportedImageFileFormatCount -->
11770 ///
11772  const HAPI_Session * session,
11773  HAPI_ImageFileFormat * formats_array,
11774  int file_format_count );
11775 
11776 /// @brief Loads some raw image data into a COP node.
11777 ///
11778 /// This method expects the image data to be in linear color space.
11779 /// It will not do any color space conversions for you; the data
11780 /// must be converted beforehand.
11781 ///
11782 /// @ingroup Materials
11783 ///
11784 /// @param[in] session
11785 /// The session of Houdini you are interacting with.
11786 /// See @ref HAPI_Sessions for more on sessions.
11787 /// Pass NULL to just use the default in-process session.
11788 /// <!-- default NULL -->
11789 ///
11790 /// @param[in] parent_node_id
11791 /// The node that the copnet containing the texture will be
11792 /// created in, or -1 if the parent is the image manager.
11793 ///
11794 /// @param[in] width
11795 /// The width of the image in pixels. @p width * @p height *
11796 /// channel count (implied by @p packing) should equal the size
11797 /// of @p data_array.
11798 ///
11799 /// @param[in] height
11800 /// The height of the image in pixels. @p width * @p height *
11801 /// channel count (implied by @p packing) should equal the size
11802 /// of @p data_array.
11803 ///
11804 /// @param[in] packing
11805 /// How the image data is packed (single-channel, RBGA, etc).
11806 ///
11807 /// @param[in] flip_x
11808 /// Whether to flip the image horizontally.
11809 ///
11810 /// @param[in] flip_y
11811 /// Whether to flip the image vertically.
11812 ///
11813 /// @param[in] data_array
11814 /// A float array representing the image's pixel data. Values
11815 /// should be between 0.0 and 1.0. The data should be packed
11816 /// according to @p packing.
11817 /// <!-- sizeparm length -->
11818 ///
11819 /// @param[in] start
11820 /// The index of the first value of @p data_array to use.
11821 /// Must be at least 0 and at most (size of @p data_array - 1).
11822 /// <!-- min 0 -->
11823 /// <!-- default 0 -->
11824 ///
11825 /// @param[in] length
11826 /// How much of @p data_array to use. Must be at least 0
11827 /// and at most (size of @p data_array - start).
11828 /// <!-- min 0 -->
11829 ///
11830 HAPI_DECL HAPI_CreateCOPImage( const HAPI_Session * session,
11831  HAPI_NodeId parent_node_id,
11832  const int width,
11833  const int height,
11834  const HAPI_ImagePacking packing,
11835  HAPI_Bool flip_x,
11836  HAPI_Bool flip_y,
11837  const float * data_array,
11838  int start, int length );
11839 
11840 /// @defgroup Animation
11841 /// Functions for working with animation.
11842 
11843 /// @brief Set an animation curve on a parameter of an exposed node.
11844 ///
11845 /// @ingroup Animation
11846 ///
11847 /// @param[in] session
11848 /// The session of Houdini you are interacting with.
11849 /// See @ref HAPI_Sessions for more on sessions.
11850 /// Pass NULL to just use the default in-process session.
11851 /// <!-- default NULL -->
11852 ///
11853 /// @param[in] node_id
11854 /// The exposed node id.
11855 ///
11856 /// @param[in] parm_id
11857 /// The id of an exposed parameter within the node.
11858 /// @param[in] parm_index
11859 /// The index of the parameter, if it is for example
11860 /// a 3 tuple
11861 ///
11862 /// @param[in] curve_keyframes_array
11863 /// An array of ::HAPI_Keyframe structs that describes
11864 /// the keys on this curve.
11865 /// <!-- sizeparm keyframe_count -->
11866 ///
11867 /// @param[in] keyframe_count
11868 /// The number of keys on the curve.
11869 ///
11870 HAPI_DECL HAPI_SetAnimCurve( const HAPI_Session * session,
11871  HAPI_NodeId node_id, HAPI_ParmId parm_id,
11872  int parm_index,
11873  const HAPI_Keyframe * curve_keyframes_array,
11874  int keyframe_count );
11875 
11876 /// @brief A specialized convenience function to set the T,R,S values
11877 /// on an exposed node.
11878 ///
11879 /// @ingroup Animation
11880 ///
11881 /// @param[in] session
11882 /// The session of Houdini you are interacting with.
11883 /// See @ref HAPI_Sessions for more on sessions.
11884 /// Pass NULL to just use the default in-process session.
11885 /// <!-- default NULL -->
11886 ///
11887 /// @param[in] node_id
11888 /// The exposed node id.
11889 ///
11890 /// @param[in] trans_comp
11891 /// A value of ::HAPI_TransformComponent that
11892 /// identifies the particular component of the
11893 /// transform to attach the curve to, for example
11894 /// ::HAPI_TRANSFORM_TX.
11895 ///
11896 /// @param[in] curve_keyframes_array
11897 /// An array of ::HAPI_Keyframe structs that describes
11898 /// the keys on this curve.
11899 /// <!-- sizeparm keyframe_count -->
11900 ///
11901 /// @param[in] keyframe_count
11902 /// The number of keys on the curve.
11903 ///
11905  const HAPI_Session * session,
11906  HAPI_NodeId node_id,
11907  HAPI_TransformComponent trans_comp,
11908  const HAPI_Keyframe * curve_keyframes_array,
11909  int keyframe_count );
11910 
11911 /// @brief Resets the simulation cache of the asset. This is very useful
11912 /// for assets that use dynamics, to be called after some
11913 /// setup has changed for the asset - for example, asset inputs
11914 ///
11915 /// @ingroup Time
11916 ///
11917 /// @param[in] session
11918 /// The session of Houdini you are interacting with.
11919 /// See @ref HAPI_Sessions for more on sessions.
11920 /// Pass NULL to just use the default in-process session.
11921 /// <!-- default NULL -->
11922 ///
11923 /// @param[in] node_id
11924 /// The asset node id.
11925 ///
11927  HAPI_NodeId node_id );
11928 
11929 /// @defgroup Volumes
11930 /// Functions for working with Volume data
11931 
11932 /// @brief Retrieve any meta-data about the volume primitive, including
11933 /// its transform, location, scale, taper, resolution.
11934 ///
11935 /// @ingroup Volumes
11936 ///
11937 /// @param[in] session
11938 /// The session of Houdini you are interacting with.
11939 /// See @ref HAPI_Sessions for more on sessions.
11940 /// Pass NULL to just use the default in-process session.
11941 /// <!-- default NULL -->
11942 ///
11943 /// @param[in] node_id
11944 /// The node id.
11945 ///
11946 /// @param[in] part_id
11947 /// The part id.
11948 ///
11949 /// @param[out] volume_info
11950 /// The meta-data associated with the volume on the
11951 /// part specified by the previous parameters.
11952 ///
11953 HAPI_DECL HAPI_GetVolumeInfo( const HAPI_Session * session,
11954  HAPI_NodeId node_id,
11955  HAPI_PartId part_id,
11956  HAPI_VolumeInfo * volume_info );
11957 
11958 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
11959 /// Start iterating through the value of the volume at part_id.
11960 ///
11961 /// @ingroup Volumes
11962 ///
11963 /// @param[in] session
11964 /// The session of Houdini you are interacting with.
11965 /// See @ref HAPI_Sessions for more on sessions.
11966 /// Pass NULL to just use the default in-process session.
11967 /// <!-- default NULL -->
11968 ///
11969 /// @param[in] node_id
11970 /// The node id.
11971 ///
11972 /// @param[in] part_id
11973 /// The part id.
11974 ///
11975 /// @param[out] tile
11976 /// The tile info referring to the first tile in the
11977 /// volume at part_id.
11978 ///
11980  HAPI_NodeId node_id,
11981  HAPI_PartId part_id,
11982  HAPI_VolumeTileInfo * tile );
11983 
11984 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
11985 /// Continue iterating through the value of the volume at part_id.
11986 ///
11987 /// @ingroup Volumes
11988 ///
11989 /// @param[in] session
11990 /// The session of Houdini you are interacting with.
11991 /// See @ref HAPI_Sessions for more on sessions.
11992 /// Pass NULL to just use the default in-process session.
11993 /// <!-- default NULL -->
11994 ///
11995 /// @param[in] node_id
11996 /// The node id.
11997 ///
11998 /// @param[in] part_id
11999 /// The part id.
12000 ///
12001 /// @param[out] tile
12002 /// The tile info referring to the next tile in the
12003 /// set of tiles associated with the volume at this part.
12004 ///
12006  HAPI_NodeId node_id,
12007  HAPI_PartId part_id,
12008  HAPI_VolumeTileInfo * tile );
12009 
12010 /// @brief Retrieve floating point values of the voxel at a specific
12011 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
12012 /// to this call.
12013 ///
12014 /// @ingroup Volumes
12015 ///
12016 /// @param[in] session
12017 /// The session of Houdini you are interacting with.
12018 /// See @ref HAPI_Sessions for more on sessions.
12019 /// Pass NULL to just use the default in-process session.
12020 /// <!-- default NULL -->
12021 ///
12022 /// @param[in] node_id
12023 /// The node id.
12024 ///
12025 /// @param[in] part_id
12026 /// The part id.
12027 ///
12028 /// @param[in] x_index
12029 /// The x index/coordinate of the voxel.
12030 ///
12031 /// @param[in] y_index
12032 /// The y index/coordinate of the voxel.
12033 ///
12034 /// @param[in] z_index
12035 /// The z index/coordinate of the voxel.
12036 ///
12037 /// @param[out] values_array
12038 /// The values of the voxel.
12039 /// <!-- sizeparm value_count -->
12040 ///
12041 /// @param[in] value_count
12042 /// Should be equal to the volume's
12043 /// ::HAPI_VolumeInfo::tupleSize.
12044 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12045 ///
12047  HAPI_NodeId node_id,
12048  HAPI_PartId part_id,
12049  int x_index,
12050  int y_index,
12051  int z_index,
12052  float * values_array,
12053  int value_count );
12054 
12055 /// @brief Retrieve floating point values of the voxels pointed to
12056 /// by a tile. Note that a tile may extend beyond the limits
12057 /// of the volume so not all values in the given buffer will
12058 /// be written to. Voxels outside the volume will be initialized
12059 /// to the given fill value.
12060 ///
12061 /// @ingroup Volumes
12062 ///
12063 /// @param[in] session
12064 /// The session of Houdini you are interacting with.
12065 /// See @ref HAPI_Sessions for more on sessions.
12066 /// Pass NULL to just use the default in-process session.
12067 /// <!-- default NULL -->
12068 ///
12069 /// @param[in] node_id
12070 /// The node id.
12071 ///
12072 /// @param[in] part_id
12073 /// The part id.
12074 ///
12075 /// @param[in] fill_value
12076 /// Value that will be used to fill the @p values_array.
12077 /// This is useful so that you can see what values
12078 /// have actually been written to.
12079 ///
12080 /// @param[in] tile
12081 /// The tile to retrieve.
12082 ///
12083 /// @param[out] values_array
12084 /// The values of the tile.
12085 /// <!-- sizeparm length -->
12086 ///
12087 /// @param[in] length
12088 /// The length should be ( 8 ^ 3 ) * tupleSize.
12089 ///
12091  HAPI_NodeId node_id,
12092  HAPI_PartId part_id,
12093  float fill_value,
12094  const HAPI_VolumeTileInfo * tile,
12095  float * values_array,
12096  int length );
12097 
12098 /// @brief Retrieve integer point values of the voxel at a specific
12099 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
12100 /// to this call.
12101 ///
12102 /// @ingroup Volumes
12103 ///
12104 /// @param[in] session
12105 /// The session of Houdini you are interacting with.
12106 /// See @ref HAPI_Sessions for more on sessions.
12107 /// Pass NULL to just use the default in-process session.
12108 /// <!-- default NULL -->
12109 ///
12110 /// @param[in] node_id
12111 /// The node id.
12112 ///
12113 /// @param[in] part_id
12114 /// The part id.
12115 ///
12116 /// @param[in] x_index
12117 /// The x index/coordinate of the voxel.
12118 ///
12119 /// @param[in] y_index
12120 /// The y index/coordinate of the voxel.
12121 ///
12122 /// @param[in] z_index
12123 /// The z index/coordinate of the voxel.
12124 ///
12125 /// @param[out] values_array
12126 /// The values of the voxel.
12127 /// <!-- sizeparm value_count -->
12128 ///
12129 /// @param[in] value_count
12130 /// Should be equal to the volume's
12131 /// ::HAPI_VolumeInfo::tupleSize.
12132 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12133 ///
12135  HAPI_NodeId node_id,
12136  HAPI_PartId part_id,
12137  int x_index,
12138  int y_index,
12139  int z_index,
12140  int * values_array,
12141  int value_count );
12142 
12143 /// @brief Retrieve integer point values of the voxels pointed to
12144 /// by a tile. Note that a tile may extend beyond the limits
12145 /// of the volume so not all values in the given buffer will
12146 /// be written to. Voxels outside the volume will be initialized
12147 /// to the given fill value.
12148 ///
12149 /// @ingroup Volumes
12150 ///
12151 /// @param[in] session
12152 /// The session of Houdini you are interacting with.
12153 /// See @ref HAPI_Sessions for more on sessions.
12154 /// Pass NULL to just use the default in-process session.
12155 /// <!-- default NULL -->
12156 ///
12157 /// @param[in] node_id
12158 /// The node id.
12159 ///
12160 /// @param[in] part_id
12161 /// The part id.
12162 ///
12163 /// @param[in] fill_value
12164 /// Value that will be used to fill the @p values_array.
12165 /// This is useful so that you can see what values
12166 /// have actually been written to.
12167 ///
12168 /// @param[in] tile
12169 /// The tile to retrieve.
12170 ///
12171 /// @param[out] values_array
12172 /// The values of the tile.
12173 /// <!-- sizeparm length -->
12174 ///
12175 /// @param[in] length
12176 /// The length should be ( 8 ^ 3 ) * tupleSize.
12177 ///
12179  HAPI_NodeId node_id,
12180  HAPI_PartId part_id,
12181  int fill_value,
12182  const HAPI_VolumeTileInfo * tile,
12183  int * values_array,
12184  int length );
12185 
12186 /// @brief Get the height field data for a terrain volume as a flattened
12187 /// 2D array of float heights. Should call ::HAPI_GetVolumeInfo()
12188 /// first to make sure the volume info is initialized.
12189 ///
12190 /// @ingroup Volumes
12191 ///
12192 /// @param[in] session
12193 /// The session of Houdini you are interacting with.
12194 /// See @ref HAPI_Sessions for more on sessions.
12195 /// Pass NULL to just use the default in-process session.
12196 /// <!-- default NULL -->
12197 ///
12198 /// @param[in] node_id
12199 /// The node id.
12200 ///
12201 /// @param[in] part_id
12202 /// The part id.
12203 ///
12204 /// @param[out] values_array
12205 /// Heightfield flattened array. Should be at least the size of
12206 /// @p start + @p length.
12207 /// <!-- sizeparm length -->
12208 ///
12209 /// @param[in] start
12210 /// The start at least 0 and at most
12211 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
12212 /// - @p length.
12213 ///
12214 /// @param[in] length
12215 /// The length should be at least 1 or at most
12216 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
12217 /// - @p start.
12218 ///
12220  HAPI_NodeId node_id,
12221  HAPI_PartId part_id,
12222  float * values_array,
12223  int start, int length );
12224 
12225 /// @brief Set the volume info of a geo on a geo input.
12226 ///
12227 /// @ingroup Volumes
12228 ///
12229 /// @param[in] session
12230 /// The session of Houdini you are interacting with.
12231 /// See @ref HAPI_Sessions for more on sessions.
12232 /// Pass NULL to just use the default in-process session.
12233 /// <!-- default NULL -->
12234 ///
12235 /// @param[in] node_id
12236 /// The node id.
12237 ///
12238 /// @param[in] part_id
12239 /// The part id.
12240 ///
12241 /// @param[in] volume_info
12242 /// All volume information that can be specified per
12243 /// volume. This includes the position, orientation, scale,
12244 /// data format, tuple size, and taper. The tile size is
12245 /// always 8x8x8.
12246 ///
12247 HAPI_DECL HAPI_SetVolumeInfo( const HAPI_Session * session,
12248  HAPI_NodeId node_id,
12249  HAPI_PartId part_id,
12250  const HAPI_VolumeInfo * volume_info );
12251 
12252 /// @brief Set the values of a float tile: this is an 8x8x8 subsection of
12253 /// the volume.
12254 ///
12255 /// @ingroup Volumes
12256 ///
12257 /// @param[in] session
12258 /// The session of Houdini you are interacting with.
12259 /// See @ref HAPI_Sessions for more on sessions.
12260 /// Pass NULL to just use the default in-process session.
12261 /// <!-- default NULL -->
12262 ///
12263 /// @param[in] node_id
12264 /// The node id.
12265 ///
12266 /// @param[in] part_id
12267 /// The part id.
12268 ///
12269 /// @param[in] tile
12270 /// The tile that the volume will be input into.
12271 ///
12272 /// @param[in] values_array
12273 /// The values of the individual voxel tiles in the
12274 /// volume. The length of this array should
12275 /// be ( 8 ^ 3 ) * tupleSize.
12276 /// <!-- sizeparm length -->
12277 ///
12278 /// @param[in] length
12279 /// The length should be ( 8 ^ 3 ) * tupleSize.
12280 ///
12282  HAPI_NodeId node_id,
12283  HAPI_PartId part_id,
12284  const HAPI_VolumeTileInfo * tile,
12285  const float * values_array,
12286  int length );
12287 
12288 /// @brief Set the values of an int tile: this is an 8x8x8 subsection of
12289 /// the volume.
12290 ///
12291 /// @ingroup Volumes
12292 ///
12293 /// @param[in] session
12294 /// The session of Houdini you are interacting with.
12295 /// See @ref HAPI_Sessions for more on sessions.
12296 /// Pass NULL to just use the default in-process session.
12297 /// <!-- default NULL -->
12298 ///
12299 /// @param[in] node_id
12300 /// The node id.
12301 ///
12302 /// @param[in] part_id
12303 /// The part id.
12304 ///
12305 /// @param[in] tile
12306 /// The tile that the volume will be input into.
12307 ///
12308 /// @param[in] values_array
12309 /// The values of the individual voxel tiles in the
12310 /// volume. The length of this array should
12311 /// be ( 8 ^ 3 ) * tupleSize.
12312 /// <!-- sizeparm length -->
12313 ///
12314 /// @param[in] length
12315 /// The length should be ( 8 ^ 3 ) * tupleSize.
12316 ///
12318  HAPI_NodeId node_id,
12319  HAPI_PartId part_id,
12320  const HAPI_VolumeTileInfo * tile,
12321  const int * values_array,
12322  int length );
12323 
12324 /// @brief Set the values of a float voxel in the volume.
12325 ///
12326 /// @ingroup Volumes
12327 ///
12328 /// @param[in] session
12329 /// The session of Houdini you are interacting with.
12330 /// See @ref HAPI_Sessions for more on sessions.
12331 /// Pass NULL to just use the default in-process session.
12332 /// <!-- default NULL -->
12333 ///
12334 /// @param[in] node_id
12335 /// The node id.
12336 ///
12337 /// @param[in] part_id
12338 /// The part id.
12339 ///
12340 /// @param[in] x_index
12341 /// The x index/coordinate of the voxel.
12342 ///
12343 /// @param[in] y_index
12344 /// The y index/coordinate of the voxel.
12345 ///
12346 /// @param[in] z_index
12347 /// The z index/coordinate of the voxel.
12348 ///
12349 /// @param[in] values_array
12350 /// The values of the voxel.
12351 /// <!-- sizeparm value_count -->
12352 ///
12353 /// @param[in] value_count
12354 /// Should be equal to the volume's
12355 /// ::HAPI_VolumeInfo::tupleSize.
12356 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12357 ///
12359  HAPI_NodeId node_id,
12360  HAPI_PartId part_id,
12361  int x_index,
12362  int y_index,
12363  int z_index,
12364  const float * values_array,
12365  int value_count );
12366 
12367 /// @brief Set the values of a integer voxel in the volume.
12368 ///
12369 /// @ingroup Volumes
12370 ///
12371 /// @param[in] session
12372 /// The session of Houdini you are interacting with.
12373 /// See @ref HAPI_Sessions for more on sessions.
12374 /// Pass NULL to just use the default in-process session.
12375 /// <!-- default NULL -->
12376 ///
12377 /// @param[in] node_id
12378 /// The node id.
12379 ///
12380 /// @param[in] part_id
12381 /// The part id.
12382 ///
12383 /// @param[in] x_index
12384 /// The x index/coordinate of the voxel.
12385 ///
12386 /// @param[in] y_index
12387 /// The y index/coordinate of the voxel.
12388 ///
12389 /// @param[in] z_index
12390 /// The z index/coordinate of the voxel.
12391 ///
12392 /// @param[in] values_array
12393 /// The values of the voxel.
12394 /// <!-- sizeparm value_count -->
12395 ///
12396 /// @param[in] value_count
12397 /// Should be equal to the volume's
12398 /// ::HAPI_VolumeInfo::tupleSize.
12399 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12400 ///
12402  HAPI_NodeId node_id,
12403  HAPI_PartId part_id,
12404  int x_index,
12405  int y_index,
12406  int z_index,
12407  const int * values_array,
12408  int value_count );
12409 
12410 /// @brief Get the bounding values of a volume.
12411 ///
12412 /// @ingroup Volumes
12413 ///
12414 /// @param[in] session
12415 /// The session of Houdini you are interacting with.
12416 /// See @ref HAPI_Sessions for more on sessions.
12417 /// Pass NULL to just use the default in-process session.
12418 /// <!-- default NULL -->
12419 ///
12420 /// @param[in] node_id
12421 /// The node id.
12422 ///
12423 /// @param[in] part_id
12424 /// The part id.
12425 ///
12426 /// @param[out] x_min
12427 /// The minimum x value of the volume's bounding box.
12428 /// Can be null if you do not want this value.
12429 ///
12430 /// @param[out] y_min
12431 /// The minimum y value of the volume's bounding box.
12432 /// Can be null if you do not want this value.
12433 ///
12434 /// @param[out] z_min
12435 /// The minimum z value of the volume's bounding box.
12436 /// Can be null if you do not want this value.
12437 ///
12438 /// @param[out] x_max
12439 /// The maximum x value of the volume's bounding box.
12440 /// Can be null if you do not want this value.
12441 ///
12442 /// @param[out] y_max
12443 /// The maximum y value of the volume's bounding box.
12444 /// Can be null if you do not want this value.
12445 ///
12446 /// @param[out] z_max
12447 /// The maximum z value of the volume's bounding box.
12448 /// Can be null if you do not want this value.
12449 ///
12450 /// @param[out] x_center
12451 /// The x value of the volume's bounding box center.
12452 /// Can be null if you do not want this value.
12453 ///
12454 /// @param[out] y_center
12455 /// The y value of the volume's bounding box center.
12456 /// Can be null if you do not want this value.
12457 ///
12458 /// @param[out] z_center
12459 /// The z value of the volume's bounding box center.
12460 /// Can be null if you do not want this value.
12461 ///
12463  HAPI_NodeId node_id,
12464  HAPI_PartId part_id,
12465  float * x_min, float * y_min, float * z_min,
12466  float * x_max, float * y_max, float * z_max,
12467  float * x_center, float * y_center, float * z_center );
12468 
12469 /// @brief Set the height field data for a terrain volume with the values from
12470 /// a flattened 2D array of float.
12471 /// ::HAPI_SetVolumeInfo() should be called first to make sure that the
12472 /// volume and its info are initialized.
12473 ///
12474 /// @ingroup Volumes
12475 ///
12476 /// @param[in] session
12477 /// The session of Houdini you are interacting with.
12478 /// See @ref HAPI_Sessions for more on sessions.
12479 /// Pass NULL to just use the default in-process session.
12480 /// <!-- default NULL -->
12481 ///
12482 /// @param[in] node_id
12483 /// The node id.
12484 ///
12485 /// @param[in] part_id
12486 /// The part id.
12487 ///
12488 /// @param[in] name
12489 /// The name of the volume used for the heightfield.
12490 /// If set to "height" the values will be used for height information,
12491 /// if not, the data will used as a mask.
12492 /// <!-- string -->
12493 ///
12494 /// @param[in] values_array
12495 /// Heightfield flattened array. Should be at least the size of
12496 /// @p start + @p length.
12497 /// <!-- sizeparm length -->
12498 ///
12499 /// @param[in] start
12500 /// The start at least 0 and at most
12501 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p length.
12502 ///
12503 /// @param[in] length
12504 /// The length should be at least 1 or at most
12505 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p start.
12506 ///
12508  HAPI_NodeId node_id,
12509  HAPI_PartId part_id,
12510  const char * name,
12511  const float * values_array,
12512  int start, int length );
12513 
12514 /// @brief Retrieve the visualization meta-data of the volume.
12515 ///
12516 /// @ingroup Volumes
12517 ///
12518 /// @param[in] session
12519 /// The session of Houdini you are interacting with.
12520 /// See @ref HAPI_Sessions for more on sessions.
12521 /// Pass NULL to just use the default in-process session.
12522 /// <!-- default NULL -->
12523 ///
12524 /// @param[in] node_id
12525 /// The node id.
12526 ///
12527 /// @param[in] part_id
12528 /// The part id.
12529 ///
12530 /// @param[out] visual_info
12531 /// The meta-data associated with the visualization
12532 /// settings of the part specified by the previous
12533 /// parameters.
12534 ///
12536  HAPI_NodeId node_id,
12537  HAPI_PartId part_id,
12538  HAPI_VolumeVisualInfo * visual_info );
12539 
12540 /// @defgroup Curves
12541 /// Functions for working with curves
12542 
12543 /// @brief Retrieve any meta-data about the curves, including the
12544 /// curve's type, order, and periodicity.
12545 ///
12546 /// @ingroup Curves
12547 ///
12548 /// @param[in] session
12549 /// The session of Houdini you are interacting with.
12550 /// See @ref HAPI_Sessions for more on sessions.
12551 /// Pass NULL to just use the default in-process session.
12552 /// <!-- default NULL -->
12553 ///
12554 /// @param[in] node_id
12555 /// The node id.
12556 ///
12557 /// @param[in] part_id
12558 /// The part id.
12559 ///
12560 /// @param[out] info
12561 /// The curve info represents the meta-data about
12562 /// the curves, including the type, order,
12563 /// and periodicity.
12564 ///
12565 HAPI_DECL HAPI_GetCurveInfo( const HAPI_Session * session,
12566  HAPI_NodeId node_id,
12567  HAPI_PartId part_id,
12568  HAPI_CurveInfo * info );
12569 
12570 /// @brief Retrieve the number of vertices for each curve in the part.
12571 ///
12572 /// @ingroup Curves
12573 ///
12574 /// @param[in] session
12575 /// The session of Houdini you are interacting with.
12576 /// See @ref HAPI_Sessions for more on sessions.
12577 /// Pass NULL to just use the default in-process session.
12578 /// <!-- default NULL -->
12579 ///
12580 /// @param[in] node_id
12581 /// The node id.
12582 ///
12583 /// @param[in] part_id
12584 /// The part id.
12585 ///
12586 /// @param[out] counts_array
12587 /// The number of cvs each curve contains
12588 /// <!-- sizeparm length -->
12589 ///
12590 /// @param[in] start
12591 /// The index of the first curve.
12592 /// <!-- default 0 -->
12593 ///
12594 /// @param[in] length
12595 /// The number of curves' counts to retrieve.
12596 ///
12597 HAPI_DECL HAPI_GetCurveCounts( const HAPI_Session * session,
12598  HAPI_NodeId node_id,
12599  HAPI_PartId part_id,
12600  int * counts_array,
12601  int start, int length );
12602 
12603 /// @brief Retrieve the orders for each curve in the part if the
12604 /// curve has varying order.
12605 ///
12606 /// @ingroup Curves
12607 ///
12608 /// @param[in] session
12609 /// The session of Houdini you are interacting with.
12610 /// See @ref HAPI_Sessions for more on sessions.
12611 /// Pass NULL to just use the default in-process session.
12612 /// <!-- default NULL -->
12613 ///
12614 /// @param[in] node_id
12615 /// The node id.
12616 ///
12617 /// @param[in] part_id
12618 /// The part id.
12619 ///
12620 /// @param[out] orders_array
12621 /// The order of each curve will be returned in this
12622 /// array.
12623 /// <!-- sizeparm length -->
12624 ///
12625 /// @param[in] start
12626 /// The index of the first curve.
12627 /// <!-- default 0 -->
12628 ///
12629 /// @param[in] length
12630 /// The number of curves' orders to retrieve.
12631 ///
12632 HAPI_DECL HAPI_GetCurveOrders( const HAPI_Session * session,
12633  HAPI_NodeId node_id,
12634  HAPI_PartId part_id,
12635  int * orders_array,
12636  int start, int length );
12637 
12638 /// @brief Retrieve the knots of the curves in this part.
12639 ///
12640 /// @ingroup Curves
12641 ///
12642 /// @param[in] session
12643 /// The session of Houdini you are interacting with.
12644 /// See @ref HAPI_Sessions for more on sessions.
12645 /// Pass NULL to just use the default in-process session.
12646 /// <!-- default NULL -->
12647 ///
12648 /// @param[in] node_id
12649 /// The node id.
12650 ///
12651 /// @param[in] part_id
12652 /// The part id.
12653 ///
12654 /// @param[out] knots_array
12655 /// The knots of each curve will be returned in this
12656 /// array.
12657 /// <!-- sizeparm length -->
12658 ///
12659 /// @param[in] start
12660 /// The index of the first curve.
12661 /// <!-- default 0 -->
12662 ///
12663 /// @param[in] length
12664 /// The number of curves' knots to retrieve. The
12665 /// length of all the knots on a single curve is
12666 /// the order of that curve plus the number of
12667 /// vertices (see ::HAPI_GetCurveOrders(),
12668 /// and ::HAPI_GetCurveCounts()).
12669 ///
12670 HAPI_DECL HAPI_GetCurveKnots( const HAPI_Session * session,
12671  HAPI_NodeId node_id,
12672  HAPI_PartId part_id,
12673  float * knots_array,
12674  int start, int length );
12675 
12676 /// @brief Set meta-data for the curve mesh, including the
12677 /// curve type, order, and periodicity.
12678 ///
12679 /// @ingroup Curves
12680 ///
12681 /// @param[in] session
12682 /// The session of Houdini you are interacting with.
12683 /// See @ref HAPI_Sessions for more on sessions.
12684 /// Pass NULL to just use the default in-process session.
12685 /// <!-- default NULL -->
12686 ///
12687 /// @param[in] node_id
12688 /// The node id.
12689 ///
12690 /// @param[in] part_id
12691 /// Currently unused. Input asset geos are assumed
12692 /// to have only one part.
12693 ///
12694 /// @param[in] info
12695 /// The curve info represents the meta-data about
12696 /// the curves, including the type, order,
12697 /// and periodicity.
12698 ///
12699 HAPI_DECL HAPI_SetCurveInfo( const HAPI_Session * session,
12700  HAPI_NodeId node_id,
12701  HAPI_PartId part_id,
12702  const HAPI_CurveInfo * info );
12703 
12704 /// @brief Set the number of vertices for each curve in the part.
12705 ///
12706 /// @ingroup Curves
12707 ///
12708 /// @param[in] session
12709 /// The session of Houdini you are interacting with.
12710 /// See @ref HAPI_Sessions for more on sessions.
12711 /// Pass NULL to just use the default in-process session.
12712 /// <!-- default NULL -->
12713 ///
12714 /// @param[in] node_id
12715 /// The node id.
12716 ///
12717 /// @param[in] part_id
12718 /// Currently unused. Input asset geos are assumed
12719 /// to have only one part.
12720 ///
12721 /// @param[in] counts_array
12722 /// The number of cvs each curve contains.
12723 /// <!-- sizeparm length -->
12724 ///
12725 /// @param[in] start
12726 /// The index of the first curve.
12727 /// <!-- default 0 -->
12728 ///
12729 /// @param[in] length
12730 /// The number of curves' counts to set.
12731 /// <!-- source arglength(counts_array) -->
12732 ///
12733 HAPI_DECL HAPI_SetCurveCounts( const HAPI_Session * session,
12734  HAPI_NodeId node_id,
12735  HAPI_PartId part_id,
12736  const int * counts_array,
12737  int start, int length );
12738 
12739 /// @brief Set the orders for each curve in the part if the
12740 /// curve has varying order.
12741 ///
12742 /// @ingroup Curves
12743 ///
12744 /// @param[in] session
12745 /// The session of Houdini you are interacting with.
12746 /// See @ref HAPI_Sessions for more on sessions.
12747 /// Pass NULL to just use the default in-process session.
12748 /// <!-- default NULL -->
12749 ///
12750 /// @param[in] node_id
12751 /// The node id.
12752 ///
12753 /// @param[in] part_id
12754 /// Currently unused. Input asset geos are assumed
12755 /// to have only one part.
12756 ///
12757 /// @param[in] orders_array
12758 /// The orders of each curve.
12759 /// <!-- sizeparm length -->
12760 ///
12761 /// @param[in] start
12762 /// The index of the first curve.
12763 /// <!-- default 0 -->
12764 ///
12765 /// @param[in] length
12766 /// The number of curves' orders to retrieve.
12767 /// <!-- source arglength(orders_array) -->
12768 ///
12769 HAPI_DECL HAPI_SetCurveOrders( const HAPI_Session * session,
12770  HAPI_NodeId node_id,
12771  HAPI_PartId part_id,
12772  const int * orders_array,
12773  int start, int length );
12774 
12775 /// @brief Set the knots of the curves in this part.
12776 ///
12777 /// @ingroup Curves
12778 ///
12779 /// @param[in] session
12780 /// The session of Houdini you are interacting with.
12781 /// See @ref HAPI_Sessions for more on sessions.
12782 /// Pass NULL to just use the default in-process session.
12783 /// <!-- default NULL -->
12784 ///
12785 /// @param[in] node_id
12786 /// The node id.
12787 ///
12788 /// @param[in] part_id
12789 /// Currently unused. Input asset geos are assumed
12790 /// to have only one part.
12791 ///
12792 /// @param[in] knots_array
12793 /// The knots of each curve.
12794 /// <!-- sizeparm length -->
12795 ///
12796 /// @param[in] start
12797 /// The index of the first curve.
12798 /// <!-- default 0 -->
12799 ///
12800 /// @param[in] length
12801 /// The number of curves' knots to set. The
12802 /// length of all the knots on a single curve is
12803 /// the order of that curve plus the number of
12804 /// vertices (see ::HAPI_SetCurveOrders(),
12805 /// and ::HAPI_SetCurveCounts()).
12806 ///
12807 HAPI_DECL HAPI_SetCurveKnots( const HAPI_Session * session,
12808  HAPI_NodeId node_id,
12809  HAPI_PartId part_id,
12810  const float * knots_array,
12811  int start, int length );
12812 
12813 // INPUT CURVE INFO ---------------------------------------------------------
12814 
12815 /// @defgroup InputCurves
12816 /// Functions for working with curves
12817 
12818 /// @brief Retrieve meta-data about the input curves, including the
12819 /// curve's type, order, and whether or not the curve is closed and reversed.
12820 ///
12821 /// @ingroup InputCurves
12822 ///
12823 /// @param[in] session
12824 /// The session of Houdini you are interacting with.
12825 /// See @ref HAPI_Sessions for more on sessions.
12826 /// Pass NULL to just use the default in-process session.
12827 /// <!-- default NULL -->
12828 ///
12829 /// @param[in] node_id
12830 /// The node id.
12831 ///
12832 /// @param[in] part_id
12833 /// The part id.
12834 ///
12835 /// @param[out] info
12836 /// The curve info represents the meta-data about
12837 /// the curves, including the type, order,
12838 /// and closed and reversed values.
12839 ///
12841  HAPI_NodeId node_id,
12842  HAPI_PartId part_id,
12843  HAPI_InputCurveInfo * info );
12844 
12845 /// @brief Set meta-data for the input curves, including the
12846 /// curve type, order, reverse and closed properties.
12847 ///
12848 /// @ingroup InputCurves
12849 ///
12850 /// @param[in] session
12851 /// The session of Houdini you are interacting with.
12852 /// See @ref HAPI_Sessions for more on sessions.
12853 /// Pass NULL to just use the default in-process session.
12854 /// <!-- default NULL -->
12855 ///
12856 /// @param[in] node_id
12857 /// The node id.
12858 ///
12859 /// @param[in] part_id
12860 /// Currently unused. Input asset geos are assumed
12861 /// to have only one part.
12862 ///
12863 /// @param[in] info
12864 /// The curve info represents the meta-data about
12865 /// the curves, including the type, order,
12866 /// and closed and reverse properties.
12867 ///
12869  HAPI_NodeId node_id,
12870  HAPI_PartId part_id,
12871  const HAPI_InputCurveInfo * info );
12872 
12873 /// @brief Sets the positions for input curves, doing checks for
12874 /// curve validity, and adjusting the curve settings accordingly.
12875 /// Will also cook the node.
12876 ///
12877 /// @ingroup InputCurves
12878 ///
12879 /// @param[in] session
12880 /// The session of Houdini you are interacting with.
12881 /// See @ref HAPI_Sessions for more on sessions.
12882 /// Pass NULL to just use the default in-process session.
12883 /// <!-- default NULL -->
12884 ///
12885 /// @param[in] node_id
12886 /// The node id.
12887 ///
12888 /// @param[in] part_id
12889 /// Currently unused. Input asset geos are assumed
12890 /// to have only one part.
12891 ///
12892 /// @param[in] positions_array
12893 /// A float array representing the positions attribute.
12894 /// It will read the array assuming a tuple size of 3.
12895 /// Note that this function does not do any coordinate axes
12896 /// conversion.
12897 /// <!-- sizeparm length -->
12898 ///
12899 /// @param[in] start
12900 /// The index of the first position in positions_array.
12901 /// <!-- default 0 -->
12902 ///
12903 /// @param[in] length
12904 /// The size of the positions array.
12905 /// <!-- source arglength(positions_array) -->
12906 ///
12908  const HAPI_Session* session,
12909  HAPI_NodeId node_id,
12910  HAPI_PartId part_id,
12911  const float* positions_array,
12912  int start,
12913  int length);
12914 
12915 /// @brief Sets the positions for input curves, doing checks for
12916 /// curve validity, and adjusting the curve settings accordingly.
12917 /// Will also cook the node. Additionally, adds rotation and scale
12918 /// attributes to the curve.
12919 ///
12920 /// @ingroup InputCurves
12921 ///
12922 /// @param[in] session
12923 /// The session of Houdini you are interacting with.
12924 /// See @ref HAPI_Sessions for more on sessions.
12925 /// Pass NULL to just use the default in-process session.
12926 /// <!-- default NULL -->
12927 ///
12928 /// @param[in] node_id
12929 /// The node id.
12930 ///
12931 /// @param[in] part_id
12932 /// Currently unused. Input asset geos are assumed
12933 /// to have only one part.
12934 ///
12935 /// @param[in] positions_array
12936 /// A float array representing the positions attribute.
12937 /// It will read the array assuming a tuple size of 3.
12938 /// Note that this function does not do any coordinate axes
12939 /// conversion.
12940 /// <!-- sizeparm positions_length -->
12941 ///
12942 /// @param[in] positions_start
12943 /// The index of the first position in positions_array.
12944 /// <!-- default 0 -->
12945 ///
12946 /// @param[in] positions_length
12947 /// The size of the positions array.
12948 /// <!-- source arglength(positions_array) -->
12949 ///
12950 /// @param[in] rotations_array
12951 /// A float array representing the rotation (rot) attribute.
12952 /// It will read the array assuming a tuple size of 4
12953 /// representing quaternion values
12954 /// <!-- sizeparm rotations_length -->
12955 ///
12956 /// @param[in] rotations_start
12957 /// The index of the first rotation in rotations_array.
12958 /// <!-- default 0 -->
12959 ///
12960 /// @param[in] rotations_length
12961 /// The size of the rotations array.
12962 /// <!-- source arglength(rotations_array) -->
12963 ///
12964 /// @param[in] scales_array
12965 /// A float array representing the scale attribute.
12966 /// It will read the array assuming a tuple size of 3
12967 /// <!-- sizeparm scales_length -->
12968 ///
12969 /// @param[in] scales_start
12970 /// The index of the first scale in scales_array.
12971 /// <!-- default 0 -->
12972 ///
12973 /// @param[in] scales_length
12974 /// The size of the scales array.
12975 /// <!-- source arglength(scales_array) -->
12976 ///
12978  const HAPI_Session* session,
12979  HAPI_NodeId node_id,
12980  HAPI_PartId part_id,
12981  const float* positions_array,
12982  int positions_start,
12983  int positions_length,
12984  const float* rotations_array,
12985  int rotations_start,
12986  int rotations_length,
12987  const float * scales_array,
12988  int scales_start,
12989  int scales_length);
12990 
12991 // BASIC PRIMITIVES ---------------------------------------------------------
12992 
12993 /// @brief Get the box info on a geo part (if the part is a box).
12994 ///
12995 /// @ingroup Geometry
12996 ///
12997 /// @param[in] session
12998 /// The session of Houdini you are interacting with.
12999 /// See @ref HAPI_Sessions for more on sessions.
13000 /// Pass NULL to just use the default in-process session.
13001 /// <!-- default NULL -->
13002 ///
13003 /// @param[in] geo_node_id
13004 /// The geo node id.
13005 ///
13006 /// @param[in] part_id
13007 /// The part id of the
13008 ///
13009 /// @param[out] box_info
13010 /// The returned box info.
13011 ///
13012 HAPI_DECL HAPI_GetBoxInfo( const HAPI_Session * session,
13013  HAPI_NodeId geo_node_id,
13014  HAPI_PartId part_id,
13015  HAPI_BoxInfo * box_info );
13016 
13017 /// @brief Get the sphere info on a geo part (if the part is a sphere).
13018 ///
13019 /// @ingroup Geometry
13020 ///
13021 /// @param[in] session
13022 /// The session of Houdini you are interacting with.
13023 /// See @ref HAPI_Sessions for more on sessions.
13024 /// Pass NULL to just use the default in-process session.
13025 /// <!-- default NULL -->
13026 ///
13027 /// @param[in] geo_node_id
13028 /// The geo node id.
13029 ///
13030 /// @param[in] part_id
13031 /// The part id of the
13032 ///
13033 /// @param[out] sphere_info
13034 /// The returned sphere info.
13035 ///
13036 HAPI_DECL HAPI_GetSphereInfo( const HAPI_Session * session,
13037  HAPI_NodeId geo_node_id,
13038  HAPI_PartId part_id,
13039  HAPI_SphereInfo * sphere_info );
13040 
13041 /// @defgroup Caching
13042 /// Functions for working with memory and file caches
13043 
13044 /// @brief Get the number of currently active caches.
13045 ///
13046 /// @ingroup Caching
13047 ///
13048 /// @param[in] session
13049 /// The session of Houdini you are interacting with.
13050 /// See @ref HAPI_Sessions for more on sessions.
13051 /// Pass NULL to just use the default in-process session.
13052 /// <!-- default NULL -->
13053 ///
13054 /// @param[out] active_cache_count
13055 /// The number of currently active caches.
13056 ///
13058  int * active_cache_count );
13059 
13060 /// @brief Get the names of the currently active caches.
13061 ///
13062 /// Requires a valid active cache count which you get from:
13063 /// ::HAPI_GetActiveCacheCount().
13064 ///
13065 /// @ingroup Caching
13066 ///
13067 /// @param[in] session
13068 /// The session of Houdini you are interacting with.
13069 /// See @ref HAPI_Sessions for more on sessions.
13070 /// Pass NULL to just use the default in-process session.
13071 /// <!-- default NULL -->
13072 ///
13073 /// @param[out] cache_names_array
13074 /// String array with the returned cache names. Must be
13075 /// at least the size of @a active_cache_count.
13076 /// <!-- sizeparm active_cache_count -->
13077 ///
13078 /// @param[in] active_cache_count
13079 /// The count returned by ::HAPI_GetActiveCacheCount().
13080 /// <!-- source ::HAPI_GetActiveCacheCount -->
13081 ///
13083  HAPI_StringHandle * cache_names_array,
13084  int active_cache_count );
13085 
13086 /// @brief Lets you inspect specific properties of the different memory
13087 /// caches in the current Houdini context.
13088 ///
13089 /// @ingroup Caching
13090 ///
13091 /// @param[in] session
13092 /// The session of Houdini you are interacting with.
13093 /// See @ref HAPI_Sessions for more on sessions.
13094 /// Pass NULL to just use the default in-process session.
13095 /// <!-- default NULL -->
13096 ///
13097 /// @param[in] cache_name
13098 /// Cache name from ::HAPI_GetActiveCacheNames().
13099 /// <!-- string -->
13100 ///
13101 /// @param[in] cache_property
13102 /// The specific property of the cache to get the value for.
13103 ///
13104 /// @param[out] property_value
13105 /// Returned property value.
13106 ///
13108  const char * cache_name,
13109  HAPI_CacheProperty cache_property,
13110  int * property_value );
13111 
13112 /// @brief Lets you modify specific properties of the different memory
13113 /// caches in the current Houdini context. This includes clearing
13114 /// caches, reducing their memory use, or changing how memory limits
13115 /// are respected by a cache.
13116 ///
13117 /// @ingroup Caching
13118 ///
13119 /// @param[in] session
13120 /// The session of Houdini you are interacting with.
13121 /// See @ref HAPI_Sessions for more on sessions.
13122 /// Pass NULL to just use the default in-process session.
13123 /// <!-- default NULL -->
13124 ///
13125 /// @param[in] cache_name
13126 /// Cache name from ::HAPI_GetActiveCacheNames().
13127 /// <!-- string -->
13128 ///
13129 /// @param[in] cache_property
13130 /// The specific property of the cache to modify.
13131 ///
13132 /// @param[in] property_value
13133 /// The new property value.
13134 ///
13136  const char * cache_name,
13137  HAPI_CacheProperty cache_property,
13138  int property_value );
13139 
13140 /// @brief Saves a geometry to file. The type of file to save is
13141 /// to be determined by the extension ie. .bgeo, .obj
13142 ///
13143 /// @ingroup Caching
13144 ///
13145 /// @param[in] session
13146 /// The session of Houdini you are interacting with.
13147 /// See @ref HAPI_Sessions for more on sessions.
13148 /// Pass NULL to just use the default in-process session.
13149 /// <!-- default NULL -->
13150 ///
13151 /// @param[in] node_id
13152 /// The node id.
13153 ///
13154 /// @param[in] file_name
13155 /// The name of the file to be saved. The extension
13156 /// of the file determines its type.
13157 /// <!-- string -->
13158 ///
13159 HAPI_DECL HAPI_SaveGeoToFile( const HAPI_Session * session,
13160  HAPI_NodeId node_id,
13161  const char * file_name );
13162 
13163 /// @brief Loads a geometry file and put its contents onto a SOP
13164 /// node.
13165 ///
13166 /// @ingroup Caching
13167 ///
13168 /// @param[in] session
13169 /// The session of Houdini you are interacting with.
13170 /// See @ref HAPI_Sessions for more on sessions.
13171 /// Pass NULL to just use the default in-process session.
13172 /// <!-- default NULL -->
13173 ///
13174 /// @param[in] node_id
13175 /// The node id.
13176 ///
13177 /// @param[in] file_name
13178 /// The name of the file to be loaded
13179 /// <!-- string -->
13180 ///
13182  HAPI_NodeId node_id,
13183  const char * file_name );
13184 
13185 /// @brief Saves the node and all its contents to file.
13186 /// The saved file can be loaded by calling ::HAPI_LoadNodeFromFile.
13187 ///
13188 /// @ingroup Caching
13189 ///
13190 /// @param[in] session
13191 /// The session of Houdini you are interacting with.
13192 /// See @ref HAPI_Sessions for more on sessions.
13193 /// Pass NULL to just use the default in-process session.
13194 /// <!-- default NULL -->
13195 ///
13196 /// @param[in] node_id
13197 /// The node id.
13198 ///
13199 /// @param[in] file_name
13200 /// The name of the file to be saved. The extension
13201 /// of the file determines its type.
13202 /// <!-- string -->
13203 ///
13204 HAPI_DECL HAPI_SaveNodeToFile( const HAPI_Session * session,
13205  HAPI_NodeId node_id,
13206  const char * file_name );
13207 
13208 /// @brief Loads and creates a previously saved node and all
13209 /// its contents from given file.
13210 /// The saved file must have been created by calling
13211 /// ::HAPI_SaveNodeToFile.
13212 ///
13213 /// @ingroup Caching
13214 ///
13215 /// @param[in] session
13216 /// The session of Houdini you are interacting with.
13217 /// See @ref HAPI_Sessions for more on sessions.
13218 /// Pass NULL to just use the default in-process session.
13219 /// <!-- default NULL -->
13220 ///
13221 /// @param[in] file_name
13222 /// The name of the file to be loaded
13223 /// <!-- string -->
13224 ///
13225 /// @param[in] parent_node_id
13226 /// The parent node id of the Geometry object.
13227 ///
13228 /// @param[in] node_label
13229 /// The name of the new Geometry object.
13230 /// <!-- string -->
13231 ///
13232 /// @param[in] cook_on_load
13233 /// Set to true if you wish the nodes to cook as soon
13234 /// as they are created. Otherwise, you will have to
13235 /// call ::HAPI_CookNode() explicitly for each after you
13236 /// call this function.
13237 ///
13238 /// @param[out] new_node_id
13239 /// The newly created node id.
13240 ///
13242  const char * file_name,
13243  HAPI_NodeId parent_node_id,
13244  const char * node_label,
13245  HAPI_Bool cook_on_load,
13246  HAPI_NodeId * new_node_id );
13247 
13248 /// @brief Cache the current state of the geo to memory, given the
13249 /// format, and return the size. Use this size with your call
13250 /// to ::HAPI_SaveGeoToMemory() to copy the cached geo to your
13251 /// buffer. It is guaranteed that the size will not change between
13252 /// your call to ::HAPI_GetGeoSize() and ::HAPI_SaveGeoToMemory().
13253 ///
13254 /// @ingroup Caching
13255 ///
13256 /// @param[in] session
13257 /// The session of Houdini you are interacting with.
13258 /// See @ref HAPI_Sessions for more on sessions.
13259 /// Pass NULL to just use the default in-process session.
13260 /// <!-- default NULL -->
13261 ///
13262 /// @param[in] node_id
13263 /// The node id.
13264 ///
13265 /// @param[in] format
13266 /// The file format, ie. ".obj", ".bgeo.sc" etc.
13267 /// <!-- string -->
13268 ///
13269 /// @param[out] size
13270 /// The size of the buffer required to hold the output.
13271 ///
13272 HAPI_DECL HAPI_GetGeoSize( const HAPI_Session * session,
13273  HAPI_NodeId node_id,
13274  const char * format,
13275  int * size );
13276 
13277 /// @brief Saves the cached geometry to your buffer in memory,
13278 /// whose format and required size is identified by the call to
13279 /// ::HAPI_GetGeoSize(). The call to ::HAPI_GetGeoSize() is
13280 /// required as ::HAPI_GetGeoSize() does the actual saving work.
13281 ///
13282 /// Also note that this call to ::HAPI_SaveGeoToMemory will delete
13283 /// the internal geo buffer that was cached in the previous call
13284 /// to ::HAPI_GetGeoSize(). This means that you will need to call
13285 /// ::HAPI_GetGeoSize() again before you can call this function.
13286 ///
13287 /// @ingroup Caching
13288 ///
13289 /// @param[in] session
13290 /// The session of Houdini you are interacting with.
13291 /// See @ref HAPI_Sessions for more on sessions.
13292 /// Pass NULL to just use the default in-process session.
13293 /// <!-- default NULL -->
13294 ///
13295 /// @param[in] node_id
13296 /// The node id.
13297 ///
13298 /// @param[out] buffer
13299 /// The buffer we will write into.
13300 /// <!-- sizeparm length -->
13301 ///
13302 /// @param[in] length
13303 /// The size of the buffer passed in.
13304 /// <!-- source ::HAPI_GetGeoSize -->
13305 ///
13307  HAPI_NodeId node_id,
13308  char * buffer,
13309  int length );
13310 
13311 /// @brief Loads a geometry from memory and put its
13312 /// contents onto a SOP node.
13313 ///
13314 /// @ingroup Caching
13315 ///
13316 /// @param[in] session
13317 /// The session of Houdini you are interacting with.
13318 /// See @ref HAPI_Sessions for more on sessions.
13319 /// Pass NULL to just use the default in-process session.
13320 /// <!-- default NULL -->
13321 ///
13322 /// @param[in] node_id
13323 /// The node id.
13324 ///
13325 /// @param[in] format
13326 /// The file format, ie. "obj", "bgeo" etc.
13327 /// <!-- string -->
13328 ///
13329 /// @param[in] buffer
13330 /// The buffer we will read the geometry from.
13331 /// <!-- sizeparm length -->
13332 ///
13333 /// @param[in] length
13334 /// The size of the buffer passed in.
13335 /// <!-- source arglength(buffer) -->
13336 ///
13338  HAPI_NodeId node_id,
13339  const char * format,
13340  const char * buffer,
13341  int length );
13342 
13343 /// @brief Set the specified node's display flag.
13344 ///
13345 /// @ingroup Nodes
13346 ///
13347 /// @param[in] session
13348 /// The session of Houdini you are interacting with.
13349 /// See @ref HAPI_Sessions for more on sessions.
13350 /// Pass NULL to just use the default in-process session.
13351 /// <!-- default NULL -->
13352 ///
13353 /// @param[in] node_id
13354 /// The node id.
13355 ///
13356 /// @param[in] onOff
13357 /// Display flag.
13358 ///
13359 HAPI_DECL HAPI_SetNodeDisplay( const HAPI_Session * session,
13360  HAPI_NodeId node_id,
13361  int onOff );
13362 
13363 /// @brief Get the specified node's total cook count, including
13364 /// its children, if specified.
13365 ///
13366 /// @ingroup Nodes
13367 ///
13368 /// @param[in] session
13369 /// The session of Houdini you are interacting with.
13370 /// See @ref HAPI_Sessions for more on sessions.
13371 /// Pass NULL to just use the default in-process session.
13372 /// <!-- default NULL -->
13373 ///
13374 /// @param[in] node_id
13375 /// The node id.
13376 ///
13377 /// @param[in] node_type_filter
13378 /// The node type by which to filter the children.
13379 ///
13380 /// @param[in] node_flags_filter
13381 /// The node flags by which to filter the children.
13382 ///
13383 /// @param[in] recursive
13384 /// Whether or not to include the specified node's
13385 /// children cook count in the tally.
13386 ///
13387 /// @param[out] count
13388 /// The number of cooks in total for this session.
13389 ///
13391  HAPI_NodeId node_id,
13392  HAPI_NodeTypeBits node_type_filter,
13393  HAPI_NodeFlagsBits node_flags_filter,
13394  HAPI_Bool recursive,
13395  int * count );
13396 
13397 /// @defgroup SessionSync
13398 /// Functions for working with SessionSync
13399 
13400 /// @brief Enable or disable SessionSync mode.
13401 ///
13402 /// @ingroup SessionSync
13403 ///
13404 /// @param[in] session
13405 /// The session of Houdini you are interacting with.
13406 /// See @ref HAPI_Sessions for more on sessions.
13407 /// Pass NULL to just use the default in-process session.
13408 /// <!-- default NULL -->
13409 ///
13410 /// @param[in] enable
13411 /// Enable or disable SessionSync mode.
13412 ///
13413 HAPI_DECL HAPI_SetSessionSync( const HAPI_Session * session,
13414  HAPI_Bool enable );
13415 
13416 /// @brief Get the ::HAPI_Viewport info for synchronizing viewport in
13417 /// SessionSync. When SessionSync is running this will
13418 /// return Houdini's current viewport information.
13419 ///
13420 /// @ingroup SessionSync
13421 ///
13422 /// @param[in] session
13423 /// The session of Houdini you are interacting with.
13424 /// See @ref HAPI_Sessions for more on sessions.
13425 /// Pass NULL to just use the default in-process session.
13426 ///
13427 /// @param[out] viewport
13428 /// The output ::HAPI_Viewport.
13429 ///
13430 HAPI_DECL HAPI_GetViewport( const HAPI_Session * session,
13431  HAPI_Viewport * viewport );
13432 
13433 /// @brief Set the ::HAPI_Viewport info for synchronizing viewport in
13434 /// SessionSync. When SessionSync is running, this can be
13435 /// used to set the viewport information which Houdini
13436 /// will then synchronizse with for its viewport.
13437 ///
13438 /// @ingroup SessionSync
13439 ///
13440 /// @param[in] session
13441 /// The session of Houdini you are interacting with.
13442 /// See @ref HAPI_Sessions for more on sessions.
13443 /// Pass NULL to just use the default in-process session.
13444 ///
13445 /// @param[in] viewport
13446 /// A ::HAPI_Viewport that stores the viewport.
13447 ///
13448 HAPI_DECL HAPI_SetViewport( const HAPI_Session * session,
13449  const HAPI_Viewport * viewport );
13450 
13451 /// @brief Get the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13452 /// state between Houdini and Houdini Engine integrations.
13453 ///
13454 /// @ingroup SessionSync
13455 ///
13456 /// @param[in] session
13457 /// The session of Houdini you are interacting with.
13458 /// See @ref HAPI_Sessions for more on sessions.
13459 /// Pass NULL to just use the default in-process session.
13460 ///
13461 /// @param[out] session_sync_info
13462 /// The output ::HAPI_SessionSyncInfo.
13463 ///
13465  const HAPI_Session * session,
13466  HAPI_SessionSyncInfo * session_sync_info );
13467 
13468 /// @brief Set the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13469 /// state between Houdini and Houdini Engine integrations.
13470 ///
13471 /// @ingroup SessionSync
13472 ///
13473 /// @param[in] session
13474 /// The session of Houdini you are interacting with.
13475 /// See @ref HAPI_Sessions for more on sessions.
13476 /// Pass NULL to just use the default in-process session.
13477 ///
13478 /// @param[in] session_sync_info
13479 /// A ::HAPI_SessionSyncInfo that stores the state.
13480 ///
13482  const HAPI_Session * session,
13483  const HAPI_SessionSyncInfo * session_sync_info );
13484 
13485 /// @defgroup PDG PDG/TOPs
13486 /// Functions for working with PDG/TOPs
13487 
13488 /// @brief Return an array of PDG graph context names and ids, the first
13489 /// count names will be returned. These ids can be used
13490 /// with ::HAPI_GetPDGEvents and ::HAPI_GetPDGState. The values
13491 /// of the names can be retrieved with ::HAPI_GetString.
13492 ///
13493 /// @ingroup PDG
13494 ///
13495 /// @param[in] session
13496 /// The session of Houdini you are interacting with.
13497 /// See @ref HAPI_Sessions for more on sessions.
13498 /// Pass NULL to just use the default in-process session.
13499 /// <!-- default NULL -->
13500 ///
13501 /// @param[out] context_names_array
13502 /// Array of context names stored as ::HAPI_StringHandle
13503 /// at least the size of length. These can be used
13504 /// with ::HAPI_GetString() and are valid until the
13505 /// next call to this function.
13506 /// <!-- sizeparm length -->
13507 ///
13508 /// @param[out] context_id_array
13509 /// Array of graph context ids at least the size of length.
13510 /// <!-- sizeparm length -->
13511 ///
13512 /// @param[in] start
13513 /// First index of range. Must be at least @c 0 and at most
13514 /// @c context_count - 1 where @c context_count is the count
13515 /// returned by ::HAPI_GetPDGGraphContextsCount()
13516 /// <!-- min 0 -->
13517 /// <!-- max ::HAPI_GetPDGGraphContextsCount -->
13518 /// <!-- default 0 -->
13519 ///
13520 /// @param[in] length
13521 /// Given @c num_contexts returned by ::HAPI_GetPDGGraphContextsCount(),
13522 /// length should be at least @c 0 and at most <tt>num_contexts - start.</tt>
13523 /// <!-- default 0 -->
13525  HAPI_StringHandle * context_names_array,
13526  HAPI_PDG_GraphContextId * context_id_array,
13527  int start,
13528  int length );
13529 
13530 /// @brief Return the total number of PDG graph contexts found.
13531 ///
13532 /// @ingroup PDG
13533 ///
13534 /// @param[in] session
13535 /// The session of Houdini you are interacting with.
13536 /// See @ref HAPI_Sessions for more on sessions.
13537 /// Pass NULL to just use the default in-process session.
13538 /// <!-- default NULL -->
13539 ///
13540 /// @param[out] num_contexts
13541 /// Total PDG graph contexts count.
13542 ///
13544  const HAPI_Session* session,
13545  int* num_contexts );
13546 
13547 /// @brief Get the PDG graph context for the specified TOP node.
13548 ///
13549 /// @ingroup PDG
13550 ///
13551 /// @param[in] session
13552 /// The session of Houdini you are interacting with.
13553 /// See @ref HAPI_Sessions for more on sessions.
13554 /// Pass NULL to just use the default in-process session.
13555 /// <!-- default NULL -->
13556 ///
13557 /// @param[in] top_node_id
13558 /// The id of the TOP node to query its graph context.
13559 ///
13560 /// @param[out] context_id
13561 /// The PDG graph context id.
13562 ///
13564  HAPI_NodeId top_node_id,
13565  HAPI_PDG_GraphContextId * context_id );
13566 
13567 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13568 /// Progress can be checked with ::HAPI_GetPDGState() and
13569 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13570 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13571 /// discarded at the start of the cook.
13572 ///
13573 /// If there are any $HIPFILE file dependencies on nodes involved in the cook
13574 /// a hip file will be automatically saved to $HOUDINI_TEMP_DIR directory so
13575 /// that it can be copied to the working directory by the scheduler. This means
13576 /// $HIP will be equal to $HOUDINI_TEMP_DIR.
13577 ///
13578 /// @ingroup PDG
13579 ///
13580 /// @param[in] session
13581 /// The session of Houdini you are interacting with.
13582 /// See @ref HAPI_Sessions for more on sessions.
13583 /// Pass NULL to just use the default in-process session.
13584 ///
13585 /// @param[in] cook_node_id
13586 /// The node id of a TOP node for the cook operation.
13587 ///
13588 /// @param[in] generate_only
13589 /// 1 means only static graph generation will done. 0 means
13590 /// a full graph cook. Generation is always blocking.
13591 ///
13592 /// @param[in] blocking
13593 /// 0 means return immediately and cooking will be done
13594 /// asynchronously. 1 means return when cooking completes.
13595 ///
13596 HAPI_DECL HAPI_CookPDG( const HAPI_Session * session,
13597  HAPI_NodeId cook_node_id,
13598  int generate_only,
13599  int blocking );
13600 
13601 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13602 /// Progress can be checked with ::HAPI_GetPDGState() and
13603 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13604 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13605 /// discarded at the start of the cook.
13606 ///
13607 /// If there are any $HIPFILE file dependencies on nodes involved in the
13608 /// cook a hip file will be automatically saved to $HOUDINI_TEMP_DIR
13609 /// directory so that it can be copied to the working directory by the
13610 /// scheduler. This means $HIP will be equal to $HOUDINI_TEMP_DIR.
13611 ///
13612 /// If cook_node_id is a network / subnet, then if it has output nodes
13613 /// it cooks all of its output nodes and not just output 0. If it does
13614 /// not have output nodes it cooks the node with the output flag.
13615 ///
13616 /// @ingroup PDG
13617 ///
13618 /// @param[in] session
13619 /// The session of Houdini you are interacting with.
13620 /// See @ref HAPI_Sessions for more on sessions.
13621 /// Pass NULL to just use the default in-process session.
13622 ///
13623 /// @param[in] cook_node_id
13624 /// The node id of a TOP node for the cook operation.
13625 ///
13626 /// @param[in] generate_only
13627 /// 1 means only static graph generation will done. 0 means
13628 /// a full graph cook. Generation is always blocking.
13629 ///
13630 /// @param[in] blocking
13631 /// 0 means return immediately and cooking will be done
13632 /// asynchronously. 1 means return when cooking completes.
13633 ///
13635  const HAPI_Session* session,
13636  HAPI_NodeId cook_node_id,
13637  int generate_only,
13638  int blocking);
13639 
13640 /// @brief Returns PDG events that have been collected. Calling this function
13641 /// will remove those events from the queue. Events collection is restarted
13642 /// by calls to ::HAPI_CookPDG().
13643 ///
13644 /// @ingroup PDG
13645 ///
13646 ///
13647 /// @param[in] session
13648 /// The session of Houdini you are interacting with.
13649 /// See @ref HAPI_Sessions for more on sessions.
13650 /// Pass NULL to just use the default in-process session.
13651 /// <!-- default NULL -->
13652 ///
13653 /// @param[in] graph_context_id
13654 /// The id of the graph context
13655 ///
13656 /// @param[out] event_array
13657 /// buffer of ::HAPI_PDG_EventInfo of size at least length.
13658 /// <!-- sizeparm length -->
13659 ///
13660 /// @param[in] length
13661 /// The size of the buffer passed in.
13662 ///
13663 /// @param[out] event_count
13664 /// Number of events removed from queue and copied to buffer.
13665 ///
13666 /// @param[out] remaining_events
13667 /// Number of queued events remaining after this operation.
13668 ///
13669 HAPI_DECL HAPI_GetPDGEvents( const HAPI_Session * session,
13670  HAPI_PDG_GraphContextId graph_context_id,
13671  HAPI_PDG_EventInfo * event_array,
13672  int length,
13673  int * event_count,
13674  int * remaining_events );
13675 
13676 /// @brief Gets the state of a PDG graph
13677 ///
13678 /// @ingroup PDG
13679 ///
13680 ///
13681 /// @param[in] session
13682 /// The session of Houdini you are interacting with.
13683 /// See @ref HAPI_Sessions for more on sessions.
13684 /// Pass NULL to just use the default in-process session.
13685 /// <!-- default NULL -->
13686 ///
13687 /// @param[in] graph_context_id
13688 /// The graph context id
13689 ///
13690 /// @param[out] pdg_state
13691 /// One of ::HAPI_PDG_State.
13692 ///
13693 HAPI_DECL HAPI_GetPDGState( const HAPI_Session * session,
13694  HAPI_PDG_GraphContextId graph_context_id,
13695  int * pdg_state );
13696 
13697 /// @brief Creates a new pending workitem for the given node. The workitem
13698 /// will not be submitted to the graph until it is committed with
13699 /// ::HAPI_CommitWorkitems(). The node is expected to be a generator type.
13700 ///
13701 /// @ingroup PDG
13702 ///
13703 /// @param[in] session
13704 /// The session of Houdini you are interacting with.
13705 /// See @ref HAPI_Sessions for more on sessions.
13706 /// Pass NULL to just use the default in-process session.
13707 /// <!-- default NULL -->
13708 ///
13709 /// @param[in] node_id
13710 /// The node id.
13711 ///
13712 /// @param[out] workitem_id
13713 /// The id of the pending workitem.
13714 ///
13715 /// @param[in] name
13716 /// The null-terminated name of the workitem. The name will
13717 /// be automatically suffixed to make it unique.
13718 /// <!-- string -->
13719 ///
13720 /// @param[in] index
13721 /// The index of the workitem. The semantics of the index
13722 /// are user defined.
13723 ///
13725 HAPI_CreateWorkitem( const HAPI_Session * session,
13726  HAPI_NodeId node_id,
13727  HAPI_PDG_WorkItemId * workitem_id,
13728  const char * name,
13729  int index );
13730 
13731 /// @brief Retrieves the info of a given workitem by id.
13732 ///
13733 /// @ingroup PDG
13734 ///
13735 /// @param[in] session
13736 /// The session of Houdini you are interacting with.
13737 /// See @ref HAPI_Sessions for more on sessions.
13738 /// Pass NULL to just use the default in-process session.
13739 /// <!-- default NULL -->
13740 ///
13741 /// @param[in] graph_context_id
13742 /// The graph context that the workitem is in.
13743 ///
13744 /// @param[in] workitem_id
13745 /// The id of the workitem.
13746 ///
13747 /// @param[out] workitem_info
13748 /// The returned ::HAPI_PDG_WorkItemInfo for the workitem. Note
13749 /// that the enclosed string handle is only valid until the next
13750 /// call to this function.
13751 ///
13753 HAPI_GetWorkitemInfo( const HAPI_Session * session,
13754  HAPI_PDG_GraphContextId graph_context_id,
13755  HAPI_PDG_WorkItemId workitem_id,
13756  HAPI_PDG_WorkItemInfo * workitem_info );
13757 
13758 /// @brief Adds integer data to a pending PDG workitem data member for the given node.
13759 ///
13760 /// @ingroup PDG
13761 ///
13762 /// @param[in] session
13763 /// The session of Houdini you are interacting with.
13764 /// See @ref HAPI_Sessions for more on sessions.
13765 /// Pass NULL to just use the default in-process session.
13766 /// <!-- default NULL -->
13767 ///
13768 /// @param[in] node_id
13769 /// The node id.
13770 ///
13771 /// @param[in] workitem_id
13772 /// The id of the pending workitem returned by ::HAPI_CreateWorkitem()
13773 ///
13774 /// @param[in] data_name
13775 /// null-terminated name of the data member
13776 /// <!-- string -->
13777 ///
13778 /// @param[in] values_array
13779 /// array of integer values
13780 /// <!-- sizeparm length -->
13781 ///
13782 /// @param[in] length
13783 /// number of values to copy from values_array to the parameter
13784 ///
13786 HAPI_SetWorkitemIntData( const HAPI_Session * session,
13787  HAPI_NodeId node_id,
13788  HAPI_PDG_WorkItemId workitem_id,
13789  const char * data_name,
13790  const int * values_array,
13791  int length );
13792 
13793 /// @brief Adds float data to a pending PDG workitem data member for the given node.
13794 ///
13795 /// @ingroup PDG
13796 ///
13797 /// @param[in] session
13798 /// The session of Houdini you are interacting with.
13799 /// See @ref HAPI_Sessions for more on sessions.
13800 /// Pass NULL to just use the default in-process session.
13801 /// <!-- default NULL -->
13802 ///
13803 /// @param[in] node_id
13804 /// The node id.
13805 ///
13806 /// @param[in] workitem_id
13807 /// The id of the pending workitem returned by ::HAPI_CreateWorkitem()
13808 ///
13809 /// @param[in] data_name
13810 /// null-terminated name of the workitem data member
13811 /// <!-- string -->
13812 ///
13813 /// @param[in] values_array
13814 /// array of float values
13815 /// <!-- sizeparm length -->
13816 ///
13817 /// @param[in] length
13818 /// number of values to copy from values_array to the parameter
13819 ///
13821 HAPI_SetWorkitemFloatData( const HAPI_Session * session,
13822  HAPI_NodeId node_id,
13823  HAPI_PDG_WorkItemId workitem_id,
13824  const char * data_name,
13825  const float * values_array,
13826  int length );
13827 
13828 /// @brief Adds integer data to a pending PDG workitem data member for the given node.
13829 ///
13830 /// @ingroup PDG
13831 ///
13832 /// @param[in] session
13833 /// The session of Houdini you are interacting with.
13834 /// See @ref HAPI_Sessions for more on sessions.
13835 /// Pass NULL to just use the default in-process session.
13836 /// <!-- default NULL -->
13837 ///
13838 /// @param[in] node_id
13839 /// The node id.
13840 ///
13841 /// @param[in] workitem_id
13842 /// The id of the created workitem returned by HAPI_CreateWorkitem()
13843 ///
13844 /// @param[in] data_name
13845 /// null-terminated name of the data member
13846 /// <!-- string -->
13847 ///
13848 /// @param[in] data_index
13849 /// index of the string data member
13850 ///
13851 /// @param[in] value
13852 /// null-terminated string to copy to the workitem data member
13853 /// <!-- string -->
13854 ///
13856 HAPI_SetWorkitemStringData( const HAPI_Session * session,
13857  HAPI_NodeId node_id,
13858  HAPI_PDG_WorkItemId workitem_id,
13859  const char * data_name,
13860  int data_index,
13861  const char * value );
13862 
13863 /// @brief Commits any pending workitems.
13864 ///
13865 /// @ingroup PDG
13866 ///
13867 /// @param[in] session
13868 /// The session of Houdini you are interacting with.
13869 /// See @ref HAPI_Sessions for more on sessions.
13870 /// Pass NULL to just use the default in-process session.
13871 /// <!-- default NULL -->
13872 ///
13873 /// @param[in] node_id
13874 /// The node id for which the pending workitems have been
13875 /// created but not yet injected.
13876 ///
13878 HAPI_CommitWorkitems( const HAPI_Session * session,
13879  HAPI_NodeId node_id );
13880 
13881 /// @brief Gets the number of workitems that are available on the given node.
13882 /// Should be used with ::HAPI_GetWorkitems.
13883 ///
13884 /// @ingroup PDG
13885 ///
13886 /// @param[in] session
13887 /// The session of Houdini you are interacting with.
13888 /// See @ref HAPI_Sessions for more on sessions.
13889 /// Pass NULL to just use the default in-process session.
13890 /// <!-- default NULL -->
13891 ///
13892 /// @param[in] node_id
13893 /// The node id.
13894 ///
13895 /// @param[out] num
13896 /// The number of workitems.
13897 ///
13899 HAPI_GetNumWorkitems( const HAPI_Session * session,
13900  HAPI_NodeId node_id,
13901  int * num );
13902 
13903 /// @brief Gets the list of work item ids for the given node
13904 ///
13905 /// @ingroup PDG
13906 ///
13907 /// @param[in] session
13908 /// The session of Houdini you are interacting with.
13909 /// See @ref HAPI_Sessions for more on sessions.
13910 /// Pass NULL to just use the default in-process session.
13911 /// <!-- default NULL -->
13912 ///
13913 /// @param[in] node_id
13914 /// The node id.
13915 ///
13916 /// @param[out] workitem_ids_array
13917 /// buffer for resulting array of ::HAPI_PDG_WorkItemId
13918 /// <!-- sizeparm length -->
13919 ///
13920 /// @param[in] length
13921 /// The length of the @p workitem_ids buffer
13922 ///
13924 HAPI_GetWorkitems( const HAPI_Session * session,
13925  HAPI_NodeId node_id,
13926  int * workitem_ids_array,
13927  int length );
13928 
13929 /// @brief Gets the length of the workitem data member.
13930 /// It is the length of the array of data.
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] workitem_id
13944 /// The id of the workitem
13945 ///
13946 /// @param[in] data_name
13947 /// null-terminated name of the data member
13948 /// <!-- string -->
13949 ///
13950 /// @param[out] length
13951 /// The length of the data member array
13952 ///
13953 HAPI_DECL_DEPRECATED_REPLACE(5.0.0, 19.5.161, HAPI_GetWorkItemDataSize)
13954 HAPI_GetWorkitemDataLength( const HAPI_Session * session,
13955  HAPI_NodeId node_id,
13956  HAPI_PDG_WorkItemId workitem_id,
13957  const char * data_name,
13958  int * length );
13959 
13960 /// @brief Gets int data from a work item member.
13961 ///
13962 /// @ingroup PDG
13963 ///
13964 /// @param[in] session
13965 /// The session of Houdini you are interacting with.
13966 /// See @ref HAPI_Sessions for more on sessions.
13967 /// Pass NULL to just use the default in-process session.
13968 /// <!-- default NULL -->
13969 ///
13970 /// @param[in] node_id
13971 /// The node id.
13972 ///
13973 /// @param[in] workitem_id
13974 /// The id of the workitem
13975 ///
13976 /// @param[in] data_name
13977 /// null-terminated name of the data member
13978 /// <!-- string -->
13979 ///
13980 /// @param[out] data_array
13981 /// buffer of at least size length to copy the data into. The required
13982 /// length should be determined by ::HAPI_GetWorkitemDataLength().
13983 /// <!-- sizeparm length -->
13984 ///
13985 /// @param[in] length
13986 /// The length of @p data_array
13987 ///
13989 HAPI_GetWorkitemIntData( const HAPI_Session * session,
13990  HAPI_NodeId node_id,
13991  HAPI_PDG_WorkItemId workitem_id,
13992  const char * data_name,
13993  int * data_array,
13994  int length );
13995 
13996 /// @brief Gets float data from a work item member.
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] workitem_id
14010 /// The id of the workitem
14011 ///
14012 /// @param[in] data_name
14013 /// null-terminated name of the data member
14014 /// <!-- string -->
14015 ///
14016 /// @param[out] data_array
14017 /// buffer of at least size length to copy the data into. The required
14018 /// length should be determined by ::HAPI_GetWorkitemDataLength().
14019 /// <!-- sizeparm length -->
14020 ///
14021 /// @param[in] length
14022 /// The length of the @p data_array
14023 ///
14025 HAPI_GetWorkitemFloatData( const HAPI_Session * session,
14026  HAPI_NodeId node_id,
14027  HAPI_PDG_WorkItemId workitem_id,
14028  const char * data_name,
14029  float * data_array,
14030  int length );
14031 
14032 /// @brief Gets string ids from a work item member.
14033 ///
14034 /// @ingroup PDG
14035 ///
14036 /// @param[in] session
14037 /// The session of Houdini you are interacting with.
14038 /// See @ref HAPI_Sessions for more on sessions.
14039 /// Pass NULL to just use the default in-process session.
14040 /// <!-- default NULL -->
14041 ///
14042 /// @param[in] node_id
14043 /// The node id.
14044 ///
14045 /// @param[in] workitem_id
14046 /// The id of the workitem
14047 ///
14048 /// @param[in] data_name
14049 /// null-terminated name of the data member
14050 /// <!-- string -->
14051 ///
14052 /// @param[out] data_array
14053 /// buffer of at least size length to copy the data into. The required
14054 /// length should be determined by ::HAPI_GetWorkitemDataLength().
14055 /// The data is an array of ::HAPI_StringHandle which can be used with
14056 /// ::HAPI_GetString(). The string handles are valid until the
14057 /// next call to this function.
14058 /// <!-- sizeparm length -->
14059 ///
14060 /// @param[in] length
14061 /// The length of @p data_array
14062 ///
14064 HAPI_GetWorkitemStringData( const HAPI_Session * session,
14065  HAPI_NodeId node_id,
14066  HAPI_PDG_WorkItemId workitem_id,
14067  const char * data_name,
14068  HAPI_StringHandle * data_array,
14069  int length );
14070 
14071 /// @brief Gets the info for workitem results.
14072 /// The number of workitem results is found on the ::HAPI_PDG_WorkItemInfo
14073 /// returned by ::HAPI_GetWorkitemInfo()
14074 ///
14075 /// @ingroup PDG
14076 ///
14077 /// @param[in] session
14078 /// The session of Houdini you are interacting with.
14079 /// See @ref HAPI_Sessions for more on sessions.
14080 /// Pass NULL to just use the default in-process session.
14081 /// <!-- default NULL -->
14082 ///
14083 /// @param[in] node_id
14084 /// The node id.
14085 ///
14086 /// @param[in] workitem_id
14087 /// The id of the workitem
14088 ///
14089 /// @param[out] resultinfo_array
14090 /// Buffer to fill with info structs. String handles are valid
14091 /// until the next call of this function.
14092 /// <!-- sizeparm resultinfo_count -->
14093 ///
14094 /// @param[in] resultinfo_count
14095 /// The length of @p resultinfo_array
14096 ///
14098 HAPI_GetWorkitemResultInfo( const HAPI_Session * session,
14099  HAPI_NodeId node_id,
14100  HAPI_PDG_WorkItemId workitem_id,
14101  HAPI_PDG_WorkItemOutputFile * resultinfo_array,
14102  int resultinfo_count );
14103 
14104 /// @brief Creates a new pending work item for the given node. The work item
14105 /// will not be submitted to the graph until it is committed with
14106 /// ::HAPI_CommitWorkItems(). The node is expected to be a generator type.
14107 ///
14108 /// @ingroup PDG
14109 ///
14110 /// @param[in] session
14111 /// The session of Houdini you are interacting with.
14112 /// See @ref HAPI_Sessions for more on sessions.
14113 /// Pass NULL to just use the default in-process session.
14114 /// <!-- default NULL -->
14115 ///
14116 /// @param[in] node_id
14117 /// The node id.
14118 ///
14119 /// @param[out] work_item_id
14120 /// The id of the pending workitem.
14121 ///
14122 /// @param[in] name
14123 /// The null-terminated name of the work item. The name will
14124 /// be automatically suffixed to make it unique.
14125 /// <!-- string -->
14126 ///
14127 /// @param[in] index
14128 /// The index of the work item. The semantics of the index
14129 /// are user defined.
14130 ///
14131 HAPI_DECL HAPI_CreateWorkItem( const HAPI_Session * session,
14132  HAPI_NodeId node_id,
14133  HAPI_PDG_WorkItemId * work_item_id,
14134  const char * name,
14135  int index );
14136 
14137 /// @brief Retrieves the info of a given work item by id.
14138 ///
14139 /// @ingroup PDG
14140 ///
14141 /// @param[in] session
14142 /// The session of Houdini you are interacting with.
14143 /// See @ref HAPI_Sessions for more on sessions.
14144 /// Pass NULL to just use the default in-process session.
14145 /// <!-- default NULL -->
14146 ///
14147 /// @param[in] graph_context_id
14148 /// The graph context that the work item is in.
14149 ///
14150 /// @param[in] work_item_id
14151 /// The id of the work item.
14152 ///
14153 /// @param[out] work_item_info
14154 /// The returned ::HAPI_PDG_WorkItemInfo for the work item. Note
14155 /// that the enclosed string handle is only valid until the next
14156 /// call to this function.
14157 ///
14159  HAPI_PDG_GraphContextId graph_context_id,
14160  HAPI_PDG_WorkItemId work_item_id,
14161  HAPI_PDG_WorkItemInfo * work_item_info );
14162 
14163 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
14164 ///
14165 /// @ingroup PDG
14166 ///
14167 /// @param[in] session
14168 /// The session of Houdini you are interacting with.
14169 /// See @ref HAPI_Sessions for more on sessions.
14170 /// Pass NULL to just use the default in-process session.
14171 /// <!-- default NULL -->
14172 ///
14173 /// @param[in] node_id
14174 /// The node id.
14175 ///
14176 /// @param[in] work_item_id
14177 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
14178 ///
14179 /// @param[in] attribute_name
14180 /// null-terminated name of the work item attribute
14181 /// <!-- string -->
14182 ///
14183 /// @param[in] values_array
14184 /// array of integer values
14185 /// <!-- sizeparm length -->
14186 ///
14187 /// @param[in] length
14188 /// number of values to copy from values_array to the parameter
14189 ///
14191  HAPI_NodeId node_id,
14192  HAPI_PDG_WorkItemId work_item_id,
14193  const char * attribute_name,
14194  const int * values_array,
14195  int length );
14196 
14197 /// @brief Adds float data to a pending PDG work item attribute for the given node.
14198 ///
14199 /// @ingroup PDG
14200 ///
14201 /// @param[in] session
14202 /// The session of Houdini you are interacting with.
14203 /// See @ref HAPI_Sessions for more on sessions.
14204 /// Pass NULL to just use the default in-process session.
14205 /// <!-- default NULL -->
14206 ///
14207 /// @param[in] node_id
14208 /// The node id.
14209 ///
14210 /// @param[in] work_item_id
14211 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
14212 ///
14213 /// @param[in] attribute_name
14214 /// null-terminated name of the work item attribute
14215 /// <!-- string -->
14216 ///
14217 /// @param[in] values_array
14218 /// array of float values
14219 /// <!-- sizeparm length -->
14220 ///
14221 /// @param[in] length
14222 /// number of values to copy from values_array to the parameter
14223 ///
14225  HAPI_NodeId node_id,
14226  HAPI_PDG_WorkItemId work_item_id,
14227  const char * attribute_name,
14228  const float * values_array,
14229  int length );
14230 
14231 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
14232 ///
14233 /// @ingroup PDG
14234 ///
14235 /// @param[in] session
14236 /// The session of Houdini you are interacting with.
14237 /// See @ref HAPI_Sessions for more on sessions.
14238 /// Pass NULL to just use the default in-process session.
14239 /// <!-- default NULL -->
14240 ///
14241 /// @param[in] node_id
14242 /// The node id.
14243 ///
14244 /// @param[in] work_item_id
14245 /// The id of the created work item returned by HAPI_CreateWorkItem()
14246 ///
14247 /// @param[in] attribute_name
14248 /// null-terminated name of the work item attribute
14249 /// <!-- string -->
14250 ///
14251 /// @param[in] data_index
14252 /// index of the string data member
14253 ///
14254 /// @param[in] value
14255 /// null-terminated string to copy to the work item data member
14256 /// <!-- string -->
14257 ///
14259  HAPI_NodeId node_id,
14260  HAPI_PDG_WorkItemId work_item_id,
14261  const char * attribute_name,
14262  int data_index,
14263  const char * value );
14264 
14265 /// @brief Commits any pending work items.
14266 ///
14267 /// @ingroup PDG
14268 ///
14269 /// @param[in] session
14270 /// The session of Houdini you are interacting with.
14271 /// See @ref HAPI_Sessions for more on sessions.
14272 /// Pass NULL to just use the default in-process session.
14273 /// <!-- default NULL -->
14274 ///
14275 /// @param[in] node_id
14276 /// The node id for which the pending work items have been
14277 /// created but not yet injected.
14278 ///
14280  HAPI_NodeId node_id );
14281 
14282 /// @brief Gets the number of work items that are available on the given node.
14283 /// Should be used with ::HAPI_GetWorkItems.
14284 ///
14285 /// @ingroup PDG
14286 ///
14287 /// @param[in] session
14288 /// The session of Houdini you are interacting with.
14289 /// See @ref HAPI_Sessions for more on sessions.
14290 /// Pass NULL to just use the default in-process session.
14291 /// <!-- default NULL -->
14292 ///
14293 /// @param[in] node_id
14294 /// The node id.
14295 ///
14296 /// @param[out] num
14297 /// The number of work items.
14298 ///
14300  HAPI_NodeId node_id,
14301  int * num );
14302 
14303 /// @brief Gets the list of work item ids for the given node
14304 ///
14305 /// @ingroup PDG
14306 ///
14307 /// @param[in] session
14308 /// The session of Houdini you are interacting with.
14309 /// See @ref HAPI_Sessions for more on sessions.
14310 /// Pass NULL to just use the default in-process session.
14311 /// <!-- default NULL -->
14312 ///
14313 /// @param[in] node_id
14314 /// The node id.
14315 ///
14316 /// @param[out] work_item_ids_array
14317 /// buffer for resulting array of ::HAPI_PDG_WorkItemId
14318 /// <!-- sizeparm length -->
14319 ///
14320 /// @param[in] length
14321 /// The length of the @p work_item_ids buffer
14322 ///
14323 HAPI_DECL HAPI_GetWorkItems( const HAPI_Session * session,
14324  HAPI_NodeId node_id,
14325  int * work_item_ids_array,
14326  int length );
14327 
14328 /// @brief Gets the size of the work item attribute.
14329 /// It is the length of the array of data.
14330 ///
14331 /// @ingroup PDG
14332 ///
14333 /// @param[in] session
14334 /// The session of Houdini you are interacting with.
14335 /// See @ref HAPI_Sessions for more on sessions.
14336 /// Pass NULL to just use the default in-process session.
14337 /// <!-- default NULL -->
14338 ///
14339 /// @param[in] node_id
14340 /// The node id.
14341 ///
14342 /// @param[in] work_item_id
14343 /// The id of the work item
14344 ///
14345 /// @param[in] attribute_name
14346 /// null-terminated name of the work item attribute
14347 /// <!-- string -->
14348 ///
14349 /// @param[out] length
14350 /// The length of the data member array
14351 ///
14353  HAPI_NodeId node_id,
14354  HAPI_PDG_WorkItemId work_item_id,
14355  const char * attribute_name,
14356  int * length );
14357 
14358 /// @brief Gets int data from a work item attribute.
14359 ///
14360 /// @ingroup PDG
14361 ///
14362 /// @param[in] session
14363 /// The session of Houdini you are interacting with.
14364 /// See @ref HAPI_Sessions for more on sessions.
14365 /// Pass NULL to just use the default in-process session.
14366 /// <!-- default NULL -->
14367 ///
14368 /// @param[in] node_id
14369 /// The node id.
14370 ///
14371 /// @param[in] work_item_id
14372 /// The id of the work_item
14373 ///
14374 /// @param[in] attribute_name
14375 /// null-terminated name of the work item attribute
14376 /// <!-- string -->
14377 ///
14378 /// @param[out] data_array
14379 /// buffer of at least size length to copy the data into. The required
14380 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14381 /// <!-- sizeparm length -->
14382 ///
14383 /// @param[in] length
14384 /// The length of @p data_array
14385 ///
14387  HAPI_NodeId node_id,
14388  HAPI_PDG_WorkItemId work_item_id,
14389  const char * attribute_name,
14390  int * data_array,
14391  int length );
14392 
14393 /// @brief Gets float data from a work item attribute.
14394 ///
14395 /// @ingroup PDG
14396 ///
14397 /// @param[in] session
14398 /// The session of Houdini you are interacting with.
14399 /// See @ref HAPI_Sessions for more on sessions.
14400 /// Pass NULL to just use the default in-process session.
14401 /// <!-- default NULL -->
14402 ///
14403 /// @param[in] node_id
14404 /// The node id.
14405 ///
14406 /// @param[in] work_item_id
14407 /// The id of the work_item
14408 ///
14409 /// @param[in] attribute_name
14410 /// null-terminated name of the work item attribute
14411 /// <!-- string -->
14412 ///
14413 /// @param[out] data_array
14414 /// buffer of at least size length to copy the data into. The required
14415 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14416 /// <!-- sizeparm length -->
14417 ///
14418 /// @param[in] length
14419 /// The length of the @p data_array
14420 ///
14422  HAPI_NodeId node_id,
14423  HAPI_PDG_WorkItemId work_item_id,
14424  const char * attribute_name,
14425  float * data_array,
14426  int length );
14427 
14428 /// @brief Gets string ids from a work item attribute.
14429 ///
14430 /// @ingroup PDG
14431 ///
14432 /// @param[in] session
14433 /// The session of Houdini you are interacting with.
14434 /// See @ref HAPI_Sessions for more on sessions.
14435 /// Pass NULL to just use the default in-process session.
14436 /// <!-- default NULL -->
14437 ///
14438 /// @param[in] node_id
14439 /// The node id.
14440 ///
14441 /// @param[in] work_item_id
14442 /// The id of the work item
14443 ///
14444 /// @param[in] attribute_name
14445 /// null-terminated name of the work item attribute
14446 /// <!-- string -->
14447 ///
14448 /// @param[out] data_array
14449 /// buffer of at least size length to copy the data into. The required
14450 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14451 /// The data is an array of ::HAPI_StringHandle which can be used with
14452 /// ::HAPI_GetString(). The string handles are valid until the
14453 /// next call to this function.
14454 /// <!-- sizeparm length -->
14455 ///
14456 /// @param[in] length
14457 /// The length of @p data_array
14458 ///
14460  HAPI_NodeId node_id,
14461  HAPI_PDG_WorkItemId work_item_id,
14462  const char * attribute_name,
14463  HAPI_StringHandle * data_array,
14464  int length );
14465 
14466 /// @brief Gets the info for work item output files.
14467 /// The number of work item results is found on the ::HAPI_PDG_WorkItemInfo
14468 /// returned by ::HAPI_GetWorkItemInfo()
14469 ///
14470 /// @ingroup PDG
14471 ///
14472 /// @param[in] session
14473 /// The session of Houdini you are interacting with.
14474 /// See @ref HAPI_Sessions for more on sessions.
14475 /// Pass NULL to just use the default in-process session.
14476 /// <!-- default NULL -->
14477 ///
14478 /// @param[in] node_id
14479 /// The node id.
14480 ///
14481 /// @param[in] work_item_id
14482 /// The id of the work item
14483 ///
14484 /// @param[out] resultinfo_array
14485 /// Buffer to fill with info structs. String handles are valid
14486 /// until the next call of this function.
14487 /// <!-- sizeparm resultinfo_count -->
14488 ///
14489 /// @param[in] resultinfo_count
14490 /// The length of @p resultinfo_array
14491 ///
14493  HAPI_NodeId node_id,
14494  HAPI_PDG_WorkItemId work_item_id,
14495  HAPI_PDG_WorkItemOutputFile * resultinfo_array,
14496  int resultinfo_count );
14497 
14498 /// @brief Dirties the given node. Cancels the cook if necessary and then
14499 /// deletes all workitems on the node.
14500 ///
14501 /// @ingroup PDG
14502 ///
14503 /// @param[in] session
14504 /// The session of Houdini you are interacting with.
14505 /// See @ref HAPI_Sessions for more on sessions.
14506 /// Pass NULL to just use the default in-process session.
14507 /// <!-- default NULL -->
14508 ///
14509 /// @param[in] node_id
14510 /// The node id.
14511 ///
14512 /// @param[in] clean_results
14513 /// Remove the results generated by the node.
14514 /// <!-- default 0 -->
14515 ///
14516 HAPI_DECL HAPI_DirtyPDGNode( const HAPI_Session * session,
14517  HAPI_NodeId node_id,
14518  HAPI_Bool clean_results );
14519 
14520 /// @brief Pause the PDG cooking operation.
14521 ///
14522 /// @ingroup PDG
14523 ///
14524 /// @param[in] session
14525 /// The session of Houdini you are interacting with.
14526 /// See @ref HAPI_Sessions for more on sessions.
14527 /// Pass NULL to just use the default in-process session.
14528 /// <!-- default NULL -->
14529 ///
14530 /// @param[in] graph_context_id
14531 /// The id of the graph context
14532 ///
14533 HAPI_DECL HAPI_PausePDGCook( const HAPI_Session * session,
14534  HAPI_PDG_GraphContextId graph_context_id );
14535 
14536 /// @brief Cancel the PDG cooking operation.
14537 ///
14538 /// @ingroup PDG
14539 ///
14540 /// @param[in] session
14541 /// The session of Houdini you are interacting with.
14542 /// See @ref HAPI_Sessions for more on sessions.
14543 /// Pass NULL to just use the default in-process session.
14544 /// <!-- default NULL -->
14545 ///
14546 /// @param[in] graph_context_id
14547 /// The id of the graph context
14548 ///
14549 HAPI_DECL HAPI_CancelPDGCook( const HAPI_Session * session,
14550  HAPI_PDG_GraphContextId graph_context_id );
14551 
14552 #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...
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.
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.
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.
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.
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.
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...
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...
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.
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_SetAttributeIndexedStringData(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, const char *name, const HAPI_AttributeInfo *attr_info, const char **string_fixed_array, int string_fixed_length, const int *indices_array, int indices_start, int indices_length)
Set attribute string data by index.
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 ...
#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.
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
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...
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.
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...
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 ...
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...
HAPI_DECL HAPI_GetConnectionErrorLength(int *buffer_length)
Return the length of string buffer storing connection error message.
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 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_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...
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