Houdini Engine 9.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 specified 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 environment 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 environment 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 environment 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 /// Length 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 ///
1072 HAPI_DECL_DEPRECATED(9.0.0, 22.0.270)
1074  int * count );
1075 
1076 /// @brief Get current number of nodes that have already cooked in the
1077 /// current session. Note that this is a very crude approximation
1078 /// of the cooking progress - it may never make it to 100% or it
1079 /// might spend another hour at 100%. Use ::HAPI_GetStatusString
1080 /// to get a better idea of progress if this number gets stuck.
1081 ///
1082 /// @ingroup Status
1083 ///
1084 /// @param[in] session
1085 /// The session of Houdini you are interacting with.
1086 /// See @ref HAPI_Sessions for more on sessions.
1087 /// Pass NULL to just use the default in-process session.
1088 /// <!-- default NULL -->
1089 ///
1090 /// @param[out] count
1091 /// Current cook count.
1092 ///
1093 HAPI_DECL_DEPRECATED(9.0.0, 22.0.270)
1095  int * count );
1096 
1097 /// @brief Interrupt a cook or load operation.
1098 ///
1099 /// @ingroup Status
1100 ///
1101 /// @param[in] session
1102 /// The session of Houdini you are interacting with.
1103 /// See @ref HAPI_Sessions for more on sessions.
1104 /// Pass NULL to just use the default in-process session.
1105 /// <!-- default NULL -->
1106 ///
1107 HAPI_DECL HAPI_Interrupt( const HAPI_Session * session );
1108 
1109 /// @defgroup Utility
1110 /// Utility math and other functions
1111 
1112 /// @brief Converts the transform described by a ::HAPI_TransformEuler
1113 /// struct into a different transform and rotation order.
1114 ///
1115 /// @ingroup Utility
1116 ///
1117 /// @param[in] session
1118 /// The session of Houdini you are interacting with.
1119 /// See @ref HAPI_Sessions for more on sessions.
1120 /// Pass NULL to just use the default in-process session.
1121 /// <!-- default NULL -->
1122 ///
1123 /// @param[in] transform_in
1124 /// The transform to be converted.
1125 ///
1126 /// @param[in] rst_order
1127 /// The desired transform order of the output.
1128 ///
1129 /// @param[in] rot_order
1130 /// The desired rotation order of the output.
1131 ///
1132 /// @param[out] transform_out
1133 /// The converted transform.
1134 ///
1136  const HAPI_TransformEuler * transform_in,
1137  HAPI_RSTOrder rst_order,
1138  HAPI_XYZOrder rot_order,
1139  HAPI_TransformEuler * transform_out );
1140 
1141 /// @brief Converts a 4x4 matrix into its TRS form.
1142 ///
1143 /// @ingroup Utility
1144 ///
1145 /// @param[in] session
1146 /// The session of Houdini you are interacting with.
1147 /// See @ref HAPI_Sessions for more on sessions.
1148 /// Pass NULL to just use the default in-process session.
1149 /// <!-- default NULL -->
1150 ///
1151 /// @param[in] matrix
1152 /// A 4x4 matrix expressed in a 16 element float array.
1153 ///
1154 /// @param[in] rst_order
1155 /// The desired transform order of the output.
1156 ///
1157 /// @param[out] transform_out
1158 /// Used for the output.
1159 ///
1161  const float * matrix,
1162  HAPI_RSTOrder rst_order,
1163  HAPI_Transform * transform_out );
1164 
1165 /// @brief Converts a 4x4 matrix into its TRS form.
1166 ///
1167 /// @ingroup Utility
1168 ///
1169 /// @param[in] session
1170 /// The session of Houdini you are interacting with.
1171 /// See @ref HAPI_Sessions for more on sessions.
1172 /// Pass NULL to just use the default in-process session.
1173 /// <!-- default NULL -->
1174 ///
1175 /// @param[in] matrix
1176 /// A 4x4 matrix expressed in a 16 element float array.
1177 ///
1178 /// @param[in] rst_order
1179 /// The desired transform order of the output.
1180 ///
1181 /// @param[in] rot_order
1182 /// The desired rotation order of the output.
1183 ///
1184 /// @param[out] transform_out
1185 /// Used for the output.
1186 ///
1188  const float * matrix,
1189  HAPI_RSTOrder rst_order,
1190  HAPI_XYZOrder rot_order,
1191  HAPI_TransformEuler * transform_out );
1192 
1193 /// @brief Converts ::HAPI_Transform into a 4x4 transform matrix.
1194 ///
1195 /// @ingroup Utility
1196 ///
1197 /// @param[in] session
1198 /// The session of Houdini you are interacting with.
1199 /// See @ref HAPI_Sessions for more on sessions.
1200 /// Pass NULL to just use the default in-process session.
1201 /// <!-- default NULL -->
1202 ///
1203 /// @param[in] transform
1204 /// The ::HAPI_Transform you wish to convert.
1205 ///
1206 /// @param[out] matrix
1207 /// A 16 element float array that will contain the result.
1208 ///
1210  const HAPI_Transform * transform,
1211  float * matrix );
1212 
1213 /// @brief Converts ::HAPI_TransformEuler into a 4x4 transform matrix.
1214 ///
1215 /// @ingroup Utility
1216 ///
1217 /// @param[in] session
1218 /// The session of Houdini you are interacting with.
1219 /// See @ref HAPI_Sessions for more on sessions.
1220 /// Pass NULL to just use the default in-process session.
1221 /// <!-- default NULL -->
1222 ///
1223 /// @param[in] transform
1224 /// The ::HAPI_TransformEuler you wish to convert.
1225 ///
1226 /// @param[out] matrix
1227 /// A 16 element float array that will contain the result.
1228 ///
1230  const HAPI_Session * session,
1231  const HAPI_TransformEuler * transform,
1232  float * matrix );
1233 
1234 /// @brief Acquires or releases the Python interpreter lock. This is
1235 /// needed if HAPI is called from Python and HAPI is in threaded
1236 /// mode (see ::HAPI_Initialize()).
1237 ///
1238 /// The problem arises when async functions like
1239 /// ::HAPI_CreateNode() may start a cooking thread that
1240 /// may try to run Python code. That is, we would now have
1241 /// Python running on two different threads - something not
1242 /// allowed by Python by default.
1243 ///
1244 /// We need to tell Python to explicitly "pause" the Python state
1245 /// on the client thread while we run Python in our cooking thread.
1246 ///
1247 /// You must call this function first with locked == true before
1248 /// any async HAPI call. Then, after the async call finished,
1249 /// detected via calls to ::HAPI_GetStatus(), call this method
1250 /// again to release the lock with locked == false.
1251 ///
1252 /// @ingroup Utility
1253 ///
1254 /// @param[in] session
1255 /// The session of Houdini you are interacting with.
1256 /// See @ref HAPI_Sessions for more on sessions.
1257 /// Pass NULL to just use the default in-process session.
1258 /// <!-- default NULL -->
1259 ///
1260 /// @param[in] locked
1261 /// True will acquire the interpreter lock to use it for
1262 /// the HAPI cooking thread. False will release the lock
1263 /// back to the client thread.
1264 ///
1266  HAPI_Bool locked );
1267 
1268 /// @defgroup Strings
1269 /// Functions for handling strings.
1270 
1271 /// @brief Gives back the string length of the string with the
1272 /// given handle.
1273 ///
1274 /// @ingroup Strings
1275 ///
1276 /// @param[in] session
1277 /// The session of Houdini you are interacting with.
1278 /// See @ref HAPI_Sessions for more on sessions.
1279 /// Pass NULL to just use the default in-process session.
1280 /// <!-- default NULL -->
1281 ///
1282 /// @param[in] string_handle
1283 /// Handle of the string to query.
1284 ///
1285 /// @param[out] buffer_length
1286 /// Buffer length of the queried string (including NULL
1287 /// terminator).
1288 ///
1290  HAPI_StringHandle string_handle,
1291  int * buffer_length );
1292 
1293 /// @brief Gives back the string value of the string with the
1294 /// given handle.
1295 ///
1296 /// @ingroup Strings
1297 ///
1298 /// @param[in] session
1299 /// The session of Houdini you are interacting with.
1300 /// See @ref HAPI_Sessions for more on sessions.
1301 /// Pass NULL to just use the default in-process session.
1302 /// <!-- default NULL -->
1303 ///
1304 /// @param[in] string_handle
1305 /// Handle of the string to query.
1306 ///
1307 /// @param[out] string_value
1308 /// Actual string value (character array).
1309 /// <!-- sizeparm length -->
1310 ///
1311 /// @param[in] length
1312 /// Length of the string buffer (must match size of
1313 /// @p string_value - so including NULL terminator).
1314 ///
1315 HAPI_DECL HAPI_GetString( const HAPI_Session * session,
1316  HAPI_StringHandle string_handle,
1317  char * string_value,
1318  int length );
1319 
1320 /// @brief Adds the given string to the string table and returns
1321 /// the handle. It is the responsibility of the caller to
1322 /// manage access to the string. The intended use for custom strings
1323 /// is to allow structs that reference strings to be passed in to HAPI
1324 ///
1325 /// @ingroup Strings
1326 ///
1327 /// @param[in] session
1328 /// The session of Houdini you are interacting with.
1329 /// See @ref HAPI_Sessions for more on sessions.
1330 /// Pass NULL to just use the default in-process session.
1331 /// <!-- default NULL -->
1332 ///
1333 /// @param[in] string_value
1334 /// Actual string value (character array).
1335 /// <!-- string -->
1336 ///
1337 /// @param[out] handle_value
1338 /// Handle of the string that was added
1339 ///
1341  const char * string_value,
1342  HAPI_StringHandle * handle_value );
1343 
1344 /// @brief Removes the specified string from the server
1345 /// and invalidates the handle
1346 ///
1347 /// @ingroup Strings
1348 ///
1349 /// @param[in] session
1350 /// The session of Houdini you are interacting with.
1351 /// See @ref HAPI_Sessions for more on sessions.
1352 /// Pass NULL to just use the default in-process session.
1353 /// <!-- default NULL -->
1354 ///
1355 /// @param[in] string_handle
1356 /// Handle of the string that was added
1357 ///
1359  const HAPI_StringHandle string_handle );
1360 
1361 /// @brief Gives back the length of the buffer needed to hold
1362 /// all the values null-separated for the given string
1363 /// handles. Used with ::HAPI_GetStringBatch().
1364 ///
1365 /// @ingroup Strings
1366 ///
1367 /// @param[in] session
1368 /// The session of Houdini you are interacting with.
1369 /// See @ref HAPI_Sessions for more on sessions.
1370 /// Pass NULL to just use the default in-process session.
1371 /// <!-- default NULL -->
1372 ///
1373 /// @param[in] string_handle_array
1374 /// Array of string handles to be read.
1375 /// <!-- sizeparm string_handle_count -->
1376 ///
1377 /// @param[in] string_handle_count
1378 /// Length of @p string_handle_array
1379 ///
1380 /// @param[out] string_buffer_size
1381 /// Buffer length required for subsequent call to
1382 /// HAPI_GetStringBatch to hold all the given
1383 /// string values null-terminated
1384 ///
1386  const int * string_handle_array,
1387  int string_handle_count,
1388  int * string_buffer_size );
1389 
1390 /// @brief Gives back the values of the given string handles.
1391 /// The given char array is filled with null-separated
1392 /// values, and the final value is null-terminated.
1393 /// Used with ::HAPI_GetStringBatchSize(). Using this function
1394 /// instead of repeated calls to ::HAPI_GetString() can be more
1395 /// more efficient for a large number of strings.
1396 ///
1397 /// @ingroup Strings
1398 ///
1399 /// @param[in] session
1400 /// The session of Houdini you are interacting with.
1401 /// See @ref HAPI_Sessions for more on sessions.
1402 /// Pass NULL to just use the default in-process session.
1403 /// <!-- default NULL -->
1404 ///
1405 /// @param[out] char_buffer
1406 /// Array of characters to hold string values.
1407 /// <!-- sizeparm char_array_length -->
1408 ///
1409 /// @param[in] char_array_length
1410 /// Length of @p char_array. Must be large enough to hold
1411 /// all the string values including null separators.
1412 /// <!-- min ::HAPI_GetStringBatchSize -->
1413 /// <!-- source ::HAPI_GetStringBatchSize -->
1414 ///
1415 HAPI_DECL HAPI_GetStringBatch( const HAPI_Session * session,
1416  char * char_buffer,
1417  int char_array_length );
1418 
1419 
1420 /// @defgroup Time
1421 /// Time related functions
1422 
1423 /// @brief Gets the global time of the scene. All API calls deal with
1424 /// this time to cook.
1425 ///
1426 /// @ingroup Time
1427 ///
1428 /// @param[in] session
1429 /// The session of Houdini you are interacting with.
1430 /// See @ref HAPI_Sessions for more on sessions.
1431 /// Pass NULL to just use the default in-process session.
1432 /// <!-- default NULL -->
1433 ///
1434 /// @param[out] time
1435 /// Time as a double in seconds.
1436 ///
1437 HAPI_DECL HAPI_GetTime( const HAPI_Session * session, double * time );
1438 
1439 /// @brief Sets the global time of the scene. All API calls will deal
1440 /// with this time to cook.
1441 ///
1442 /// @ingroup Time
1443 ///
1444 /// @param[in] session
1445 /// The session of Houdini you are interacting with.
1446 /// See @ref HAPI_Sessions for more on sessions.
1447 /// Pass NULL to just use the default in-process session.
1448 /// <!-- default NULL -->
1449 ///
1450 /// @param[in] time
1451 /// Time as a double in seconds.
1452 ///
1453 HAPI_DECL HAPI_SetTime( const HAPI_Session * session, double time );
1454 
1455 /// @brief Returns whether the Houdini session will use the current time in
1456 /// Houdini when cooking and retrieving data. By default this is
1457 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1458 /// In SessionSync, it is enabled by default, but can be overridden.
1459 /// Note that this function will ALWAYS return
1460 /// ::HAPI_RESULT_SUCCESS.
1461 ///
1462 /// @ingroup Time
1463 ///
1464 /// @param[in] session
1465 /// The session of Houdini you are interacting with.
1466 /// See @ref HAPI_Sessions for more on sessions.
1467 /// Pass NULL to just use the default in-process session.
1468 /// <!-- default NULL -->
1469 ///
1470 /// @param[out] enabled
1471 /// Whether use Houdini time is enabled or not.
1472 ///
1474  HAPI_Bool * enabled );
1475 
1476 /// @brief Sets whether the Houdini session should use the current time in
1477 /// Houdini when cooking and retrieving data. By default this is
1478 /// disabled and the Houdini session uses time 0 (i.e. frame 1).
1479 /// In SessionSync, it is enabled by default, but can be overridden.
1480 /// Note that this function will ALWAYS return
1481 /// ::HAPI_RESULT_SUCCESS.
1482 ///
1483 /// @ingroup Time
1484 ///
1485 /// @param[in] session
1486 /// The session of Houdini you are interacting with.
1487 /// See @ref HAPI_Sessions for more on sessions.
1488 /// Pass NULL to just use the default in-process session.
1489 /// <!-- default NULL -->
1490 ///
1491 /// @param[in] enabled
1492 /// Set to true to use Houdini time.
1493 ///
1495  HAPI_Bool enabled );
1496 
1497 /// @brief Gets the current global timeline options.
1498 ///
1499 /// @ingroup Time
1500 ///
1501 /// @param[in] session
1502 /// The session of Houdini you are interacting with.
1503 /// See @ref HAPI_Sessions for more on sessions.
1504 /// Pass NULL to just use the default in-process session.
1505 /// <!-- default NULL -->
1506 ///
1507 /// @param[out] timeline_options
1508 /// The global timeline options struct.
1509 ///
1511  HAPI_TimelineOptions * timeline_options );
1512 
1513 /// @brief Sets the global timeline options.
1514 ///
1515 /// @ingroup Time
1516 ///
1517 /// @param[in] session
1518 /// The session of Houdini you are interacting with.
1519 /// See @ref HAPI_Sessions for more on sessions.
1520 /// Pass NULL to just use the default in-process session.
1521 /// <!-- default NULL -->
1522 ///
1523 /// @param[in] timeline_options
1524 /// The global timeline options struct.
1525 ///
1527  const HAPI_Session * session,
1528  const HAPI_TimelineOptions * timeline_options );
1529 
1530 /// @brief Gets the global compositor options.
1531 ///
1532 /// @param[in] session
1533 /// The session of Houdini you are interacting with.
1534 /// See @ref HAPI_Sessions for more on sessions.
1535 /// Pass NULL to just use the default in-process session.
1536 /// <!-- default NULL -->
1537 ///
1538 /// @param[out] compositor_options
1539 /// The compositor options struct.
1540 ///
1542  const HAPI_Session * session,
1543  HAPI_CompositorOptions * compositor_options);
1544 
1545 /// @brief Sets the global compositor options.
1546 ///
1547 /// @param[in] session
1548 /// The session of Houdini you are interacting with.
1549 /// See @ref HAPI_Sessions for more on sessions.
1550 /// Pass NULL to just use the default in-process session.
1551 /// <!-- default NULL -->
1552 ///
1553 /// @param[in] compositor_options
1554 /// The compositor options.
1555 ///
1557  const HAPI_Session * session,
1558  const HAPI_CompositorOptions * compositor_options);
1559 
1560 /// @defgroup Assets
1561 /// Functions for managing asset libraries
1562 
1563 /// @brief Loads a Houdini asset library (OTL) from a .otl file.
1564 /// It does NOT create anything inside the Houdini scene.
1565 ///
1566 /// @note This is when we actually check for valid licenses.
1567 ///
1568 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1569 /// to get the number of assets contained in the library using the
1570 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1571 /// to get the list of available assets by name. Use the asset
1572 /// names with ::HAPI_CreateNode() to actually create
1573 /// one of these nodes in the Houdini scene and get back
1574 /// an asset_id.
1575 ///
1576 /// @note The HIP file saved using ::HAPI_SaveHIPFile() will only
1577 /// have an absolute path reference to the loaded OTL meaning
1578 /// that if the OTL is moved or renamed the HIP file won't
1579 /// load properly. It also means that if you change the OTL
1580 /// using the saved HIP scene the same OTL file will change
1581 /// as the one used with Houdini Engine.
1582 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1583 ///
1584 /// @ingroup Assets
1585 ///
1586 /// @param[in] session
1587 /// The session of Houdini you are interacting with.
1588 /// See @ref HAPI_Sessions for more on sessions.
1589 /// Pass NULL to just use the default in-process session.
1590 /// <!-- default NULL -->
1591 ///
1592 /// @param[in] file_path
1593 /// Absolute path to the .otl file.
1594 /// <!-- string -->
1595 ///
1596 /// @param[in] allow_overwrite
1597 /// With this true, if the library file being loaded
1598 /// contains asset definitions that have already been
1599 /// loaded they will overwrite the existing definitions.
1600 /// Otherwise, a library containing asset definitions that
1601 /// already exist will fail to load, returning a
1602 /// ::HAPI_Result of
1603 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1604 ///
1605 /// @param[out] library_id
1606 /// Newly loaded otl id to be used with
1607 /// ::HAPI_GetAvailableAssetCount() and
1608 /// ::HAPI_GetAvailableAssets().
1609 ///
1611  const char * file_path,
1612  HAPI_Bool allow_overwrite,
1613  HAPI_AssetLibraryId * library_id );
1614 
1615 /// @brief Loads a Houdini asset library (OTL) from memory.
1616 /// It does NOT create anything inside the Houdini scene.
1617 ///
1618 /// @note This is when we actually check for valid licenses.
1619 ///
1620 /// Please note that the performance benefit of loading a library
1621 /// from memory are negligible at best. Due to limitations of
1622 /// Houdini's library manager, there is still some disk access
1623 /// and file writes because every asset library needs to be
1624 /// saved to a real file. Use this function only as a convenience
1625 /// if you already have the library file in memory and don't wish
1626 /// to have to create your own temporary library file and then
1627 /// call ::HAPI_LoadAssetLibraryFromFile().
1628 ///
1629 /// The next step is to call ::HAPI_GetAvailableAssetCount()
1630 /// to get the number of assets contained in the library using the
1631 /// returned library_id. Then call ::HAPI_GetAvailableAssets()
1632 /// to get the list of available assets by name. Use the asset
1633 /// names with ::HAPI_CreateNode() to actually create
1634 /// one of these nodes in the Houdini scene and get back
1635 /// an asset_id.
1636 ///
1637 /// @note The saved HIP file using ::HAPI_SaveHIPFile() will
1638 /// @a contain the OTL loaded as part of its @b Embedded OTLs.
1639 /// This means that you can safely move or rename the original
1640 /// OTL file and the HIP will continue to work but if you make
1641 /// changes to the OTL while using the saved HIP the changes
1642 /// won't be saved to the original OTL.
1643 /// See @ref HAPI_Fundamentals_SavingHIPFile.
1644 ///
1645 /// @ingroup Assets
1646 ///
1647 /// @param[in] session
1648 /// The session of Houdini you are interacting with.
1649 /// See @ref HAPI_Sessions for more on sessions.
1650 /// Pass NULL to just use the default in-process session.
1651 /// <!-- default NULL -->
1652 ///
1653 /// @param[in] library_buffer
1654 /// The memory buffer containing the asset definitions
1655 /// in the same format as a standard Houdini .otl file.
1656 /// <!-- sizeparm library_buffer_length -->
1657 ///
1658 /// @param[in] library_buffer_length
1659 /// The size of the OTL memory buffer.
1660 ///
1661 /// @param[in] allow_overwrite
1662 /// With this true, if the library file being loaded
1663 /// contains asset definitions that have already been
1664 /// loaded they will overwrite the existing definitions.
1665 /// Otherwise, a library containing asset definitions that
1666 /// already exist will fail to load, returning a
1667 /// ::HAPI_Result of
1668 /// ::HAPI_RESULT_ASSET_DEF_ALREADY_LOADED.
1669 ///
1670 /// @param[out] library_id
1671 /// Newly loaded otl id to be used with
1672 /// ::HAPI_GetAvailableAssetCount() and
1673 /// ::HAPI_GetAvailableAssets().
1674 ///
1676  const char * library_buffer,
1677  int library_buffer_length,
1678  HAPI_Bool allow_overwrite,
1679  HAPI_AssetLibraryId * library_id );
1680 
1681 /// @brief Get the number of assets contained in an asset library.
1682 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1683 /// get a library_id.
1684 ///
1685 /// @ingroup Assets
1686 ///
1687 /// @param[in] session
1688 /// The session of Houdini you are interacting with.
1689 /// See @ref HAPI_Sessions for more on sessions.
1690 /// Pass NULL to just use the default in-process session.
1691 /// <!-- default NULL -->
1692 ///
1693 /// @param[in] library_id
1694 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1695 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1696 ///
1697 /// @param[out] asset_count
1698 /// The number of assets contained in this asset library.
1699 ///
1701  HAPI_AssetLibraryId library_id,
1702  int * asset_count );
1703 
1704 /// @brief Get the names of the assets contained in an asset library.
1705 ///
1706 /// The asset names will contain additional information about
1707 /// the type of asset, namespace, and version, along with the
1708 /// actual asset name. For example, if you have an Object type
1709 /// asset, in the "hapi" namespace, of version 2.0, named
1710 /// "foo", the asset name returned here will be:
1711 /// hapi::Object/foo::2.0
1712 ///
1713 /// You should call ::HAPI_LoadAssetLibraryFromFile() prior to
1714 /// get a library_id. Then, you should call
1715 /// ::HAPI_GetAvailableAssetCount() to get the number of assets to
1716 /// know how large of a string handles array you need to allocate.
1717 ///
1718 /// @ingroup Assets
1719 ///
1720 /// @param[in] session
1721 /// The session of Houdini you are interacting with.
1722 /// See @ref HAPI_Sessions for more on sessions.
1723 /// Pass NULL to just use the default in-process session.
1724 /// <!-- default NULL -->
1725 ///
1726 /// @param[in] library_id
1727 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1728 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1729 ///
1730 /// @param[out] asset_names_array
1731 /// Array of string handles (integers) that should be
1732 /// at least the size of asset_count.
1733 /// <!-- sizeparm asset_count -->
1734 ///
1735 /// @param[in] asset_count
1736 /// Should be the same or less than the value returned by
1737 /// ::HAPI_GetAvailableAssetCount().
1738 /// <!-- max ::HAPI_GetAvailableAssetCount -->
1739 /// <!-- source ::HAPI_GetAvailableAssetCount -->
1740 ///
1742  HAPI_AssetLibraryId library_id,
1743  HAPI_StringHandle * asset_names_array,
1744  int asset_count );
1745 
1746 /// @brief Fill an asset_info struct from a node.
1747 ///
1748 /// @ingroup Assets
1749 ///
1750 /// @param[in] session
1751 /// The session of Houdini you are interacting with.
1752 /// See @ref HAPI_Sessions for more on sessions.
1753 /// Pass NULL to just use the default in-process session.
1754 /// <!-- default NULL -->
1755 ///
1756 /// @param[in] node_id
1757 /// The node id.
1758 ///
1759 /// @param[out] asset_info
1760 /// Returned ::HAPI_AssetInfo struct.
1761 ///
1762 HAPI_DECL HAPI_GetAssetInfo( const HAPI_Session * session,
1763  HAPI_NodeId node_id,
1764  HAPI_AssetInfo * asset_info );
1765 
1766 /// @brief Get the number of asset parameters contained in an asset
1767 /// library, as well as the number of parameter int, float,
1768 /// string, and choice values.
1769 ///
1770 /// This does not create the asset in the session.
1771 /// Use this for faster querying of asset parameters compared to
1772 /// creating the asset node and querying the node's parameters.
1773 ///
1774 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1775 /// called prior, in order to load the asset library and
1776 /// acquire library_id. Then ::HAPI_GetAvailableAssetCount and
1777 /// ::HAPI_GetAvailableAssets should be called to get the
1778 /// asset_name.
1779 ///
1780 /// @ingroup Assets
1781 ///
1782 /// @param[in] session
1783 /// The session of Houdini you are interacting with.
1784 /// See @ref HAPI_Sessions for more on sessions.
1785 /// Pass NULL to just use the default in-process session.
1786 /// <!-- default NULL -->
1787 ///
1788 /// @param[in] library_id
1789 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1790 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1791 ///
1792 /// @param[in] asset_name
1793 /// Name of the asset to get the parm counts for.
1794 /// <!-- string -->
1795 ///
1796 /// @param[out] parm_count
1797 /// The number of parameters in the asset library.
1798 ///
1799 /// @param[out] int_value_count
1800 /// The number of int values for parameters in the asset
1801 /// library.
1802 ///
1803 /// @param[out] float_value_count
1804 /// The number of float values for parameters in the asset
1805 /// library.
1806 ///
1807 /// @param[out] string_value_count
1808 /// The number of string values for parameters in the asset
1809 /// library.
1810 ///
1811 /// @param[out] choice_value_count
1812 /// The number of choice values for parameters in the asset
1813 /// library.
1814 ///
1816  HAPI_AssetLibraryId library_id,
1817  const char * asset_name,
1818  int * parm_count,
1819  int * int_value_count,
1820  int * float_value_count,
1821  int * string_value_count,
1822  int * choice_value_count );
1823 
1824 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
1825 /// information for the specified asset in the specified asset
1826 /// library.
1827 ///
1828 /// This does not create the asset in the session.
1829 /// Use this for faster querying of asset parameters compared to
1830 /// creating the asset node and querying the node's parameters.
1831 ///
1832 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1833 /// called prior, in order to load the asset library and
1834 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1835 /// be called prior to acquire the count for the size of
1836 /// parm_infos_array.
1837 ///
1838 /// @ingroup Assets
1839 ///
1840 /// @param[in] session
1841 /// The session of Houdini you are interacting with.
1842 /// See @ref HAPI_Sessions for more on sessions.
1843 /// Pass NULL to just use the default in-process session.
1844 /// <!-- default NULL -->
1845 ///
1846 /// @param[in] library_id
1847 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1848 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1849 ///
1850 /// @param[in] asset_name
1851 /// Name of the asset to get the parm counts for.
1852 /// <!-- string -->
1853 ///
1854 /// @param[out] parm_infos_array
1855 /// Array of ::HAPI_ParmInfo at least the size of
1856 /// length.
1857 /// <!-- sizeparm length -->
1858 ///
1859 /// @param[in] start
1860 /// First index of range. Must be at least 0 and at
1861 /// most parm_count - 1 acquired from
1862 /// ::HAPI_GetAssetInfo.
1863 /// <!-- min 0 -->
1864 /// <!-- max ::HAPI_GetAssetInfo::parm_count - 1 -->
1865 /// <!-- default 0 -->
1866 ///
1867 /// @param[in] length
1868 /// Must be at least 1 and at most parm_count - start acquired
1869 /// from ::HAPI_GetAssetInfo
1870 /// <!-- min 1 -->
1871 /// <!-- max ::HAPI_GetAssetInfo::parm_count - start -->
1872 /// <!-- source ::HAPI_GetAssetInfo::parm_count -->
1873 ///
1875  HAPI_AssetLibraryId library_id,
1876  const char * asset_name,
1877  HAPI_ParmInfo * parm_infos_array,
1878  int start,
1879  int length );
1880 
1881 /// @brief Fill arrays of parameter int values, float values, string values,
1882 /// and choice values for parameters in the specified asset in the
1883 /// specified asset library.
1884 ///
1885 /// This does not create the asset in the session.
1886 /// Use this for faster querying of asset parameters compared to
1887 /// creating the asset node and querying the node's parameters.
1888 /// Note that only default values are retrieved.
1889 ///
1890 /// This does require ::HAPI_LoadAssetLibraryFromFile() to be
1891 /// called prior, in order to load the asset library and
1892 /// acquire library_id. ::HAPI_GetAssetDefinitionParmCounts should
1893 /// be called prior to acquire the counts for the sizes of
1894 /// the values arrays.
1895 ///
1896 /// @ingroup Assets
1897 ///
1898 /// @param[in] session
1899 /// The session of Houdini you are interacting with.
1900 /// See @ref HAPI_Sessions for more on sessions.
1901 /// Pass NULL to just use the default in-process session.
1902 /// <!-- default NULL -->
1903 ///
1904 /// @param[in] library_id
1905 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
1906 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
1907 ///
1908 /// @param[in] asset_name
1909 /// Name of the asset to get the parm counts for.
1910 /// <!-- string -->
1911 ///
1912 /// @param[out] int_values_array
1913 /// Array of ints at least the size of int_length.
1914 /// <!-- sizeparm int_length -->
1915 ///
1916 /// @param[in] int_start
1917 /// First index of range for int_values_array. Must be at
1918 /// least 0 and at most int_value_count - 1 acquired from
1919 /// ::HAPI_GetAssetDefinitionParmCounts.
1920 /// <!-- min 0 -->
1921 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - 1 -->
1922 /// <!-- default 0 -->
1923 ///
1924 /// @param[in] int_length
1925 /// Must be at least 0 and at most int_value_count - int_start
1926 /// acquired from ::HAPI_GetAssetDefinitionParmCounts.
1927 /// <!-- min 0 -->
1928 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1929 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::int_value_count - int_start -->
1930 ///
1931 /// @param[out] float_values_array
1932 /// Array of floats at least the size of float_length.
1933 /// <!-- sizeparm float_length -->
1934 ///
1935 /// @param[in] float_start
1936 /// First index of range for float_values_array. Must be at
1937 /// least 0 and at most float_value_count - 1 acquired from
1938 /// ::HAPI_GetAssetDefinitionParmCounts.
1939 /// <!-- min 0 -->
1940 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - 1 -->
1941 /// <!-- default 0 -->
1942 ///
1943 /// @param[in] float_length
1944 /// Must be at least 0 and at most float_value_count -
1945 /// float_start acquired from
1946 /// ::HAPI_GetAssetDefinitionParmCounts.
1947 /// <!-- min 0 -->
1948 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1949 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::float_value_count - float_start -->
1950 ///
1951 /// @param[in] string_evaluate
1952 /// Whether or not to evaluate the string expressions.
1953 /// For example, the string "$F" would evaluate to the
1954 /// current frame number. So, passing in evaluate = false
1955 /// would give you back the string "$F" and passing
1956 /// in evaluate = true would give you back "1" (assuming
1957 /// the current frame is 1).
1958 /// <!-- default true -->
1959 ///
1960 /// @param[out] string_values_array
1961 /// Array of HAPI_StringHandle at least the size of
1962 /// string_length.
1963 /// <!-- sizeparm string_length -->
1964 ///
1965 /// @param[in] string_start
1966 /// First index of range for string_values_array. Must be at
1967 /// least 0 and at most string_value_count - 1 acquired from
1968 /// ::HAPI_GetAssetDefinitionParmCounts.
1969 /// <!-- min 0 -->
1970 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - 1 -->
1971 /// <!-- default 0 -->
1972 ///
1973 /// @param[in] string_length
1974 /// Must be at least 0 and at most string_value_count -
1975 /// string_start acquired from
1976 /// ::HAPI_GetAssetDefinitionParmCounts.
1977 /// <!-- min 0 -->
1978 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1979 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::string_value_count - string_start -->
1980 ///
1981 /// @param[out] choice_values_array
1982 /// Array of ::HAPI_ParmChoiceInfo at least the size of
1983 /// choice_length.
1984 /// <!-- sizeparm choice_length -->
1985 ///
1986 /// @param[in] choice_start
1987 /// First index of range for choice_values_array. Must be at
1988 /// least 0 and at most choice_value_count - 1 acquired from
1989 /// ::HAPI_GetAssetDefinitionParmCounts.
1990 /// <!-- min 0 -->
1991 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - 1 -->
1992 /// <!-- default 0 -->
1993 ///
1994 /// @param[in] choice_length
1995 /// Must be at least 0 and at most choice_value_count -
1996 /// choice_start acquired from
1997 /// ::HAPI_GetAssetDefinitionParmCounts.
1998 /// <!-- min 0 -->
1999 /// <!-- max ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
2000 /// <!-- source ::HAPI_GetAssetDefinitionParmCounts::choice_value_count - choice_start -->
2001 ///
2003  const HAPI_Session * session,
2004  HAPI_AssetLibraryId library_id,
2005  const char * asset_name,
2006  int * int_values_array,
2007  int int_start,
2008  int int_length,
2009  float * float_values_array,
2010  int float_start,
2011  int float_length,
2012  HAPI_Bool string_evaluate,
2013  HAPI_StringHandle * string_values_array,
2014  int string_start,
2015  int string_length,
2016  HAPI_ParmChoiceInfo * choice_values_array,
2017  int choice_start,
2018  int choice_length );
2019 
2020 /// @brief
2021 ///
2022 /// @ingroup Assets
2023 ///
2024 /// @param[in] session
2025 /// The session of Houdini you are interacting with.
2026 /// See @ref HAPI_Sessions for more on sessions.
2027 /// Pass NULL to just use the default in-process session.
2028 /// <!-- default NULL -->
2029 ///
2030 /// @param[in] library_id
2031 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
2032 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
2033 ///
2034 /// @param[in] asset_name
2035 /// Name of the asset that the parm tag is being retrieved from.
2036 /// <!-- string -->
2037 ///
2038 /// @param[in] parm_id
2039 /// Id of the parm that the tag belongs to.
2040 ///
2041 /// @param[in] tag_index
2042 /// The index of the parm tag to retrieve the name of.
2043 ///
2044 /// @param[out] tag_name
2045 /// The string handle for the specified parm tag's name.
2046 ///
2048  const HAPI_Session * session,
2049  HAPI_AssetLibraryId library_id,
2050  const char * asset_name,
2051  HAPI_ParmId parm_id,
2052  int tag_index,
2053  HAPI_StringHandle * tag_name );
2054 
2055 /// @brief
2056 ///
2057 /// @ingroup Assets
2058 ///
2059 /// @param[in] session
2060 /// The session of Houdini you are interacting with.
2061 /// See @ref HAPI_Sessions for more on sessions.
2062 /// Pass NULL to just use the default in-process session.
2063 /// <!-- default NULL -->
2064 ///
2065 /// @param[in] library_id
2066 /// Returned by ::HAPI_LoadAssetLibraryFromFile().
2067 /// <!-- source ::HAPI_LoadAssetLibraryFromFile -->
2068 ///
2069 /// @param[in] asset_name
2070 /// Name of the asset that the parm tag is being retrieved from.
2071 /// <!-- string -->
2072 ///
2073 /// @param[in] parm_id
2074 /// Id of the parm that the tag belongs to.
2075 ///
2076 /// @param[in] tag_name
2077 /// The name of the parm tag to retrieve the value of.
2078 /// <!-- string -->
2079 ///
2080 /// @param[out] tag_value
2081 /// The string handle for the specified parm tag's value.
2082 ///
2084  const HAPI_Session * session,
2085  HAPI_AssetLibraryId library_id,
2086  const char * asset_name,
2087  HAPI_ParmId parm_id,
2088  const char * tag_name,
2089  HAPI_StringHandle * tag_value );
2090 
2091 /// @brief Gets the number of HDAs that have been loaded by Houdini.
2092 ///
2093 /// @note This only includes HDAs that have been loaded from disk.
2094 /// Embedded HDAs will be excluded.
2095 ///
2096 /// @ingroup Assets
2097 ///
2098 /// @param[in] session
2099 /// The session of Houdini you are interacting with.
2100 /// See @ref HAPI_Sessions for more on sessions.
2101 /// Pass NULL to just use the default in-process session.
2102 /// <!-- default NULL -->
2103 ///
2104 /// @param[out] count
2105 /// The returned number of loaded HDAs.
2106 ///
2108  const HAPI_Session * session,
2109  int * count);
2110 
2111 /// @brief Gets the HAPI_AssetLibraryId's for HDAs that are loaded in Houdini.
2112 ///
2113 /// @ingroup Assets
2114 ///
2115 /// @param[in] session
2116 /// The session of Houdini you are interacting with.
2117 /// See @ref HAPI_Sessions for more on sessions.
2118 /// Pass NULL to just use the default in-process session.
2119 /// <!-- default NULL -->
2120 ///
2121 /// @param[out] asset_library_ids_array
2122 /// Array of HAPI_AssetLibraryId's at least the size of length.
2123 /// <!-- sizeparm length -->
2124 ///
2125 /// @param[in] start
2126 /// First index from the list of HAPI_AssetLibraryId's to
2127 /// return. Must be at least 0 and at most count - 1 where count
2128 /// is the value returned by ::HAPI_GetLoadedAssetLibraryCount.
2129 ///
2130 /// @param[in] length
2131 /// The number of HAPI_AssetLibraryId's to return. Must be at
2132 /// least 0 and at most count - start where count is the value
2133 /// returned by HAPI_GetLoadedAssetLibraryCount.
2134 ///
2136  const HAPI_Session * session,
2137  HAPI_AssetLibraryId * asset_library_ids_array,
2138  int start,
2139  int length);
2140 
2141 /// @brief Gets the HAPI_StringHandle for the file path of a loaded asset
2142 /// library.
2143 ///
2144 /// @ingroup Assets
2145 ///
2146 /// @param[in] session
2147 /// The session of Houdini you are interacting with.
2148 /// See @ref HAPI_Sessions for more on sessions.
2149 /// Pass NULL to just use the default in-process session.
2150 ///
2151 /// @param[in] asset_library_id
2152 /// The HAPI_AssetLibraryId of the asset library.
2153 ///
2154 /// @param[out] file_path_sh
2155 /// The returned HAPI_StringHandle of the asset's file path on
2156 /// disk.
2157 ///
2159  const HAPI_Session * session,
2160  HAPI_AssetLibraryId asset_library_id,
2161  HAPI_StringHandle * file_path_sh);
2162 
2163 /// @defgroup HipFiles Hip Files
2164 /// Functions for managing hip files
2165 
2166 /// @brief Loads a .hip file into the main Houdini scene.
2167 ///
2168 /// @note In threaded mode, this is an _async call_!
2169 ///
2170 /// @note This method will load the HIP file into the scene. This means
2171 /// that any registered `hou.hipFile` event callbacks will be triggered
2172 /// with the `hou.hipFileEventType.BeforeMerge` and
2173 /// `hou.hipFileEventType.AfterMerge` events.
2174 ///
2175 /// @note This method loads a HIP file, completely overwriting
2176 /// everything that already exists in the scene. Therefore, any HAPI ids
2177 /// (node ids, part ids, etc.) that were obtained before calling this
2178 /// method will be invalidated.
2179 ///
2180 /// @ingroup HipFiles
2181 ///
2182 /// @param[in] session
2183 /// The session of Houdini you are interacting with.
2184 /// See @ref HAPI_Sessions for more on sessions.
2185 /// Pass NULL to just use the default in-process session.
2186 /// <!-- default NULL -->
2187 ///
2188 /// @param[in] file_name
2189 /// Absolute path to the .hip file to load.
2190 /// <!-- string -->
2191 ///
2192 /// @param[in] cook_on_load
2193 /// Set to true if you wish the nodes to cook as soon
2194 /// as they are created. Otherwise, you will have to
2195 /// call ::HAPI_CookNode() explicitly for each after you
2196 /// call this function.
2197 /// <!-- default false -->
2198 ///
2199 HAPI_DECL HAPI_LoadHIPFile( const HAPI_Session * session,
2200  const char * file_name,
2201  HAPI_Bool cook_on_load );
2202 
2203 /// @brief Loads a .hip file into the main Houdini scene.
2204 ///
2205 /// @note In threaded mode, this is an _async call_!
2206 ///
2207 /// @note This method will merge the HIP file into the scene. This means
2208 /// that any registered `hou.hipFile` event callbacks will be triggered
2209 /// with the `hou.hipFileEventType.BeforeMerge` and
2210 /// `hou.hipFileEventType.AfterMerge` events.
2211 ///
2212 /// @ingroup HipFiles
2213 ///
2214 /// @param[in] session
2215 /// The session of Houdini you are interacting with.
2216 /// See @ref HAPI_Sessions for more on sessions.
2217 /// Pass NULL to just use the default in-process session.
2218 ///
2219 /// @param[in] file_name
2220 /// Absolute path to the .hip file to load.
2221 /// <!-- string -->
2222 ///
2223 /// @param[in] cook_on_load
2224 /// Set to true if you wish the nodes to cook as soon
2225 /// as they are created. Otherwise, you will have to
2226 /// call ::HAPI_CookNode() explicitly for each after you
2227 /// call this function.
2228 ///
2229 /// @param[out] file_id
2230 /// This parameter will be set to the HAPI_HIPFileId of the
2231 /// loaded HIP file. This can be used to lookup nodes that were
2232 /// created as a result of loading this HIP file.
2233 ///
2234 HAPI_DECL HAPI_MergeHIPFile(const HAPI_Session * session,
2235  const char * file_name,
2236  HAPI_Bool cook_on_load,
2237  HAPI_HIPFileId * file_id);
2238 
2239 /// @brief Saves a .hip file of the current Houdini scene.
2240 ///
2241 /// @ingroup HipFiles
2242 ///
2243 /// @param[in] session
2244 /// The session of Houdini you are interacting with.
2245 /// See @ref HAPI_Sessions for more on sessions.
2246 /// Pass NULL to just use the default in-process session.
2247 /// <!-- default NULL -->
2248 ///
2249 /// @param[in] file_path
2250 /// Absolute path to the .hip file to save to.
2251 /// <!-- string -->
2252 ///
2253 /// @param[in] lock_nodes
2254 /// Specify whether to lock all SOP nodes before saving
2255 /// the scene file. This way, when you load the scene
2256 /// file you can see exactly the state of each SOP at
2257 /// the time it was saved instead of relying on the
2258 /// re-cook to accurately reproduce the state. It does,
2259 /// however, take a lot more space and time locking all
2260 /// nodes like this.
2261 /// <!-- default false -->
2262 ///
2263 HAPI_DECL HAPI_SaveHIPFile( const HAPI_Session * session,
2264  const char * file_path,
2265  HAPI_Bool lock_nodes );
2266 
2267 /// @brief Gets the number of nodes that were created as a result of loading a
2268 /// .hip file
2269 ///
2270 /// @ingroup HipFiles
2271 ///
2272 /// @param[in] session
2273 /// The session of Houdini you are interacting with.
2274 /// See @ref HAPI_Sessions for more on sessions.
2275 /// Pass NULL to just use the default in-process session.
2276 ///
2277 /// @param[in] id
2278 /// The HIP file id.
2279 ///
2280 /// @param[out] count
2281 /// Pointer to an int where the HIP file node count will be
2282 /// stored.
2284  HAPI_HIPFileId id,
2285  int * count);
2286 
2287 /// @brief Fills an array of ::HAPI_NodeId of nodes that were created as a
2288 /// result of loading the HIP file specified by the ::HAPI_HIPFileId
2289 ///
2290 /// @ingroup HipFiles
2291 ///
2292 /// @param[in] session
2293 /// The session of Houdini you are interacting with.
2294 /// See @ref HAPI_Sessions for more on sessions.
2295 /// Pass NULL to just use the default in-process session.
2296 ///
2297 /// @param[in] id
2298 /// The HIP file id.
2299 ///
2300 /// @param[out] node_ids
2301 /// Array of ::HAPI_NodeId at least the size of length.
2302 /// <!-- sizeparm length -->
2303 ///
2304 /// @param[in] length
2305 /// The number of ::HAPI_NodeId to be stored. This should be at
2306 /// least 0 and at most the count provided by
2307 /// HAPI_GetHIPFileNodeCount
2309  HAPI_HIPFileId id,
2310  HAPI_NodeId * node_ids,
2311  int length);
2312 
2313 /// @defgroup Nodes
2314 /// Functions for working with nodes
2315 
2316 /// @brief Determine if your instance of the node actually still exists
2317 /// inside the Houdini scene. This is what can be used to
2318 /// determine when the Houdini scene needs to be re-populated
2319 /// using the host application's instances of the nodes.
2320 /// Note that this function will ALWAYS return
2321 /// ::HAPI_RESULT_SUCCESS.
2322 ///
2323 /// @ingroup Nodes
2324 ///
2325 /// @param[in] session
2326 /// The session of Houdini you are interacting with.
2327 /// See @ref HAPI_Sessions for more on sessions.
2328 /// Pass NULL to just use the default in-process session.
2329 /// <!-- default NULL -->
2330 ///
2331 /// @param[in] node_id
2332 /// The node id.
2333 ///
2334 /// @param[in] unique_node_id
2335 /// The unique node id from
2336 /// ::HAPI_NodeInfo::uniqueHoudiniNodeId.
2337 /// <!-- source ::HAPI_NodeInfo::uniqueHoudiniNodeId -->
2338 ///
2339 /// @param[out] answer
2340 /// Answer to the question.
2341 ///
2342 HAPI_DECL HAPI_IsNodeValid( const HAPI_Session * session,
2343  HAPI_NodeId node_id,
2344  int unique_node_id,
2345  HAPI_Bool * answer );
2346 
2347 /// @brief Fill an ::HAPI_NodeInfo struct.
2348 ///
2349 /// @ingroup Nodes
2350 ///
2351 /// @param[in] session
2352 /// The session of Houdini you are interacting with.
2353 /// See @ref HAPI_Sessions for more on sessions.
2354 /// Pass NULL to just use the default in-process session.
2355 /// <!-- default NULL -->
2356 ///
2357 /// @param[in] node_id
2358 /// The node id.
2359 ///
2360 /// @param[out] node_info
2361 /// Return value - contains things like asset id.
2362 ///
2363 HAPI_DECL HAPI_GetNodeInfo( const HAPI_Session * session,
2364  HAPI_NodeId node_id,
2365  HAPI_NodeInfo * node_info );
2366 
2367 /// @brief Get the node absolute path in the Houdini node network or a
2368 /// relative path any other node.
2369 ///
2370 /// @ingroup Nodes
2371 ///
2372 /// @param[in] session
2373 /// The session of Houdini you are interacting with.
2374 /// See @ref HAPI_Sessions for more on sessions.
2375 /// Pass NULL to just use the default in-process session.
2376 /// <!-- default NULL -->
2377 ///
2378 /// @param[in] node_id
2379 /// The node id.
2380 ///
2381 /// @param[in] relative_to_node_id
2382 /// Set this to -1 to get the absolute path of the node_id.
2383 /// Otherwise, the path will be relative to this node id.
2384 ///
2385 /// @param[out] path
2386 /// The returned path string, valid until the next call to
2387 /// this function.
2388 ///
2389 HAPI_DECL HAPI_GetNodePath( const HAPI_Session * session,
2390  HAPI_NodeId node_id,
2391  HAPI_NodeId relative_to_node_id,
2392  HAPI_StringHandle * path );
2393 
2394 /// @brief Get the root node of a particular network type (ie. OBJ).
2395 ///
2396 /// @ingroup Nodes
2397 ///
2398 /// @param[in] session
2399 /// The session of Houdini you are interacting with.
2400 /// See @ref HAPI_Sessions for more on sessions.
2401 /// Pass NULL to just use the default in-process session.
2402 /// <!-- default NULL -->
2403 ///
2404 /// @param[in] node_type
2405 /// The node network type.
2406 ///
2407 /// @param[out] node_id
2408 /// The node id of the root node network.
2409 ///
2411  HAPI_NodeType node_type,
2412  HAPI_NodeId * node_id );
2413 
2414 /// @brief Compose a list of child nodes based on given filters.
2415 ///
2416 /// This function will only compose the list of child nodes. It will
2417 /// not return this list. After your call to this function, call
2418 /// HAPI_GetComposedChildNodeList() to get the list of child node ids.
2419 ///
2420 /// Note: When looking for all Display SOP nodes using this function,
2421 /// and using recursive mode, the recursion will stop as soon as a
2422 /// display SOP is found within each OBJ geometry network. It is
2423 /// almost never useful to get a list of ALL display SOP nodes
2424 /// recursively as they would all contain the same geometry. Even so,
2425 /// this special case only comes up if the display SOP itself is a
2426 /// subnet.
2427 ///
2428 /// @ingroup Nodes
2429 ///
2430 /// @param[in] session
2431 /// The session of Houdini you are interacting with.
2432 /// See @ref HAPI_Sessions for more on sessions.
2433 /// Pass NULL to just use the default in-process session.
2434 /// <!-- default NULL -->
2435 ///
2436 /// @param[in] parent_node_id
2437 /// The node id of the parent node.
2438 ///
2439 /// @param[in] node_type_filter
2440 /// The node type by which to filter the children.
2441 ///
2442 /// @param[in] node_flags_filter
2443 /// The node flags by which to filter the children.
2444 ///
2445 /// @param[in] recursive
2446 /// Whether or not to compose the list recursively.
2447 ///
2448 /// @param[out] count
2449 /// The number of child nodes composed. Use this as the
2450 /// argument to ::HAPI_GetComposedChildNodeList().
2451 ///
2453  HAPI_NodeId parent_node_id,
2454  HAPI_NodeTypeBits node_type_filter,
2455  HAPI_NodeFlagsBits node_flags_filter,
2456  HAPI_Bool recursive,
2457  int * count );
2458 
2459 /// @brief Get the composed list of child node ids from the previous call
2460 /// to HAPI_ComposeChildNodeList().
2461 ///
2462 /// @ingroup Nodes
2463 ///
2464 /// @param[in] session
2465 /// The session of Houdini you are interacting with.
2466 /// See @ref HAPI_Sessions for more on sessions.
2467 /// Pass NULL to just use the default in-process session.
2468 /// <!-- default NULL -->
2469 ///
2470 /// @param[in] parent_node_id
2471 /// The node id of the parent node.
2472 ///
2473 /// @param[out] child_node_ids_array
2474 /// The array of ::HAPI_NodeId for the child nodes.
2475 /// <!-- sizeparm count -->
2476 ///
2477 /// @param[in] count
2478 /// The number of children in the composed list. MUST match
2479 /// the count returned by HAPI_ComposeChildNodeList().
2480 /// <!-- source ::HAPI_ComposeChildNodeList -->
2481 /// <!-- min ::HAPI_ComposeChildNodeList -->
2482 /// <!-- max ::HAPI_ComposeChildNodeList -->
2483 ///
2485  HAPI_NodeId parent_node_id,
2486  HAPI_NodeId * child_node_ids_array,
2487  int count );
2488 
2489 /// @brief Create a node inside a node network. Nodes created this way
2490 /// will have their ::HAPI_NodeInfo::createdPostAssetLoad set
2491 /// to true.
2492 ///
2493 /// @note In threaded mode, this is an _async call_!
2494 ///
2495 /// @note This is also when we actually check for valid licenses.
2496 ///
2497 /// This API will invoke the cooking thread if threading is
2498 /// enabled. This means it will return immediately with a call
2499 /// result of ::HAPI_RESULT_SUCCESS, even if fed garbage. Use
2500 /// the status and cooking count APIs under DIAGNOSTICS to get
2501 /// a sense of the progress. All other API calls will block
2502 /// until the creation (and, optionally, the first cook)
2503 /// of the node has finished.
2504 ///
2505 /// Also note that the cook result won't be of type
2506 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2507 /// Whenever the threading cook is done it will fill the
2508 /// @a cook result which is queried using
2509 /// ::HAPI_STATUS_COOK_RESULT.
2510 ///
2511 /// @ingroup Nodes
2512 ///
2513 /// @param[in] session
2514 /// The session of Houdini you are interacting with.
2515 /// See @ref HAPI_Sessions for more on sessions.
2516 /// Pass NULL to just use the default in-process session.
2517 /// <!-- default NULL -->
2518 ///
2519 /// @param[in] parent_node_id
2520 /// The parent node network's node id or -1 if the parent
2521 /// network is the manager (top-level) node. In that case,
2522 /// the manager must be identified by the table name in the
2523 /// operator_name.
2524 /// <!-- min -1 -->
2525 /// <!-- default -1 -->
2526 ///
2527 /// @param[in] operator_name
2528 /// The name of the node operator type.
2529 ///
2530 /// If you are creating an Object or SOP node, you can pass
2531 /// parent_node_id == -1 as long as you include the table name
2532 /// (ie. Object/ or Sop/) as a prefix to the operator_name.
2533 /// This convenience is only available for Object or SOP nodes.
2534 /// This is the common case for when creating asset nodes
2535 /// from a loaded asset library. In that case, just pass
2536 /// whatever ::HAPI_GetAvailableAssets() returns.
2537 ///
2538 /// If you have a parent_node_id then you should
2539 /// include only the namespace, name, and version.
2540 ///
2541 /// For example, lets say you have an Object type asset, in
2542 /// the "hapi" namespace, of version 2.0, named "foo". If
2543 /// you pass parent_node_id == -1, then set the operator_name
2544 /// as "Object/hapi::foo::2.0". Otherwise, if you have a valid
2545 /// parent_node_id, then just pass operator_name as
2546 /// "hapi::foo::2.0".
2547 /// <!-- string -->
2548 ///
2549 /// @param[in] node_label
2550 /// (Optional) The label of the newly created node.
2551 /// <!-- default NULL -->
2552 /// <!-- string -->
2553 ///
2554 /// @param[in] cook_on_creation
2555 /// Set whether the node should cook once created or not.
2556 /// <!-- default false -->
2557 ///
2558 /// @param[out] new_node_id
2559 /// The returned node id of the just-created node.
2560 ///
2561 HAPI_DECL HAPI_CreateNode( const HAPI_Session * session,
2562  HAPI_NodeId parent_node_id,
2563  const char * operator_name,
2564  const char * node_label,
2565  HAPI_Bool cook_on_creation,
2566  HAPI_NodeId * new_node_id );
2567 
2568 /// @brief Creates a simple geometry SOP node that can accept geometry input.
2569 /// Inside the specified parent node, this will create a Null SOP
2570 /// you can set the geometry of using the geometry SET APIs.
2571 /// You can then connect this node to any other node as a geometry
2572 /// input.
2573 ///
2574 /// Note that when saving the Houdini scene using
2575 /// ::HAPI_SaveHIPFile() the nodes created with this
2576 /// method will be green and will start with the name "input".
2577 ///
2578 /// @ingroup Nodes
2579 ///
2580 /// @param[in] session
2581 /// The session of Houdini you are interacting with.
2582 /// See @ref HAPI_Sessions for more on sessions.
2583 /// Pass NULL to just use the default in-process session.
2584 /// <!-- default NULL -->
2585 ///
2586 /// @param[in] parent_node_id
2587 /// The node id of the parent OBJ node or SOP subnetwork node in
2588 /// which the input node should be created, or -1 to create a
2589 /// new dummy parent OBJ node for this input node.
2590 /// <!-- min -1 -->
2591 /// <!-- default -1 -->
2592 ///
2593 /// @param[out] node_id
2594 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2595 /// to get more information about the node.
2596 ///
2597 /// @param[in] name
2598 /// Give this input node a name for easy debugging.
2599 /// The node's parent OBJ node and the Null SOP node will both
2600 /// get this given name with "input_" prepended.
2601 /// You can also pass NULL in which case the name will
2602 /// be "input#" where # is some number.
2603 /// <!-- default NULL -->
2604 /// <!-- string -->
2605 ///
2607  HAPI_NodeId parent_node_id,
2608  HAPI_NodeId * node_id,
2609  const char * name );
2610 
2611 /// @brief Helper for specifically creating a curve input geometry SOP.
2612 /// Inside the specified parent node, this will create a Null SOP that
2613 /// contains the HAPI_ATTRIB_INPUT_CURVE_COORDS attribute.
2614 /// It will set up the node as a curve part with no points.
2615 /// In addition to creating the input node, it will also commit and cook
2616 /// the geometry.
2617 ///
2618 /// Note that when saving the Houdini scene using
2619 /// ::HAPI_SaveHIPFile() the nodes created with this
2620 /// method will be green and will start with the name "input".
2621 ///
2622 /// @ingroup InputCurves
2623 ///
2624 /// @param[in] session
2625 /// The session of Houdini you are interacting with.
2626 /// See @ref HAPI_Sessions for more on sessions.
2627 /// Pass NULL to just use the default in-process session.
2628 /// <!-- default NULL -->
2629 ///
2630 /// @param[in] parent_node_id
2631 /// The node id of the parent OBJ node or SOP subnetwork node in
2632 /// which the input node should be created, or -1 to create a
2633 /// new dummy parent OBJ node for this input node.
2634 /// <!-- min -1 -->
2635 /// <!-- default -1 -->
2636 ///
2637 /// @param[out] node_id
2638 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
2639 /// to get more information about the node.
2640 ///
2641 /// @param[in] name
2642 /// Give this input node a name for easy debugging.
2643 /// The node's parent OBJ node and the Null SOP node will both
2644 /// get this given name with "input_" prepended.
2645 /// You can also pass NULL in which case the name will
2646 /// be "input#" where # is some number.
2647 /// <!-- default NULL -->
2648 /// <!-- string -->
2649 ///
2651  HAPI_NodeId parent_node_id,
2652  HAPI_NodeId * node_id,
2653  const char * name );
2654 
2655 
2656 /// @defgroup HeightFields Height Fields
2657 /// Functions for creating and inspecting HAPI session state.
2658 
2659 /// @brief Creates the required node hierarchy needed for heightfield inputs.
2660 ///
2661 /// Note that when saving the Houdini scene using
2662 /// ::HAPI_SaveHIPFile() the nodes created with this
2663 /// method will be green and will start with the name "input".
2664 ///
2665 /// @ingroup HeightFields
2666 ///
2667 /// @param[in] session
2668 /// The session of Houdini you are interacting with.
2669 /// See @ref HAPI_Sessions for more on sessions.
2670 /// Pass NULL to just use the default in-process session.
2671 /// <!-- default NULL -->
2672 ///
2673 /// @param[in] parent_node_id
2674 /// The parent node network's node id or -1 if the parent
2675 /// network is the manager (top-level) node. In that case,
2676 /// the manager must be identified by the table name in the
2677 /// operator_name.
2678 /// <!-- min -1 -->
2679 /// <!-- default -1 -->
2680 ///
2681 /// @param[in] name
2682 /// Give this input node a name for easy debugging.
2683 /// The node's parent OBJ node and the Null SOP node will both
2684 /// get this given name with "input_" prepended.
2685 /// You can also pass NULL in which case the name will
2686 /// be "input#" where # is some number.
2687 /// <!-- default NULL -->
2688 /// <!-- string -->
2689 ///
2690 /// @param[in] xsize
2691 /// size of the heightfield in X
2692 ///
2693 /// @param[in] ysize
2694 /// size of the heightfield in y
2695 ///
2696 /// @param[in] voxelsize
2697 /// Size of the voxel
2698 ///
2699 /// @param[in] sampling
2700 /// Type of sampling which should be either center or corner.
2701 ///
2702 /// @param[out] heightfield_node_id
2703 /// Newly created node id for the heightfield node.
2704 /// Use ::HAPI_GetNodeInfo() to get more information about
2705 /// the node.
2706 ///
2707 /// @param[out] height_node_id
2708 /// Newly created node id for the height volume.
2709 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2710 ///
2711 /// @param[out] mask_node_id
2712 /// Newly created node id for the mask volume.
2713 /// Use ::HAPI_GetNodeInfo() to get more information about the
2714 /// node.
2715 ///
2716 /// @param[out] merge_node_id
2717 /// Newly created merge node id.
2718 /// The merge node can be used to connect additional input masks.
2719 /// Use ::HAPI_GetNodeInfo() to get more information about the node.
2720 ///
2722  HAPI_NodeId parent_node_id,
2723  const char * name,
2724  int xsize,
2725  int ysize,
2726  float voxelsize,
2727  HAPI_HeightFieldSampling sampling,
2728  HAPI_NodeId * heightfield_node_id,
2729  HAPI_NodeId * height_node_id,
2730  HAPI_NodeId * mask_node_id,
2731  HAPI_NodeId * merge_node_id );
2732 
2733 /// @brief Creates a volume input node that can be used with Heightfields
2734 ///
2735 /// Note that when saving the Houdini scene using
2736 /// ::HAPI_SaveHIPFile() the nodes created with this
2737 /// method will be green and will start with the name "input".
2738 ///
2739 /// @ingroup HeightFields
2740 ///
2741 /// @param[in] session
2742 /// The session of Houdini you are interacting with.
2743 /// See @ref HAPI_Sessions for more on sessions.
2744 /// Pass NULL to just use the default in-process session.
2745 /// <!-- default NULL -->
2746 ///
2747 /// @param[in] parent_node_id
2748 /// The parent node network's node id or -1 if the parent
2749 /// network is the manager (top-level) node. In that case,
2750 /// the manager must be identified by the table name in the
2751 /// operator_name.
2752 /// <!-- min -1 -->
2753 /// <!-- default -1 -->
2754 ///
2755 /// @param[out] new_node_id
2756 /// Newly created node id for the volume.
2757 /// Use ::HAPI_GetNodeInfo() to get more information about the
2758 /// node.
2759 ///
2760 /// @param[in] name
2761 /// The name of the volume to create.
2762 /// You can also pass NULL in which case the name will
2763 /// be "input#" where # is some number.
2764 /// <!-- default NULL -->
2765 /// <!-- string -->
2766 ///
2767 /// @param[in] xsize
2768 /// size of the heightfield in X
2769 ///
2770 /// @param[in] ysize
2771 /// size of the heightfield in y
2772 ///
2773 /// @param[in] voxelsize
2774 /// Size of the voxel
2775 ///
2777  HAPI_NodeId parent_node_id,
2778  HAPI_NodeId * new_node_id,
2779  const char * name,
2780  int xsize,
2781  int ysize,
2782  float voxelsize );
2783 
2784 /// @brief Initiate a cook on this node. Note that this may trigger
2785 /// cooks on other nodes if they are connected.
2786 ///
2787 /// @note In threaded mode, this is an _async call_!
2788 ///
2789 /// This API will invoke the cooking thread if threading is
2790 /// enabled. This means it will return immediately. Use
2791 /// the status and cooking count APIs under DIAGNOSTICS to get
2792 /// a sense of the progress. All other API calls will block
2793 /// until the cook operation has finished.
2794 ///
2795 /// Also note that the cook result won't be of type
2796 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
2797 /// Whenever the threading cook is done it will fill the
2798 /// @a cook result which is queried using
2799 /// ::HAPI_STATUS_COOK_RESULT.
2800 ///
2801 /// @ingroup Nodes
2802 ///
2803 /// @param[in] session
2804 /// The session of Houdini you are interacting with.
2805 /// See @ref HAPI_Sessions for more on sessions.
2806 /// Pass NULL to just use the default in-process session.
2807 /// <!-- default NULL -->
2808 ///
2809 /// @param[in] node_id
2810 /// The node id.
2811 ///
2812 /// @param[in] cook_options
2813 /// The cook options. Pass in NULL to use the global
2814 /// cook options that you specified when calling
2815 /// ::HAPI_Initialize().
2816 /// <!-- default NULL -->
2817 ///
2818 HAPI_DECL HAPI_CookNode( const HAPI_Session * session,
2819  HAPI_NodeId node_id,
2820  const HAPI_CookOptions * cook_options );
2821 
2822 /// @brief Delete a node from a node network. Only nodes with their
2823 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2824 /// deleted this way.
2825 ///
2826 /// @ingroup Nodes
2827 ///
2828 /// @param[in] session
2829 /// The session of Houdini you are interacting with.
2830 /// See @ref HAPI_Sessions for more on sessions.
2831 /// Pass NULL to just use the default in-process session.
2832 /// <!-- default NULL -->
2833 ///
2834 /// @param[in] node_id
2835 /// The node to delete.
2836 ///
2837 HAPI_DECL HAPI_DeleteNode( const HAPI_Session * session,
2838  HAPI_NodeId node_id );
2839 
2840 /// @brief Rename a node that you created. Only nodes with their
2841 /// ::HAPI_NodeInfo::createdPostAssetLoad set to true can be
2842 /// renamed this way.
2843 ///
2844 /// @ingroup Nodes
2845 ///
2846 /// @param[in] session
2847 /// The session of Houdini you are interacting with.
2848 /// See @ref HAPI_Sessions for more on sessions.
2849 /// Pass NULL to just use the default in-process session.
2850 /// <!-- default NULL -->
2851 ///
2852 /// @param[in] node_id
2853 /// The node to rename.
2854 ///
2855 /// @param[in] new_name
2856 /// The new node name.
2857 /// <!-- string -->
2858 ///
2859 HAPI_DECL HAPI_RenameNode( const HAPI_Session * session,
2860  HAPI_NodeId node_id,
2861  const char * new_name );
2862 
2863 /// @brief Connect two nodes together.
2864 ///
2865 /// @param[in] session
2866 /// The session of Houdini you are interacting with.
2867 /// See @ref HAPI_Sessions for more on sessions.
2868 /// Pass NULL to just use the default in-process session.
2869 /// <!-- default NULL -->
2870 ///
2871 /// @ingroup Nodes
2872 ///
2873 /// @param[in] node_id
2874 /// The node whom's input to connect to.
2875 ///
2876 /// @param[in] input_index
2877 /// The input index. Should be between 0 and the
2878 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2879 /// <!-- min 0 -->
2880 ///
2881 /// @param[in] node_id_to_connect
2882 /// The node to connect to node_id's input.
2883 ///
2884 /// @param[in] output_index
2885 /// The output index. Should be between 0 and the
2886 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
2887 /// <!-- min 0 -->
2888 ///
2890  HAPI_NodeId node_id,
2891  int input_index,
2892  HAPI_NodeId node_id_to_connect,
2893  int output_index );
2894 
2895 /// @brief Disconnect a node input.
2896 ///
2897 /// @param[in] session
2898 /// The session of Houdini you are interacting with.
2899 /// See @ref HAPI_Sessions for more on sessions.
2900 /// Pass NULL to just use the default in-process session.
2901 /// <!-- default NULL -->
2902 ///
2903 /// @ingroup Nodes
2904 ///
2905 /// @param[in] node_id
2906 /// The node whom's input to disconnect.
2907 ///
2908 /// @param[in] input_index
2909 /// The input index. Should be between 0 and the
2910 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2911 /// <!-- min 0 -->
2912 ///
2914  HAPI_NodeId node_id,
2915  int input_index );
2916 
2917 /// @brief Query which node is connected to another node's input.
2918 ///
2919 /// @param[in] session
2920 /// The session of Houdini you are interacting with.
2921 /// See @ref HAPI_Sessions for more on sessions.
2922 /// Pass NULL to just use the default in-process session.
2923 /// <!-- default NULL -->
2924 ///
2925 /// @ingroup Nodes
2926 ///
2927 /// @param[in] node_to_query
2928 /// The node to query.
2929 ///
2930 /// @param[in] input_index
2931 /// The input index. Should be between 0 and the
2932 /// to_node's ::HAPI_NodeInfo::inputCount - 1.
2933 /// <!-- min 0 -->
2934 ///
2935 /// @param[out] connected_node_id
2936 /// The node id of the connected node to this input. If
2937 /// nothing is connected then -1 will be returned.
2938 ///
2939 HAPI_DECL HAPI_QueryNodeInput( const HAPI_Session * session,
2940  HAPI_NodeId node_to_query,
2941  int input_index,
2942  HAPI_NodeId * connected_node_id );
2943 
2944 /// @brief Get the name of an node's input. This function will return
2945 /// a string handle for the name which will be valid (persist)
2946 /// until the next call to this function.
2947 ///
2948 /// @ingroup Nodes
2949 ///
2950 /// @param[in] session
2951 /// The session of Houdini you are interacting with.
2952 /// See @ref HAPI_Sessions for more on sessions.
2953 /// Pass NULL to just use the default in-process session.
2954 /// <!-- default NULL -->
2955 ///
2956 /// @param[in] node_id
2957 /// The node id.
2958 ///
2959 /// @param[in] input_idx
2960 /// The input index. Should be between 0 and the
2961 /// node_to_query's ::HAPI_NodeInfo::inputCount - 1.
2962 /// <!-- min 0 -->
2963 ///
2964 /// @param[out] name
2965 /// Input name string handle return value - valid until
2966 /// the next call to this function.
2967 ///
2969  HAPI_NodeId node_id,
2970  int input_idx,
2971  HAPI_StringHandle * name );
2972 
2973 /// @brief Disconnect all of the node's output connections at the output index.
2974 ///
2975 /// @ingroup Nodes
2976 ///
2977 /// @param[in] session
2978 /// The session of Houdini you are interacting with.
2979 /// See @ref HAPI_Sessions for more on sessions.
2980 /// Pass NULL to just use the default in-process session.
2981 /// <!-- default NULL -->
2982 ///
2983 /// @param[in] node_id
2984 /// The node whom's outputs to disconnect.
2985 ///
2986 /// @param[in] output_index
2987 /// The output index. Should be between 0 and the
2988 /// to_node's ::HAPI_NodeInfo::outputCount.
2989 /// <!-- min 0 -->
2990 ///
2992  HAPI_NodeId node_id,
2993  int output_index );
2994 
2995 /// @brief Get the number of nodes currently connected to the given node at
2996 /// the output index.
2997 ///
2998 /// @ingroup Nodes
2999 ///
3000 /// Use the @c count returned by this function to get the
3001 /// ::HAPI_NodeId of connected nodes using
3002 /// ::HAPI_QueryNodeOutputConnectedNodes().
3003 ///
3004 /// @param[in] session
3005 /// The session of Houdini you are interacting with.
3006 /// See @ref HAPI_Sessions for more on sessions.
3007 /// Pass NULL to just use the default in-process session.
3008 /// <!-- default NULL -->
3009 ///
3010 /// @param[in] node_id
3011 /// The node id.
3012 ///
3013 /// @param[in] output_idx
3014 /// The output index. Should be between 0 and the
3015 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3016 /// <!-- min 0 -->
3017 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3018 ///
3019 /// @param[in] into_subnets
3020 /// Whether to search by diving into subnets.
3021 /// <!-- default true -->
3022 ///
3023 /// @param[in] through_dots
3024 /// Whether to search through dots.
3025 /// <!-- default true -->
3026 ///
3027 /// @param[out] connected_count
3028 /// The number of nodes currently connected to this node at
3029 /// given output index. Use this count with a call to
3030 /// ::HAPI_QueryNodeOutputConnectedNodes() to get list of
3031 /// connected nodes.
3032 ///
3034  HAPI_NodeId node_id,
3035  int output_idx,
3036  HAPI_Bool into_subnets,
3037  HAPI_Bool through_dots,
3038  int * connected_count );
3039 
3040 /// @brief Get the ids of nodes currently connected to the given node
3041 /// at the output index.
3042 ///
3043 /// Use the @c connected_count returned by
3044 /// ::HAPI_QueryNodeOutputConnectedCount().
3045 ///
3046 /// @ingroup Nodes
3047 ///
3048 /// @param[in] session
3049 /// The session of Houdini you are interacting with.
3050 /// See @ref HAPI_Sessions for more on sessions.
3051 /// Pass NULL to just use the default in-process session.
3052 /// <!-- default NULL -->
3053 ///
3054 /// @param[in] node_id
3055 /// The node id.
3056 ///
3057 /// @param[in] output_idx
3058 /// The output index. Should be between 0 and the
3059 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3060 /// <!-- min 0 -->
3061 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3062 ///
3063 /// @param[in] into_subnets
3064 /// Whether to search by diving into subnets.
3065 /// <!-- default true -->
3066 ///
3067 /// @param[in] through_dots
3068 /// Whether to search through dots.
3069 /// <!-- default true -->
3070 ///
3071 /// @param[out] connected_node_ids_array
3072 /// Array of ::HAPI_NodeId at least the size of @c length.
3073 /// <!-- sizeparm length -->
3074 ///
3075 /// @param[in] start
3076 /// At least @c 0 and at most @c connected_count returned by
3077 /// ::HAPI_QueryNodeOutputConnectedCount().
3078 /// <!-- min 0 -->
3079 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount -->
3080 /// <!-- default 0 -->
3081 ///
3082 /// @param[in] length
3083 /// Given @c connected_count returned by
3084 /// ::HAPI_QueryNodeOutputConnectedCount(), @c length should
3085 /// be at least @c 1 and at most <tt>connected_count - start</tt>.
3086 /// <!-- min 1 -->
3087 /// <!-- max ::HAPI_QueryNodeOutputConnectedCount - start -->
3088 /// <!-- source ::HAPI_QueryNodeOutputConnectedCount - start -->
3089 ///
3091  HAPI_NodeId node_id,
3092  int output_idx,
3093  HAPI_Bool into_subnets,
3094  HAPI_Bool through_dots,
3095  HAPI_NodeId * connected_node_ids_array,
3096  int start, int length );
3097 
3098 /// @brief Get the name of an node's output. This function will return
3099 /// a string handle for the name which will be valid (persist)
3100 /// until the next call to this function.
3101 /// Only COPs and VOPs can have output names - other node types
3102 /// will return their node label when this is called
3103 ///
3104 /// @ingroup Nodes
3105 ///
3106 /// @param[in] session
3107 /// The session of Houdini you are interacting with.
3108 /// See @ref HAPI_Sessions for more on sessions.
3109 /// Pass NULL to just use the default in-process session.
3110 /// <!-- default NULL -->
3111 ///
3112 /// @param[in] node_id
3113 /// The node id.
3114 ///
3115 /// @param[in] output_idx
3116 /// The output index. Should be between 0 and the
3117 /// to_node's ::HAPI_NodeInfo::outputCount - 1.
3118 /// <!-- min 0 -->
3119 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3120 ///
3121 /// @param[out] name
3122 /// Output name string handle return value - valid until
3123 /// the next call to this function.
3124 ///
3126  HAPI_NodeId node_id,
3127  int output_idx,
3128  HAPI_StringHandle * name );
3129 
3130 /// @brief Get the id of the node with the specified path.
3131 ///
3132 /// @ingroup Nodes
3133 ///
3134 /// @param[in] session
3135 /// The session of Houdini you are interacting with.
3136 /// See @ref HAPI_Sessions for more on sessions.
3137 /// Pass NULL to just use the default in-process session.
3138 /// <!-- default NULL -->
3139 ///
3140 /// @param[in] parent_node_id
3141 /// If @c path does not start with "/", search for the path
3142 /// relative to this node. Provide -1 if @c path is an absolute
3143 /// path.
3144 ///
3145 /// @param[in] path
3146 /// The path of the node. If the path does not start with "/",
3147 /// it is treated as a relative path from the node specified in
3148 /// @c parent_node_id.
3149 /// <!-- string -->
3150 ///
3151 /// @param[out] node_id
3152 /// The id of the found node.
3153 ///
3155  const HAPI_NodeId parent_node_id,
3156  const char * path,
3157  HAPI_NodeId * node_id );
3158 
3159 /// @brief Gets the node id of an output node in a SOP network.
3160 ///
3161 /// @ingroup Nodes
3162 ///
3163 /// @param[in] session
3164 /// The session of Houdini you are interacting with.
3165 /// See @ref HAPI_Sessions for more on sessions.
3166 /// Pass NULL to just use the default in-process session.
3167 /// <!-- default NULL -->
3168 ///
3169 /// @param[in] node_id
3170 /// The node id of a SOP node with at least one output node. The
3171 /// total number of node outputs can be found from the node's
3172 /// ::HAPI_NodeInfo::outputCount
3173 ///
3174 /// @param[in] output
3175 /// The output index. Should be between 0 and the node's
3176 /// ::HAPI_NodeInfo::outputCount - 1.
3177 /// <!-- min 0 -->
3178 /// <!-- max ::HAPI_NodeInfo::outputCount - 1 -->
3179 ///
3180 /// @param[out] output_node_id
3181 /// Pointer to a HAPI_NodeId where the node id of the output
3182 /// node will be stored.
3184  HAPI_NodeId node_id,
3185  int output,
3186  HAPI_NodeId * output_node_id );
3187 
3188 /// @defgroup Parms Parms
3189 /// Functions for working with Node parameters (parms)
3190 
3191 /// @brief Fill an array of ::HAPI_ParmInfo structs with parameter
3192 /// information from the asset instance node.
3193 ///
3194 /// @ingroup Parms
3195 ///
3196 /// @param[in] session
3197 /// The session of Houdini you are interacting with.
3198 /// See @ref HAPI_Sessions for more on sessions.
3199 /// Pass NULL to just use the default in-process session.
3200 /// <!-- default NULL -->
3201 ///
3202 /// @param[in] node_id
3203 /// The node id.
3204 ///
3205 /// @param[out] parm_infos_array
3206 /// Array of ::HAPI_ParmInfo at least the size of
3207 /// length.
3208 /// <!-- sizeparm length -->
3209 ///
3210 /// @param[in] start
3211 /// First index of range. Must be at least 0 and at
3212 /// most ::HAPI_NodeInfo::parmCount - 1.
3213 /// <!-- min 0 -->
3214 /// <!-- max ::HAPI_NodeInfo::parmCount - 1 -->
3215 /// <!-- default 0 -->
3216 ///
3217 /// @param[in] length
3218 /// Must be at least 1 and at most
3219 /// ::HAPI_NodeInfo::parmCount - start.
3220 /// <!-- min 1 -->
3221 /// <!-- max ::HAPI_NodeInfo::parmCount - start -->
3222 /// <!-- source ::HAPI_NodeInfo::parmCount - start -->
3223 ///
3224 HAPI_DECL HAPI_GetParameters( const HAPI_Session * session,
3225  HAPI_NodeId node_id,
3226  HAPI_ParmInfo * parm_infos_array,
3227  int start, int length );
3228 
3229 /// @brief Get the parm info of a parameter by parm id.
3230 ///
3231 /// @ingroup Parms
3232 ///
3233 /// @param[in] session
3234 /// The session of Houdini you are interacting with.
3235 /// See @ref HAPI_Sessions for more on sessions.
3236 /// Pass NULL to just use the default in-process session.
3237 /// <!-- default NULL -->
3238 ///
3239 /// @param[in] node_id
3240 /// The node id.
3241 ///
3242 /// @param[in] parm_id
3243 /// The parm id.
3244 ///
3245 /// @param[out] parm_info
3246 /// The returned parm info.
3247 ///
3248 HAPI_DECL HAPI_GetParmInfo( const HAPI_Session * session,
3249  HAPI_NodeId node_id,
3250  HAPI_ParmId parm_id,
3251  HAPI_ParmInfo * parm_info );
3252 
3253 /// @brief All parameter APIs require a ::HAPI_ParmId but if you know the
3254 /// parameter you wish to operate on by name than you can use
3255 /// this function to get its ::HAPI_ParmId. If the parameter with
3256 /// the given name is not found the parameter id returned
3257 /// will be -1.
3258 ///
3259 /// @ingroup Parms
3260 ///
3261 /// @param[in] session
3262 /// The session of Houdini you are interacting with.
3263 /// See @ref HAPI_Sessions for more on sessions.
3264 /// Pass NULL to just use the default in-process session.
3265 /// <!-- default NULL -->
3266 ///
3267 /// @param[in] node_id
3268 /// The node id.
3269 ///
3270 /// @param[in] parm_name
3271 /// The parm name.
3272 /// <!-- string -->
3273 ///
3274 /// @param[out] parm_id
3275 /// The return value. The parameter's ::HAPI_ParmId. If
3276 /// the parameter with the given name is not found the
3277 /// parameter id returned will be -1.
3278 ///
3280  HAPI_NodeId node_id,
3281  const char * parm_name,
3282  HAPI_ParmId * parm_id );
3283 
3284 /// @brief Get the parm info of a parameter by name.
3285 ///
3286 /// @ingroup Parms
3287 ///
3288 /// @param[in] session
3289 /// The session of Houdini you are interacting with.
3290 /// See @ref HAPI_Sessions for more on sessions.
3291 /// Pass NULL to just use the default in-process session.
3292 /// <!-- default NULL -->
3293 ///
3294 /// @param[in] node_id
3295 /// The node id.
3296 ///
3297 /// @param[in] parm_name
3298 /// The parm name.
3299 /// <!-- string -->
3300 ///
3301 /// @param[out] parm_info
3302 /// The returned parm info.
3303 ///
3305  HAPI_NodeId node_id,
3306  const char * parm_name,
3307  HAPI_ParmInfo * parm_info );
3308 
3309 /// @brief Get the tag name on a parameter given an index.
3310 ///
3311 /// @ingroup Parms
3312 ///
3313 /// @param[in] session
3314 /// The session of Houdini you are interacting with.
3315 /// See @ref HAPI_Sessions for more on sessions.
3316 /// Pass NULL to just use the default in-process session.
3317 /// <!-- default NULL -->
3318 ///
3319 /// @param[in] node_id
3320 /// The node id.
3321 ///
3322 /// @param[in] parm_id
3323 /// The parm id.
3324 ///
3325 /// @param[in] tag_index
3326 /// The tag index, which should be between 0 and
3327 /// ::HAPI_ParmInfo::tagCount - 1.
3328 /// @note These indices are invalidated whenever tags are added
3329 /// to parameters. Do not store these or expect them to be the
3330 /// same if the scene is modified.
3331 /// <!-- min 0 -->
3332 /// <!-- max ::HAPI_ParmInfo::tagCount - 1 -->
3333 ///
3334 /// @param[out] tag_name
3335 /// The returned tag name. This string handle will be valid
3336 /// until another call to ::HAPI_GetParmTagName().
3337 ///
3338 HAPI_DECL HAPI_GetParmTagName( const HAPI_Session * session,
3339  HAPI_NodeId node_id,
3340  HAPI_ParmId parm_id,
3341  int tag_index,
3342  HAPI_StringHandle * tag_name );
3343 
3344 /// @brief Get the tag value on a parameter given the tag name.
3345 ///
3346 /// @ingroup Parms
3347 ///
3348 /// @param[in] session
3349 /// The session of Houdini you are interacting with.
3350 /// See @ref HAPI_Sessions for more on sessions.
3351 /// Pass NULL to just use the default in-process session.
3352 /// <!-- default NULL -->
3353 ///
3354 /// @param[in] node_id
3355 /// The node id.
3356 ///
3357 /// @param[in] parm_id
3358 /// The parm id.
3359 ///
3360 /// @param[in] tag_name
3361 /// The tag name, either known or returned by
3362 /// ::HAPI_GetParmTagName().
3363 /// <!-- string -->
3364 ///
3365 /// @param[out] tag_value
3366 /// The returned tag value. This string handle will be valid
3367 /// until another call to ::HAPI_GetParmTagValue().
3368 ///
3370  HAPI_NodeId node_id,
3371  HAPI_ParmId parm_id,
3372  const char * tag_name,
3373  HAPI_StringHandle * tag_value );
3374 
3375 /// @brief See if a parameter has a specific tag.
3376 ///
3377 /// @ingroup Parms
3378 ///
3379 /// @param[in] session
3380 /// The session of Houdini you are interacting with.
3381 /// See @ref HAPI_Sessions for more on sessions.
3382 /// Pass NULL to just use the default in-process session.
3383 /// <!-- default NULL -->
3384 ///
3385 /// @param[in] node_id
3386 /// The node id.
3387 ///
3388 /// @param[in] parm_id
3389 /// The parm id.
3390 ///
3391 /// @param[in] tag_name
3392 /// The tag name to look for.
3393 /// <!-- string -->
3394 ///
3395 /// @param[out] has_tag
3396 /// True if the tag exists on the parameter, false otherwise.
3397 ///
3398 HAPI_DECL HAPI_ParmHasTag( const HAPI_Session * session,
3399  HAPI_NodeId node_id,
3400  HAPI_ParmId parm_id,
3401  const char * tag_name,
3402  HAPI_Bool * has_tag );
3403 
3404 /// @brief See if a parameter has an expression
3405 ///
3406 /// @ingroup Parms
3407 ///
3408 /// @param[in] session
3409 /// The session of Houdini you are interacting with.
3410 /// See @ref HAPI_Sessions for more on sessions.
3411 /// Pass NULL to just use the default in-process session.
3412 /// <!-- default NULL -->
3413 ///
3414 /// @param[in] node_id
3415 /// The node id.
3416 ///
3417 /// @param[in] parm_name
3418 /// The parm name.
3419 /// <!-- string -->
3420 ///
3421 /// @param[in] index
3422 /// The parm index.
3423 ///
3424 /// @param[out] has_expression
3425 /// True if an expression exists on the parameter, false otherwise.
3426 ///
3428  HAPI_NodeId node_id,
3429  const char * parm_name,
3430  int index,
3431  HAPI_Bool * has_expression );
3432 
3433 /// @brief Get the first parm with a specific, ideally unique, tag on it.
3434 /// This is particularly useful for getting the ogl parameters on a
3435 /// material node.
3436 ///
3437 /// @ingroup Parms
3438 ///
3439 /// @param[in] session
3440 /// The session of Houdini you are interacting with.
3441 /// See @ref HAPI_Sessions for more on sessions.
3442 /// Pass NULL to just use the default in-process session.
3443 /// <!-- default NULL -->
3444 ///
3445 /// @param[in] node_id
3446 /// The node id.
3447 ///
3448 /// @param[in] tag_name
3449 /// The tag name to look for.
3450 /// <!-- string -->
3451 ///
3452 /// @param[out] parm_id
3453 /// The returned parm id. This will be -1 if no parm was found
3454 /// with this tag.
3455 ///
3456 HAPI_DECL HAPI_GetParmWithTag( const HAPI_Session * session,
3457  HAPI_NodeId node_id,
3458  const char * tag_name,
3459  HAPI_ParmId * parm_id );
3460 
3461 /// @brief Get single integer or float parm expression by name
3462 /// or Null string if no expression is present
3463 ///
3464 /// @ingroup Parms
3465 ///
3466 /// @param[in] session
3467 /// The session of Houdini you are interacting with.
3468 /// See @ref HAPI_Sessions for more on sessions.
3469 /// Pass NULL to just use the default in-process session.
3470 /// <!-- default NULL -->
3471 ///
3472 /// @param[in] node_id
3473 /// The node id.
3474 ///
3475 /// @param[in] parm_name
3476 /// The parm name.
3477 /// <!-- string -->
3478 ///
3479 /// @param[in] index
3480 /// Index within the parameter's values tuple.
3481 ///
3482 /// @param[out] value
3483 /// The returned string value.
3484 ///
3486  HAPI_NodeId node_id,
3487  const char * parm_name,
3488  int index,
3489  HAPI_StringHandle * value );
3490 
3491 /// @brief Revert single parm by name to default
3492 ///
3493 /// @ingroup Parms
3494 ///
3495 /// @param[in] session
3496 /// The session of Houdini you are interacting with.
3497 /// See @ref HAPI_Sessions for more on sessions.
3498 /// Pass NULL to just use the default in-process session.
3499 /// <!-- default NULL -->
3500 ///
3501 /// @param[in] node_id
3502 /// The node id.
3503 ///
3504 /// @param[in] parm_name
3505 /// The parm name.
3506 /// <!-- string -->
3507 ///
3508 /// @param[in] index
3509 /// Index within the parameter's values tuple.
3510 ///
3512  HAPI_NodeId node_id,
3513  const char * parm_name,
3514  int index );
3515 
3516 /// @brief Revert all instances of the parm by name to defaults
3517 ///
3518 /// @ingroup Parms
3519 ///
3520 /// @param[in] session
3521 /// The session of Houdini you are interacting with.
3522 /// See @ref HAPI_Sessions for more on sessions.
3523 /// Pass NULL to just use the default in-process session.
3524 /// <!-- default NULL -->
3525 ///
3526 /// @param[in] node_id
3527 /// The node id.
3528 ///
3529 /// @param[in] parm_name
3530 /// The parm name.
3531 /// <!-- string -->
3532 ///
3534  HAPI_NodeId node_id,
3535  const char * parm_name );
3536 
3537 /// @brief Set (push) an expression string. We can only set a single value at
3538 /// a time because we want to avoid fixed size string buffers.
3539 ///
3540 /// @note Regardless of the value, when calling this function
3541 /// on a parameter, if that parameter has a callback function
3542 /// attached to it, that callback function will be called. For
3543 /// example, if the parameter is a button the button will be
3544 /// pressed.
3545 ///
3546 /// @note In threaded mode, this is an _async call_!
3547 ///
3548 /// This API will invoke the cooking thread if threading is
3549 /// enabled. This means it will return immediately. Use
3550 /// the status and cooking count APIs under DIAGNOSTICS to get
3551 /// a sense of the progress. All other API calls will block
3552 /// until the cook operation has finished.
3553 ///
3554 /// Also note that the cook result won't be of type
3555 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3556 /// Whenever the threading cook is done it will fill the
3557 /// @a cook result which is queried using
3558 /// ::HAPI_STATUS_COOK_RESULT.
3559 ///
3560 /// @ingroup Parms
3561 ///
3562 /// @param[in] session
3563 /// The session of Houdini you are interacting with.
3564 /// See @ref HAPI_Sessions for more on sessions.
3565 /// Pass NULL to just use the default in-process session.
3566 /// <!-- default NULL -->
3567 ///
3568 /// @param[in] node_id
3569 /// The node id.
3570 ///
3571 /// @param[in] value
3572 /// The expression string.
3573 /// <!-- string -->
3574 ///
3575 /// @param[in] parm_id
3576 /// Parameter id of the parameter being updated.
3577 ///
3578 /// @param[in] index
3579 /// Index within the parameter's values tuple.
3580 ///
3582  HAPI_NodeId node_id,
3583  const char * value,
3584  HAPI_ParmId parm_id, int index );
3585 
3586 /// @brief Remove the expression string, leaving the value of the
3587 /// parm at the current value of the expression
3588 ///
3589 /// @note Regardless of the value, when calling this function
3590 /// on a parameter, if that parameter has a callback function
3591 /// attached to it, that callback function will be called. For
3592 /// example, if the parameter is a button the button will be
3593 /// pressed.
3594 ///
3595 /// @note In threaded mode, this is an _async call_!
3596 ///
3597 /// This API will invoke the cooking thread if threading is
3598 /// enabled. This means it will return immediately. Use
3599 /// the status and cooking count APIs under DIAGNOSTICS to get
3600 /// a sense of the progress. All other API calls will block
3601 /// until the cook operation has finished.
3602 ///
3603 /// Also note that the cook result won't be of type
3604 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3605 /// Whenever the threading cook is done it will fill the
3606 /// @a cook result which is queried using
3607 /// ::HAPI_STATUS_COOK_RESULT.
3608 ///
3609 /// @ingroup Parms
3610 ///
3611 /// @param[in] session
3612 /// The session of Houdini you are interacting with.
3613 /// See @ref HAPI_Sessions for more on sessions.
3614 /// Pass NULL to just use the default in-process session.
3615 /// <!-- default NULL -->
3616 ///
3617 /// @param[in] node_id
3618 /// The node id.
3619 ///
3620 /// @param[in] parm_id
3621 /// Parameter id of the parameter being updated.
3622 ///
3623 /// @param[in] index
3624 /// Index within the parameter's values tuple.
3625 ///
3627  HAPI_NodeId node_id,
3628  HAPI_ParmId parm_id, int index );
3629 
3630 /// @brief Get single parm int value by name.
3631 ///
3632 /// @ingroup Parms
3633 ///
3634 /// @param[in] session
3635 /// The session of Houdini you are interacting with.
3636 /// See @ref HAPI_Sessions for more on sessions.
3637 /// Pass NULL to just use the default in-process session.
3638 /// <!-- default NULL -->
3639 ///
3640 /// @param[in] node_id
3641 /// The node id.
3642 ///
3643 /// @param[in] parm_name
3644 /// The parm name.
3645 /// <!-- string -->
3646 ///
3647 /// @param[in] index
3648 /// Index within the parameter's values tuple.
3649 ///
3650 /// @param[out] value
3651 /// The returned int value.
3652 ///
3654  HAPI_NodeId node_id,
3655  const char * parm_name,
3656  int index,
3657  int * value );
3658 
3659 /// @brief Fill an array of parameter int values. This is more efficient
3660 /// than calling ::HAPI_GetParmIntValue() individually for each
3661 /// parameter value.
3662 ///
3663 /// @ingroup Parms
3664 ///
3665 /// @param[in] session
3666 /// The session of Houdini you are interacting with.
3667 /// See @ref HAPI_Sessions for more on sessions.
3668 /// Pass NULL to just use the default in-process session.
3669 /// <!-- default NULL -->
3670 ///
3671 /// @param[in] node_id
3672 /// The node id.
3673 ///
3674 /// @param[out] values_array
3675 /// Array of ints at least the size of length.
3676 /// <!-- sizeparm length -->
3677 ///
3678 /// @param[in] start
3679 /// First index of range. Must be at least 0 and at
3680 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
3681 /// <!-- min 0 -->
3682 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
3683 /// <!-- default 0 -->
3684 ///
3685 /// @param[in] length
3686 /// Must be at least 1 and at most
3687 /// ::HAPI_NodeInfo::parmIntValueCount - start.
3688 /// <!-- min 1 -->
3689 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
3690 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
3691 ///
3693  HAPI_NodeId node_id,
3694  int * values_array,
3695  int start, int length );
3696 
3697 /// @brief Get single parm float value by name.
3698 ///
3699 /// @ingroup Parms
3700 ///
3701 /// @param[in] session
3702 /// The session of Houdini you are interacting with.
3703 /// See @ref HAPI_Sessions for more on sessions.
3704 /// Pass NULL to just use the default in-process session.
3705 /// <!-- default NULL -->
3706 ///
3707 /// @param[in] node_id
3708 /// The node id.
3709 ///
3710 /// @param[in] parm_name
3711 /// The parm name.
3712 /// <!-- string -->
3713 ///
3714 /// @param[in] index
3715 /// Index within the parameter's values tuple.
3716 ///
3717 /// @param[out] value
3718 /// The returned float value.
3719 ///
3721  HAPI_NodeId node_id,
3722  const char * parm_name,
3723  int index,
3724  float * value );
3725 
3726 /// @brief Fill an array of parameter float values. This is more efficient
3727 /// than calling ::HAPI_GetParmFloatValue() individually for each
3728 /// parameter value.
3729 ///
3730 /// @ingroup Parms
3731 ///
3732 /// @param[in] session
3733 /// The session of Houdini you are interacting with.
3734 /// See @ref HAPI_Sessions for more on sessions.
3735 /// Pass NULL to just use the default in-process session.
3736 /// <!-- default NULL -->
3737 ///
3738 /// @param[in] node_id
3739 /// The node id.
3740 ///
3741 /// @param[out] values_array
3742 /// Array of floats at least the size of length.
3743 /// <!-- sizeparm length -->
3744 ///
3745 /// @param[in] start
3746 /// First index of range. Must be at least 0 and at
3747 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
3748 /// <!-- min 0 -->
3749 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - 1 -->
3750 /// <!-- default 0 -->
3751 ///
3752 /// @param[in] length
3753 /// Must be at least 1 and at most
3754 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
3755 /// <!-- min 1 -->
3756 /// <!-- max ::HAPI_NodeInfo::parmFloatValueCount - start -->
3757 /// <!-- source ::HAPI_NodeInfo::parmFloatValueCount - start -->
3758 ///
3760  HAPI_NodeId node_id,
3761  float * values_array,
3762  int start, int length );
3763 
3764 /// @brief Get single parm string value by name.
3765 ///
3766 /// @ingroup Parms
3767 ///
3768 /// @param[in] session
3769 /// The session of Houdini you are interacting with.
3770 /// See @ref HAPI_Sessions for more on sessions.
3771 /// Pass NULL to just use the default in-process session.
3772 /// <!-- default NULL -->
3773 ///
3774 /// @param[in] node_id
3775 /// The node id.
3776 ///
3777 /// @param[in] parm_name
3778 /// The name of the parameter.
3779 /// <!-- string -->
3780 ///
3781 /// @param[in] index
3782 /// Index within the parameter's values tuple.
3783 ///
3784 /// @param[in] evaluate
3785 /// Whether or not to evaluate the string expression.
3786 /// For example, the string "$F" would evaluate to the
3787 /// current frame number. So, passing in evaluate = false
3788 /// would give you back the string "$F" and passing
3789 /// in evaluate = true would give you back "1" (assuming
3790 /// the current frame is 1).
3791 /// <!-- default true -->
3792 ///
3793 /// @param[out] value
3794 /// The returned string value.
3795 ///
3797  HAPI_NodeId node_id,
3798  const char * parm_name,
3799  int index,
3800  HAPI_Bool evaluate,
3801  HAPI_StringHandle * value );
3802 
3803 /// @brief Fill an array of parameter string handles. These handles must
3804 /// be used in conjunction with ::HAPI_GetString() to get the
3805 /// actual string values. This is more efficient than calling
3806 /// ::HAPI_GetParmStringValue() individually for each
3807 /// parameter value.
3808 ///
3809 /// @ingroup Parms
3810 ///
3811 /// @param[in] session
3812 /// The session of Houdini you are interacting with.
3813 /// See @ref HAPI_Sessions for more on sessions.
3814 /// Pass NULL to just use the default in-process session.
3815 /// <!-- default NULL -->
3816 ///
3817 /// @param[in] node_id
3818 /// The node id.
3819 ///
3820 /// @param[in] evaluate
3821 /// Whether or not to evaluate the string expression.
3822 /// For example, the string "$F" would evaluate to the
3823 /// current frame number. So, passing in evaluate = false
3824 /// would give you back the string "$F" and passing
3825 /// in evaluate = true would give you back "1" (assuming
3826 /// the current frame is 1).
3827 ///
3828 /// @param[out] values_array
3829 /// Array of integers at least the size of length.
3830 /// <!-- sizeparm length -->
3831 ///
3832 /// @param[in] start
3833 /// First index of range. Must be at least 0 and at
3834 /// most ::HAPI_NodeInfo::parmStringValueCount - 1.
3835 /// <!-- min 0 -->
3836 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - 1 -->
3837 /// <!-- default 0 -->
3838 ///
3839 /// @param[in] length
3840 /// Must be at least 1 and at most
3841 /// ::HAPI_NodeInfo::parmStringValueCount - start.
3842 /// <!-- min 1 -->
3843 /// <!-- max ::HAPI_NodeInfo::parmStringValueCount - start -->
3844 /// <!-- source ::HAPI_NodeInfo::parmStringValueCount - start -->
3845 ///
3847  HAPI_NodeId node_id,
3848  HAPI_Bool evaluate,
3849  HAPI_StringHandle * values_array,
3850  int start, int length );
3851 
3852 /// @brief Get a single node id parm value of an Op Path parameter. This is
3853 /// how you see which node is connected as an input for the current
3854 /// node (via parameter).
3855 ///
3856 /// @ingroup Parms
3857 ///
3858 /// @param[in] session
3859 /// The session of Houdini you are interacting with.
3860 /// See @ref HAPI_Sessions for more on sessions.
3861 /// Pass NULL to just use the default in-process session.
3862 /// <!-- default NULL -->
3863 ///
3864 /// @param[in] node_id
3865 /// The node id.
3866 ///
3867 /// @param[in] parm_name
3868 /// The name of the parameter.
3869 /// <!-- string -->
3870 ///
3871 /// @param[out] value
3872 /// The node id of the node being pointed to by the parm.
3873 /// If there is no node found, -1 will be returned.
3874 ///
3876  HAPI_NodeId node_id,
3877  const char * parm_name,
3878  HAPI_NodeId * value );
3879 
3880 /// @brief Extract a file specified by path on a parameter. This will copy
3881 /// the file to the destination directory from wherever it might be,
3882 /// including inside the asset definition or online.
3883 ///
3884 /// @ingroup Parms
3885 ///
3886 /// @param[in] session
3887 /// The session of Houdini you are interacting with.
3888 /// See @ref HAPI_Sessions for more on sessions.
3889 /// Pass NULL to just use the default in-process session.
3890 /// <!-- default NULL -->
3891 ///
3892 /// @param[in] node_id
3893 /// The node id.
3894 ///
3895 /// @param[in] parm_name
3896 /// The name of the parameter.
3897 /// <!-- string -->
3898 ///
3899 /// @param[in] destination_directory
3900 /// The destination directory to copy the file to.
3901 /// <!-- string -->
3902 ///
3903 /// @param[in] destination_file_name
3904 /// The destination file name.
3905 /// <!-- string -->
3906 ///
3907 HAPI_DECL HAPI_GetParmFile( const HAPI_Session * session,
3908  HAPI_NodeId node_id,
3909  const char * parm_name,
3910  const char * destination_directory,
3911  const char * destination_file_name );
3912 
3913 /// @brief Fill an array of ::HAPI_ParmChoiceInfo structs with parameter
3914 /// choice list information from the asset instance node.
3915 ///
3916 /// @ingroup Parms
3917 ///
3918 /// @param[in] session
3919 /// The session of Houdini you are interacting with.
3920 /// See @ref HAPI_Sessions for more on sessions.
3921 /// Pass NULL to just use the default in-process session.
3922 /// <!-- default NULL -->
3923 ///
3924 /// @param[in] node_id
3925 /// The node id.
3926 ///
3927 /// @param[out] parm_choices_array
3928 /// Array of ::HAPI_ParmChoiceInfo exactly the size of
3929 /// length.
3930 /// <!-- sizeparm length -->
3931 ///
3932 /// @param[in] start
3933 /// First index of range. Must be at least 0 and at
3934 /// most ::HAPI_NodeInfo::parmChoiceCount - 1.
3935 /// <!-- min 0 -->
3936 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - 1 -->
3937 /// <!-- default 0 -->
3938 ///
3939 /// @param[in] length
3940 /// Must be at least 1 and at most
3941 /// ::HAPI_NodeInfo::parmChoiceCount - start.
3942 /// <!-- min 1 -->
3943 /// <!-- max ::HAPI_NodeInfo::parmChoiceCount - start -->
3944 /// <!-- source ::HAPI_NodeInfo::parmChoiceCount - start -->
3945 ///
3947  HAPI_NodeId node_id,
3948  HAPI_ParmChoiceInfo * parm_choices_array,
3949  int start, int length );
3950 
3951 /// @brief Set single parm int value by name.
3952 ///
3953 /// @note Regardless of the value, when calling this function
3954 /// on a parameter, if that parameter has a callback function
3955 /// attached to it, that callback function will be called. For
3956 /// example, if the parameter is a button the button will be
3957 /// pressed.
3958 ///
3959 /// @note In threaded mode, this is an _async call_!
3960 ///
3961 /// This API will invoke the cooking thread if threading is
3962 /// enabled. This means it will return immediately. Use
3963 /// the status and cooking count APIs under DIAGNOSTICS to get
3964 /// a sense of the progress. All other API calls will block
3965 /// until the cook operation has finished.
3966 ///
3967 /// Also note that the cook result won't be of type
3968 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
3969 /// Whenever the threading cook is done it will fill the
3970 /// @a cook result which is queried using
3971 /// ::HAPI_STATUS_COOK_RESULT.
3972 ///
3973 /// @ingroup Parms
3974 ///
3975 /// @param[in] session
3976 /// The session of Houdini you are interacting with.
3977 /// See @ref HAPI_Sessions for more on sessions.
3978 /// Pass NULL to just use the default in-process session.
3979 /// <!-- default NULL -->
3980 ///
3981 /// @param[in] node_id
3982 /// The node id.
3983 ///
3984 /// @param[in] parm_name
3985 /// The parm name.
3986 /// <!-- string -->
3987 ///
3988 /// @param[in] index
3989 /// Index within the parameter's values tuple.
3990 ///
3991 /// @param[in] value
3992 /// The int value.
3993 ///
3995  HAPI_NodeId node_id,
3996  const char * parm_name,
3997  int index,
3998  int value );
3999 
4000 /// @brief Set (push) an array of parameter int values.
4001 ///
4002 /// @note Regardless of the values, when calling this function
4003 /// on a set of parameters, if any parameter has a callback
4004 /// function attached to it, that callback function will be called.
4005 /// For example, if the parameter is a button the button will be
4006 /// pressed.
4007 ///
4008 /// @note In threaded mode, this is an _async call_!
4009 ///
4010 /// This API will invoke the cooking thread if threading is
4011 /// enabled. This means it will return immediately. Use
4012 /// the status and cooking count APIs under DIAGNOSTICS to get
4013 /// a sense of the progress. All other API calls will block
4014 /// until the cook operation has finished.
4015 ///
4016 /// Also note that the cook result won't be of type
4017 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4018 /// Whenever the threading cook is done it will fill the
4019 /// @a cook result which is queried using
4020 /// ::HAPI_STATUS_COOK_RESULT.
4021 ///
4022 /// @ingroup Parms
4023 ///
4024 /// @param[in] session
4025 /// The session of Houdini you are interacting with.
4026 /// See @ref HAPI_Sessions for more on sessions.
4027 /// Pass NULL to just use the default in-process session.
4028 /// <!-- default NULL -->
4029 ///
4030 /// @param[in] node_id
4031 /// The node id.
4032 ///
4033 /// @param[in] values_array
4034 /// Array of integers at least the size of length.
4035 /// <!-- min length -->
4036 /// <!-- sizeparm length -->
4037 ///
4038 /// @param[in] start
4039 /// First index of range. Must be at least 0 and at
4040 /// most ::HAPI_NodeInfo::parmIntValueCount - 1.
4041 /// <!-- min 0 -->
4042 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - 1 -->
4043 /// <!-- default 0 -->
4044 ///
4045 /// @param[in] length
4046 /// Must be at least 1 and at most
4047 /// ::HAPI_NodeInfo::parmIntValueCount - start.
4048 /// <!-- min 1 -->
4049 /// <!-- max ::HAPI_NodeInfo::parmIntValueCount - start -->
4050 /// <!-- source ::HAPI_NodeInfo::parmIntValueCount - start -->
4051 ///
4053  HAPI_NodeId node_id,
4054  const int * values_array,
4055  int start, int length );
4056 
4057 /// @brief Set single parm float value by name.
4058 ///
4059 /// @note Regardless of the value, when calling this function
4060 /// on a parameter, if that parameter has a callback function
4061 /// attached to it, that callback function will be called. For
4062 /// example, if the parameter is a button the button will be
4063 /// pressed.
4064 ///
4065 /// @note In threaded mode, this is an _async call_!
4066 ///
4067 /// This API will invoke the cooking thread if threading is
4068 /// enabled. This means it will return immediately. Use
4069 /// the status and cooking count APIs under DIAGNOSTICS to get
4070 /// a sense of the progress. All other API calls will block
4071 /// until the cook operation has finished.
4072 ///
4073 /// Also note that the cook result won't be of type
4074 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4075 /// Whenever the threading cook is done it will fill the
4076 /// @a cook result which is queried using
4077 /// ::HAPI_STATUS_COOK_RESULT.
4078 ///
4079 /// @ingroup Parms
4080 ///
4081 /// @param[in] session
4082 /// The session of Houdini you are interacting with.
4083 /// See @ref HAPI_Sessions for more on sessions.
4084 /// Pass NULL to just use the default in-process session.
4085 /// <!-- default NULL -->
4086 ///
4087 /// @param[in] node_id
4088 /// The node id.
4089 ///
4090 /// @param[in] parm_name
4091 /// The parm name.
4092 /// <!-- string -->
4093 ///
4094 /// @param[in] index
4095 /// Index within the parameter's values tuple.
4096 ///
4097 /// @param[in] value
4098 /// The float value.
4099 ///
4101  HAPI_NodeId node_id,
4102  const char * parm_name,
4103  int index,
4104  float value );
4105 
4106 /// @brief Set (push) an array of parameter float values.
4107 ///
4108 /// @note Regardless of the values, when calling this function
4109 /// on a set of parameters, if any parameter has a callback
4110 /// function attached to it, that callback function will be called.
4111 /// For example, if the parameter is a button the button will be
4112 /// pressed.
4113 ///
4114 /// @note In threaded mode, this is an _async call_!
4115 ///
4116 /// This API will invoke the cooking thread if threading is
4117 /// enabled. This means it will return immediately. Use
4118 /// the status and cooking count APIs under DIAGNOSTICS to get
4119 /// a sense of the progress. All other API calls will block
4120 /// until the cook operation has finished.
4121 ///
4122 /// Also note that the cook result won't be of type
4123 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4124 /// Whenever the threading cook is done it will fill the
4125 /// @a cook result which is queried using
4126 /// ::HAPI_STATUS_COOK_RESULT.
4127 ///
4128 /// @ingroup Parms
4129 ///
4130 /// @param[in] session
4131 /// The session of Houdini you are interacting with.
4132 /// See @ref HAPI_Sessions for more on sessions.
4133 /// Pass NULL to just use the default in-process session.
4134 /// <!-- default NULL -->
4135 ///
4136 /// @param[in] node_id
4137 /// The node id.
4138 ///
4139 /// @param[in] values_array
4140 /// Array of floats at least the size of length.
4141 /// <!-- sizeparm length -->
4142 ///
4143 /// @param[in] start
4144 /// First index of range. Must be at least 0 and at
4145 /// most ::HAPI_NodeInfo::parmFloatValueCount - 1.
4146 ///
4147 /// @param[in] length
4148 /// Must be at least 1 and at most
4149 /// ::HAPI_NodeInfo::parmFloatValueCount - start.
4150 ///
4152  HAPI_NodeId node_id,
4153  const float * values_array,
4154  int start, int length );
4155 
4156 /// @brief Set (push) a string value. We can only set a single value at
4157 /// a time because we want to avoid fixed size string buffers.
4158 ///
4159 /// @note Regardless of the value, when calling this function
4160 /// on a parameter, if that parameter has a callback function
4161 /// attached to it, that callback function will be called. For
4162 /// example, if the parameter is a button the button will be
4163 /// pressed.
4164 ///
4165 /// @note In threaded mode, this is an _async call_!
4166 ///
4167 /// This API will invoke the cooking thread if threading is
4168 /// enabled. This means it will return immediately. Use
4169 /// the status and cooking count APIs under DIAGNOSTICS to get
4170 /// a sense of the progress. All other API calls will block
4171 /// until the cook operation has finished.
4172 ///
4173 /// Also note that the cook result won't be of type
4174 /// ::HAPI_STATUS_CALL_RESULT like all calls (including this one).
4175 /// Whenever the threading cook is done it will fill the
4176 /// @a cook result which is queried using
4177 /// ::HAPI_STATUS_COOK_RESULT.
4178 ///
4179 /// @ingroup Parms
4180 ///
4181 /// @param[in] session
4182 /// The session of Houdini you are interacting with.
4183 /// See @ref HAPI_Sessions for more on sessions.
4184 /// Pass NULL to just use the default in-process session.
4185 /// <!-- default NULL -->
4186 ///
4187 /// @param[in] node_id
4188 /// The node id.
4189 ///
4190 /// @param[in] value
4191 /// The string value.
4192 /// <!-- string -->
4193 ///
4194 /// @param[in] parm_id
4195 /// Parameter id of the parameter being updated.
4196 ///
4197 /// @param[in] index
4198 /// Index within the parameter's values tuple.
4199 ///
4201  HAPI_NodeId node_id,
4202  const char * value,
4203  HAPI_ParmId parm_id, int index );
4204 
4205 /// @brief Set a node id parm value of an Op Path parameter. For example,
4206 /// This is how you connect the geometry output of an asset to the
4207 /// geometry input of another asset - whether the input is a parameter
4208 /// or a node input (the top of the node). Node inputs get converted
4209 /// top parameters in HAPI.
4210 ///
4211 /// @ingroup Parms
4212 ///
4213 /// @param[in] session
4214 /// The session of Houdini you are interacting with.
4215 /// See @ref HAPI_Sessions for more on sessions.
4216 /// Pass NULL to just use the default in-process session.
4217 /// <!-- default NULL -->
4218 ///
4219 /// @param[in] node_id
4220 /// The node id.
4221 ///
4222 /// @param[in] parm_name
4223 /// The name of the parameter.
4224 /// <!-- string -->
4225 ///
4226 /// @param[in] value
4227 /// The node id of the node being connected. Pass -1 to
4228 /// disconnect.
4229 ///
4231  HAPI_NodeId node_id,
4232  const char * parm_name,
4233  HAPI_NodeId value );
4234 
4235 /// @brief Insert an instance of a multiparm before instance_position.
4236 ///
4237 /// @ingroup Parms
4238 ///
4239 /// @param[in] session
4240 /// The session of Houdini you are interacting with.
4241 /// See @ref HAPI_Sessions for more on sessions.
4242 /// Pass NULL to just use the default in-process session.
4243 /// <!-- default NULL -->
4244 ///
4245 /// @param[in] node_id
4246 /// The node id.
4247 ///
4248 /// @param[in] parm_id
4249 /// A parm id given by a ::HAPI_ParmInfo struct that
4250 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4251 ///
4252 /// @param[in] instance_position
4253 /// The new instance will be inserted at this position
4254 /// index. Do note the multiparms can start at position
4255 /// 1 or 0. Use ::HAPI_ParmInfo::instanceStartOffset to
4256 /// distinguish.
4257 ///
4259  HAPI_NodeId node_id,
4260  HAPI_ParmId parm_id,
4261  int instance_position );
4262 
4263 /// @brief Remove the instance of a multiparm given by instance_position.
4264 ///
4265 /// @ingroup Parms
4266 ///
4267 /// @param[in] session
4268 /// The session of Houdini you are interacting with.
4269 /// See @ref HAPI_Sessions for more on sessions.
4270 /// Pass NULL to just use the default in-process session.
4271 /// <!-- default NULL -->
4272 ///
4273 /// @param[in] node_id
4274 /// The node id.
4275 ///
4276 /// @param[in] parm_id
4277 /// A parm id given by a ::HAPI_ParmInfo struct that
4278 /// has type ::HAPI_PARMTYPE_MULTIPARMLIST.
4279 ///
4280 /// @param[in] instance_position
4281 /// The instance at instance_position will removed.
4282 ///
4284  HAPI_NodeId node_id,
4285  HAPI_ParmId parm_id,
4286  int instance_position );
4287 
4288 // HANDLES ------------------------------------------------------------------
4289 
4290 /// @brief Fill an array of ::HAPI_HandleInfo structs with information
4291 /// about every exposed user manipulation handle on the node.
4292 ///
4293 /// @ingroup Parms
4294 ///
4295 /// @param[in] session
4296 /// The session of Houdini you are interacting with.
4297 /// See @ref HAPI_Sessions for more on sessions.
4298 /// Pass NULL to just use the default in-process session.
4299 /// <!-- default NULL -->
4300 ///
4301 /// @param[in] node_id
4302 /// The node id.
4303 ///
4304 /// @param[out] handle_infos_array
4305 /// Array of ::HAPI_HandleInfo at least the size of length.
4306 /// <!-- sizeparm length -->
4307 ///
4308 /// @param[in] start
4309 /// First index of range. Must be at least 0 and at
4310 /// most ::HAPI_AssetInfo::handleCount - 1.
4311 /// <!-- default 0 -->
4312 ///
4313 /// @param[in] length
4314 /// Must be at least 1 and at most
4315 /// ::HAPI_AssetInfo::handleCount - start.
4316 /// <!-- source ::HAPI_AssetInfo::handleCount - start -->
4317 ///
4318 HAPI_DECL HAPI_GetHandleInfo( const HAPI_Session * session,
4319  HAPI_NodeId node_id,
4320  HAPI_HandleInfo * handle_infos_array,
4321  int start, int length );
4322 
4323 /// @brief Fill an array of ::HAPI_HandleBindingInfo structs with information
4324 /// about the binding of a particular handle on the given node.
4325 ///
4326 /// @ingroup Parms
4327 ///
4328 /// @param[in] session
4329 /// The session of Houdini you are interacting with.
4330 /// See @ref HAPI_Sessions for more on sessions.
4331 /// Pass NULL to just use the default in-process session.
4332 /// <!-- default NULL -->
4333 ///
4334 /// @param[in] node_id
4335 /// The node id.
4336 ///
4337 /// @param[in] handle_index
4338 /// The index of the handle, from 0 to handleCount - 1
4339 /// from the call to ::HAPI_GetAssetInfo().
4340 ///
4341 /// @param[out] handle_binding_infos_array
4342 /// Array of ::HAPI_HandleBindingInfo at least the size
4343 /// of length.
4344 /// <!-- sizeparm length -->
4345 ///
4346 /// @param[in] start
4347 /// First index of range. Must be at least 0 and at
4348 /// most ::HAPI_HandleInfo::bindingsCount - 1.
4349 /// <!-- default 0 -->
4350 ///
4351 /// @param[in] length
4352 /// Must be at least 1 and at most
4353 /// ::HAPI_HandleInfo::bindingsCount - start.
4354 /// <!-- source ::HAPI_AssetInfo::bindingsCount - start -->
4355 ///
4357  const HAPI_Session * session,
4358  HAPI_NodeId node_id,
4359  int handle_index,
4360  HAPI_HandleBindingInfo * handle_binding_infos_array,
4361  int start, int length );
4362 
4363 /// @defgroup Presets Presets
4364 /// Functions for working with Node presets
4365 
4366 /// @brief Generate a preset blob of the current state of all the
4367 /// parameter values, cache it, and return its size in bytes.
4368 ///
4369 /// @ingroup Presets
4370 ///
4371 /// @param[in] session
4372 /// The session of Houdini you are interacting with.
4373 /// See @ref HAPI_Sessions for more on sessions.
4374 /// Pass NULL to just use the default in-process session.
4375 /// <!-- default NULL -->
4376 ///
4377 /// @param[in] node_id
4378 /// The exposed node id.
4379 ///
4380 /// @param[in] preset_type
4381 /// The preset type.
4382 ///
4383 /// @param[in] preset_name
4384 /// Optional. This is only used if the @p preset_type is
4385 /// ::HAPI_PRESETTYPE_IDX. If NULL is given, the preset
4386 /// name will be the same as the name of the node with
4387 /// the given @p node_id.
4388 /// <!-- string -->
4389 ///
4390 /// @param[out] buffer_length
4391 /// Size of the buffer.
4392 ///
4394  HAPI_NodeId node_id,
4395  HAPI_PresetType preset_type,
4396  const char * preset_name,
4397  int * buffer_length );
4398 
4399 /// @brief Generates a preset for the given asset.
4400 ///
4401 /// @ingroup Presets
4402 ///
4403 /// @param[in] session
4404 /// The session of Houdini you are interacting with.
4405 /// See @ref HAPI_Sessions for more on sessions.
4406 /// Pass NULL to just use the default in-process session.
4407 /// <!-- default NULL -->
4408 ///
4409 /// @param[in] node_id
4410 /// The exposed node id.
4411 ///
4412 /// @param[out] buffer
4413 /// Buffer to hold the preset data.
4414 /// <!-- sizeparm buffer_length -->
4415 ///
4416 /// @param[in] buffer_length
4417 /// Size of the buffer. Should be the same as the length
4418 /// returned by ::HAPI_GetPresetBufLength().
4419 ///
4420 HAPI_DECL HAPI_GetPreset( const HAPI_Session * session,
4421  HAPI_NodeId node_id,
4422  char * buffer,
4423  int buffer_length );
4424 
4425 /// @brief Sets a particular asset to a given preset.
4426 ///
4427 /// @ingroup Presets
4428 ///
4429 /// @param[in] session
4430 /// The session of Houdini you are interacting with.
4431 /// See @ref HAPI_Sessions for more on sessions.
4432 /// Pass NULL to just use the default in-process session.
4433 /// <!-- default NULL -->
4434 ///
4435 /// @param[in] node_id
4436 /// The exposed node id.
4437 ///
4438 /// @param[in] preset_type
4439 /// The preset type.
4440 ///
4441 /// @param[in] preset_name
4442 /// Optional. This is only used if the @p preset_type is
4443 /// ::HAPI_PRESETTYPE_IDX. If NULL is give, the first
4444 /// preset in the IDX file will be chosen.
4445 /// <!-- default NULL -->
4446 /// <!-- string -->
4447 ///
4448 /// @param[in] buffer
4449 /// Buffer to hold the preset data.
4450 /// <!-- sizeparm buffer_length -->
4451 ///
4452 /// @param[in] buffer_length
4453 /// Size of the buffer.
4454 ///
4455 HAPI_DECL HAPI_SetPreset( const HAPI_Session * session,
4456  HAPI_NodeId node_id,
4457  HAPI_PresetType preset_type,
4458  const char * preset_name,
4459  const char * buffer,
4460  int buffer_length );
4461 
4462 /// @brief Gets the number of presets in an IDX file. When this method is
4463 /// called, the names of the presets are stored in a single internal
4464 /// buffer from which they can be retrieved by calling
4465 /// HAPI_GetPresetNames().
4466 ///
4467 /// Note that calling HAPI_GetPresetCount() will overwrite the preset
4468 /// names that were previously stored in the internal buffer. Therefore,
4469 /// ensure that you have called HAPI_GetPresetNames() before calling
4470 /// HAPI_GetPresetCount() again.
4471 ///
4472 /// @ingroup Presets
4473 ///
4474 /// @param[in] session
4475 /// The session of Houdini you are interacting with.
4476 /// See @ref HAPI_Sessions for more on sessions.
4477 /// Pass NULL to just use the default in-process session.
4478 /// <!-- default NULL -->
4479 ///
4480 /// @param[in] buffer
4481 /// A buffer containing the raw binary data of the .idx file.
4482 /// <!-- sizeparm buffer_length -->
4483 ///
4484 /// @param[in] buffer_length
4485 /// Size of the buffer.
4486 ///
4487 /// @param[out] count
4488 /// Number of presets in the file.
4489 ///
4490 HAPI_DECL HAPI_GetPresetCount( const HAPI_Session * session,
4491  const char * buffer,
4492  int buffer_length,
4493  int * count );
4494 
4495 /// @brief Gets the names of presets in an IDX file. HAPI_GetPresetCount() must
4496 /// be called before calling this method. See the HAPI_GetPresetCount()
4497 /// documentation for more information.
4498 ///
4499 /// @ingroup Presets
4500 ///
4501 /// @param[in] session
4502 /// The session of Houdini you are interacting with.
4503 /// See @ref HAPI_Sessions for more on sessions.
4504 /// Pass NULL to just use the default in-process session.
4505 /// <!-- default NULL -->
4506 ///
4507 /// @param[in] buffer
4508 /// A buffer containing the raw binary data of the .idx file.
4509 /// This should be the same buffer that was passed into
4510 /// HAPI_GetPresetCount().
4511 /// <!-- sizeparm buffer_length -->
4512 ///
4513 /// @param[in] buffer_length
4514 /// Size of the buffer.
4515 ///
4516 /// @param[out] preset_names_array
4517 /// Array of preset names to be filled
4518 /// <!-- sizeparm preset_names_count -->
4519 ///
4520 /// @param[in] preset_names_count
4521 /// Number of presets in the file. Should be the same as
4522 /// the count returned by ::HAPI_GetPresetCount()
4523 ///
4524 HAPI_DECL HAPI_GetPresetNames( const HAPI_Session * session,
4525  const char * buffer,
4526  int buffer_length,
4527  HAPI_StringHandle * preset_names_array,
4528  int preset_names_count );
4529 
4530 /// @defgroup Objects
4531 /// Functions for working with OBJ Nodes
4532 
4533 /// @brief Get the object info on an OBJ node.
4534 ///
4535 /// @ingroup Objects
4536 ///
4537 /// @param[in] session
4538 /// The session of Houdini you are interacting with.
4539 /// See @ref HAPI_Sessions for more on sessions.
4540 /// Pass NULL to just use the default in-process session.
4541 /// <!-- default NULL -->
4542 ///
4543 /// @param[in] node_id
4544 /// The node id.
4545 ///
4546 /// @param[out] object_info
4547 /// The output ::HAPI_ObjectInfo.
4548 ///
4549 HAPI_DECL HAPI_GetObjectInfo( const HAPI_Session * session,
4550  HAPI_NodeId node_id,
4551  HAPI_ObjectInfo * object_info );
4552 
4553 /// @brief Get the transform of an OBJ node.
4554 ///
4555 /// @ingroup Objects
4556 ///
4557 /// @param[in] session
4558 /// The session of Houdini you are interacting with.
4559 /// See @ref HAPI_Sessions for more on sessions.
4560 /// Pass NULL to just use the default in-process session.
4561 /// <!-- default NULL -->
4562 ///
4563 /// @param[in] node_id
4564 /// The object node id.
4565 ///
4566 /// @param[in] relative_to_node_id
4567 /// The object node id for the object to which the returned
4568 /// transform will be relative to. Pass -1 or the node_id
4569 /// to just get the object's local transform.
4570 ///
4571 /// @param[in] rst_order
4572 /// The order of application of translation, rotation and
4573 /// scale.
4574 ///
4575 /// @param[out] transform
4576 /// The output ::HAPI_Transform transform.
4577 ///
4579  HAPI_NodeId node_id,
4580  HAPI_NodeId relative_to_node_id,
4581  HAPI_RSTOrder rst_order,
4582  HAPI_Transform * transform );
4583 
4584 /// @brief Compose a list of child object nodes given a parent node id.
4585 ///
4586 /// Use the @c object_count returned by this function to get the
4587 /// ::HAPI_ObjectInfo structs for each child object using
4588 /// ::HAPI_GetComposedObjectList().
4589 ///
4590 /// Note, if not using the @c categories arg, this is equivalent to:
4591 /// @code
4592 /// HAPI_ComposeChildNodeList(
4593 /// session, parent_node_id,
4594 /// HAPI_NODETYPE_OBJ,
4595 /// HAPI_NODEFLAGS_OBJ_GEOMETRY,
4596 /// true, &object_count );
4597 /// @endcode
4598 ///
4599 /// @ingroup Objects
4600 ///
4601 /// @param[in] session
4602 /// The session of Houdini you are interacting with.
4603 /// See @ref HAPI_Sessions for more on sessions.
4604 /// Pass NULL to just use the default in-process session.
4605 /// <!-- default NULL -->
4606 ///
4607 /// @param[in] parent_node_id
4608 /// The parent node id.
4609 ///
4610 /// @param[in] categories
4611 /// (Optional) Lets you filter object nodes by their render
4612 /// categories. This is a standard OBJ parameter, usually
4613 /// under the Render > Shading tab. If an OBJ node does not
4614 /// have this parameter, one can always add it as a spare.
4615 ///
4616 /// The value of this string argument should be NULL if not
4617 /// used or a space-separated list of category names.
4618 /// Multiple category names will be treated as an AND op.
4619 /// <!-- default NULL -->
4620 /// <!-- string -->
4621 ///
4622 /// @param[out] object_count
4623 /// The number of object nodes currently under the parent.
4624 /// Use this count with a call to
4625 /// ::HAPI_GetComposedObjectList() to get the object infos.
4626 ///
4628  HAPI_NodeId parent_node_id,
4629  const char * categories,
4630  int * object_count );
4631 
4632 /// @brief Fill an array of ::HAPI_ObjectInfo structs.
4633 ///
4634 /// This is best used with ::HAPI_ComposeObjectList() with.
4635 ///
4636 /// @ingroup Objects
4637 ///
4638 /// @param[in] session
4639 /// The session of Houdini you are interacting with.
4640 /// See @ref HAPI_Sessions for more on sessions.
4641 /// Pass NULL to just use the default in-process session.
4642 /// <!-- default NULL -->
4643 ///
4644 /// @param[in] parent_node_id
4645 /// The parent node id.
4646 ///
4647 /// @param[out] object_infos_array
4648 /// Array of ::HAPI_ObjectInfo at least the size of
4649 /// @c length.
4650 /// <!-- sizeparm length -->
4651 ///
4652 /// @param[in] start
4653 /// At least @c 0 and at most @c object_count returned by
4654 /// ::HAPI_ComposeObjectList().
4655 /// <!-- default 0 -->
4656 ///
4657 /// @param[in] length
4658 /// Given @c object_count returned by
4659 /// ::HAPI_ComposeObjectList(), @c length should be at least
4660 /// @c 0 and at most <tt>object_count - start</tt>.
4661 /// <!-- source ::HAPI_ComposeObjectList - start -->
4662 ///
4664  HAPI_NodeId parent_node_id,
4665  HAPI_ObjectInfo * object_infos_array,
4666  int start, int length );
4667 
4668 /// @brief Fill an array of ::HAPI_Transform structs.
4669 ///
4670 /// This is best used with ::HAPI_ComposeObjectList() with.
4671 ///
4672 /// Note that these transforms will be relative to the
4673 /// @c parent_node_id originally given to ::HAPI_ComposeObjectList()
4674 /// and expected to be the same with this call. If @c parent_node_id
4675 /// is not an OBJ node, the transforms will be given as they are on
4676 /// the object node itself.
4677 ///
4678 /// @ingroup Objects
4679 ///
4680 /// @param[in] session
4681 /// The session of Houdini you are interacting with.
4682 /// See @ref HAPI_Sessions for more on sessions.
4683 /// Pass NULL to just use the default in-process session.
4684 /// <!-- default NULL -->
4685 ///
4686 /// @param[in] parent_node_id
4687 /// The parent node id. The object transforms will be
4688 /// relative to this node unless this node is not an OBJ.
4689 ///
4690 /// @param[in] rst_order
4691 /// The order of application of translation, rotation and
4692 /// scale.
4693 ///
4694 /// @param[out] transform_array
4695 /// Array of ::HAPI_Transform at least the size of
4696 /// length.
4697 /// <!-- sizeparm length -->
4698 ///
4699 /// @param[in] start
4700 /// At least @c 0 and at most @c object_count returned by
4701 /// ::HAPI_ComposeObjectList().
4702 /// <!-- default 0 -->
4703 ///
4704 /// @param[in] length
4705 /// Given @c object_count returned by
4706 /// ::HAPI_ComposeObjectList(), @c length should be at least
4707 /// @c 0 and at most <tt>object_count - start</tt>.
4708 /// <!-- source ::HAPI_ComposeObjectList - start -->
4709 ///
4711  HAPI_NodeId parent_node_id,
4712  HAPI_RSTOrder rst_order,
4713  HAPI_Transform * transform_array,
4714  int start, int length );
4715 
4716 /// @brief Get the node ids for the objects being instanced by an
4717 /// Instance OBJ node.
4718 ///
4719 /// @ingroup Objects
4720 ///
4721 /// @param[in] session
4722 /// The session of Houdini you are interacting with.
4723 /// See @ref HAPI_Sessions for more on sessions.
4724 /// Pass NULL to just use the default in-process session.
4725 /// <!-- default NULL -->
4726 ///
4727 /// @param[in] object_node_id
4728 /// The object node id.
4729 ///
4730 /// @param[out] instanced_node_id_array
4731 /// Array of ::HAPI_NodeId at least the size of length.
4732 /// <!-- sizeparm length -->
4733 ///
4734 /// @param[in] start
4735 /// At least @c 0 and at most @c object_count returned by
4736 /// ::HAPI_ComposeObjectList().
4737 /// <!-- default 0 -->
4738 ///
4739 /// @param[in] length
4740 /// Given @c object_count returned by
4741 /// ::HAPI_ComposeObjectList(), @c length should be at least
4742 /// @c 0 and at most <tt>object_count - start</tt>.
4743 /// <!-- source ::HAPI_ComposeObjectList - start -->
4744 ///
4746  HAPI_NodeId object_node_id,
4747  HAPI_NodeId * instanced_node_id_array,
4748  int start, int length );
4749 
4750 /// @brief Fill an array of ::HAPI_Transform structs with the transforms
4751 /// of each instance of this instancer object for a given part.
4752 ///
4753 /// @ingroup Objects
4754 ///
4755 /// @param[in] session
4756 /// The session of Houdini you are interacting with.
4757 /// See @ref HAPI_Sessions for more on sessions.
4758 /// Pass NULL to just use the default in-process session.
4759 /// <!-- default NULL -->
4760 ///
4761 /// @param[in] node_id
4762 /// The object node id.
4763 ///
4764 /// @param[in] part_id
4765 /// The part id.
4766 ///
4767 /// @param[in] rst_order
4768 /// The order of application of translation, rotation and
4769 /// scale.
4770 ///
4771 /// @param[out] transforms_array
4772 /// Array of ::HAPI_Transform at least the size of length.
4773 /// <!-- sizeparm length -->
4774 ///
4775 /// @param[in] start
4776 /// First index of range. Must be at least 0 and at
4777 /// most ::HAPI_PartInfo::pointCount - 1. This is the 0th
4778 /// part of the display geo of the instancer object node.
4779 /// <!-- default 0 -->
4780 ///
4781 /// @param[in] length
4782 /// Must be at least 0 and at most
4783 /// ::HAPI_PartInfo::pointCount - @p start. This is the 0th
4784 /// part of the display geo of the instancer object node.
4785 /// <!-- source ::HAPI_PartInfo::pointCount - start -->
4786 ///
4788  HAPI_NodeId node_id,
4789  HAPI_PartId part_id,
4790  HAPI_RSTOrder rst_order,
4791  HAPI_Transform * transforms_array,
4792  int start, int length );
4793 
4794 /// @brief Set the transform of an individual object. Note that the object
4795 /// nodes have to either be editable or have their transform
4796 /// parameters exposed at the asset level. This won't work otherwise.
4797 ///
4798 /// @ingroup Objects
4799 ///
4800 /// @param[in] session
4801 /// The session of Houdini you are interacting with.
4802 /// See @ref HAPI_Sessions for more on sessions.
4803 /// Pass NULL to just use the default in-process session.
4804 /// <!-- default NULL -->
4805 ///
4806 /// @param[in] node_id
4807 /// The object node id.
4808 ///
4809 /// @param[in] trans
4810 /// A ::HAPI_TransformEuler that stores the transform.
4811 ///
4813  HAPI_NodeId node_id,
4814  const HAPI_TransformEuler * trans );
4815 
4816 /// @defgroup GeometryGetters Geometry Getters
4817 /// Functions for reading Geometry (SOP) data
4818 
4819 /// @brief Get the display geo (SOP) node inside an Object node. If there
4820 /// there are multiple display SOP nodes, only the first one is
4821 /// returned. If the node is a display SOP itself, even if a network,
4822 /// it will return its own geo info. If the node is a SOP but not
4823 /// a network and not the display SOP, this function will fail.
4824 ///
4825 /// The above implies that you can safely call this function on both
4826 /// OBJ and SOP asset nodes and get the same (equivalent) geometry
4827 /// display node back. SOP asset nodes will simply return themselves.
4828 ///
4829 /// @ingroup GeometryGetters
4830 ///
4831 /// @param[in] session
4832 /// The session of Houdini you are interacting with.
4833 /// See @ref HAPI_Sessions for more on sessions.
4834 /// Pass NULL to just use the default in-process session.
4835 /// <!-- default NULL -->
4836 ///
4837 /// @param[in] object_node_id
4838 /// The object node id.
4839 ///
4840 /// @param[out] geo_info
4841 /// ::HAPI_GeoInfo return value.
4842 ///
4844  HAPI_NodeId object_node_id,
4845  HAPI_GeoInfo * geo_info );
4846 
4847 /// @brief A helper method that gets the number of main geometry outputs inside
4848 /// an Object node or SOP node. If the node is an Object node, this
4849 /// method will return the cumulative number of geometry outputs for all
4850 /// geometry nodes that it contains. When searching for output geometry,
4851 /// this method will only consider subnetworks that have their display
4852 /// flag enabled.
4853 ///
4854 /// This method must be called before HAPI_GetOutputGeoInfos() is
4855 /// called.
4856 ///
4857 /// @ingroup GeometryGetters
4858 ///
4859 /// @param[in] session
4860 /// The session of Houdini you are interacting with.
4861 /// See @ref HAPI_Sessions for more on sessions.
4862 /// Pass NULL to just use the default in-process session.
4863 /// <!-- default NULL -->
4864 ///
4865 /// @param[in] node_id
4866 /// The node id of the Object or SOP node to get the geometry
4867 /// output count of.
4868 ///
4869 /// @param[out] count
4870 /// The number of geometry (SOP) outputs.
4872  HAPI_NodeId node_id,
4873  int* count);
4874 
4875 /// @brief Gets the geometry info structs (::HAPI_GeoInfo) for a node's
4876 /// main geometry outputs. This method can only be called after
4877 /// HAPI_GetOutputGeoCount() has been called with the same node id.
4878 ///
4879 /// @ingroup GeometryGetters
4880 ///
4881 /// @param[in] session
4882 /// The session of Houdini you are interacting with.
4883 /// See @ref HAPI_Sessions for more on sessions.
4884 /// Pass NULL to just use the default in-process session.
4885 /// <!-- default NULL -->
4886 ///
4887 /// @param[in] node_id
4888 /// The node id of the Object or SOP node to get the output
4889 /// geometry info structs (::HAPI_GeoInfo) for.
4890 ///
4891 /// @param[out] geo_infos_array
4892 /// Output array where the output geometry info structs will be
4893 /// stored. The size of the array must match the count argument
4894 /// returned by the HAPI_GetOutputGeoCount() method.
4895 /// <!-- sizeparm count -->
4896 ///
4897 /// @param[in] count
4898 /// Sanity check count. The count must be equal to the count
4899 /// returned by the HAPI_GetOutputGeoCount() method.
4901  HAPI_NodeId node_id,
4902  HAPI_GeoInfo* geo_infos_array,
4903  int count );
4904 
4905 /// @brief Get the geometry info struct (::HAPI_GeoInfo) on a SOP node.
4906 ///
4907 /// @ingroup GeometryGetters
4908 ///
4909 /// @param[in] session
4910 /// The session of Houdini you are interacting with.
4911 /// See @ref HAPI_Sessions for more on sessions.
4912 /// Pass NULL to just use the default in-process session.
4913 /// <!-- default NULL -->
4914 ///
4915 /// @param[in] node_id
4916 /// The node id.
4917 ///
4918 /// @param[out] geo_info
4919 /// ::HAPI_GeoInfo return value.
4920 ///
4921 HAPI_DECL HAPI_GetGeoInfo( const HAPI_Session * session,
4922  HAPI_NodeId node_id,
4923  HAPI_GeoInfo * geo_info );
4924 
4925 /// @brief Get a particular part info struct.
4926 ///
4927 /// @ingroup GeometryGetters
4928 ///
4929 /// @param[in] session
4930 /// The session of Houdini you are interacting with.
4931 /// See @ref HAPI_Sessions for more on sessions.
4932 /// Pass NULL to just use the default in-process session.
4933 /// <!-- default NULL -->
4934 ///
4935 /// @param[in] node_id
4936 /// The SOP node id.
4937 ///
4938 /// @param[in] part_id
4939 /// The part id.
4940 ///
4941 /// @param[out] part_info
4942 /// ::HAPI_PartInfo return value.
4943 ///
4944 HAPI_DECL HAPI_GetPartInfo( const HAPI_Session * session,
4945  HAPI_NodeId node_id,
4946  HAPI_PartId part_id,
4947  HAPI_PartInfo * part_info );
4948 
4949 
4950 /// @brief Gets the number of edges that belong to an edge group on a geometry
4951 /// part.
4952 ///
4953 /// @ingroup GeometryGetters
4954 ///
4955 /// @param[in] session
4956 /// The session of Houdini you are interacting with.
4957 /// See @ref HAPI_Sessions for more on sessions.
4958 /// Pass NULL to just use the default in-process session.
4959 /// <!-- default NULL -->
4960 ///
4961 /// @param[in] node_id
4962 /// The SOP node id.
4963 ///
4964 /// @param[in] part_id
4965 /// The part id.
4966 ///
4967 /// @param[in] group_name
4968 /// The name of the edge group.
4969 /// <!-- string -->
4970 ///
4971 /// @param[out] edge_count
4972 /// The number of edges that belong to the group.
4973 ///
4975  HAPI_NodeId node_id,
4976  HAPI_PartId part_id,
4977  const char * group_name,
4978  int * edge_count );
4979 
4980 /// @brief Get the array of faces where the nth integer in the array is
4981 /// the number of vertices the nth face has.
4982 ///
4983 /// @ingroup GeometryGetters
4984 ///
4985 /// @param[in] session
4986 /// The session of Houdini you are interacting with.
4987 /// See @ref HAPI_Sessions for more on sessions.
4988 /// Pass NULL to just use the default in-process session.
4989 /// <!-- default NULL -->
4990 ///
4991 /// @param[in] node_id
4992 /// The node id.
4993 ///
4994 /// @param[in] part_id
4995 /// The part id.
4996 ///
4997 /// @param[out] face_counts_array
4998 /// An integer array at least the size of length.
4999 /// <!-- sizeparm length -->
5000 ///
5001 /// @param[in] start
5002 /// First index of range. Must be at least 0 and at
5003 /// most ::HAPI_PartInfo::faceCount - 1.
5004 /// <!-- default 0 -->
5005 ///
5006 /// @param[in] length
5007 /// Must be at least 0 and at most
5008 /// ::HAPI_PartInfo::faceCount - @p start.
5009 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
5010 ///
5011 HAPI_DECL HAPI_GetFaceCounts( const HAPI_Session * session,
5012  HAPI_NodeId node_id,
5013  HAPI_PartId part_id,
5014  int * face_counts_array,
5015  int start, int length );
5016 
5017 /// @brief Get array containing the vertex-point associations where the
5018 /// ith element in the array is the point index the ith vertex
5019 /// associates with.
5020 ///
5021 /// @ingroup GeometryGetters
5022 ///
5023 /// @param[in] session
5024 /// The session of Houdini you are interacting with.
5025 /// See @ref HAPI_Sessions for more on sessions.
5026 /// Pass NULL to just use the default in-process session.
5027 /// <!-- default NULL -->
5028 ///
5029 /// @param[in] node_id
5030 /// The node id.
5031 ///
5032 /// @param[in] part_id
5033 /// The part id.
5034 ///
5035 /// @param[out] vertex_list_array
5036 /// An integer array at least the size of length.
5037 /// <!-- sizeparm length -->
5038 ///
5039 /// @param[in] start
5040 /// First index of range. Must be at least 0 and at
5041 /// most ::HAPI_PartInfo::vertexCount - 1.
5042 /// <!-- default 0 -->
5043 ///
5044 /// @param[in] length
5045 /// Must be at least 0 and at most
5046 /// ::HAPI_PartInfo::vertexCount - @p start.
5047 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
5048 ///
5049 HAPI_DECL HAPI_GetVertexList( const HAPI_Session * session,
5050  HAPI_NodeId node_id,
5051  HAPI_PartId part_id,
5052  int * vertex_list_array,
5053  int start, int length );
5054 
5055 /// @defgroup Attributes
5056 /// Functions for working with attributes.
5057 
5058 /// @brief Get the attribute info struct for the attribute specified by name.
5059 ///
5060 /// @ingroup Attributes
5061 ///
5062 /// @param[in] session
5063 /// The session of Houdini you are interacting with.
5064 /// See @ref HAPI_Sessions for more on sessions.
5065 /// Pass NULL to just use the default in-process session.
5066 /// <!-- default NULL -->
5067 ///
5068 /// @param[in] node_id
5069 /// The node id.
5070 ///
5071 /// @param[in] part_id
5072 /// The part id.
5073 ///
5074 /// @param[in] name
5075 /// Attribute name.
5076 /// <!-- string -->
5077 ///
5078 /// @param[in] owner
5079 /// Attribute owner.
5080 ///
5081 /// @param[out] attr_info
5082 /// ::HAPI_AttributeInfo to be filled. Check
5083 /// ::HAPI_AttributeInfo::exists to see if this attribute
5084 /// exists.
5085 ///
5087  HAPI_NodeId node_id,
5088  HAPI_PartId part_id,
5089  const char * name,
5090  HAPI_AttributeOwner owner,
5091  HAPI_AttributeInfo * attr_info );
5092 
5093 /// @brief Get list of attribute names by attribute owner. Note that the
5094 /// name string handles are only valid until the next time this
5095 /// function is called.
5096 ///
5097 /// @ingroup Attributes
5098 ///
5099 /// @param[in] session
5100 /// The session of Houdini you are interacting with.
5101 /// See @ref HAPI_Sessions for more on sessions.
5102 /// Pass NULL to just use the default in-process session.
5103 /// <!-- default NULL -->
5104 ///
5105 /// @param[in] node_id
5106 /// The node id.
5107 ///
5108 /// @param[in] part_id
5109 /// The part id.
5110 ///
5111 /// @param[in] owner
5112 /// The ::HAPI_AttributeOwner enum value specifying the
5113 /// owner of the attribute.
5114 ///
5115 /// @param[out] attribute_names_array
5116 /// Array of ints (string handles) to house the
5117 /// attribute names. Should be exactly the size of the
5118 /// appropriate attribute owner type count
5119 /// in ::HAPI_PartInfo.
5120 /// <!-- sizeparm count -->
5121 ///
5122 /// @param[in] count
5123 /// Sanity check count. Must be equal to the appropriate
5124 /// attribute owner type count in ::HAPI_PartInfo.
5125 ///
5127  HAPI_NodeId node_id,
5128  HAPI_PartId part_id,
5129  HAPI_AttributeOwner owner,
5130  HAPI_StringHandle * attribute_names_array,
5131  int count );
5132 
5133 /// @brief Get attribute integer data.
5134 ///
5135 /// @ingroup GeometryGetters Attributes
5136 ///
5137 /// @param[in] session
5138 /// The session of Houdini you are interacting with.
5139 /// See @ref HAPI_Sessions for more on sessions.
5140 /// Pass NULL to just use the default in-process session.
5141 /// <!-- default NULL -->
5142 ///
5143 /// @param[in] node_id
5144 /// The node id.
5145 ///
5146 /// @param[in] part_id
5147 /// The part id.
5148 ///
5149 /// @param[in] name
5150 /// Attribute name.
5151 /// <!-- string -->
5152 ///
5153 /// @param[in] attr_info
5154 /// ::HAPI_AttributeInfo used as input for what tuple size.
5155 /// you want. Also contains some sanity checks like
5156 /// data type. Generally should be the same struct
5157 /// returned by ::HAPI_GetAttributeInfo().
5158 ///
5159 /// @param[in] stride
5160 /// Specifies how many items to skip over for each element.
5161 /// With a stride of -1, the stride will be set to
5162 /// @c attr_info->tuple_size. Otherwise, the stride will be
5163 /// set to the maximum of @c attr_info->tuple_size and
5164 /// @c stride.
5165 ///
5166 /// @param[out] data_array
5167 /// An integer array at least the size of
5168 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5169 /// <!-- sizeparm length -->
5170 ///
5171 /// @param[in] start
5172 /// First index of range. Must be at least 0 and at
5173 /// most ::HAPI_AttributeInfo::count - 1.
5174 /// <!-- default 0 -->
5175 ///
5176 /// @param[in] length
5177 /// Must be at least 0 and at most
5178 /// ::HAPI_AttributeInfo::count - @p start.
5179 /// Note, if 0 is passed for length, the function will just
5180 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5181 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5182 ///
5184  HAPI_NodeId node_id,
5185  HAPI_PartId part_id,
5186  const char * name,
5187  HAPI_AttributeInfo * attr_info,
5188  int stride,
5189  int * data_array,
5190  int start, int length );
5191 
5192 /// @brief Get array attribute integer data.
5193 /// Each entry in an array attribute can have varying array lengths.
5194 /// Therefore the array values are returned as a flat array, with
5195 /// another sizes array containing the lengths of each array entry.
5196 ///
5197 /// @ingroup GeometryGetters Attributes
5198 ///
5199 /// @param[in] session
5200 /// The session of Houdini you are interacting with.
5201 /// See @ref HAPI_Sessions for more on sessions.
5202 /// Pass NULL to just use the default in-process session.
5203 /// <!-- default NULL -->
5204 ///
5205 /// @param[in] node_id
5206 /// The node id.
5207 ///
5208 /// @param[in] part_id
5209 /// The part id.
5210 ///
5211 /// @param[in] name
5212 /// Attribute name.
5213 /// <!-- string -->
5214 ///
5215 /// @param[in] attr_info
5216 /// ::HAPI_AttributeInfo used as input for what tuple size.
5217 /// you want. Also contains some sanity checks like
5218 /// data type. Generally should be the same struct
5219 /// returned by ::HAPI_GetAttributeInfo().
5220 ///
5221 /// @param[out] data_fixed_array
5222 /// An integer array at least the size of
5223 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5224 /// <!-- sizeparm data_fixed_length -->
5225 ///
5226 /// @param[in] data_fixed_length
5227 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5228 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5229 ///
5230 /// @param[out] sizes_fixed_array
5231 /// An integer array at least the size of
5232 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5233 /// <!-- source ::HAPI_AttributeInfo::count -->
5234 /// <!-- sizeparm sizes_fixed_length -->
5235 ///
5236 /// @param[in] start
5237 /// First index of range. Must be at least 0 and at
5238 /// most ::HAPI_AttributeInfo::count - 1.
5239 /// <!-- default 0 -->
5240 ///
5241 /// @param[in] sizes_fixed_length
5242 /// Must be at least 0 and at most
5243 /// ::HAPI_AttributeInfo::count - @p start.
5244 /// Note, if 0 is passed for length, the function will just
5245 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5246 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5247 ///
5249  HAPI_NodeId node_id,
5250  HAPI_PartId part_id,
5251  const char * name,
5252  HAPI_AttributeInfo * attr_info,
5253  int * data_fixed_array,
5254  int data_fixed_length,
5255  int * sizes_fixed_array,
5256  int start, int sizes_fixed_length );
5257 
5258 /// @brief Get attribute unsigned 8-bit integer data.
5259 ///
5260 /// @ingroup GeometryGetters Attributes
5261 ///
5262 /// @param[in] session
5263 /// The session of Houdini you are interacting with.
5264 /// See @ref HAPI_Sessions for more on sessions.
5265 /// Pass NULL to just use the default in-process session.
5266 /// <!-- default NULL -->
5267 ///
5268 /// @param[in] node_id
5269 /// The node id.
5270 ///
5271 /// @param[in] part_id
5272 /// The part id.
5273 ///
5274 /// @param[in] name
5275 /// Attribute name.
5276 /// <!-- string -->
5277 ///
5278 /// @param[in] attr_info
5279 /// ::HAPI_AttributeInfo used as input for what tuple size.
5280 /// you want. Also contains some sanity checks like
5281 /// data type. Generally should be the same struct
5282 /// returned by ::HAPI_GetAttributeInfo().
5283 ///
5284 /// @param[in] stride
5285 /// Specifies how many items to skip over for each element.
5286 /// With a stride of -1, the stride will be set to
5287 /// @c attr_info->tuple_size. Otherwise, the stride will be
5288 /// set to the maximum of @c attr_info->tuple_size and
5289 /// @c stride.
5290 ///
5291 /// @param[out] data_array
5292 /// An unsigned 8-bit integer array at least the size of
5293 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5294 /// <!-- sizeparm length -->
5295 ///
5296 /// @param[in] start
5297 /// First index of range. Must be at least 0 and at
5298 /// most ::HAPI_AttributeInfo::count - 1.
5299 /// <!-- default 0 -->
5300 ///
5301 /// @param[in] length
5302 /// Must be at least 0 and at most
5303 /// ::HAPI_AttributeInfo::count - @p start.
5304 /// Note, if 0 is passed for length, the function will just
5305 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5306 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5307 ///
5309  HAPI_NodeId node_id,
5310  HAPI_PartId part_id,
5311  const char * name,
5312  HAPI_AttributeInfo * attr_info,
5313  int stride,
5314  HAPI_UInt8 * data_array,
5315  int start, int length );
5316 
5317 /// @brief Get array attribute unsigned 8-bit integer data.
5318 /// Each entry in an array attribute can have varying array lengths.
5319 /// Therefore the array values are returned as a flat array, with
5320 /// another sizes array containing the lengths of each array entry.
5321 ///
5322 /// @ingroup GeometryGetters Attributes
5323 ///
5324 /// @param[in] session
5325 /// The session of Houdini you are interacting with.
5326 /// See @ref HAPI_Sessions for more on sessions.
5327 /// Pass NULL to just use the default in-process session.
5328 /// <!-- default NULL -->
5329 ///
5330 /// @param[in] node_id
5331 /// The node id.
5332 ///
5333 /// @param[in] part_id
5334 /// The part id.
5335 ///
5336 /// @param[in] name
5337 /// Attribute name.
5338 /// <!-- string -->
5339 ///
5340 /// @param[in] attr_info
5341 /// ::HAPI_AttributeInfo used as input for what tuple size.
5342 /// you want. Also contains some sanity checks like
5343 /// data type. Generally should be the same struct
5344 /// returned by ::HAPI_GetAttributeInfo().
5345 ///
5346 /// @param[out] data_fixed_array
5347 /// An unsigned 8-bit integer array at least the size of
5348 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5349 /// <!-- sizeparm data_fixed_length -->
5350 ///
5351 /// @param[in] data_fixed_length
5352 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5353 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5354 ///
5355 /// @param[out] sizes_fixed_array
5356 /// An integer array at least the size of
5357 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5358 /// <!-- sizeparm sizes_fixed_length -->
5359 ///
5360 /// @param[in] start
5361 /// First index of range. Must be at least 0 and at
5362 /// most ::HAPI_AttributeInfo::count - 1.
5363 /// <!-- default 0 -->
5364 ///
5365 /// @param[in] sizes_fixed_length
5366 /// Must be at least 0 and at most
5367 /// ::HAPI_AttributeInfo::count - @p start.
5368 /// Note, if 0 is passed for length, the function will just
5369 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5370 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5371 ///
5373  HAPI_NodeId node_id,
5374  HAPI_PartId part_id,
5375  const char * name,
5376  HAPI_AttributeInfo * attr_info,
5377  HAPI_UInt8 * data_fixed_array,
5378  int data_fixed_length,
5379  int * sizes_fixed_array,
5380  int start, int sizes_fixed_length );
5381 
5382 /// @brief Get attribute 8-bit integer data.
5383 ///
5384 /// @ingroup GeometryGetters Attributes
5385 ///
5386 /// @param[in] session
5387 /// The session of Houdini you are interacting with.
5388 /// See @ref HAPI_Sessions for more on sessions.
5389 /// Pass NULL to just use the default in-process session.
5390 /// <!-- default NULL -->
5391 ///
5392 /// @param[in] node_id
5393 /// The node id.
5394 ///
5395 /// @param[in] part_id
5396 /// The part id.
5397 ///
5398 /// @param[in] name
5399 /// Attribute name.
5400 /// <!-- string -->
5401 ///
5402 /// @param[in] attr_info
5403 /// ::HAPI_AttributeInfo used as input for what tuple size.
5404 /// you want. Also contains some sanity checks like
5405 /// data type. Generally should be the same struct
5406 /// returned by ::HAPI_GetAttributeInfo().
5407 ///
5408 /// @param[in] stride
5409 /// Specifies how many items to skip over for each element.
5410 /// With a stride of -1, the stride will be set to
5411 /// @c attr_info->tuple_size. Otherwise, the stride will be
5412 /// set to the maximum of @c attr_info->tuple_size and
5413 /// @c stride.
5414 ///
5415 /// @param[out] data_array
5416 /// An 8-bit integer array at least the size of
5417 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5418 /// <!-- sizeparm length -->
5419 ///
5420 /// @param[in] start
5421 /// First index of range. Must be at least 0 and at
5422 /// most ::HAPI_AttributeInfo::count - 1.
5423 /// <!-- default 0 -->
5424 ///
5425 /// @param[in] length
5426 /// Must be at least 0 and at most
5427 /// ::HAPI_AttributeInfo::count - @p start.
5428 /// Note, if 0 is passed for length, the function will just
5429 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5430 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5431 ///
5433  HAPI_NodeId node_id,
5434  HAPI_PartId part_id,
5435  const char * name,
5436  HAPI_AttributeInfo * attr_info,
5437  int stride,
5438  HAPI_Int8 * data_array,
5439  int start, int length );
5440 
5441 /// @brief Get array attribute 8-bit integer data.
5442 /// Each entry in an array attribute can have varying array lengths.
5443 /// Therefore the array values are returned as a flat array, with
5444 /// another sizes array containing the lengths of each array entry.
5445 ///
5446 /// @ingroup GeometryGetters Attributes
5447 ///
5448 /// @param[in] session
5449 /// The session of Houdini you are interacting with.
5450 /// See @ref HAPI_Sessions for more on sessions.
5451 /// Pass NULL to just use the default in-process session.
5452 /// <!-- default NULL -->
5453 ///
5454 /// @param[in] node_id
5455 /// The node id.
5456 ///
5457 /// @param[in] part_id
5458 /// The part id.
5459 ///
5460 /// @param[in] name
5461 /// Attribute name.
5462 /// <!-- string -->
5463 ///
5464 /// @param[in] attr_info
5465 /// ::HAPI_AttributeInfo used as input for what tuple size.
5466 /// you want. Also contains some sanity checks like
5467 /// data type. Generally should be the same struct
5468 /// returned by ::HAPI_GetAttributeInfo().
5469 ///
5470 /// @param[out] data_fixed_array
5471 /// An 8-bit integer array at least the size of
5472 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5473 /// <!-- sizeparm data_fixed_length -->
5474 ///
5475 /// @param[in] data_fixed_length
5476 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5477 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5478 ///
5479 /// @param[out] sizes_fixed_array
5480 /// An integer array at least the size of
5481 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5482 /// <!-- sizeparm sizes_fixed_length -->
5483 ///
5484 /// @param[in] start
5485 /// First index of range. Must be at least 0 and at
5486 /// most ::HAPI_AttributeInfo::count - 1.
5487 /// <!-- default 0 -->
5488 ///
5489 /// @param[in] sizes_fixed_length
5490 /// Must be at least 0 and at most
5491 /// ::HAPI_AttributeInfo::count - @p start.
5492 /// Note, if 0 is passed for length, the function will just
5493 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5494 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5495 ///
5497  HAPI_NodeId node_id,
5498  HAPI_PartId part_id,
5499  const char * name,
5500  HAPI_AttributeInfo * attr_info,
5501  HAPI_Int8 * data_fixed_array,
5502  int data_fixed_length,
5503  int * sizes_fixed_array,
5504  int start, int sizes_fixed_length );
5505 
5506 /// @brief Get attribute 16-bit integer data.
5507 ///
5508 /// @ingroup GeometryGetters Attributes
5509 ///
5510 /// @param[in] session
5511 /// The session of Houdini you are interacting with.
5512 /// See @ref HAPI_Sessions for more on sessions.
5513 /// Pass NULL to just use the default in-process session.
5514 /// <!-- default NULL -->
5515 ///
5516 /// @param[in] node_id
5517 /// The node id.
5518 ///
5519 /// @param[in] part_id
5520 /// The part id.
5521 ///
5522 /// @param[in] name
5523 /// Attribute name.
5524 /// <!-- string -->
5525 ///
5526 /// @param[in] attr_info
5527 /// ::HAPI_AttributeInfo used as input for what tuple size.
5528 /// you want. Also contains some sanity checks like
5529 /// data type. Generally should be the same struct
5530 /// returned by ::HAPI_GetAttributeInfo().
5531 ///
5532 /// @param[in] stride
5533 /// Specifies how many items to skip over for each element.
5534 /// With a stride of -1, the stride will be set to
5535 /// @c attr_info->tuple_size. Otherwise, the stride will be
5536 /// set to the maximum of @c attr_info->tuple_size and
5537 /// @c stride.
5538 ///
5539 /// @param[out] data_array
5540 /// An 16-bit integer array at least the size of
5541 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5542 /// <!-- sizeparm length -->
5543 ///
5544 /// @param[in] start
5545 /// First index of range. Must be at least 0 and at
5546 /// most ::HAPI_AttributeInfo::count - 1.
5547 /// <!-- default 0 -->
5548 ///
5549 /// @param[in] length
5550 /// Must be at least 0 and at most
5551 /// ::HAPI_AttributeInfo::count - @p start.
5552 /// Note, if 0 is passed for length, the function will just
5553 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5554 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5555 ///
5557  HAPI_NodeId node_id,
5558  HAPI_PartId part_id,
5559  const char * name,
5560  HAPI_AttributeInfo * attr_info,
5561  int stride,
5562  HAPI_Int16 * data_array,
5563  int start, int length );
5564 
5565 /// @brief Get array attribute 16-bit integer data.
5566 /// Each entry in an array attribute can have varying array lengths.
5567 /// Therefore the array values are returned as a flat array, with
5568 /// another sizes array containing the lengths of each array entry.
5569 ///
5570 /// @ingroup GeometryGetters Attributes
5571 ///
5572 /// @param[in] session
5573 /// The session of Houdini you are interacting with.
5574 /// See @ref HAPI_Sessions for more on sessions.
5575 /// Pass NULL to just use the default in-process session.
5576 /// <!-- default NULL -->
5577 ///
5578 /// @param[in] node_id
5579 /// The node id.
5580 ///
5581 /// @param[in] part_id
5582 /// The part id.
5583 ///
5584 /// @param[in] name
5585 /// Attribute name.
5586 /// <!-- string -->
5587 ///
5588 /// @param[in] attr_info
5589 /// ::HAPI_AttributeInfo used as input for what tuple size.
5590 /// you want. Also contains some sanity checks like
5591 /// data type. Generally should be the same struct
5592 /// returned by ::HAPI_GetAttributeInfo().
5593 ///
5594 /// @param[out] data_fixed_array
5595 /// An 16-bit integer array at least the size of
5596 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5597 /// <!-- sizeparm data_fixed_length -->
5598 ///
5599 /// @param[in] data_fixed_length
5600 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5601 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5602 ///
5603 /// @param[out] sizes_fixed_array
5604 /// An integer array at least the size of
5605 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5606 /// <!-- sizeparm sizes_fixed_length -->
5607 ///
5608 /// @param[in] start
5609 /// First index of range. Must be at least 0 and at
5610 /// most ::HAPI_AttributeInfo::count - 1.
5611 /// <!-- default 0 -->
5612 ///
5613 /// @param[in] sizes_fixed_length
5614 /// Must be at least 0 and at most
5615 /// ::HAPI_AttributeInfo::count - @p start.
5616 /// Note, if 0 is passed for length, the function will just
5617 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5618 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5619 ///
5621  HAPI_NodeId node_id,
5622  HAPI_PartId part_id,
5623  const char * name,
5624  HAPI_AttributeInfo * attr_info,
5625  HAPI_Int16 * data_fixed_array,
5626  int data_fixed_length,
5627  int * sizes_fixed_array,
5628  int start, int sizes_fixed_length );
5629 
5630 /// @brief Get attribute 64-bit integer data.
5631 ///
5632 /// @ingroup GeometryGetters Attributes
5633 ///
5634 /// @param[in] session
5635 /// The session of Houdini you are interacting with.
5636 /// See @ref HAPI_Sessions for more on sessions.
5637 /// Pass NULL to just use the default in-process session.
5638 /// <!-- default NULL -->
5639 ///
5640 /// @param[in] node_id
5641 /// The node id.
5642 ///
5643 /// @param[in] part_id
5644 /// The part id.
5645 ///
5646 /// @param[in] name
5647 /// Attribute name.
5648 /// <!-- string -->
5649 ///
5650 /// @param[in] attr_info
5651 /// ::HAPI_AttributeInfo used as input for what tuple size.
5652 /// you want. Also contains some sanity checks like
5653 /// data type. Generally should be the same struct
5654 /// returned by ::HAPI_GetAttributeInfo().
5655 ///
5656 /// @param[in] stride
5657 /// Specifies how many items to skip over for each element.
5658 /// With a stride of -1, the stride will be set to
5659 /// @c attr_info->tuple_size. Otherwise, the stride will be
5660 /// set to the maximum of @c attr_info->tuple_size and
5661 /// @c stride.
5662 ///
5663 /// @param[out] data_array
5664 /// An 64-bit integer array at least the size of
5665 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5666 /// <!-- sizeparm length -->
5667 ///
5668 /// @param[in] start
5669 /// First index of range. Must be at least 0 and at
5670 /// most ::HAPI_AttributeInfo::count - 1.
5671 /// <!-- default 0 -->
5672 ///
5673 /// @param[in] length
5674 /// Must be at least 0 and at most
5675 /// ::HAPI_AttributeInfo::count - @p start.
5676 /// Note, if 0 is passed for length, the function will just
5677 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5678 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5679 ///
5681  HAPI_NodeId node_id,
5682  HAPI_PartId part_id,
5683  const char * name,
5684  HAPI_AttributeInfo * attr_info,
5685  int stride,
5686  HAPI_Int64 * data_array,
5687  int start, int length );
5688 
5689 /// @brief Get array attribute 64-bit integer data.
5690 /// Each entry in an array attribute can have varying array lengths.
5691 /// Therefore the array values are returned as a flat array, with
5692 /// another sizes array containing the lengths of each array entry.
5693 ///
5694 /// @ingroup GeometryGetters Attributes
5695 ///
5696 /// @param[in] session
5697 /// The session of Houdini you are interacting with.
5698 /// See @ref HAPI_Sessions for more on sessions.
5699 /// Pass NULL to just use the default in-process session.
5700 /// <!-- default NULL -->
5701 ///
5702 /// @param[in] node_id
5703 /// The node id.
5704 ///
5705 /// @param[in] part_id
5706 /// The part id.
5707 ///
5708 /// @param[in] name
5709 /// Attribute name.
5710 /// <!-- string -->
5711 ///
5712 /// @param[in] attr_info
5713 /// ::HAPI_AttributeInfo used as input for what tuple size.
5714 /// you want. Also contains some sanity checks like
5715 /// data type. Generally should be the same struct
5716 /// returned by ::HAPI_GetAttributeInfo().
5717 ///
5718 /// @param[out] data_fixed_array
5719 /// An 64-bit integer array at least the size of
5720 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5721 /// <!-- sizeparm data_fixed_length -->
5722 ///
5723 /// @param[in] data_fixed_length
5724 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5725 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5726 ///
5727 /// @param[out] sizes_fixed_array
5728 /// An integer array at least the size of
5729 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5730 /// <!-- sizeparm sizes_fixed_length -->
5731 ///
5732 /// @param[in] start
5733 /// First index of range. Must be at least 0 and at
5734 /// most ::HAPI_AttributeInfo::count - 1.
5735 /// <!-- default 0 -->
5736 ///
5737 /// @param[in] sizes_fixed_length
5738 /// Must be at least 0 and at most
5739 /// ::HAPI_AttributeInfo::count - @p start.
5740 /// Note, if 0 is passed for length, the function will just
5741 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5742 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5743 ///
5745  HAPI_NodeId node_id,
5746  HAPI_PartId part_id,
5747  const char * name,
5748  HAPI_AttributeInfo * attr_info,
5749  HAPI_Int64 * data_fixed_array,
5750  int data_fixed_length,
5751  int * sizes_fixed_array,
5752  int start, int sizes_fixed_length );
5753 
5754 /// @brief Get attribute float data.
5755 ///
5756 /// @ingroup GeometryGetters Attributes
5757 ///
5758 /// @param[in] session
5759 /// The session of Houdini you are interacting with.
5760 /// See @ref HAPI_Sessions for more on sessions.
5761 /// Pass NULL to just use the default in-process session.
5762 /// <!-- default NULL -->
5763 ///
5764 /// @param[in] node_id
5765 /// The node id.
5766 ///
5767 /// @param[in] part_id
5768 /// The part id.
5769 ///
5770 /// @param[in] name
5771 /// Attribute name.
5772 /// <!-- string -->
5773 ///
5774 /// @param[in] attr_info
5775 /// ::HAPI_AttributeInfo used as input for what tuple size.
5776 /// you want. Also contains some sanity checks like
5777 /// data type. Generally should be the same struct
5778 /// returned by ::HAPI_GetAttributeInfo().
5779 ///
5780 /// @param[in] stride
5781 /// Specifies how many items to skip over for each element.
5782 /// With a stride of -1, the stride will be set to
5783 /// @c attr_info->tuple_size. Otherwise, the stride will be
5784 /// set to the maximum of @c attr_info->tuple_size and
5785 /// @c stride.
5786 ///
5787 /// @param[out] data_array
5788 /// An float array at least the size of
5789 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5790 /// <!-- sizeparm length -->
5791 ///
5792 /// @param[in] start
5793 /// First index of range. Must be at least 0 and at
5794 /// most ::HAPI_AttributeInfo::count - 1.
5795 /// <!-- default 0 -->
5796 ///
5797 /// @param[in] length
5798 /// Must be at least 0 and at most
5799 /// ::HAPI_AttributeInfo::count - @p start.
5800 /// Note, if 0 is passed for length, the function will just
5801 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5802 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5803 ///
5805  HAPI_NodeId node_id,
5806  HAPI_PartId part_id,
5807  const char * name,
5808  HAPI_AttributeInfo * attr_info,
5809  int stride,
5810  float * data_array,
5811  int start, int length );
5812 
5813 /// @brief Get array attribute float data.
5814 /// Each entry in an array attribute can have varying array lengths.
5815 /// Therefore the array values are returned as a flat array, with
5816 /// another sizes array containing the lengths of each array entry.
5817 ///
5818 /// @ingroup GeometryGetters Attributes
5819 ///
5820 /// @param[in] session
5821 /// The session of Houdini you are interacting with.
5822 /// See @ref HAPI_Sessions for more on sessions.
5823 /// Pass NULL to just use the default in-process session.
5824 /// <!-- default NULL -->
5825 ///
5826 /// @param[in] node_id
5827 /// The node id.
5828 ///
5829 /// @param[in] part_id
5830 /// The part id.
5831 ///
5832 /// @param[in] name
5833 /// Attribute name.
5834 /// <!-- string -->
5835 ///
5836 /// @param[in] attr_info
5837 /// ::HAPI_AttributeInfo used as input for what tuple size.
5838 /// you want. Also contains some sanity checks like
5839 /// data type. Generally should be the same struct
5840 /// returned by ::HAPI_GetAttributeInfo().
5841 ///
5842 /// @param[out] data_fixed_array
5843 /// An float array at least the size of
5844 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5845 /// <!-- sizeparm data_fixed_length -->
5846 ///
5847 /// @param[in] data_fixed_length
5848 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5849 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5850 ///
5851 /// @param[out] sizes_fixed_array
5852 /// An integer array at least the size of
5853 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5854 /// <!-- sizeparm sizes_fixed_length -->
5855 ///
5856 /// @param[in] start
5857 /// First index of range. Must be at least 0 and at
5858 /// most ::HAPI_AttributeInfo::count - 1.
5859 /// <!-- default 0 -->
5860 ///
5861 /// @param[in] sizes_fixed_length
5862 /// Must be at least 0 and at most
5863 /// ::HAPI_AttributeInfo::count - @p start.
5864 /// Note, if 0 is passed for length, the function will just
5865 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5866 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5867 ///
5869  HAPI_NodeId node_id,
5870  HAPI_PartId part_id,
5871  const char * name,
5872  HAPI_AttributeInfo * attr_info,
5873  float * data_fixed_array,
5874  int data_fixed_length,
5875  int * sizes_fixed_array,
5876  int start, int sizes_fixed_length );
5877 
5878 /// @brief Get 64-bit attribute float data.
5879 ///
5880 /// @ingroup GeometryGetters Attributes
5881 ///
5882 /// @param[in] session
5883 /// The session of Houdini you are interacting with.
5884 /// See @ref HAPI_Sessions for more on sessions.
5885 /// Pass NULL to just use the default in-process session.
5886 /// <!-- default NULL -->
5887 ///
5888 /// @param[in] node_id
5889 /// The node id.
5890 ///
5891 /// @param[in] part_id
5892 /// The part id.
5893 ///
5894 /// @param[in] name
5895 /// Attribute name.
5896 /// <!-- string -->
5897 ///
5898 /// @param[in] attr_info
5899 /// ::HAPI_AttributeInfo used as input for what tuple size.
5900 /// you want. Also contains some sanity checks like
5901 /// data type. Generally should be the same struct
5902 /// returned by ::HAPI_GetAttributeInfo().
5903 ///
5904 /// @param[in] stride
5905 /// Specifies how many items to skip over for each element.
5906 /// With a stride of -1, the stride will be set to
5907 /// @c attr_info->tuple_size. Otherwise, the stride will be
5908 /// set to the maximum of @c attr_info->tuple_size and
5909 /// @c stride.
5910 ///
5911 /// @param[out] data_array
5912 /// An 64-bit float array at least the size of
5913 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
5914 /// <!-- sizeparm length -->
5915 ///
5916 /// @param[in] start
5917 /// First index of range. Must be at least 0 and at
5918 /// most ::HAPI_AttributeInfo::count - 1.
5919 /// <!-- default 0 -->
5920 ///
5921 /// @param[in] length
5922 /// Must be at least 0 and at most
5923 /// ::HAPI_AttributeInfo::count - @p start.
5924 /// Note, if 0 is passed for length, the function will just
5925 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5926 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5927 ///
5929  HAPI_NodeId node_id,
5930  HAPI_PartId part_id,
5931  const char * name,
5932  HAPI_AttributeInfo * attr_info,
5933  int stride,
5934  double * data_array,
5935  int start, int length );
5936 
5937 /// @brief Get array attribute 64-bit float data.
5938 /// Each entry in an array attribute can have varying array lengths.
5939 /// Therefore the array values are returned as a flat array, with
5940 /// another sizes array containing the lengths of each array entry.
5941 ///
5942 /// @ingroup GeometryGetters Attributes
5943 ///
5944 /// @param[in] session
5945 /// The session of Houdini you are interacting with.
5946 /// See @ref HAPI_Sessions for more on sessions.
5947 /// Pass NULL to just use the default in-process session.
5948 /// <!-- default NULL -->
5949 ///
5950 /// @param[in] node_id
5951 /// The node id.
5952 ///
5953 /// @param[in] part_id
5954 /// The part id.
5955 ///
5956 /// @param[in] name
5957 /// Attribute name.
5958 /// <!-- string -->
5959 ///
5960 /// @param[in] attr_info
5961 /// ::HAPI_AttributeInfo used as input for the.
5962 /// totalArrayElements. Also contains some sanity checks like
5963 /// data type. Generally should be the same struct
5964 /// returned by ::HAPI_GetAttributeInfo().
5965 ///
5966 /// @param[out] data_fixed_array
5967 /// An 64-bit float array at least the size of
5968 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5969 /// <!-- sizeparm data_fixed_length -->
5970 ///
5971 /// @param[in] data_fixed_length
5972 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
5973 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
5974 ///
5975 /// @param[out] sizes_fixed_array
5976 /// An integer array at least the size of
5977 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
5978 /// <!-- sizeparm sizes_fixed_length -->
5979 ///
5980 /// @param[in] start
5981 /// First index of range. Must be at least 0 and at
5982 /// most ::HAPI_AttributeInfo::count - 1.
5983 /// <!-- default 0 -->
5984 ///
5985 /// @param[in] sizes_fixed_length
5986 /// Must be at least 0 and at most
5987 /// ::HAPI_AttributeInfo::count - @p start.
5988 /// Note, if 0 is passed for length, the function will just
5989 /// do nothing and return ::HAPI_RESULT_SUCCESS.
5990 /// <!-- source ::HAPI_AttributeInfo::count - start -->
5991 ///
5993  HAPI_NodeId node_id,
5994  HAPI_PartId part_id,
5995  const char * name,
5996  HAPI_AttributeInfo * attr_info,
5997  double * data_fixed_array,
5998  int data_fixed_length,
5999  int * sizes_fixed_array,
6000  int start, int sizes_fixed_length );
6001 
6002 /// @brief Get attribute string data. Note that the string handles
6003 /// returned are only valid until the next time this function
6004 /// is called.
6005 ///
6006 /// @ingroup GeometryGetters Attributes
6007 ///
6008 /// @param[in] session
6009 /// The session of Houdini you are interacting with.
6010 /// See @ref HAPI_Sessions for more on sessions.
6011 /// Pass NULL to just use the default in-process session.
6012 /// <!-- default NULL -->
6013 ///
6014 /// @param[in] node_id
6015 /// The node id.
6016 ///
6017 /// @param[in] part_id
6018 /// The part id.
6019 ///
6020 /// @param[in] name
6021 /// Attribute name.
6022 /// <!-- string -->
6023 ///
6024 /// @param[in] attr_info
6025 /// ::HAPI_AttributeInfo used as input for what tuple size.
6026 /// you want. Also contains some sanity checks like
6027 /// data type. Generally should be the same struct
6028 /// returned by ::HAPI_GetAttributeInfo().
6029 ///
6030 /// @param[out] data_array
6031 /// An ::HAPI_StringHandle array at least the size of
6032 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6033 /// <!-- sizeparm length -->
6034 ///
6035 /// @param[in] start
6036 /// First index of range. Must be at least 0 and at
6037 /// most ::HAPI_AttributeInfo::count - 1.
6038 /// <!-- default 0 -->
6039 ///
6040 /// @param[in] length
6041 /// Must be at least 0 and at most
6042 /// ::HAPI_AttributeInfo::count - @p start.
6043 /// Note, if 0 is passed for length, the function will just
6044 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6045 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6046 ///
6047 /// @warning The string handles should be used to retrieve the strings
6048 /// immediately and are invalidated when another call to get
6049 /// this attribute's data is made.
6050 ///
6052  HAPI_NodeId node_id,
6053  HAPI_PartId part_id,
6054  const char * name,
6055  HAPI_AttributeInfo * attr_info,
6056  HAPI_StringHandle * data_array,
6057  int start, int length );
6058 
6059 /// @brief Get array attribute string data.
6060 /// Each entry in an array attribute can have varying array lengths.
6061 /// Therefore the array values are returned as a flat array, with
6062 /// another sizes array containing the lengths of each array entry.
6063 /// Note that the string handles returned are only valid until
6064 /// the next time this function is called.
6065 ///
6066 /// @ingroup GeometryGetters Attributes
6067 ///
6068 /// @param[in] session
6069 /// The session of Houdini you are interacting with.
6070 /// See @ref HAPI_Sessions for more on sessions.
6071 /// Pass NULL to just use the default in-process session.
6072 /// <!-- default NULL -->
6073 ///
6074 /// @param[in] node_id
6075 /// The node id.
6076 ///
6077 /// @param[in] part_id
6078 /// The part id.
6079 ///
6080 /// @param[in] name
6081 /// Attribute name.
6082 /// <!-- string -->
6083 ///
6084 /// @param[in] attr_info
6085 /// ::HAPI_AttributeInfo used as input for the.
6086 /// totalArrayElements. Also contains some sanity checks like
6087 /// data type. Generally should be the same struct
6088 /// returned by ::HAPI_GetAttributeInfo().
6089 ///
6090 /// @param[out] data_fixed_array
6091 /// An ::HAPI_StringHandle array at least the size of
6092 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6093 /// <!-- sizeparm data_fixed_length -->
6094 ///
6095 /// @param[in] data_fixed_length
6096 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6097 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6098 ///
6099 /// @param[out] sizes_fixed_array
6100 /// An integer array at least the size of
6101 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6102 /// <!-- sizeparm sizes_fixed_length -->
6103 ///
6104 /// @param[in] start
6105 /// First index of range. Must be at least 0 and at
6106 /// most ::HAPI_AttributeInfo::count - 1.
6107 /// <!-- default 0 -->
6108 ///
6109 /// @param[in] sizes_fixed_length
6110 /// Must be at least 0 and at most
6111 /// ::HAPI_AttributeInfo::count - @p start.
6112 /// Note, if 0 is passed for length, the function will just
6113 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6114 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6115 ///
6116 /// @warning The string handles should be used to retrieve the strings
6117 /// immediately and are invalidated when another call to get
6118 /// this attribute's data is made.
6119 ///
6121  HAPI_NodeId node_id,
6122  HAPI_PartId part_id,
6123  const char * name,
6124  HAPI_AttributeInfo * attr_info,
6125  HAPI_StringHandle * data_fixed_array,
6126  int data_fixed_length,
6127  int * sizes_fixed_array,
6128  int start, int sizes_fixed_length );
6129 
6130 /// @brief Get attribute dictionary data.
6131 ///
6132 /// Dictionary data is serialized as JSON-encoded strings.
6133 /// Note that the string handles returned are only valid until the next
6134 /// time this function is called.
6135 ///
6136 /// @ingroup GeometryGetters Attributes
6137 ///
6138 /// @param[in] session
6139 /// The session of Houdini you are interacting with.
6140 /// See @ref HAPI_Sessions for more on sessions.
6141 /// Pass NULL to just use the default in-process session.
6142 /// <!-- default NULL -->
6143 ///
6144 /// @param[in] node_id
6145 /// The node id.
6146 ///
6147 /// @param[in] part_id
6148 /// The part id.
6149 ///
6150 /// @param[in] name
6151 /// Attribute name.
6152 /// <!-- string -->
6153 ///
6154 /// @param[in] attr_info
6155 /// ::HAPI_AttributeInfo used as input for what tuple size
6156 /// you want. Also contains some sanity checks like
6157 /// data type. Generally should be the same struct
6158 /// returned by ::HAPI_GetAttributeInfo().
6159 ///
6160 /// @param[out] data_array
6161 /// An ::HAPI_StringHandle array at least the size of
6162 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6163 /// <!-- sizeparm length -->
6164 ///
6165 /// @param[in] start
6166 /// First index of range. Must be at least 0 and at
6167 /// most ::HAPI_AttributeInfo::count - 1.
6168 /// <!-- default 0 -->
6169 ///
6170 /// @param[in] length
6171 /// Must be at least 0 and at most
6172 /// ::HAPI_AttributeInfo::count - @p start.
6173 /// Note, if 0 is passed for length, the function will just
6174 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6175 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6176 ///
6177 /// @warning The string handles should be used to retrieve the strings
6178 /// immediately and are invalidated when another call to get
6179 /// this attribute's data is made.
6180 ///
6182  HAPI_NodeId node_id,
6183  HAPI_PartId part_id,
6184  const char* name,
6185  HAPI_AttributeInfo* attr_info,
6186  HAPI_StringHandle* data_array,
6187  int start,
6188  int length );
6189 
6190 /// @brief Get array attribute dictionary data.
6191 /// Each entry in an array attribute can have varying array lengths.
6192 /// Therefore the array values are returned as a flat array, with
6193 /// another sizes array containing the lengths of each array entry.
6194 ///
6195 /// Dictionary data is serialized as JSON-encoded strings.
6196 /// Note that the string handles returned are only valid until
6197 /// the next time this function is called.
6198 ///
6199 /// @ingroup GeometryGetters Attributes
6200 ///
6201 /// @param[in] session
6202 /// The session of Houdini you are interacting with.
6203 /// See @ref HAPI_Sessions for more on sessions.
6204 /// Pass NULL to just use the default in-process session.
6205 /// <!-- default NULL -->
6206 ///
6207 /// @param[in] node_id
6208 /// The node id.
6209 ///
6210 /// @param[in] part_id
6211 /// The part id.
6212 ///
6213 /// @param[in] name
6214 /// Attribute name.
6215 /// <!-- string -->
6216 ///
6217 /// @param[in] attr_info
6218 /// ::HAPI_AttributeInfo used as input for the.
6219 /// totalArrayElements. Also contains some sanity checks like
6220 /// data type. Generally should be the same struct
6221 /// returned by ::HAPI_GetAttributeInfo().
6222 ///
6223 /// @param[out] data_fixed_array
6224 /// An ::HAPI_StringHandle array at least the size of
6225 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6226 /// <!-- sizeparm data_fixed_length -->
6227 ///
6228 /// @param[in] data_fixed_length
6229 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6230 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6231 ///
6232 /// @param[out] sizes_fixed_array
6233 /// An integer array at least the size of
6234 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6235 /// <!-- sizeparm sizes_fixed_length -->
6236 ///
6237 /// @param[in] start
6238 /// First index of range. Must be at least 0 and at
6239 /// most ::HAPI_AttributeInfo::count - 1.
6240 /// <!-- default 0 -->
6241 ///
6242 /// @param[in] sizes_fixed_length
6243 /// Must be at least 0 and at most
6244 /// ::HAPI_AttributeInfo::count - @p start.
6245 /// Note, if 0 is passed for length, the function will just
6246 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6247 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6248 ///
6249 /// @warning The string handles should be used to retrieve the strings
6250 /// immediately and are invalidated when another call to get
6251 /// this attribute's data is made.
6252 ///
6254  HAPI_NodeId node_id,
6255  HAPI_PartId part_id,
6256  const char* name,
6257  HAPI_AttributeInfo* attr_info,
6258  HAPI_StringHandle* data_fixed_array,
6259  int data_fixed_length,
6260  int* sizes_fixed_array,
6261  int start,
6262  int sizes_fixed_length );
6263 
6264 
6265 /// @brief Get attribute integer data asynchronously.
6266 ///
6267 /// @ingroup GeometryGetters Attributes
6268 ///
6269 /// @param[in] session
6270 /// The session of Houdini you are interacting with.
6271 /// See @ref HAPI_Sessions for more on sessions.
6272 /// Pass NULL to just use the default in-process session.
6273 /// <!-- default NULL -->
6274 ///
6275 /// @param[in] node_id
6276 /// The node id.
6277 ///
6278 /// @param[in] part_id
6279 /// The part id.
6280 ///
6281 /// @param[in] name
6282 /// Attribute name.
6283 /// <!-- string -->
6284 ///
6285 /// @param[in] attr_info
6286 /// ::HAPI_AttributeInfo used as input for what tuple size.
6287 /// you want. Also contains some sanity checks like
6288 /// data type. Generally should be the same struct
6289 /// returned by ::HAPI_GetAttributeInfo().
6290 ///
6291 /// @param[in] stride
6292 /// Specifies how many items to skip over for each element.
6293 /// With a stride of -1, the stride will be set to
6294 /// @c attr_info->tuple_size. Otherwise, the stride will be
6295 /// set to the maximum of @c attr_info->tuple_size and
6296 /// @c stride.
6297 ///
6298 /// @param[out] data_array
6299 /// An integer array at least the size of
6300 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6301 /// <!-- sizeparm length -->
6302 ///
6303 /// @param[in] start
6304 /// First index of range. Must be at least 0 and at
6305 /// most ::HAPI_AttributeInfo::count - 1.
6306 /// <!-- default 0 -->
6307 ///
6308 /// @param[in] length
6309 /// Must be at least 0 and at most
6310 /// ::HAPI_AttributeInfo::count - @p start.
6311 /// Note, if 0 is passed for length, the function will just
6312 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6313 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6314 ///
6315 /// @param[out] job_id
6316 /// The id assigned to the job.
6317 ///
6319  HAPI_NodeId node_id,
6320  HAPI_PartId part_id,
6321  const char * name,
6322  HAPI_AttributeInfo * attr_info,
6323  int stride,
6324  int * data_array,
6325  int start, int length,
6326  int * job_id );
6327 
6328 
6329 /// @brief Get attribute unsigned 8-bit integer data asynchronously.
6330 ///
6331 /// @ingroup GeometryGetters Attributes
6332 ///
6333 /// @param[in] session
6334 /// The session of Houdini you are interacting with.
6335 /// See @ref HAPI_Sessions for more on sessions.
6336 /// Pass NULL to just use the default in-process session.
6337 /// <!-- default NULL -->
6338 ///
6339 /// @param[in] node_id
6340 /// The node id.
6341 ///
6342 /// @param[in] part_id
6343 /// The part id.
6344 ///
6345 /// @param[in] name
6346 /// Attribute name.
6347 /// <!-- string -->
6348 ///
6349 /// @param[in] attr_info
6350 /// ::HAPI_AttributeInfo used as input for what tuple size.
6351 /// you want. Also contains some sanity checks like
6352 /// data type. Generally should be the same struct
6353 /// returned by ::HAPI_GetAttributeInfo().
6354 ///
6355 /// @param[in] stride
6356 /// Specifies how many items to skip over for each element.
6357 /// With a stride of -1, the stride will be set to
6358 /// @c attr_info->tuple_size. Otherwise, the stride will be
6359 /// set to the maximum of @c attr_info->tuple_size and
6360 /// @c stride.
6361 ///
6362 /// @param[out] data_array
6363 /// An integer array at least the size of
6364 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6365 /// <!-- sizeparm length -->
6366 ///
6367 /// @param[in] start
6368 /// First index of range. Must be at least 0 and at
6369 /// most ::HAPI_AttributeInfo::count - 1.
6370 /// <!-- default 0 -->
6371 ///
6372 /// @param[in] length
6373 /// Must be at least 0 and at most
6374 /// ::HAPI_AttributeInfo::count - @p start.
6375 /// Note, if 0 is passed for length, the function will just
6376 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6377 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6378 ///
6379 /// @param[out] job_id
6380 /// The id assigned to the job.
6381 ///
6383  HAPI_NodeId node_id,
6384  HAPI_PartId part_id,
6385  const char * name,
6386  HAPI_AttributeInfo * attr_info,
6387  int stride,
6388  HAPI_UInt8 * data_array,
6389  int start, int length,
6390  int * job_id );
6391 
6392 
6393 /// @brief Get attribute 8-bit integer data asynchronously.
6394 ///
6395 /// @ingroup GeometryGetters Attributes
6396 ///
6397 /// @param[in] session
6398 /// The session of Houdini you are interacting with.
6399 /// See @ref HAPI_Sessions for more on sessions.
6400 /// Pass NULL to just use the default in-process session.
6401 /// <!-- default NULL -->
6402 ///
6403 /// @param[in] node_id
6404 /// The node id.
6405 ///
6406 /// @param[in] part_id
6407 /// The part id.
6408 ///
6409 /// @param[in] name
6410 /// Attribute name.
6411 /// <!-- string -->
6412 ///
6413 /// @param[in] attr_info
6414 /// ::HAPI_AttributeInfo used as input for what tuple size.
6415 /// you want. Also contains some sanity checks like
6416 /// data type. Generally should be the same struct
6417 /// returned by ::HAPI_GetAttributeInfo().
6418 ///
6419 /// @param[in] stride
6420 /// Specifies how many items to skip over for each element.
6421 /// With a stride of -1, the stride will be set to
6422 /// @c attr_info->tuple_size. Otherwise, the stride will be
6423 /// set to the maximum of @c attr_info->tuple_size and
6424 /// @c stride.
6425 ///
6426 /// @param[out] data_array
6427 /// An integer array at least the size of
6428 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6429 /// <!-- sizeparm length -->
6430 ///
6431 /// @param[in] start
6432 /// First index of range. Must be at least 0 and at
6433 /// most ::HAPI_AttributeInfo::count - 1.
6434 /// <!-- default 0 -->
6435 ///
6436 /// @param[in] length
6437 /// Must be at least 0 and at most
6438 /// ::HAPI_AttributeInfo::count - @p start.
6439 /// Note, if 0 is passed for length, the function will just
6440 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6441 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6442 ///
6443 /// @param[out] job_id
6444 /// The id assigned to the job.
6445 ///
6447  HAPI_NodeId node_id,
6448  HAPI_PartId part_id,
6449  const char * name,
6450  HAPI_AttributeInfo * attr_info,
6451  int stride,
6452  HAPI_Int8 * data_array,
6453  int start, int length,
6454  int * job_id );
6455 
6456 /// @brief Get attribute 16-bit integer data asynchronously.
6457 ///
6458 /// @ingroup GeometryGetters Attributes
6459 ///
6460 /// @param[in] session
6461 /// The session of Houdini you are interacting with.
6462 /// See @ref HAPI_Sessions for more on sessions.
6463 /// Pass NULL to just use the default in-process session.
6464 /// <!-- default NULL -->
6465 ///
6466 /// @param[in] node_id
6467 /// The node id.
6468 ///
6469 /// @param[in] part_id
6470 /// The part id.
6471 ///
6472 /// @param[in] name
6473 /// Attribute name.
6474 /// <!-- string -->
6475 ///
6476 /// @param[in] attr_info
6477 /// ::HAPI_AttributeInfo used as input for what tuple size.
6478 /// you want. Also contains some sanity checks like
6479 /// data type. Generally should be the same struct
6480 /// returned by ::HAPI_GetAttributeInfo().
6481 ///
6482 /// @param[in] stride
6483 /// Specifies how many items to skip over for each element.
6484 /// With a stride of -1, the stride will be set to
6485 /// @c attr_info->tuple_size. Otherwise, the stride will be
6486 /// set to the maximum of @c attr_info->tuple_size and
6487 /// @c stride.
6488 ///
6489 /// @param[out] data_array
6490 /// An integer array at least the size of
6491 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6492 /// <!-- sizeparm length -->
6493 ///
6494 /// @param[in] start
6495 /// First index of range. Must be at least 0 and at
6496 /// most ::HAPI_AttributeInfo::count - 1.
6497 /// <!-- default 0 -->
6498 ///
6499 /// @param[in] length
6500 /// Must be at least 0 and at most
6501 /// ::HAPI_AttributeInfo::count - @p start.
6502 /// Note, if 0 is passed for length, the function will just
6503 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6504 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6505 ///
6506 /// @param[out] job_id
6507 /// The id assigned to the job.
6508 ///
6510  HAPI_NodeId node_id,
6511  HAPI_PartId part_id,
6512  const char * name,
6513  HAPI_AttributeInfo * attr_info,
6514  int stride,
6515  HAPI_Int16 * data_array,
6516  int start, int length,
6517  int * job_id );
6518 
6519 /// @brief Get attribute 64-bit integer data asynchronously.
6520 ///
6521 /// @ingroup GeometryGetters Attributes
6522 ///
6523 /// @param[in] session
6524 /// The session of Houdini you are interacting with.
6525 /// See @ref HAPI_Sessions for more on sessions.
6526 /// Pass NULL to just use the default in-process session.
6527 /// <!-- default NULL -->
6528 ///
6529 /// @param[in] node_id
6530 /// The node id.
6531 ///
6532 /// @param[in] part_id
6533 /// The part id.
6534 ///
6535 /// @param[in] name
6536 /// Attribute name.
6537 /// <!-- string -->
6538 ///
6539 /// @param[in] attr_info
6540 /// ::HAPI_AttributeInfo used as input for what tuple size.
6541 /// you want. Also contains some sanity checks like
6542 /// data type. Generally should be the same struct
6543 /// returned by ::HAPI_GetAttributeInfo().
6544 ///
6545 /// @param[in] stride
6546 /// Specifies how many items to skip over for each element.
6547 /// With a stride of -1, the stride will be set to
6548 /// @c attr_info->tuple_size. Otherwise, the stride will be
6549 /// set to the maximum of @c attr_info->tuple_size and
6550 /// @c stride.
6551 ///
6552 /// @param[out] data_array
6553 /// An integer array at least the size of
6554 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6555 /// <!-- sizeparm length -->
6556 ///
6557 /// @param[in] start
6558 /// First index of range. Must be at least 0 and at
6559 /// most ::HAPI_AttributeInfo::count - 1.
6560 /// <!-- default 0 -->
6561 ///
6562 /// @param[in] length
6563 /// Must be at least 0 and at most
6564 /// ::HAPI_AttributeInfo::count - @p start.
6565 /// Note, if 0 is passed for length, the function will just
6566 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6567 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6568 ///
6569 /// @param[out] job_id
6570 /// The id assigned to the job.
6571 ///
6573  HAPI_NodeId node_id,
6574  HAPI_PartId part_id,
6575  const char * name,
6576  HAPI_AttributeInfo * attr_info,
6577  int stride,
6578  HAPI_Int64 * data_array,
6579  int start, int length,
6580  int * job_id );
6581 
6582 
6583 /// @brief Get attribute float data asynchronously.
6584 ///
6585 /// @ingroup GeometryGetters Attributes
6586 ///
6587 /// @param[in] session
6588 /// The session of Houdini you are interacting with.
6589 /// See @ref HAPI_Sessions for more on sessions.
6590 /// Pass NULL to just use the default in-process session.
6591 /// <!-- default NULL -->
6592 ///
6593 /// @param[in] node_id
6594 /// The node id.
6595 ///
6596 /// @param[in] part_id
6597 /// The part id.
6598 ///
6599 /// @param[in] name
6600 /// Attribute name.
6601 /// <!-- string -->
6602 ///
6603 /// @param[in] attr_info
6604 /// ::HAPI_AttributeInfo used as input for what tuple size.
6605 /// you want. Also contains some sanity checks like
6606 /// data type. Generally should be the same struct
6607 /// returned by ::HAPI_GetAttributeInfo().
6608 ///
6609 /// @param[in] stride
6610 /// Specifies how many items to skip over for each element.
6611 /// With a stride of -1, the stride will be set to
6612 /// @c attr_info->tuple_size. Otherwise, the stride will be
6613 /// set to the maximum of @c attr_info->tuple_size and
6614 /// @c stride.
6615 ///
6616 /// @param[out] data_array
6617 /// An integer array at least the size of
6618 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6619 /// <!-- sizeparm length -->
6620 ///
6621 /// @param[in] start
6622 /// First index of range. Must be at least 0 and at
6623 /// most ::HAPI_AttributeInfo::count - 1.
6624 /// <!-- default 0 -->
6625 ///
6626 /// @param[in] length
6627 /// Must be at least 0 and at most
6628 /// ::HAPI_AttributeInfo::count - @p start.
6629 /// Note, if 0 is passed for length, the function will just
6630 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6631 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6632 ///
6633 /// @param[out] job_id
6634 /// The id assigned to the job.
6635 ///
6637  HAPI_NodeId node_id,
6638  HAPI_PartId part_id,
6639  const char * name,
6640  HAPI_AttributeInfo * attr_info,
6641  int stride,
6642  float * data_array,
6643  int start, int length,
6644  int * job_id );
6645 
6646 /// @brief Get attribute 64-bit float data asynchronously.
6647 ///
6648 /// @ingroup GeometryGetters Attributes
6649 ///
6650 /// @param[in] session
6651 /// The session of Houdini you are interacting with.
6652 /// See @ref HAPI_Sessions for more on sessions.
6653 /// Pass NULL to just use the default in-process session.
6654 /// <!-- default NULL -->
6655 ///
6656 /// @param[in] node_id
6657 /// The node id.
6658 ///
6659 /// @param[in] part_id
6660 /// The part id.
6661 ///
6662 /// @param[in] name
6663 /// Attribute name.
6664 /// <!-- string -->
6665 ///
6666 /// @param[in] attr_info
6667 /// ::HAPI_AttributeInfo used as input for what tuple size.
6668 /// you want. Also contains some sanity checks like
6669 /// data type. Generally should be the same struct
6670 /// returned by ::HAPI_GetAttributeInfo().
6671 ///
6672 /// @param[in] stride
6673 /// Specifies how many items to skip over for each element.
6674 /// With a stride of -1, the stride will be set to
6675 /// @c attr_info->tuple_size. Otherwise, the stride will be
6676 /// set to the maximum of @c attr_info->tuple_size and
6677 /// @c stride.
6678 ///
6679 /// @param[out] data_array
6680 /// An integer array at least the size of
6681 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6682 /// <!-- sizeparm length -->
6683 ///
6684 /// @param[in] start
6685 /// First index of range. Must be at least 0 and at
6686 /// most ::HAPI_AttributeInfo::count - 1.
6687 /// <!-- default 0 -->
6688 ///
6689 /// @param[in] length
6690 /// Must be at least 0 and at most
6691 /// ::HAPI_AttributeInfo::count - @p start.
6692 /// Note, if 0 is passed for length, the function will just
6693 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6694 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6695 ///
6696 /// @param[out] job_id
6697 /// The id assigned to the job.
6698 ///
6700  HAPI_NodeId node_id,
6701  HAPI_PartId part_id,
6702  const char * name,
6703  HAPI_AttributeInfo * attr_info,
6704  int stride,
6705  double * data_array,
6706  int start, int length,
6707  int * job_id );
6708 
6709 /// @brief Get attribute string data asynchronously.
6710 ///
6711 /// @ingroup GeometryGetters Attributes
6712 ///
6713 /// @param[in] session
6714 /// The session of Houdini you are interacting with.
6715 /// See @ref HAPI_Sessions for more on sessions.
6716 /// Pass NULL to just use the default in-process session.
6717 /// <!-- default NULL -->
6718 ///
6719 /// @param[in] node_id
6720 /// The node id.
6721 ///
6722 /// @param[in] part_id
6723 /// The part id.
6724 ///
6725 /// @param[in] name
6726 /// Attribute name.
6727 /// <!-- string -->
6728 ///
6729 /// @param[in] attr_info
6730 /// ::HAPI_AttributeInfo used as input for what tuple size.
6731 /// you want. Also contains some sanity checks like
6732 /// data type. Generally should be the same struct
6733 /// returned by ::HAPI_GetAttributeInfo().
6734 ///
6735 /// @param[out] data_array
6736 /// An integer array at least the size of
6737 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6738 /// <!-- sizeparm length -->
6739 ///
6740 /// @param[in] start
6741 /// First index of range. Must be at least 0 and at
6742 /// most ::HAPI_AttributeInfo::count - 1.
6743 /// <!-- default 0 -->
6744 ///
6745 /// @param[in] length
6746 /// Must be at least 0 and at most
6747 /// ::HAPI_AttributeInfo::count - @p start.
6748 /// Note, if 0 is passed for length, the function will just
6749 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6750 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6751 ///
6752 /// @param[out] job_id
6753 /// The id assigned to the job.
6754 ///
6755 /// @warning The string handles should be used to retrieve the strings
6756 /// immediately and are invalidated when another call to get
6757 /// this attribute's data is made.
6758 ///
6760  HAPI_NodeId node_id,
6761  HAPI_PartId part_id,
6762  const char * name,
6763  HAPI_AttributeInfo * attr_info,
6764  HAPI_StringHandle * data_array,
6765  int start, int length,
6766  int * job_id );
6767 
6768 /// @brief Get attribute dictionary data asynchronously.
6769 ///
6770 /// @ingroup GeometryGetters Attributes
6771 ///
6772 /// @param[in] session
6773 /// The session of Houdini you are interacting with.
6774 /// See @ref HAPI_Sessions for more on sessions.
6775 /// Pass NULL to just use the default in-process session.
6776 /// <!-- default NULL -->
6777 ///
6778 /// @param[in] node_id
6779 /// The node id.
6780 ///
6781 /// @param[in] part_id
6782 /// The part id.
6783 ///
6784 /// @param[in] name
6785 /// Attribute name.
6786 /// <!-- string -->
6787 ///
6788 /// @param[in] attr_info
6789 /// ::HAPI_AttributeInfo used as input for what tuple size.
6790 /// you want. Also contains some sanity checks like
6791 /// data type. Generally should be the same struct
6792 /// returned by ::HAPI_GetAttributeInfo().
6793 ///
6794 /// @param[out] data_array
6795 /// An integer array at least the size of
6796 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
6797 /// <!-- sizeparm length -->
6798 ///
6799 /// @param[in] start
6800 /// First index of range. Must be at least 0 and at
6801 /// most ::HAPI_AttributeInfo::count - 1.
6802 /// <!-- default 0 -->
6803 ///
6804 /// @param[in] length
6805 /// Must be at least 0 and at most
6806 /// ::HAPI_AttributeInfo::count - @p start.
6807 /// Note, if 0 is passed for length, the function will just
6808 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6809 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6810 ///
6811 /// @param[out] job_id
6812 /// The id assigned to the job.
6813 ///
6814 /// @warning The string handles should be used to retrieve the strings
6815 /// immediately and are invalidated when another call to get
6816 /// this attribute's data is made.
6817 ///
6819  HAPI_NodeId node_id,
6820  HAPI_PartId part_id,
6821  const char * name,
6822  HAPI_AttributeInfo * attr_info,
6823  HAPI_StringHandle * data_array,
6824  int start, int length,
6825  int * job_id );
6826 
6827 /// @brief Get array attribute integer data asynchronously.
6828 /// Each entry in an array attribute can have varying array lengths.
6829 /// Therefore the array values are returned as a flat array, with
6830 /// another sizes array containing the lengths of each array entry.
6831 ///
6832 /// @ingroup GeometryGetters Attributes
6833 ///
6834 /// @param[in] session
6835 /// The session of Houdini you are interacting with.
6836 /// See @ref HAPI_Sessions for more on sessions.
6837 /// Pass NULL to just use the default in-process session.
6838 /// <!-- default NULL -->
6839 ///
6840 /// @param[in] node_id
6841 /// The node id.
6842 ///
6843 /// @param[in] part_id
6844 /// The part id.
6845 ///
6846 /// @param[in] attr_name
6847 /// Attribute name.
6848 /// <!-- string -->
6849 ///
6850 /// @param[in] attr_info
6851 /// ::HAPI_AttributeInfo used as input for what tuple size.
6852 /// you want. Also contains some sanity checks like
6853 /// data type. Generally should be the same struct
6854 /// returned by ::HAPI_GetAttributeInfo().
6855 ///
6856 /// @param[out] data_fixed_array
6857 /// An integer array at least the size of
6858 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6859 /// <!-- sizeparm data_fixed_length -->
6860 ///
6861 /// @param[in] data_fixed_length
6862 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6863 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6864 ///
6865 /// @param[out] sizes_fixed_array
6866 /// An integer array at least the size of
6867 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6868 /// <!-- source ::HAPI_AttributeInfo::count -->
6869 /// <!-- sizeparm sizes_fixed_length -->
6870 ///
6871 /// @param[in] start
6872 /// First index of range. Must be at least 0 and at
6873 /// most ::HAPI_AttributeInfo::count - 1.
6874 /// <!-- default 0 -->
6875 ///
6876 /// @param[in] sizes_fixed_length
6877 /// Must be at least 0 and at most
6878 /// ::HAPI_AttributeInfo::count - @p start.
6879 /// Note, if 0 is passed for length, the function will just
6880 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6881 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6882 ///
6883 /// @param[out] job_id
6884 /// The id assigned to the job.
6885 ///
6887  HAPI_NodeId node_id,
6888  HAPI_PartId part_id,
6889  const char * attr_name,
6890  HAPI_AttributeInfo * attr_info,
6891  int * data_fixed_array,
6892  int data_fixed_length,
6893  int * sizes_fixed_array,
6894  int start, int sizes_fixed_length,
6895  int * job_id );
6896 
6897 /// @brief Get array attribute unsigned 8-bit integer data asynchronously.
6898 /// Each entry in an array attribute can have varying array lengths.
6899 /// Therefore the array values are returned as a flat array, with
6900 /// another sizes array containing the lengths of each array entry.
6901 ///
6902 /// @ingroup GeometryGetters Attributes
6903 ///
6904 /// @param[in] session
6905 /// The session of Houdini you are interacting with.
6906 /// See @ref HAPI_Sessions for more on sessions.
6907 /// Pass NULL to just use the default in-process session.
6908 /// <!-- default NULL -->
6909 ///
6910 /// @param[in] node_id
6911 /// The node id.
6912 ///
6913 /// @param[in] part_id
6914 /// The part id.
6915 ///
6916 /// @param[in] attr_name
6917 /// Attribute name.
6918 /// <!-- string -->
6919 ///
6920 /// @param[in] attr_info
6921 /// ::HAPI_AttributeInfo used as input for what tuple size.
6922 /// you want. Also contains some sanity checks like
6923 /// data type. Generally should be the same struct
6924 /// returned by ::HAPI_GetAttributeInfo().
6925 ///
6926 /// @param[out] data_fixed_array
6927 /// An integer array at least the size of
6928 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6929 /// <!-- sizeparm data_fixed_length -->
6930 ///
6931 /// @param[in] data_fixed_length
6932 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6933 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
6934 ///
6935 /// @param[out] sizes_fixed_array
6936 /// An integer array at least the size of
6937 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
6938 /// <!-- source ::HAPI_AttributeInfo::count -->
6939 /// <!-- sizeparm sizes_fixed_length -->
6940 ///
6941 /// @param[in] start
6942 /// First index of range. Must be at least 0 and at
6943 /// most ::HAPI_AttributeInfo::count - 1.
6944 /// <!-- default 0 -->
6945 ///
6946 /// @param[in] sizes_fixed_length
6947 /// Must be at least 0 and at most
6948 /// ::HAPI_AttributeInfo::count - @p start.
6949 /// Note, if 0 is passed for length, the function will just
6950 /// do nothing and return ::HAPI_RESULT_SUCCESS.
6951 /// <!-- source ::HAPI_AttributeInfo::count - start -->
6952 ///
6953 /// @param[out] job_id
6954 /// The id assigned to the job.
6955 ///
6957  HAPI_NodeId node_id,
6958  HAPI_PartId part_id,
6959  const char * attr_name,
6960  HAPI_AttributeInfo * attr_info,
6961  HAPI_UInt8 * data_fixed_array,
6962  int data_fixed_length,
6963  int * sizes_fixed_array,
6964  int start, int sizes_fixed_length,
6965  int * job_id );
6966 
6967 /// @brief Get array attribute 8-bit integer data asynchronously.
6968 /// Each entry in an array attribute can have varying array lengths.
6969 /// Therefore the array values are returned as a flat array, with
6970 /// another sizes array containing the lengths of each array entry.
6971 ///
6972 /// @ingroup GeometryGetters Attributes
6973 ///
6974 /// @param[in] session
6975 /// The session of Houdini you are interacting with.
6976 /// See @ref HAPI_Sessions for more on sessions.
6977 /// Pass NULL to just use the default in-process session.
6978 /// <!-- default NULL -->
6979 ///
6980 /// @param[in] node_id
6981 /// The node id.
6982 ///
6983 /// @param[in] part_id
6984 /// The part id.
6985 ///
6986 /// @param[in] attr_name
6987 /// Attribute name.
6988 /// <!-- string -->
6989 ///
6990 /// @param[in] attr_info
6991 /// ::HAPI_AttributeInfo used as input for what tuple size.
6992 /// you want. Also contains some sanity checks like
6993 /// data type. Generally should be the same struct
6994 /// returned by ::HAPI_GetAttributeInfo().
6995 ///
6996 /// @param[out] data_fixed_array
6997 /// An integer array at least the size of
6998 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
6999 /// <!-- sizeparm data_fixed_length -->
7000 ///
7001 /// @param[in] data_fixed_length
7002 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7003 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7004 ///
7005 /// @param[out] sizes_fixed_array
7006 /// An integer array at least the size of
7007 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7008 /// <!-- source ::HAPI_AttributeInfo::count -->
7009 /// <!-- sizeparm sizes_fixed_length -->
7010 ///
7011 /// @param[in] start
7012 /// First index of range. Must be at least 0 and at
7013 /// most ::HAPI_AttributeInfo::count - 1.
7014 /// <!-- default 0 -->
7015 ///
7016 /// @param[in] sizes_fixed_length
7017 /// Must be at least 0 and at most
7018 /// ::HAPI_AttributeInfo::count - @p start.
7019 /// Note, if 0 is passed for length, the function will just
7020 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7021 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7022 ///
7023 /// @param[out] job_id
7024 /// The id assigned to the job.
7025 ///
7027  HAPI_NodeId node_id,
7028  HAPI_PartId part_id,
7029  const char * attr_name,
7030  HAPI_AttributeInfo * attr_info,
7031  HAPI_Int8 * data_fixed_array,
7032  int data_fixed_length,
7033  int * sizes_fixed_array,
7034  int start, int sizes_fixed_length,
7035  int * job_id );
7036 
7037 /// @brief Get array attribute 16-bit integer data asynchronously.
7038 /// Each entry in an array attribute can have varying array lengths.
7039 /// Therefore the array values are returned as a flat array, with
7040 /// another sizes array containing the lengths of each array entry.
7041 ///
7042 /// @ingroup GeometryGetters Attributes
7043 ///
7044 /// @param[in] session
7045 /// The session of Houdini you are interacting with.
7046 /// See @ref HAPI_Sessions for more on sessions.
7047 /// Pass NULL to just use the default in-process session.
7048 /// <!-- default NULL -->
7049 ///
7050 /// @param[in] node_id
7051 /// The node id.
7052 ///
7053 /// @param[in] part_id
7054 /// The part id.
7055 ///
7056 /// @param[in] attr_name
7057 /// Attribute name.
7058 /// <!-- string -->
7059 ///
7060 /// @param[in] attr_info
7061 /// ::HAPI_AttributeInfo used as input for what tuple size.
7062 /// you want. Also contains some sanity checks like
7063 /// data type. Generally should be the same struct
7064 /// returned by ::HAPI_GetAttributeInfo().
7065 ///
7066 /// @param[out] data_fixed_array
7067 /// An integer array at least the size of
7068 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7069 /// <!-- sizeparm data_fixed_length -->
7070 ///
7071 /// @param[in] data_fixed_length
7072 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7073 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7074 ///
7075 /// @param[out] sizes_fixed_array
7076 /// An integer array at least the size of
7077 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7078 /// <!-- source ::HAPI_AttributeInfo::count -->
7079 /// <!-- sizeparm sizes_fixed_length -->
7080 ///
7081 /// @param[in] start
7082 /// First index of range. Must be at least 0 and at
7083 /// most ::HAPI_AttributeInfo::count - 1.
7084 /// <!-- default 0 -->
7085 ///
7086 /// @param[in] sizes_fixed_length
7087 /// Must be at least 0 and at most
7088 /// ::HAPI_AttributeInfo::count - @p start.
7089 /// Note, if 0 is passed for length, the function will just
7090 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7091 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7092 ///
7093 /// @param[out] job_id
7094 /// The id assigned to the job.
7095 ///
7097  HAPI_NodeId node_id,
7098  HAPI_PartId part_id,
7099  const char * attr_name,
7100  HAPI_AttributeInfo * attr_info,
7101  HAPI_Int16 * data_fixed_array,
7102  int data_fixed_length,
7103  int * sizes_fixed_array,
7104  int start, int sizes_fixed_length,
7105  int * job_id );
7106 
7107 /// @brief Get array attribute 64-bit integer data asynchronously.
7108 /// Each entry in an array attribute can have varying array lengths.
7109 /// Therefore the array values are returned as a flat array, with
7110 /// another sizes array containing the lengths of each array entry.
7111 ///
7112 /// @ingroup GeometryGetters Attributes
7113 ///
7114 /// @param[in] session
7115 /// The session of Houdini you are interacting with.
7116 /// See @ref HAPI_Sessions for more on sessions.
7117 /// Pass NULL to just use the default in-process session.
7118 /// <!-- default NULL -->
7119 ///
7120 /// @param[in] node_id
7121 /// The node id.
7122 ///
7123 /// @param[in] part_id
7124 /// The part id.
7125 ///
7126 /// @param[in] attr_name
7127 /// Attribute name.
7128 /// <!-- string -->
7129 ///
7130 /// @param[in] attr_info
7131 /// ::HAPI_AttributeInfo used as input for what tuple size.
7132 /// you want. Also contains some sanity checks like
7133 /// data type. Generally should be the same struct
7134 /// returned by ::HAPI_GetAttributeInfo().
7135 ///
7136 /// @param[out] data_fixed_array
7137 /// An integer array at least the size of
7138 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7139 /// <!-- sizeparm data_fixed_length -->
7140 ///
7141 /// @param[in] data_fixed_length
7142 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7143 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7144 ///
7145 /// @param[out] sizes_fixed_array
7146 /// An integer array at least the size of
7147 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7148 /// <!-- source ::HAPI_AttributeInfo::count -->
7149 /// <!-- sizeparm sizes_fixed_length -->
7150 ///
7151 /// @param[in] start
7152 /// First index of range. Must be at least 0 and at
7153 /// most ::HAPI_AttributeInfo::count - 1.
7154 /// <!-- default 0 -->
7155 ///
7156 /// @param[in] sizes_fixed_length
7157 /// Must be at least 0 and at most
7158 /// ::HAPI_AttributeInfo::count - @p start.
7159 /// Note, if 0 is passed for length, the function will just
7160 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7161 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7162 ///
7163 /// @param[out] job_id
7164 /// The id assigned to the job.
7165 ///
7167  HAPI_NodeId node_id,
7168  HAPI_PartId part_id,
7169  const char * attr_name,
7170  HAPI_AttributeInfo * attr_info,
7171  HAPI_Int64 * data_fixed_array,
7172  int data_fixed_length,
7173  int * sizes_fixed_array,
7174  int start, int sizes_fixed_length,
7175  int * job_id );
7176 
7177 /// @brief Get array attribute float data asynchronously.
7178 /// Each entry in an array attribute can have varying array lengths.
7179 /// Therefore the array values are returned as a flat array, with
7180 /// another sizes array containing the lengths of each array entry.
7181 ///
7182 /// @ingroup GeometryGetters Attributes
7183 ///
7184 /// @param[in] session
7185 /// The session of Houdini you are interacting with.
7186 /// See @ref HAPI_Sessions for more on sessions.
7187 /// Pass NULL to just use the default in-process session.
7188 /// <!-- default NULL -->
7189 ///
7190 /// @param[in] node_id
7191 /// The node id.
7192 ///
7193 /// @param[in] part_id
7194 /// The part id.
7195 ///
7196 /// @param[in] attr_name
7197 /// Attribute name.
7198 /// <!-- string -->
7199 ///
7200 /// @param[in] attr_info
7201 /// ::HAPI_AttributeInfo used as input for what tuple size.
7202 /// you want. Also contains some sanity checks like
7203 /// data type. Generally should be the same struct
7204 /// returned by ::HAPI_GetAttributeInfo().
7205 ///
7206 /// @param[out] data_fixed_array
7207 /// An integer array at least the size of
7208 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7209 /// <!-- sizeparm data_fixed_length -->
7210 ///
7211 /// @param[in] data_fixed_length
7212 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7213 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7214 ///
7215 /// @param[out] sizes_fixed_array
7216 /// An integer array at least the size of
7217 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7218 /// <!-- source ::HAPI_AttributeInfo::count -->
7219 /// <!-- sizeparm sizes_fixed_length -->
7220 ///
7221 /// @param[in] start
7222 /// First index of range. Must be at least 0 and at
7223 /// most ::HAPI_AttributeInfo::count - 1.
7224 /// <!-- default 0 -->
7225 ///
7226 /// @param[in] sizes_fixed_length
7227 /// Must be at least 0 and at most
7228 /// ::HAPI_AttributeInfo::count - @p start.
7229 /// Note, if 0 is passed for length, the function will just
7230 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7231 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7232 ///
7233 /// @param[out] job_id
7234 /// The id assigned to the job.
7235 ///
7237  HAPI_NodeId node_id,
7238  HAPI_PartId part_id,
7239  const char * attr_name,
7240  HAPI_AttributeInfo * attr_info,
7241  float * data_fixed_array,
7242  int data_fixed_length,
7243  int * sizes_fixed_array,
7244  int start, int sizes_fixed_length,
7245  int * job_id );
7246 
7247 /// @brief Get array attribute 64-bit float data asynchronously.
7248 /// Each entry in an array attribute can have varying array lengths.
7249 /// Therefore the array values are returned as a flat array, with
7250 /// another sizes array containing the lengths of each array entry.
7251 ///
7252 /// @ingroup GeometryGetters Attributes
7253 ///
7254 /// @param[in] session
7255 /// The session of Houdini you are interacting with.
7256 /// See @ref HAPI_Sessions for more on sessions.
7257 /// Pass NULL to just use the default in-process session.
7258 /// <!-- default NULL -->
7259 ///
7260 /// @param[in] node_id
7261 /// The node id.
7262 ///
7263 /// @param[in] part_id
7264 /// The part id.
7265 ///
7266 /// @param[in] attr_name
7267 /// Attribute name.
7268 /// <!-- string -->
7269 ///
7270 /// @param[in] attr_info
7271 /// ::HAPI_AttributeInfo used as input for what tuple size.
7272 /// you want. Also contains some sanity checks like
7273 /// data type. Generally should be the same struct
7274 /// returned by ::HAPI_GetAttributeInfo().
7275 ///
7276 /// @param[out] data_fixed_array
7277 /// An integer array at least the size of
7278 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7279 /// <!-- sizeparm data_fixed_length -->
7280 ///
7281 /// @param[in] data_fixed_length
7282 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7283 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7284 ///
7285 /// @param[out] sizes_fixed_array
7286 /// An integer array at least the size of
7287 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7288 /// <!-- source ::HAPI_AttributeInfo::count -->
7289 /// <!-- sizeparm sizes_fixed_length -->
7290 ///
7291 /// @param[in] start
7292 /// First index of range. Must be at least 0 and at
7293 /// most ::HAPI_AttributeInfo::count - 1.
7294 /// <!-- default 0 -->
7295 ///
7296 /// @param[in] sizes_fixed_length
7297 /// Must be at least 0 and at most
7298 /// ::HAPI_AttributeInfo::count - @p start.
7299 /// Note, if 0 is passed for length, the function will just
7300 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7301 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7302 ///
7303 /// @param[out] job_id
7304 /// The id assigned to the job.
7305 ///
7307  HAPI_NodeId node_id,
7308  HAPI_PartId part_id,
7309  const char * attr_name,
7310  HAPI_AttributeInfo * attr_info,
7311  double * data_fixed_array,
7312  int data_fixed_length,
7313  int * sizes_fixed_array,
7314  int start, int sizes_fixed_length,
7315  int * job_id );
7316 
7317 /// @brief Get array attribute string data asynchronously.
7318 /// Each entry in an array attribute can have varying array lengths.
7319 /// Therefore the array values are returned as a flat array, with
7320 /// another sizes array containing the lengths of each array entry.
7321 ///
7322 /// @ingroup GeometryGetters Attributes
7323 ///
7324 /// @param[in] session
7325 /// The session of Houdini you are interacting with.
7326 /// See @ref HAPI_Sessions for more on sessions.
7327 /// Pass NULL to just use the default in-process session.
7328 /// <!-- default NULL -->
7329 ///
7330 /// @param[in] node_id
7331 /// The node id.
7332 ///
7333 /// @param[in] part_id
7334 /// The part id.
7335 ///
7336 /// @param[in] attr_name
7337 /// Attribute name.
7338 /// <!-- string -->
7339 ///
7340 /// @param[in] attr_info
7341 /// ::HAPI_AttributeInfo used as input for what tuple size.
7342 /// you want. Also contains some sanity checks like
7343 /// data type. Generally should be the same struct
7344 /// returned by ::HAPI_GetAttributeInfo().
7345 ///
7346 /// @param[out] data_fixed_array
7347 /// An integer array at least the size of
7348 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7349 /// <!-- sizeparm data_fixed_length -->
7350 ///
7351 /// @param[in] data_fixed_length
7352 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7353 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7354 ///
7355 /// @param[out] sizes_fixed_array
7356 /// An integer array at least the size of
7357 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7358 /// <!-- source ::HAPI_AttributeInfo::count -->
7359 /// <!-- sizeparm sizes_fixed_length -->
7360 ///
7361 /// @param[in] start
7362 /// First index of range. Must be at least 0 and at
7363 /// most ::HAPI_AttributeInfo::count - 1.
7364 /// <!-- default 0 -->
7365 ///
7366 /// @param[in] sizes_fixed_length
7367 /// Must be at least 0 and at most
7368 /// ::HAPI_AttributeInfo::count - @p start.
7369 /// Note, if 0 is passed for length, the function will just
7370 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7371 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7372 ///
7373 /// @param[out] job_id
7374 /// The id assigned to the job.
7375 ///
7376 /// @warning The string handles should be used to retrieve the strings
7377 /// immediately and are invalidated when another call to get
7378 /// this attribute's data is made.
7379 ///
7381  HAPI_NodeId node_id,
7382  HAPI_PartId part_id,
7383  const char * attr_name,
7384  HAPI_AttributeInfo * attr_info,
7385  HAPI_StringHandle * data_fixed_array,
7386  int data_fixed_length,
7387  int * sizes_fixed_array,
7388  int start, int sizes_fixed_length,
7389  int * job_id );
7390 
7391 /// @brief Get array attribute dictionary data asynchronously.
7392 /// Each entry in an array attribute can have varying array lengths.
7393 /// Therefore the array values are returned as a flat array, with
7394 /// another sizes array containing the lengths of each array entry.
7395 ///
7396 /// @ingroup GeometryGetters Attributes
7397 ///
7398 /// @param[in] session
7399 /// The session of Houdini you are interacting with.
7400 /// See @ref HAPI_Sessions for more on sessions.
7401 /// Pass NULL to just use the default in-process session.
7402 /// <!-- default NULL -->
7403 ///
7404 /// @param[in] node_id
7405 /// The node id.
7406 ///
7407 /// @param[in] part_id
7408 /// The part id.
7409 ///
7410 /// @param[in] attr_name
7411 /// Attribute name.
7412 /// <!-- string -->
7413 ///
7414 /// @param[in] attr_info
7415 /// ::HAPI_AttributeInfo used as input for what tuple size.
7416 /// you want. Also contains some sanity checks like
7417 /// data type. Generally should be the same struct
7418 /// returned by ::HAPI_GetAttributeInfo().
7419 ///
7420 /// @param[out] data_fixed_array
7421 /// An integer array at least the size of
7422 /// <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7423 /// <!-- sizeparm data_fixed_length -->
7424 ///
7425 /// @param[in] data_fixed_length
7426 /// Must be <tt>::HAPI_AttributeInfo::totalArrayElements</tt>.
7427 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
7428 ///
7429 /// @param[out] sizes_fixed_array
7430 /// An integer array at least the size of
7431 /// <tt>sizes_fixed_length</tt> to hold the size of each entry.
7432 /// <!-- source ::HAPI_AttributeInfo::count -->
7433 /// <!-- sizeparm sizes_fixed_length -->
7434 ///
7435 /// @param[in] start
7436 /// First index of range. Must be at least 0 and at
7437 /// most ::HAPI_AttributeInfo::count - 1.
7438 /// <!-- default 0 -->
7439 ///
7440 /// @param[in] sizes_fixed_length
7441 /// Must be at least 0 and at most
7442 /// ::HAPI_AttributeInfo::count - @p start.
7443 /// Note, if 0 is passed for length, the function will just
7444 /// do nothing and return ::HAPI_RESULT_SUCCESS.
7445 /// <!-- source ::HAPI_AttributeInfo::count - start -->
7446 ///
7447 /// @param[out] job_id
7448 /// The id assigned to the job.
7449 ///
7450 /// @warning The string handles should be used to retrieve the strings
7451 /// immediately and are invalidated when another call to get
7452 /// this attribute's data is made.
7453 ///
7455  HAPI_NodeId node_id,
7456  HAPI_PartId part_id,
7457  const char * attr_name,
7458  HAPI_AttributeInfo * attr_info,
7459  HAPI_StringHandle * data_fixed_array,
7460  int data_fixed_length,
7461  int * sizes_fixed_array,
7462  int start, int sizes_fixed_length,
7463  int * job_id );
7464 
7465 /// @brief Get status of a job.
7466 ///
7467 /// @ingroup Status
7468 ///
7469 /// @param[in] session
7470 /// The session of Houdini you are interacting with.
7471 /// See @ref HAPI_Sessions for more on sessions.
7472 /// Pass NULL to just use the default in-process session.
7473 /// <!-- default NULL -->
7474 ///
7475 /// @param[in] job_id
7476 /// The id assigned to the job. It must equal to the index
7477 /// assigned through a previous call to an asynchronous HAPI
7478 /// method.
7479 ///
7480 /// @param[out] job_status
7481 /// The current status of the job. One of ::HAPI_JobStatus.
7482 ///
7483 HAPI_DECL HAPI_GetJobStatus( const HAPI_Session * session,
7484  int job_id,
7485  HAPI_JobStatus * job_status );
7486 
7487 /// @brief Get group names for an entire geo. Please note that this
7488 /// function is NOT per-part, but it is per-geo. The companion
7489 /// function ::HAPI_GetGroupMembership() IS per-part. Also keep
7490 /// in mind that the name string handles are only
7491 /// valid until the next time this function is called.
7492 ///
7493 /// @ingroup GeometryGetters
7494 ///
7495 /// @param[in] session
7496 /// The session of Houdini you are interacting with.
7497 /// See @ref HAPI_Sessions for more on sessions.
7498 /// Pass NULL to just use the default in-process session.
7499 /// <!-- default NULL -->
7500 ///
7501 /// @param[in] node_id
7502 /// The node id.
7503 ///
7504 /// @param[in] group_type
7505 /// The group type.
7506 ///
7507 /// @param[out] group_names_array
7508 /// The array of names to be filled. Should be the size
7509 /// given by ::HAPI_GeoInfo_GetGroupCountByType() with
7510 /// @p group_type and the ::HAPI_GeoInfo of @p geo_id.
7511 /// @note These string handles are only valid until the
7512 /// next call to ::HAPI_GetGroupNames().
7513 /// <!-- sizeparm group_count -->
7514 ///
7515 /// @param[in] group_count
7516 /// Sanity check. Should be less than or equal to the size
7517 /// of @p group_names.
7518 ///
7519 HAPI_DECL HAPI_GetGroupNames( const HAPI_Session * session,
7520  HAPI_NodeId node_id,
7521  HAPI_GroupType group_type,
7522  HAPI_StringHandle * group_names_array,
7523  int group_count );
7524 
7525 /// @brief Get group membership.
7526 ///
7527 /// @ingroup GeometryGetters
7528 ///
7529 /// @param[in] session
7530 /// The session of Houdini you are interacting with.
7531 /// See @ref HAPI_Sessions for more on sessions.
7532 /// Pass NULL to just use the default in-process session.
7533 /// <!-- default NULL -->
7534 ///
7535 /// @param[in] node_id
7536 /// The node id.
7537 ///
7538 /// @param[in] part_id
7539 /// The part id.
7540 ///
7541 /// @param[in] group_type
7542 /// The group type.
7543 ///
7544 /// @param[in] group_name
7545 /// The group name.
7546 /// <!-- string -->
7547 ///
7548 /// @param[out] membership_array_all_equal
7549 /// (optional) Quick way to determine if all items are in
7550 /// the given group or all items our not in the group.
7551 /// If you do not need this information or you are getting edge
7552 /// group information, you can just pass NULL for this argument.
7553 ///
7554 /// @param[out] membership_array
7555 /// Array of ints that represent the membership of this
7556 /// group. When getting membership information for a point or
7557 /// primitive group, the size of the array should be the size
7558 /// given by ::HAPI_PartInfo_GetElementCountByGroupType() with
7559 /// @p group_type and the ::HAPI_PartInfo of @p part_id. When
7560 /// retrieving the edges belonging to an edge group, the
7561 /// membership array will be filled with point numbers that
7562 /// comprise the edges of the edge group. Each edge is specified
7563 /// by two points, which means that the size of the array should
7564 /// be the size given by ::HAPI_GetEdgeCountOfEdgeGroup() * 2.
7565 /// <!-- sizeparm length -->
7566 ///
7567 /// @param[in] start
7568 /// Start offset into the membership array. Must be
7569 /// less than ::HAPI_PartInfo_GetElementCountByGroupType() when
7570 /// it is a point or primitive group. When getting the
7571 /// membership information for an edge group, this argument must
7572 /// be less than the size returned by
7573 /// ::HAPI_GetEdgeCountOfEdgeGroup() * 2 - 1.
7574 /// <!-- default 0 -->
7575 ///
7576 /// @param[in] length
7577 /// Should be less than or equal to the size
7578 /// of @p membership_array.
7579 ///
7581  HAPI_NodeId node_id,
7582  HAPI_PartId part_id,
7583  HAPI_GroupType group_type,
7584  const char * group_name,
7585  HAPI_Bool * membership_array_all_equal,
7586  int * membership_array,
7587  int start, int length );
7588 
7589 /// @brief Get group counts for a specific packed instanced part.
7590 ///
7591 /// @ingroup GeometryGetters
7592 ///
7593 /// @param[in] session
7594 /// The session of Houdini you are interacting with.
7595 /// See @ref HAPI_Sessions for more on sessions.
7596 /// Pass NULL to just use the default in-process session.
7597 /// <!-- default NULL -->
7598 ///
7599 /// @param[in] node_id
7600 /// The node id.
7601 ///
7602 /// @param[in] part_id
7603 /// The part id. (should be a packed primitive)
7604 ///
7605 /// @param[out] pointGroupCount
7606 /// Number of point groups on the packed instance part.
7607 /// Will be set to -1 if the part is not a valid packed part.
7608 ///
7609 /// @param[out] primitiveGroupCount
7610 /// Number of primitive groups on the instanced part.
7611 /// Will be set to -1 if the part is not a valid instancer
7612 ///
7614  HAPI_NodeId node_id,
7615  HAPI_PartId part_id,
7616  int * pointGroupCount,
7617  int * primitiveGroupCount );
7618 
7619 /// @brief Get the group names for a packed instance part
7620 /// This functions allows you to get the group name for a specific
7621 /// packed primitive part.
7622 /// Keep in mind that the name string handles are only
7623 /// valid until the next time this function is called.
7624 ///
7625 /// @ingroup GeometryGetters
7626 ///
7627 /// @param[in] session
7628 /// The session of Houdini you are interacting with.
7629 /// See @ref HAPI_Sessions for more on sessions.
7630 /// Pass NULL to just use the default in-process session.
7631 /// <!-- default NULL -->
7632 ///
7633 /// @param[in] node_id
7634 /// The node id.
7635 ///
7636 /// @param[in] part_id
7637 /// The part id. (should be a packed primitive)
7638 ///
7639 /// @param[in] group_type
7640 /// The group type.
7641 ///
7642 /// @param[out] group_names_array
7643 /// The array of names to be filled. Should be the size
7644 /// given by ::HAPI_GetGroupCountOnPackedInstancePart() with
7645 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7646 /// @note These string handles are only valid until the
7647 /// next call to ::HAPI_GetGroupNamesOnPackedInstancePart().
7648 /// <!-- sizeparm group_count -->
7649 ///
7650 /// @param[in] group_count
7651 /// Sanity check. Should be less than or equal to the size
7652 /// of @p group_names.
7653 ///
7655  HAPI_NodeId node_id,
7656  HAPI_PartId part_id,
7657  HAPI_GroupType group_type,
7658  HAPI_StringHandle * group_names_array,
7659  int group_count );
7660 
7661 /// @brief Get group membership for a packed instance part
7662 /// This functions allows you to get the group membership for a specific
7663 /// packed primitive part.
7664 ///
7665 /// @ingroup GeometryGetters
7666 ///
7667 /// @param[in] session
7668 /// The session of Houdini you are interacting with.
7669 /// See @ref HAPI_Sessions for more on sessions.
7670 /// Pass NULL to just use the default in-process session.
7671 /// <!-- default NULL -->
7672 ///
7673 /// @param[in] node_id
7674 /// The node id.
7675 ///
7676 /// @param[in] part_id
7677 /// The part id. (should be a packed primitive)
7678 ///
7679 /// @param[in] group_type
7680 /// The group type.
7681 ///
7682 /// @param[in] group_name
7683 /// The group name.
7684 /// <!-- string -->
7685 ///
7686 /// @param[out] membership_array_all_equal
7687 /// (optional) Quick way to determine if all items are in
7688 /// the given group or all items our not in the group.
7689 /// You can just pass NULL here if not interested.
7690 ///
7691 /// @param[out] membership_array
7692 /// Array of ints that represent the membership of this
7693 /// group. Should be the size given by
7694 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
7695 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
7696 /// <!-- sizeparm length -->
7697 ///
7698 /// @param[in] start
7699 /// Start offset into the membership array. Must be
7700 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
7701 /// <!-- default 0 -->
7702 ///
7703 /// @param[in] length
7704 /// Should be less than or equal to the size
7705 /// of @p membership_array.
7706 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
7707 ///
7709  HAPI_NodeId node_id,
7710  HAPI_PartId part_id,
7711  HAPI_GroupType group_type,
7712  const char * group_name,
7713  HAPI_Bool * membership_array_all_equal,
7714  int * membership_array,
7715  int start, int length );
7716 
7717 /// @brief Get the part ids that this instancer part is instancing.
7718 ///
7719 /// @ingroup GeometryGetters
7720 ///
7721 /// @param[in] session
7722 /// The session of Houdini you are interacting with.
7723 /// See @ref HAPI_Sessions for more on sessions.
7724 /// Pass NULL to just use the default in-process session.
7725 /// <!-- default NULL -->
7726 ///
7727 /// @param[in] node_id
7728 /// The node id.
7729 ///
7730 /// @param[in] part_id
7731 /// The instancer part id.
7732 ///
7733 /// @param[out] instanced_parts_array
7734 /// Array of ::HAPI_PartId's to instance.
7735 /// <!-- sizeparm length -->
7736 ///
7737 /// @param[in] start
7738 /// Should be less than @p part_id's
7739 /// ::HAPI_PartInfo::instancedPartCount but more than or
7740 /// equal to 0.
7741 /// <!-- default 0 -->
7742 ///
7743 /// @param[in] length
7744 /// Should be less than @p part_id's
7745 /// ::HAPI_PartInfo::instancedPartCount - @p start.
7746 /// <!-- source ::HAPI_PartInfo::instancedPartCount - start -->
7747 ///
7749  HAPI_NodeId node_id,
7750  HAPI_PartId part_id,
7751  HAPI_PartId * instanced_parts_array,
7752  int start, int length );
7753 
7754 /// @brief Get the instancer part's list of transforms on which to
7755 /// instance the instanced parts you got from
7756 /// ::HAPI_GetInstancedPartIds().
7757 ///
7758 /// @ingroup GeometryGetters
7759 ///
7760 /// @param[in] session
7761 /// The session of Houdini you are interacting with.
7762 /// See @ref HAPI_Sessions for more on sessions.
7763 /// Pass NULL to just use the default in-process session.
7764 /// <!-- default NULL -->
7765 ///
7766 /// @param[in] node_id
7767 /// The node id.
7768 ///
7769 /// @param[in] part_id
7770 /// The instancer part id.
7771 ///
7772 /// @param[in] rst_order
7773 /// The order of application of translation, rotation and
7774 /// scale.
7775 ///
7776 /// @param[out] transforms_array
7777 /// Array of ::HAPI_PartId's to instance.
7778 /// <!-- sizeparm length -->
7779 ///
7780 /// @param[in] start
7781 /// Should be less than @p part_id's
7782 /// ::HAPI_PartInfo::instanceCount but more than or
7783 /// equal to 0.
7784 /// <!-- default 0 -->
7785 ///
7786 /// @param[in] length
7787 /// Should be less than @p part_id's
7788 /// ::HAPI_PartInfo::instanceCount - @p start.
7789 /// <!-- source ::HAPI_PartInfo::instanceCount - start -->
7790 ///
7792  HAPI_NodeId node_id,
7793  HAPI_PartId part_id,
7794  HAPI_RSTOrder rst_order,
7795  HAPI_Transform * transforms_array,
7796  int start, int length );
7797 
7798 /// @brief Retrieves the camera parms for a SOP camera primitive
7799 ///
7800 /// @ingroup Cameras
7801 ///
7802 /// @param[in] session
7803 /// The session of Houdini you are interacting with.
7804 /// See @ref HAPI_Sessions for more on sessions.
7805 /// Pass NULL to just use the default in-process session.
7806 /// <!-- default NULL -->
7807 ///
7808 /// @param[in] node_id
7809 /// The node id.
7810 ///
7811 /// @param[in] part_id
7812 /// The part id. The HAPI_PartInfo::type must be
7813 /// HAPI_PARTTYPE_CAMERA.
7814 ///
7815 /// @param[out] camera_info
7816 /// Pointer to a ::HAPI_CameraInfo struct that the SOP camera
7817 /// primitive's parms will be written to.
7818 ///
7819 HAPI_DECL HAPI_GetCameraInfo( const HAPI_Session * session,
7820  HAPI_NodeId node_id,
7821  HAPI_PartId part_id,
7822  HAPI_CameraInfo * camera_info );
7823 
7824 /// @brief Retrieves the transform of the SOP camera primitive. Scale is always
7825 /// locked to [1, 1, 1].
7826 ///
7827 /// @ingroup Cameras
7828 ///
7829 /// @param[in] session
7830 /// The session of Houdini you are interacting with.
7831 /// See @ref HAPI_Sessions for more on sessions.
7832 /// Pass NULL to just use the default in-process session.
7833 /// <!-- default NULL -->
7834 ///
7835 /// @param[in] node_id
7836 /// The node id.
7837 ///
7838 /// @param[in] part_id
7839 /// The part id. The HAPI_PartInfo::type must be
7840 /// HAPI_PARTTYPE_CAMERA.
7841 ///
7842 /// @param[out] transform
7843 /// Pointer to a HAPI_Transform that will be written to with the
7844 /// camera's transform info.
7845 ///
7847  HAPI_NodeId node_id,
7848  HAPI_PartId part_id,
7849  HAPI_Transform * transform );
7850 
7851 /// @brief Creates a SOP Camera node which can then be configured with
7852 /// ::HAPI_SetInputCameraInfo() and
7853 /// ::HAPI_SetInputCameraTransform().
7854 ///
7855 /// @ingroup Cameras
7856 ///
7857 /// @param[in] session
7858 /// The session of Houdini you are interacting with.
7859 /// See @ref HAPI_Sessions for more on sessions.
7860 /// Pass NULL to just use the default in-process session.
7861 /// <!-- default NULL -->
7862 ///
7863 /// @param[in] parent_node_id
7864 /// The node id of the parent OBJ node or SOP subnetwork node in
7865 /// which the input camera node should be created, or -1 to
7866 /// create a new dummy parent OBJ node for this input node.
7867 /// <!-- min -1 -->
7868 /// <!-- default -1 -->
7869 ///
7870 /// @param[out] node_id
7871 /// Newly created node's id. Use ::HAPI_GetNodeInfo() to get
7872 /// more information about this node.
7873 ///
7874 /// @param[in] camera_name
7875 /// The name of the camera. The name of the camera will be added
7876 /// to the SOP camera primitive as a "name" attribute. You can
7877 /// also pass NULL if you want the default name to be used.
7878 /// <!-- default NULL -->
7879 /// <!-- string -->
7880 ///
7881 /// @param[in] node_label
7882 /// Give this input node a name for easy debugging.
7883 /// The node's parent OBJ node and the Null SOP node will both
7884 /// get this given name with "input_" prepended.
7885 /// You can also pass NULL in which case the name will
7886 /// be "input#" where # is some number.
7887 /// <!-- default NULL -->
7888 /// <!-- string -->
7889 ///
7891  HAPI_NodeId parent_node_id,
7892  HAPI_NodeId * node_id,
7893  const char * camera_name,
7894  const char * node_label );
7895 
7896 /// @brief Configures the SOP Camera node's parameters.
7897 ///
7898 /// @ingroup Cameras
7899 ///
7900 /// @param[in] session
7901 /// The session of Houdini you are interacting with.
7902 /// See @ref HAPI_Sessions for more on sessions.
7903 /// Pass NULL to just use the default in-process session.
7904 /// <!-- default NULL -->
7905 ///
7906 /// @param[in] node_id
7907 /// The node id of a node created with
7908 /// ::HAPI_CreateInputCameraNode().
7909 ///
7910 /// @param[in] camera_info
7911 /// A ::HAPI_CameraInfo struct with camera configuration that
7912 /// will be used to set the parameters on the camera node.
7913 ///
7915  HAPI_NodeId node_id,
7916  const HAPI_CameraInfo * camera_info);
7917 
7918 /// @brief Configures the SOP Camera node's transform parameters.
7919 ///
7920 /// @ingroup Cameras
7921 ///
7922 /// @param[in] session
7923 /// The session of Houdini you are interacting with.
7924 /// See @ref HAPI_Sessions for more on sessions.
7925 /// Pass NULL to just use the default in-process session.
7926 /// <!-- default NULL -->
7927 ///
7928 /// @param[in] node_id
7929 /// The node id of a node created with
7930 /// ::HAPI_CreateInputCameraNode().
7931 ///
7932 /// @param[in] rst_order
7933 /// The order in which the camera's transformations occur.
7934 ///
7935 /// @param[in] rot_order
7936 /// The order in which the camera's rotations occur.
7937 ///
7938 /// @param[in] transform
7939 /// A ::HAPI_Transform struct that will be used to set the
7940 /// transform related parameters on the camera node. Only the
7941 /// position and rotation quaternion will be used. Other fields
7942 /// will be ignored.
7943 ///
7945  HAPI_NodeId node_id,
7946  HAPI_RSTOrder rst_order,
7947  HAPI_XYZOrder rot_order,
7948  const HAPI_Transform * transform );
7949 
7950 /// @defgroup GeometrySetters Geometry Setters
7951 /// Functions for setting geometry (SOP) data
7952 
7953 /// @brief Set the main part info struct (::HAPI_PartInfo).
7954 ///
7955 /// @ingroup GeometrySetters
7956 ///
7957 /// @param[in] session
7958 /// The session of Houdini you are interacting with.
7959 /// See @ref HAPI_Sessions for more on sessions.
7960 /// Pass NULL to just use the default in-process session.
7961 /// <!-- default NULL -->
7962 ///
7963 /// @param[in] node_id
7964 /// The SOP node id.
7965 ///
7966 /// @param[in] part_id
7967 /// Currently not used. Just pass 0.
7968 /// <!-- default 0 -->
7969 ///
7970 /// @param[in] part_info
7971 /// ::HAPI_PartInfo value that describes the input
7972 /// geometry.
7973 ///
7974 HAPI_DECL HAPI_SetPartInfo( const HAPI_Session * session,
7975  HAPI_NodeId node_id,
7976  HAPI_PartId part_id,
7977  const HAPI_PartInfo * part_info );
7978 
7979 /// @brief Set the array of faces where the nth integer in the array is
7980 /// the number of vertices the nth face has.
7981 ///
7982 /// @ingroup GeometrySetters
7983 ///
7984 /// @param[in] session
7985 /// The session of Houdini you are interacting with.
7986 /// See @ref HAPI_Sessions for more on sessions.
7987 /// Pass NULL to just use the default in-process session.
7988 /// <!-- default NULL -->
7989 ///
7990 /// @param[in] node_id
7991 /// The SOP node id.
7992 ///
7993 /// @param[in] part_id
7994 /// Currently not used. Just pass 0.
7995 /// <!-- default 0 -->
7996 ///
7997 /// @param[in] face_counts_array
7998 /// An integer array at least the size of @p length.
7999 /// <!-- sizeparm length -->
8000 ///
8001 /// @param[in] start
8002 /// First index of range. Must be at least 0 and at
8003 /// most ::HAPI_PartInfo::faceCount - 1.
8004 /// <!-- default 0 -->
8005 ///
8006 /// @param[in] length
8007 /// Must be at least 0 and at most
8008 /// ::HAPI_PartInfo::faceCount - @p start.
8009 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
8010 ///
8011 HAPI_DECL HAPI_SetFaceCounts( const HAPI_Session * session,
8012  HAPI_NodeId node_id,
8013  HAPI_PartId part_id,
8014  const int * face_counts_array,
8015  int start, int length );
8016 
8017 /// @brief Set array containing the vertex-point associations where the
8018 /// ith element in the array is the point index the ith vertex
8019 /// associates with.
8020 ///
8021 /// @ingroup GeometrySetters
8022 ///
8023 /// @param[in] session
8024 /// The session of Houdini you are interacting with.
8025 /// See @ref HAPI_Sessions for more on sessions.
8026 /// Pass NULL to just use the default in-process session.
8027 /// <!-- default NULL -->
8028 ///
8029 /// @param[in] node_id
8030 /// The SOP node id.
8031 ///
8032 /// @param[in] part_id
8033 /// Currently not used. Just pass 0.
8034 ///
8035 /// @param[in] vertex_list_array
8036 /// An integer array at least the size of length.
8037 /// <!-- sizeparm length -->
8038 ///
8039 /// @param[in] start
8040 /// First index of range. Must be at least 0 and at
8041 /// most ::HAPI_PartInfo::vertexCount - 1.
8042 /// <!-- default 0 -->
8043 ///
8044 /// @param[in] length
8045 /// Must be at least 0 and at most
8046 /// ::HAPI_PartInfo::vertexCount - @p start.
8047 /// <!-- source ::HAPI_PartInfo::vertexCount - start -->
8048 ///
8049 HAPI_DECL HAPI_SetVertexList( const HAPI_Session * session,
8050  HAPI_NodeId node_id,
8051  HAPI_PartId part_id,
8052  const int * vertex_list_array,
8053  int start, int length );
8054 
8055 /// @brief Add an attribute.
8056 ///
8057 /// @ingroup GeometrySetters Attributes
8058 ///
8059 /// @param[in] session
8060 /// The session of Houdini you are interacting with.
8061 /// See @ref HAPI_Sessions for more on sessions.
8062 /// Pass NULL to just use the default in-process session.
8063 /// <!-- default NULL -->
8064 ///
8065 /// @param[in] node_id
8066 /// The SOP node id.
8067 ///
8068 /// @param[in] part_id
8069 /// Currently not used. Just pass 0.
8070 ///
8071 /// @param[in] name
8072 /// Attribute name.
8073 /// <!-- string -->
8074 ///
8075 /// @param[in] attr_info
8076 /// ::HAPI_AttributeInfo stores attribute properties.
8077 ///
8078 HAPI_DECL HAPI_AddAttribute( const HAPI_Session * session,
8079  HAPI_NodeId node_id,
8080  HAPI_PartId part_id,
8081  const char * name,
8082  const HAPI_AttributeInfo * attr_info );
8083 
8084 /// @brief Delete an attribute from an input geo
8085 ///
8086 /// @ingroup GeometrySetters Attributes
8087 ///
8088 /// @param[in] session
8089 /// The session of Houdini you are interacting with.
8090 /// See @ref HAPI_Sessions for more on sessions.
8091 /// Pass NULL to just use the default in-process session.
8092 /// <!-- default NULL -->
8093 ///
8094 /// @param[in] node_id
8095 /// The SOP node id.
8096 ///
8097 /// @param[in] part_id
8098 /// Currently not used. Just pass 0.
8099 ///
8100 /// @param[in] name
8101 /// Attribute name.
8102 /// <!-- string -->
8103 ///
8104 /// @param[in] attr_info
8105 /// ::HAPI_AttributeInfo stores attribute properties.
8106 ///
8108  HAPI_NodeId node_id,
8109  HAPI_PartId part_id,
8110  const char * name,
8111  const HAPI_AttributeInfo * attr_info );
8112 
8113 /// @brief Set attribute integer data.
8114 ///
8115 /// @ingroup GeometrySetters Attributes
8116 ///
8117 /// @param[in] session
8118 /// The session of Houdini you are interacting with.
8119 /// See @ref HAPI_Sessions for more on sessions.
8120 /// Pass NULL to just use the default in-process session.
8121 /// <!-- default NULL -->
8122 ///
8123 /// @param[in] node_id
8124 /// The SOP node id.
8125 ///
8126 /// @param[in] part_id
8127 /// Currently not used. Just pass 0.
8128 ///
8129 /// @param[in] name
8130 /// Attribute name.
8131 /// <!-- string -->
8132 ///
8133 /// @param[in] attr_info
8134 /// ::HAPI_AttributeInfo used as input for what tuple size.
8135 /// you want. Also contains some sanity checks like
8136 /// data type. Generally should be the same struct
8137 /// returned by ::HAPI_GetAttributeInfo().
8138 ///
8139 /// @param[in] data_array
8140 /// An integer array at least the size of
8141 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8142 /// <!-- sizeparm length -->
8143 ///
8144 /// @param[in] start
8145 /// First index of range. Must be at least 0 and at
8146 /// most ::HAPI_AttributeInfo::count - 1.
8147 /// <!-- default 0 -->
8148 ///
8149 /// @param[in] length
8150 /// Must be at least 0 and at most
8151 /// ::HAPI_AttributeInfo::count - @p start.
8152 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8153 ///
8155  HAPI_NodeId node_id,
8156  HAPI_PartId part_id,
8157  const char * name,
8158  const HAPI_AttributeInfo * attr_info,
8159  const int * data_array,
8160  int start, int length );
8161 
8162 /// @brief Set unsigned 8-bit attribute integer data.
8163 ///
8164 /// @ingroup GeometrySetters Attributes
8165 ///
8166 /// @param[in] session
8167 /// The session of Houdini you are interacting with.
8168 /// See @ref HAPI_Sessions for more on sessions.
8169 /// Pass NULL to just use the default in-process session.
8170 /// <!-- default NULL -->
8171 ///
8172 /// @param[in] node_id
8173 /// The SOP node id.
8174 ///
8175 /// @param[in] part_id
8176 /// Currently not used. Just pass 0.
8177 ///
8178 /// @param[in] name
8179 /// Attribute name.
8180 /// <!-- string -->
8181 ///
8182 /// @param[in] attr_info
8183 /// ::HAPI_AttributeInfo used as input for what tuple size.
8184 /// you want. Also contains some sanity checks like
8185 /// data type. Generally should be the same struct
8186 /// returned by ::HAPI_GetAttributeInfo().
8187 ///
8188 /// @param[in] data_array
8189 /// An unsigned 8-bit integer array at least the size of
8190 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8191 /// <!-- sizeparm length -->
8192 ///
8193 /// @param[in] start
8194 /// First index of range. Must be at least 0 and at
8195 /// most ::HAPI_AttributeInfo::count - 1.
8196 /// <!-- default 0 -->
8197 ///
8198 /// @param[in] length
8199 /// Must be at least 0 and at most
8200 /// ::HAPI_AttributeInfo::count - @p start.
8201 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8202 ///
8204  HAPI_NodeId node_id,
8205  HAPI_PartId part_id,
8206  const char * name,
8207  const HAPI_AttributeInfo * attr_info,
8208  const HAPI_UInt8 * data_array,
8209  int start, int length );
8210 
8211 /// @brief Set 8-bit attribute integer data.
8212 ///
8213 /// @ingroup GeometrySetters Attributes
8214 ///
8215 /// @param[in] session
8216 /// The session of Houdini you are interacting with.
8217 /// See @ref HAPI_Sessions for more on sessions.
8218 /// Pass NULL to just use the default in-process session.
8219 /// <!-- default NULL -->
8220 ///
8221 /// @param[in] node_id
8222 /// The SOP node id.
8223 ///
8224 /// @param[in] part_id
8225 /// Currently not used. Just pass 0.
8226 ///
8227 /// @param[in] name
8228 /// Attribute name.
8229 /// <!-- string -->
8230 ///
8231 /// @param[in] attr_info
8232 /// ::HAPI_AttributeInfo used as input for what tuple size.
8233 /// you want. Also contains some sanity checks like
8234 /// data type. Generally should be the same struct
8235 /// returned by ::HAPI_GetAttributeInfo().
8236 ///
8237 /// @param[in] data_array
8238 /// An 8-bit integer array at least the size of
8239 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8240 /// <!-- sizeparm length -->
8241 ///
8242 /// @param[in] start
8243 /// First index of range. Must be at least 0 and at
8244 /// most ::HAPI_AttributeInfo::count - 1.
8245 /// <!-- default 0 -->
8246 ///
8247 /// @param[in] length
8248 /// Must be at least 0 and at most
8249 /// ::HAPI_AttributeInfo::count - @p start.
8250 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8251 ///
8253  HAPI_NodeId node_id,
8254  HAPI_PartId part_id,
8255  const char * name,
8256  const HAPI_AttributeInfo * attr_info,
8257  const HAPI_Int8 * data_array,
8258  int start, int length );
8259 
8260 /// @brief Set 16-bit attribute integer data.
8261 ///
8262 /// @ingroup GeometrySetters Attributes
8263 ///
8264 /// @param[in] session
8265 /// The session of Houdini you are interacting with.
8266 /// See @ref HAPI_Sessions for more on sessions.
8267 /// Pass NULL to just use the default in-process session.
8268 /// <!-- default NULL -->
8269 ///
8270 /// @param[in] node_id
8271 /// The SOP node id.
8272 ///
8273 /// @param[in] part_id
8274 /// Currently not used. Just pass 0.
8275 ///
8276 /// @param[in] name
8277 /// Attribute name.
8278 /// <!-- string -->
8279 ///
8280 /// @param[in] attr_info
8281 /// ::HAPI_AttributeInfo used as input for what tuple size.
8282 /// you want. Also contains some sanity checks like
8283 /// data type. Generally should be the same struct
8284 /// returned by ::HAPI_GetAttributeInfo().
8285 ///
8286 /// @param[in] data_array
8287 /// An 16-bit integer array at least the size of
8288 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8289 /// <!-- sizeparm length -->
8290 ///
8291 /// @param[in] start
8292 /// First index of range. Must be at least 0 and at
8293 /// most ::HAPI_AttributeInfo::count - 1.
8294 /// <!-- default 0 -->
8295 ///
8296 /// @param[in] length
8297 /// Must be at least 0 and at most
8298 /// ::HAPI_AttributeInfo::count - @p start.
8299 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8300 ///
8302  HAPI_NodeId node_id,
8303  HAPI_PartId part_id,
8304  const char * name,
8305  const HAPI_AttributeInfo * attr_info,
8306  const HAPI_Int16 * data_array,
8307  int start, int length );
8308 
8309 /// @brief Set 64-bit attribute integer data.
8310 ///
8311 /// @ingroup GeometrySetters Attributes
8312 ///
8313 /// @param[in] session
8314 /// The session of Houdini you are interacting with.
8315 /// See @ref HAPI_Sessions for more on sessions.
8316 /// Pass NULL to just use the default in-process session.
8317 /// <!-- default NULL -->
8318 ///
8319 /// @param[in] node_id
8320 /// The SOP node id.
8321 ///
8322 /// @param[in] part_id
8323 /// Currently not used. Just pass 0.
8324 ///
8325 /// @param[in] name
8326 /// Attribute name.
8327 /// <!-- string -->
8328 ///
8329 /// @param[in] attr_info
8330 /// ::HAPI_AttributeInfo used as input for what tuple size.
8331 /// you want. Also contains some sanity checks like
8332 /// data type. Generally should be the same struct
8333 /// returned by ::HAPI_GetAttributeInfo().
8334 ///
8335 /// @param[in] data_array
8336 /// An 64-bit integer array at least the size of
8337 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8338 /// <!-- sizeparm length -->
8339 ///
8340 /// @param[in] start
8341 /// First index of range. Must be at least 0 and at
8342 /// most ::HAPI_AttributeInfo::count - 1.
8343 /// <!-- default 0 -->
8344 ///
8345 /// @param[in] length
8346 /// Must be at least 0 and at most
8347 /// ::HAPI_AttributeInfo::count - @p start.
8348 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8349 ///
8351  HAPI_NodeId node_id,
8352  HAPI_PartId part_id,
8353  const char * name,
8354  const HAPI_AttributeInfo * attr_info,
8355  const HAPI_Int64 * data_array,
8356  int start, int length );
8357 
8358 /// @brief Set attribute float data.
8359 ///
8360 /// @ingroup GeometrySetters Attributes
8361 ///
8362 /// @param[in] session
8363 /// The session of Houdini you are interacting with.
8364 /// See @ref HAPI_Sessions for more on sessions.
8365 /// Pass NULL to just use the default in-process session.
8366 /// <!-- default NULL -->
8367 ///
8368 /// @param[in] node_id
8369 /// The SOP node id.
8370 ///
8371 /// @param[in] part_id
8372 /// Currently not used. Just pass 0.
8373 ///
8374 /// @param[in] name
8375 /// Attribute name.
8376 /// <!-- string -->
8377 ///
8378 /// @param[in] attr_info
8379 /// ::HAPI_AttributeInfo used as input for what tuple size.
8380 /// you want. Also contains some sanity checks like
8381 /// data type. Generally should be the same struct
8382 /// returned by ::HAPI_GetAttributeInfo().
8383 ///
8384 /// @param[in] data_array
8385 /// An float array at least the size of
8386 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8387 /// <!-- sizeparm length -->
8388 ///
8389 /// @param[in] start
8390 /// First index of range. Must be at least 0 and at
8391 /// most ::HAPI_AttributeInfo::count - 1.
8392 /// <!-- default 0 -->
8393 ///
8394 /// @param[in] length
8395 /// Must be at least 0 and at most
8396 /// ::HAPI_AttributeInfo::count - @p start.
8397 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8398 ///
8400  HAPI_NodeId node_id,
8401  HAPI_PartId part_id,
8402  const char * name,
8403  const HAPI_AttributeInfo * attr_info,
8404  const float * data_array,
8405  int start, int length );
8406 
8407 /// @brief Set 64-bit attribute float data.
8408 ///
8409 /// @ingroup GeometrySetters Attributes
8410 ///
8411 /// @param[in] session
8412 /// The session of Houdini you are interacting with.
8413 /// See @ref HAPI_Sessions for more on sessions.
8414 /// Pass NULL to just use the default in-process session.
8415 /// <!-- default NULL -->
8416 ///
8417 /// @param[in] node_id
8418 /// The SOP node id.
8419 ///
8420 /// @param[in] part_id
8421 /// Currently not used. Just pass 0.
8422 ///
8423 /// @param[in] name
8424 /// Attribute name.
8425 /// <!-- string -->
8426 ///
8427 /// @param[in] attr_info
8428 /// ::HAPI_AttributeInfo used as input for what tuple size.
8429 /// you want. Also contains some sanity checks like
8430 /// data type. Generally should be the same struct
8431 /// returned by ::HAPI_GetAttributeInfo().
8432 ///
8433 /// @param[in] data_array
8434 /// An 64-bit float array at least the size of
8435 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8436 /// <!-- sizeparm length -->
8437 ///
8438 /// @param[in] start
8439 /// First index of range. Must be at least 0 and at
8440 /// most ::HAPI_AttributeInfo::count - 1.
8441 /// <!-- default 0 -->
8442 ///
8443 /// @param[in] length
8444 /// Must be at least 0 and at most
8445 /// ::HAPI_AttributeInfo::count - @p start.
8446 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8447 ///
8449  HAPI_NodeId node_id,
8450  HAPI_PartId part_id,
8451  const char * name,
8452  const HAPI_AttributeInfo * attr_info,
8453  const double * data_array,
8454  int start, int length );
8455 
8456 /// @brief Set attribute string data.
8457 ///
8458 /// @ingroup GeometrySetters Attributes
8459 ///
8460 /// @param[in] session
8461 /// The session of Houdini you are interacting with.
8462 /// See @ref HAPI_Sessions for more on sessions.
8463 /// Pass NULL to just use the default in-process session.
8464 /// <!-- default NULL -->
8465 ///
8466 /// @param[in] node_id
8467 /// The SOP node id.
8468 ///
8469 /// @param[in] part_id
8470 /// Currently not used. Just pass 0.
8471 ///
8472 /// @param[in] name
8473 /// Attribute name.
8474 /// <!-- string -->
8475 ///
8476 /// @param[in] attr_info
8477 /// ::HAPI_AttributeInfo used as input for what tuple size
8478 /// you want. Also contains some sanity checks like
8479 /// data type. Generally should be the same struct
8480 /// returned by ::HAPI_GetAttributeInfo().
8481 ///
8482 /// @param[in] data_array
8483 /// An ::HAPI_StringHandle array at least the size of
8484 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
8485 /// <!-- sizeparm length -->
8486 ///
8487 /// @param[in] start
8488 /// First index of range. Must be at least 0 and at
8489 /// most ::HAPI_AttributeInfo::count - 1.
8490 /// <!-- default 0 -->
8491 ///
8492 /// @param[in] length
8493 /// Must be at least 0 and at most
8494 /// ::HAPI_AttributeInfo::count - @p start.
8495 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8496 ///
8498  HAPI_NodeId node_id,
8499  HAPI_PartId part_id,
8500  const char * name,
8501  const HAPI_AttributeInfo * attr_info,
8502  const char ** data_array,
8503  int start, int length );
8504 
8505 /// @brief Set attribute string data by index.
8506 ///
8507 /// @ingroup GeometrySetters Attributes
8508 ///
8509 /// @param[in] session
8510 /// The session of Houdini you are interacting with.
8511 /// See @ref HAPI_Sessions for more on sessions.
8512 /// Pass NULL to just use the default in-process session.
8513 /// <!-- default NULL -->
8514 ///
8515 /// @param[in] node_id
8516 /// The SOP node id.
8517 ///
8518 /// @param[in] part_id
8519 /// Currently not used. Just pass 0.
8520 ///
8521 /// @param[in] name
8522 /// Attribute name.
8523 /// <!-- string -->
8524 ///
8525 /// @param[in] attr_info
8526 /// ::HAPI_AttributeInfo used as input for what tuple size.
8527 /// you want. Also contains some sanity checks like
8528 /// data type. Generally should be the same struct
8529 /// returned by ::HAPI_GetAttributeInfo().
8530 ///
8531 /// @param[in] string_fixed_array
8532 /// An array of strings at least the size of
8533 /// <tt>string_fixed_length/tt>.
8534 /// <!-- sizeparm string_fixed_length -->
8535 ///
8536 /// @param[in] string_fixed_length
8537 /// Number of strings that are indexed.
8538 ///
8539 /// @param[in] indices_array
8540 /// integer array at least the size of
8541 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
8542 /// entry indexes string_array.
8543 /// <!-- sizeparm indices_length -->
8544 ///
8545 /// @param[in] indices_start
8546 /// First index of range. Must be at least 0 and at
8547 /// most ::HAPI_AttributeInfo::count - 1.
8548 /// <!-- default 0 -->
8549 ///
8550 /// @param[in] indices_length
8551 /// Must be at least 0 and at most
8552 /// ::HAPI_AttributeInfo::count - @p start.
8553 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8554 ///
8556  HAPI_NodeId node_id,
8557  HAPI_PartId part_id,
8558  const char* name,
8559  const HAPI_AttributeInfo* attr_info,
8560  const char** string_fixed_array,
8561  int string_fixed_length,
8562  const int* indices_array,
8563  int indices_start,
8564  int indices_length);
8565 
8566 /// @brief Set multiple attribute string data to the same unique value.
8567 ///
8568 /// @ingroup GeometrySetters Attributes
8569 ///
8570 /// @param[in] session
8571 /// The session of Houdini you are interacting with.
8572 /// See @ref HAPI_Sessions for more on sessions.
8573 /// Pass NULL to just use the default in-process session.
8574 /// <!-- default NULL -->
8575 ///
8576 /// @param[in] node_id
8577 /// The SOP node id.
8578 ///
8579 /// @param[in] part_id
8580 /// Currently not used. Just pass 0.
8581 ///
8582 /// @param[in] name
8583 /// Attribute name.
8584 /// <!-- string -->
8585 ///
8586 /// @param[in] attr_info
8587 /// ::HAPI_AttributeInfo used as input for what tuple size.
8588 /// you want. Also contains some sanity checks like
8589 /// data type. Generally should be the same struct
8590 /// returned by ::HAPI_GetAttributeInfo().
8591 ///
8592 /// @param[in] data_array
8593 /// A string
8594 /// <!-- string -->
8595 ///
8596 /// @param[in] data_length
8597 /// Must be the length of string data.
8598 ///
8599 /// @param[in] start_index
8600 /// Must be at least 0 and at most
8601 /// ::HAPI_AttributeInfo::count - @p start.
8602 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8603 ///
8604 /// @param[in] num_indices
8605 /// Must be at least 0 and at most
8606 /// ::HAPI_AttributeInfo::count - @p start.
8607 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8608 ///
8610  const HAPI_Session* session,
8611  HAPI_NodeId node_id,
8612  HAPI_PartId part_id,
8613  const char* name,
8614  const HAPI_AttributeInfo* attr_info,
8615  const char* data_array,
8616  int data_length,
8617  int start_index,
8618  int num_indices);
8619 
8620 /// @brief Set multiple attribute int data to the same unique value.
8621 ///
8622 /// @ingroup GeometrySetters Attributes
8623 ///
8624 /// @param[in] session
8625 /// The session of Houdini you are interacting with.
8626 /// See @ref HAPI_Sessions for more on sessions.
8627 /// Pass NULL to just use the default in-process session.
8628 /// <!-- default NULL -->
8629 ///
8630 /// @param[in] node_id
8631 /// The SOP node id.
8632 ///
8633 /// @param[in] part_id
8634 /// Currently not used. Just pass 0.
8635 ///
8636 /// @param[in] name
8637 /// Attribute name.
8638 /// <!-- string -->
8639 ///
8640 /// @param[in] attr_info
8641 /// ::HAPI_AttributeInfo used as input for what tuple size.
8642 /// you want. Also contains some sanity checks like
8643 /// data type. Generally should be the same struct
8644 /// returned by ::HAPI_GetAttributeInfo().
8645 ///
8646 /// @param[in] data_array
8647 /// A integer array at least the size of
8648 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8649 /// <!-- sizeparm data_length -->
8650 ///
8651 /// @param[in] data_length
8652 /// An integer of at least the size of
8653 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8654 ///
8655 /// @param[in] start_index
8656 /// First index of range. Must be at least 0 and at
8657 /// most ::HAPI_AttributeInfo::count - 1.
8658 /// <!-- default 0 -->
8659 ///
8660 /// @param[in] num_indices
8661 /// Must be at least 0 and at most
8662 /// ::HAPI_AttributeInfo::count - @p start_index.
8663 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8664 ///
8666  const HAPI_Session* session,
8667  HAPI_NodeId node_id,
8668  HAPI_PartId part_id,
8669  const char* name,
8670  const HAPI_AttributeInfo* attr_info,
8671  const int* data_array,
8672  int data_length,
8673  int start_index,
8674  int num_indices);
8675 
8676 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique value.
8677 ///
8678 /// @ingroup GeometrySetters Attributes
8679 ///
8680 /// @param[in] session
8681 /// The session of Houdini you are interacting with.
8682 /// See @ref HAPI_Sessions for more on sessions.
8683 /// Pass NULL to just use the default in-process session.
8684 /// <!-- default NULL -->
8685 ///
8686 /// @param[in] node_id
8687 /// The SOP node id.
8688 ///
8689 /// @param[in] part_id
8690 /// Currently not used. Just pass 0.
8691 ///
8692 /// @param[in] name
8693 /// Attribute name.
8694 /// <!-- string -->
8695 ///
8696 /// @param[in] attr_info
8697 /// ::HAPI_AttributeInfo used as input for what tuple size.
8698 /// you want. Also contains some sanity checks like
8699 /// data type. Generally should be the same struct
8700 /// returned by ::HAPI_GetAttributeInfo().
8701 ///
8702 /// @param[in] data_array
8703 /// A integer array at least the size of
8704 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8705 /// <!-- sizeparm data_length -->
8706 ///
8707 /// @param[in] data_length
8708 /// An integer of at least the size of
8709 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8710 ///
8711 /// @param[in] start_index
8712 /// First index of range. Must be at least 0 and at
8713 /// most ::HAPI_AttributeInfo::count - 1.
8714 /// <!-- default 0 -->
8715 ///
8716 /// @param[in] num_indices
8717 /// Must be at least 0 and at most
8718 /// ::HAPI_AttributeInfo::count - @p start_index.
8719 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8720 ///
8722  const HAPI_Session* session,
8723  HAPI_NodeId node_id,
8724  HAPI_PartId part_id,
8725  const char* name,
8726  const HAPI_AttributeInfo* attr_info,
8727  const HAPI_UInt8* data_array,
8728  int data_length,
8729  int start_index,
8730  int num_indices);
8731 
8732 /// @brief Set multiple attribute 8-bit int data to the same unique value.
8733 ///
8734 ///
8735 /// @ingroup GeometrySetters Attributes
8736 ///
8737 /// @param[in] session
8738 /// The session of Houdini you are interacting with.
8739 /// See @ref HAPI_Sessions for more on sessions.
8740 /// Pass NULL to just use the default in-process session.
8741 /// <!-- default NULL -->
8742 ///
8743 /// @param[in] node_id
8744 /// The SOP node id.
8745 ///
8746 /// @param[in] part_id
8747 /// Currently not used. Just pass 0.
8748 ///
8749 /// @param[in] name
8750 /// Attribute name.
8751 /// <!-- string -->
8752 ///
8753 /// @param[in] attr_info
8754 /// ::HAPI_AttributeInfo used as input for what tuple size.
8755 /// you want. Also contains some sanity checks like
8756 /// data type. Generally should be the same struct
8757 /// returned by ::HAPI_GetAttributeInfo().
8758 ///
8759 /// @param[in] data_array
8760 /// A integer array at least the size of
8761 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8762 /// <!-- sizeparm data_length -->
8763 ///
8764 /// @param[in] data_length
8765 /// An integer of at least the size of
8766 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8767 ///
8768 /// @param[in] start_index
8769 /// First index of range. Must be at least 0 and at
8770 /// most ::HAPI_AttributeInfo::count - 1.
8771 /// <!-- default 0 -->
8772 ///
8773 /// @param[in] num_indices
8774 /// Must be at least 0 and at most
8775 /// ::HAPI_AttributeInfo::count - @p start_index.
8776 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8777 ///
8779  const HAPI_Session* session,
8780  HAPI_NodeId node_id,
8781  HAPI_PartId part_id,
8782  const char* name,
8783  const HAPI_AttributeInfo* attr_info,
8784  const HAPI_Int8* data_array,
8785  int data_length,
8786  int start_index,
8787  int num_indices);
8788 
8789 /// @brief Set multiple attribute 16-bit int data to the same unique value.
8790 ///
8791 /// @ingroup GeometrySetters Attributes
8792 ///
8793 /// @param[in] session
8794 /// The session of Houdini you are interacting with.
8795 /// See @ref HAPI_Sessions for more on sessions.
8796 /// Pass NULL to just use the default in-process session.
8797 /// <!-- default NULL -->
8798 ///
8799 /// @param[in] node_id
8800 /// The SOP node id.
8801 ///
8802 /// @param[in] part_id
8803 /// Currently not used. Just pass 0.
8804 ///
8805 /// @param[in] name
8806 /// Attribute name.
8807 /// <!-- string -->
8808 ///
8809 /// @param[in] attr_info
8810 /// ::HAPI_AttributeInfo used as input for what tuple size.
8811 /// you want. Also contains some sanity checks like
8812 /// data type. Generally should be the same struct
8813 /// returned by ::HAPI_GetAttributeInfo().
8814 ///
8815 /// @param[in] data_array
8816 /// A integer array at least the size of
8817 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8818 /// <!-- sizeparm data_length -->
8819 ///
8820 /// @param[in] data_length
8821 /// An integer of at least the size of
8822 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8823 ///
8824 /// @param[in] start_index
8825 /// First index of range. Must be at least 0 and at
8826 /// most ::HAPI_AttributeInfo::count - 1.
8827 /// <!-- default 0 -->
8828 ///
8829 /// @param[in] num_indices
8830 /// Must be at least 0 and at most
8831 /// ::HAPI_AttributeInfo::count - @p start_index.
8832 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8833 ///
8835  const HAPI_Session* session,
8836  HAPI_NodeId node_id,
8837  HAPI_PartId part_id,
8838  const char* name,
8839  const HAPI_AttributeInfo* attr_info,
8840  const HAPI_Int16* data_array,
8841  int data_length,
8842  int start_index,
8843  int num_indices);
8844 
8845 /// @brief Set multiple attribute 64-bit int data to the same unique value.
8846 ///
8847 /// @ingroup GeometrySetters Attributes
8848 ///
8849 /// @param[in] session
8850 /// The session of Houdini you are interacting with.
8851 /// See @ref HAPI_Sessions for more on sessions.
8852 /// Pass NULL to just use the default in-process session.
8853 /// <!-- default NULL -->
8854 ///
8855 /// @param[in] node_id
8856 /// The SOP node id.
8857 ///
8858 /// @param[in] part_id
8859 /// Currently not used. Just pass 0.
8860 ///
8861 /// @param[in] name
8862 /// Attribute name.
8863 /// <!-- string -->
8864 ///
8865 /// @param[in] attr_info
8866 /// ::HAPI_AttributeInfo used as input for what tuple size.
8867 /// you want. Also contains some sanity checks like
8868 /// data type. Generally should be the same struct
8869 /// returned by ::HAPI_GetAttributeInfo().
8870 ///
8871 /// @param[in] data_array
8872 /// A integer array at least the size of
8873 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8874 /// <!-- sizeparm data_length -->
8875 ///
8876 /// @param[in] data_length
8877 /// An integer of at least the size of
8878 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8879 ///
8880 /// @param[in] start_index
8881 /// First index of range. Must be at least 0 and at
8882 /// most ::HAPI_AttributeInfo::count - 1.
8883 /// <!-- default 0 -->
8884 ///
8885 /// @param[in] num_indices
8886 /// Must be at least 0 and at most
8887 /// ::HAPI_AttributeInfo::count - @p start_index.
8888 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8889 ///
8891  const HAPI_Session* session,
8892  HAPI_NodeId node_id,
8893  HAPI_PartId part_id,
8894  const char* name,
8895  const HAPI_AttributeInfo* attr_info,
8896  const HAPI_Int64* data_array,
8897  int data_length,
8898  int start_index,
8899  int num_indices);
8900 
8901 /// @brief Set multiple attribute float data to the same unique value.
8902 ///
8903 /// @ingroup GeometrySetters Attributes
8904 ///
8905 /// @param[in] session
8906 /// The session of Houdini you are interacting with.
8907 /// See @ref HAPI_Sessions for more on sessions.
8908 /// Pass NULL to just use the default in-process session.
8909 /// <!-- default NULL -->
8910 ///
8911 /// @param[in] node_id
8912 /// The SOP node id.
8913 ///
8914 /// @param[in] part_id
8915 /// Currently not used. Just pass 0.
8916 ///
8917 /// @param[in] name
8918 /// Attribute name.
8919 /// <!-- string -->
8920 ///
8921 /// @param[in] attr_info
8922 /// ::HAPI_AttributeInfo used as input for what tuple size.
8923 /// you want. Also contains some sanity checks like
8924 /// data type. Generally should be the same struct
8925 /// returned by ::HAPI_GetAttributeInfo().
8926 ///
8927 /// @param[in] data_array
8928 /// A floating point array at least the size of
8929 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8930 /// <!-- sizeparm data_length -->
8931 ///
8932 /// @param[in] data_length
8933 /// An integer of at least the size of
8934 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8935 ///
8936 /// @param[in] start_index
8937 /// First index of range. Must be at least 0 and at
8938 /// most ::HAPI_AttributeInfo::count - 1.
8939 /// <!-- default 0 -->
8940 ///
8941 /// @param[in] num_indices
8942 /// Must be at least 0 and at most
8943 /// ::HAPI_AttributeInfo::count - @p start_index.
8944 /// <!-- source ::HAPI_AttributeInfo::count - start -->
8945 ///
8947  const HAPI_Session* session,
8948  HAPI_NodeId node_id,
8949  HAPI_PartId part_id,
8950  const char* name,
8951  const HAPI_AttributeInfo* attr_info,
8952  const float* data_array,
8953  int data_length,
8954  int start_index,
8955  int num_indices);
8956 
8957 /// @brief Set multiple attribute 64-bit float data to the same unique value.
8958 ///
8959 /// @ingroup GeometrySetters Attributes
8960 ///
8961 /// @param[in] session
8962 /// The session of Houdini you are interacting with.
8963 /// See @ref HAPI_Sessions for more on sessions.
8964 /// Pass NULL to just use the default in-process session.
8965 /// <!-- default NULL -->
8966 ///
8967 /// @param[in] node_id
8968 /// The SOP node id.
8969 ///
8970 /// @param[in] part_id
8971 /// Currently not used. Just pass 0.
8972 ///
8973 /// @param[in] name
8974 /// Attribute name.
8975 /// <!-- string -->
8976 ///
8977 /// @param[in] attr_info
8978 /// ::HAPI_AttributeInfo used as input for what tuple size.
8979 /// you want. Also contains some sanity checks like
8980 /// data type. Generally should be the same struct
8981 /// returned by ::HAPI_GetAttributeInfo().
8982 ///
8983 /// @param[in] data_array
8984 /// A floating point array at least the size of
8985 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8986 /// <!-- sizeparm data_length -->
8987 ///
8988 /// @param[in] data_length
8989 /// An integer of at least the size of
8990 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
8991 ///
8992 /// @param[in] start_index
8993 /// First index of range. Must be at least 0 and at
8994 /// most ::HAPI_AttributeInfo::count - 1.
8995 /// <!-- default 0 -->
8996 ///
8997 /// @param[in] num_indices
8998 /// Must be at least 0 and at most
8999 /// ::HAPI_AttributeInfo::count - @p start_index.
9000 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9001 ///
9003  const HAPI_Session* session,
9004  HAPI_NodeId node_id,
9005  HAPI_PartId part_id,
9006  const char* name,
9007  const HAPI_AttributeInfo* attr_info,
9008  const double* data_array,
9009  int data_length,
9010  int start_index,
9011  int num_indices);
9012 
9013 /// @brief Set attribute dictionary data. The dictionary data should
9014 /// be provided as JSON-encoded strings.
9015 ///
9016 /// @ingroup GeometrySetters Attributes
9017 ///
9018 /// @param[in] session
9019 /// The session of Houdini you are interacting with.
9020 /// See @ref HAPI_Sessions for more on sessions.
9021 /// Pass NULL to just use the default in-process session.
9022 /// <!-- default NULL -->
9023 ///
9024 /// @param[in] node_id
9025 /// The SOP node id.
9026 ///
9027 /// @param[in] part_id
9028 /// Currently not used. Just pass 0.
9029 ///
9030 /// @param[in] name
9031 /// Attribute name.
9032 /// <!-- string -->
9033 ///
9034 /// @param[in] attr_info
9035 /// ::HAPI_AttributeInfo used as input for what tuple size
9036 /// you want. Also contains some sanity checks like
9037 /// data type. Generally should be the same struct
9038 /// returned by ::HAPI_GetAttributeInfo().
9039 ///
9040 /// @param[in] data_array
9041 /// An ::HAPI_StringHandle array at least the size of
9042 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9043 /// <!-- sizeparm length -->
9044 ///
9045 /// @param[in] start
9046 /// First index of range. Must be at least 0 and at
9047 /// most ::HAPI_AttributeInfo::count - 1.
9048 /// <!-- default 0 -->
9049 ///
9050 /// @param[in] length
9051 /// Must be at least 0 and at most
9052 /// ::HAPI_AttributeInfo::count - @p start.
9053 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9054 ///
9056  HAPI_NodeId node_id,
9057  HAPI_PartId part_id,
9058  const char* name,
9059  const HAPI_AttributeInfo* attr_info,
9060  const char** data_array,
9061  int start, int length );
9062 
9063 /// @brief Set integer array attribute data.
9064 ///
9065 /// @ingroup GeometrySetters Attributes
9066 ///
9067 /// @param[in] session
9068 /// The session of Houdini you are interacting with.
9069 /// See @ref HAPI_Sessions for more on sessions.
9070 /// Pass NULL to just use the default in-process session.
9071 /// <!-- default NULL -->
9072 ///
9073 /// @param[in] node_id
9074 /// The SOP node id.
9075 ///
9076 /// @param[in] part_id
9077 /// Currently not used. Just pass 0.
9078 ///
9079 /// @param[in] name
9080 /// Attribute name.
9081 /// <!-- string -->
9082 ///
9083 /// @param[in] attr_info
9084 /// ::HAPI_AttributeInfo that contains the description for the
9085 /// attribute that is being set.
9086 ///
9087 /// @param[in] data_fixed_array
9088 /// An array containing the int values of the attribute.
9089 /// <!-- sizeparm data_fixed_length -->
9090 ///
9091 /// @param[in] data_fixed_length
9092 /// The total size of the data array. The size can be no greater
9093 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9094 /// of the attribute.
9095 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9096 ///
9097 /// @param[in] sizes_fixed_array
9098 /// An array of integers that contains the sizes of each
9099 /// attribute array. This is required because the attribute
9100 /// array for each geometry component can be of variable size.
9101 /// <!-- sizeparm sizes_fixed_length -->
9102 ///
9103 /// @param[in] start
9104 /// First index of range. Must be at least 0 and at most
9105 /// ::HAPI_AttributeInfo::count - 1.
9106 /// <!-- default 0 -->
9107 ///
9108 /// @param[in] sizes_fixed_length
9109 /// Must be at least 0 and at most
9110 /// ::HAPI_AttributeInfo::count - @p start.
9111 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9113  HAPI_NodeId node_id,
9114  HAPI_PartId part_id,
9115  const char * name,
9116  const HAPI_AttributeInfo * attr_info,
9117  const int * data_fixed_array,
9118  int data_fixed_length,
9119  const int * sizes_fixed_array,
9120  int start,
9121  int sizes_fixed_length );
9122 
9123 /// @brief Set unsigned 8-bit integer array attribute data.
9124 ///
9125 /// @ingroup GeometrySetters Attributes
9126 ///
9127 /// @param[in] session
9128 /// The session of Houdini you are interacting with.
9129 /// See @ref HAPI_Sessions for more on sessions.
9130 /// Pass NULL to just use the default in-process session.
9131 /// <!-- default NULL -->
9132 ///
9133 /// @param[in] node_id
9134 /// The SOP node id.
9135 ///
9136 /// @param[in] part_id
9137 /// Currently not used. Just pass 0.
9138 ///
9139 /// @param[in] name
9140 /// Attribute name.
9141 /// <!-- string -->
9142 ///
9143 /// @param[in] attr_info
9144 /// ::HAPI_AttributeInfo that contains the description for the
9145 /// attribute that is being set.
9146 ///
9147 /// @param[in] data_fixed_array
9148 /// An array containing the HAPI_UInt8 values of the attribute.
9149 /// <!-- sizeparm data_fixed_length -->
9150 ///
9151 /// @param[in] data_fixed_length
9152 /// The total size of the data array. The size can be no greater
9153 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9154 /// of the attribute.
9155 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9156 ///
9157 /// @param[in] sizes_fixed_array
9158 /// An array of integers that contains the sizes of each
9159 /// attribute array. This is required because the attribute
9160 /// array for each geometry component can be of variable size.
9161 /// <!-- sizeparm sizes_fixed_length -->
9162 ///
9163 /// @param[in] start
9164 /// First index of range. Must be at least 0 and at most
9165 /// ::HAPI_AttributeInfo::count - 1.
9166 /// <!-- default 0 -->
9167 ///
9168 /// @param[in] sizes_fixed_length
9169 /// Must be at least 0 and at most
9170 /// ::HAPI_AttributeInfo::count - @p start.
9171 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9173  HAPI_NodeId node_id,
9174  HAPI_PartId part_id,
9175  const char * name,
9176  const HAPI_AttributeInfo * attr_info,
9177  const HAPI_UInt8 * data_fixed_array,
9178  int data_fixed_length,
9179  const int * sizes_fixed_array,
9180  int start,
9181  int sizes_fixed_length );
9182 
9183 /// @brief Set 8-bit integer array attribute data.
9184 ///
9185 /// @ingroup GeometrySetters Attributes
9186 ///
9187 /// @param[in] session
9188 /// The session of Houdini you are interacting with.
9189 /// See @ref HAPI_Sessions for more on sessions.
9190 /// Pass NULL to just use the default in-process session.
9191 /// <!-- default NULL -->
9192 ///
9193 /// @param[in] node_id
9194 /// The SOP node id.
9195 ///
9196 /// @param[in] part_id
9197 /// Currently not used. Just pass 0.
9198 ///
9199 /// @param[in] name
9200 /// Attribute name.
9201 /// <!-- string -->
9202 ///
9203 /// @param[in] attr_info
9204 /// ::HAPI_AttributeInfo that contains the description for the
9205 /// attribute that is being set.
9206 ///
9207 /// @param[in] data_fixed_array
9208 /// An array containing the HAPI_Int8 values of the attribute.
9209 /// <!-- sizeparm data_fixed_length -->
9210 ///
9211 /// @param[in] data_fixed_length
9212 /// The total size of the data array. The size can be no greater
9213 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9214 /// of the attribute.
9215 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9216 ///
9217 /// @param[in] sizes_fixed_array
9218 /// An array of integers that contains the sizes of each
9219 /// attribute array. This is required because the attribute
9220 /// array for each geometry component can be of variable size.
9221 /// <!-- sizeparm sizes_fixed_length -->
9222 ///
9223 /// @param[in] start
9224 /// First index of range. Must be at least 0 and at most
9225 /// ::HAPI_AttributeInfo::count - 1.
9226 /// <!-- default 0 -->
9227 ///
9228 /// @param[in] sizes_fixed_length
9229 /// Must be at least 0 and at most
9230 /// ::HAPI_AttributeInfo::count - @p start.
9231 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9233  HAPI_NodeId node_id,
9234  HAPI_PartId part_id,
9235  const char * name,
9236  const HAPI_AttributeInfo * attr_info,
9237  const HAPI_Int8 * data_fixed_array,
9238  int data_fixed_length,
9239  const int * sizes_fixed_array,
9240  int start,
9241  int sizes_fixed_length);
9242 
9243 /// @brief Set 16-bit integer array attribute data.
9244 ///
9245 /// @ingroup GeometrySetters Attributes
9246 ///
9247 /// @param[in] session
9248 /// The session of Houdini you are interacting with.
9249 /// See @ref HAPI_Sessions for more on sessions.
9250 /// Pass NULL to just use the default in-process session.
9251 /// <!-- default NULL -->
9252 ///
9253 /// @param[in] node_id
9254 /// The SOP node id.
9255 ///
9256 /// @param[in] part_id
9257 /// Currently not used. Just pass 0.
9258 ///
9259 /// @param[in] name
9260 /// Attribute name.
9261 /// <!-- string -->
9262 ///
9263 /// @param[in] attr_info
9264 /// ::HAPI_AttributeInfo that contains the description for the
9265 /// attribute that is being set.
9266 ///
9267 /// @param[in] data_fixed_array
9268 /// An array containing the HAPI_Int16 values of the attribute.
9269 /// <!-- sizeparm data_fixed_length -->
9270 ///
9271 /// @param[in] data_fixed_length
9272 /// The total size of the data array. The size can be no greater
9273 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9274 /// of the attribute.
9275 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9276 ///
9277 /// @param[in] sizes_fixed_array
9278 /// An array of integers that contains the sizes of each
9279 /// attribute array. This is required because the attribute
9280 /// array for each geometry component can be of variable size.
9281 /// <!-- sizeparm sizes_fixed_length -->
9282 ///
9283 /// @param[in] start
9284 /// First index of range. Must be at least 0 and at most
9285 /// ::HAPI_AttributeInfo::count - 1.
9286 /// <!-- default 0 -->
9287 ///
9288 /// @param[in] sizes_fixed_length
9289 /// Must be at least 0 and at most
9290 /// ::HAPI_AttributeInfo::count - @p start.
9291 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9293  HAPI_NodeId node_id,
9294  HAPI_PartId part_id,
9295  const char * name,
9296  const HAPI_AttributeInfo * attr_info,
9297  const HAPI_Int16 * data_fixed_array,
9298  int data_fixed_length,
9299  const int * sizes_fixed_array,
9300  int start,
9301  int sizes_fixed_length );
9302 
9303 /// @brief Set 64-bit integer array attribute data.
9304 ///
9305 /// @ingroup GeometrySetters Attributes
9306 ///
9307 /// @param[in] session
9308 /// The session of Houdini you are interacting with.
9309 /// See @ref HAPI_Sessions for more on sessions.
9310 /// Pass NULL to just use the default in-process session.
9311 /// <!-- default NULL -->
9312 ///
9313 /// @param[in] node_id
9314 /// The SOP node id.
9315 ///
9316 /// @param[in] part_id
9317 /// Currently not used. Just pass 0.
9318 ///
9319 /// @param[in] name
9320 /// Attribute name.
9321 /// <!-- string -->
9322 ///
9323 /// @param[in] attr_info
9324 /// ::HAPI_AttributeInfo that contains the description for the
9325 /// attribute that is being set.
9326 ///
9327 /// @param[in] data_fixed_array
9328 /// An array containing the HAPI_Int64 values of the attribute.
9329 /// <!-- sizeparm data_fixed_length -->
9330 ///
9331 /// @param[in] data_fixed_length
9332 /// The total size of the data array. The size can be no greater
9333 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9334 /// of the attribute.
9335 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9336 ///
9337 /// @param[in] sizes_fixed_array
9338 /// An array of integers that contains the sizes of each
9339 /// attribute array. This is required because the attribute
9340 /// array for each geometry component can be of variable size.
9341 /// <!-- sizeparm sizes_fixed_length -->
9342 ///
9343 /// @param[in] start
9344 /// First index of range. Must be at least 0 and at most
9345 /// ::HAPI_AttributeInfo::count - 1.
9346 /// <!-- default 0 -->
9347 ///
9348 /// @param[in] sizes_fixed_length
9349 /// Must be at least 0 and at most
9350 /// ::HAPI_AttributeInfo::count - @p start.
9351 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9353  HAPI_NodeId node_id,
9354  HAPI_PartId part_id,
9355  const char * name,
9356  const HAPI_AttributeInfo * attr_info,
9357  const HAPI_Int64 * data_fixed_array,
9358  int data_fixed_length,
9359  const int * sizes_fixed_array,
9360  int start,
9361  int sizes_fixed_length );
9362 
9363 /// @brief Set float array attribute data.
9364 ///
9365 /// @ingroup GeometrySetters Attributes
9366 ///
9367 /// @param[in] session
9368 /// The session of Houdini you are interacting with.
9369 /// See @ref HAPI_Sessions for more on sessions.
9370 /// Pass NULL to just use the default in-process session.
9371 /// <!-- default NULL -->
9372 ///
9373 /// @param[in] node_id
9374 /// The SOP node id.
9375 ///
9376 /// @param[in] part_id
9377 /// Currently not used. Just pass 0.
9378 ///
9379 /// @param[in] name
9380 /// Attribute name.
9381 /// <!-- string -->
9382 ///
9383 /// @param[in] attr_info
9384 /// ::HAPI_AttributeInfo that contains the description for the
9385 /// attribute that is being set.
9386 ///
9387 /// @param[in] data_fixed_array
9388 /// An array containing the float values of the attribute.
9389 /// <!-- sizeparm data_fixed_length -->
9390 ///
9391 /// @param[in] data_fixed_length
9392 /// The total size of the data array. The size can be no greater
9393 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9394 /// of the attribute.
9395 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9396 ///
9397 /// @param[in] sizes_fixed_array
9398 /// An array of integers that contains the sizes of each
9399 /// attribute array. This is required because the attribute
9400 /// array for each geometry component can be of variable size.
9401 /// <!-- sizeparm sizes_fixed_length -->
9402 ///
9403 /// @param[in] start
9404 /// First index of range. Must be at least 0 and at most
9405 /// ::HAPI_AttributeInfo::count - 1.
9406 /// <!-- default 0 -->
9407 ///
9408 /// @param[in] sizes_fixed_length
9409 /// Must be at least 0 and at most
9410 /// ::HAPI_AttributeInfo::count - @p start.
9411 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9413  HAPI_NodeId node_id,
9414  HAPI_PartId part_id,
9415  const char * name,
9416  const HAPI_AttributeInfo * attr_info,
9417  const float * data_fixed_array,
9418  int data_fixed_length,
9419  const int * sizes_fixed_array,
9420  int start,
9421  int sizes_fixed_length );
9422 
9423 /// @brief Set 64-bit float array attribute data.
9424 ///
9425 /// @ingroup GeometrySetters Attributes
9426 ///
9427 /// @param[in] session
9428 /// The session of Houdini you are interacting with.
9429 /// See @ref HAPI_Sessions for more on sessions.
9430 /// Pass NULL to just use the default in-process session.
9431 /// <!-- default NULL -->
9432 ///
9433 /// @param[in] node_id
9434 /// The SOP node id.
9435 ///
9436 /// @param[in] part_id
9437 /// Currently not used. Just pass 0.
9438 ///
9439 /// @param[in] name
9440 /// Attribute name.
9441 /// <!-- string -->
9442 ///
9443 /// @param[in] attr_info
9444 /// ::HAPI_AttributeInfo that contains the description for the
9445 /// attribute that is being set.
9446 ///
9447 /// @param[in] data_fixed_array
9448 /// An array containing the double values of the attribute.
9449 /// <!-- sizeparm data_fixed_length -->
9450 ///
9451 /// @param[in] data_fixed_length
9452 /// The total size of the data array. The size can be no greater
9453 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9454 /// of the attribute.
9455 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9456 ///
9457 /// @param[in] sizes_fixed_array
9458 /// An array of integers that contains the sizes of each
9459 /// attribute array. This is required because the attribute
9460 /// array for each geometry component can be of variable size.
9461 /// <!-- sizeparm sizes_fixed_length -->
9462 ///
9463 /// @param[in] start
9464 /// First index of range. Must be at least 0 and at most
9465 /// ::HAPI_AttributeInfo::count - 1.
9466 /// <!-- default 0 -->
9467 ///
9468 /// @param[in] sizes_fixed_length
9469 /// Must be at least 0 and at most
9470 /// ::HAPI_AttributeInfo::count - @p start.
9471 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9473  HAPI_NodeId node_id,
9474  HAPI_PartId part_id,
9475  const char * name,
9476  const HAPI_AttributeInfo * attr_info,
9477  const double * data_fixed_array,
9478  int data_fixed_length,
9479  const int * sizes_fixed_array,
9480  int start,
9481  int sizes_fixed_length );
9482 
9483 /// @brief Set string array attribute data.
9484 ///
9485 /// @ingroup GeometrySetters Attributes
9486 ///
9487 /// @param[in] session
9488 /// The session of Houdini you are interacting with.
9489 /// See @ref HAPI_Sessions for more on sessions.
9490 /// Pass NULL to just use the default in-process session.
9491 /// <!-- default NULL -->
9492 ///
9493 /// @param[in] node_id
9494 /// The SOP node id.
9495 ///
9496 /// @param[in] part_id
9497 /// Currently not used. Just pass 0.
9498 ///
9499 /// @param[in] name
9500 /// Attribute name.
9501 /// <!-- string -->
9502 ///
9503 /// @param[in] attr_info
9504 /// ::HAPI_AttributeInfo that contains the description for the
9505 /// attribute that is being set.
9506 ///
9507 /// @param[in] data_fixed_array
9508 /// An array containing the string values of the attribute.
9509 /// <!-- sizeparm data_fixed_length -->
9510 ///
9511 /// @param[in] data_fixed_length
9512 /// The total size of the data array. The size can be no greater
9513 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9514 /// of the attribute.
9515 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9516 ///
9517 /// @param[in] sizes_fixed_array
9518 /// An array of integers that contains the sizes of each
9519 /// attribute array. This is required because the attribute
9520 /// array for each geometry component can be of variable size.
9521 /// <!-- sizeparm sizes_fixed_length -->
9522 ///
9523 /// @param[in] start
9524 /// First index of range. Must be at least 0 and at most
9525 /// ::HAPI_AttributeInfo::count - 1.
9526 /// <!-- default 0 -->
9527 ///
9528 /// @param[in] sizes_fixed_length
9529 /// Must be at least 0 and at most
9530 /// ::HAPI_AttributeInfo::count - @p start.
9531 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9533  HAPI_NodeId node_id,
9534  HAPI_PartId part_id,
9535  const char * name,
9536  const HAPI_AttributeInfo * attr_info,
9537  const char ** data_fixed_array,
9538  int data_fixed_length,
9539  const int * sizes_fixed_array,
9540  int start,
9541  int sizes_fixed_length );
9542 
9543 /// @brief Set attribute dictionary array data. The dictionary data should
9544 /// be provided as JSON-encoded strings.
9545 ///
9546 /// @ingroup GeometrySetters Attributes
9547 ///
9548 /// @param[in] session
9549 /// The session of Houdini you are interacting with.
9550 /// See @ref HAPI_Sessions for more on sessions.
9551 /// Pass NULL to just use the default in-process session.
9552 /// <!-- default NULL -->
9553 ///
9554 /// @param[in] node_id
9555 /// The SOP node id.
9556 ///
9557 /// @param[in] part_id
9558 /// Currently not used. Just pass 0.
9559 ///
9560 /// @param[in] name
9561 /// Attribute name.
9562 /// <!-- string -->
9563 ///
9564 /// @param[in] attr_info
9565 /// ::HAPI_AttributeInfo that contains the description for the
9566 /// attribute that is being set.
9567 ///
9568 /// @param[in] data_fixed_array
9569 /// An array containing the dictionary values of the attribute.
9570 /// <!-- sizeparm data_fixed_length -->
9571 ///
9572 /// @param[in] data_fixed_length
9573 /// The total size of the data array. The size can be no greater
9574 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
9575 /// of the attribute.
9576 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
9577 ///
9578 /// @param[in] sizes_fixed_array
9579 /// An array of integers that contains the sizes of each
9580 /// attribute array. This is required because the attribute
9581 /// array for each geometry component can be of variable size.
9582 /// <!-- sizeparm sizes_fixed_length -->
9583 ///
9584 /// @param[in] start
9585 /// First index of range. Must be at least 0 and at most
9586 /// ::HAPI_AttributeInfo::count - 1.
9587 /// <!-- default 0 -->
9588 ///
9589 /// @param[in] sizes_fixed_length
9590 /// Must be at least 0 and at most
9591 /// ::HAPI_AttributeInfo::count - @p start.
9592 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9594  HAPI_NodeId node_id,
9595  HAPI_PartId part_id,
9596  const char* name,
9597  const HAPI_AttributeInfo* attr_info,
9598  const char** data_fixed_array,
9599  int data_fixed_length,
9600  const int* sizes_fixed_array,
9601  int start,
9602  int sizes_fixed_length);
9603 
9604 /// @brief Set attribute integer data asynchronously.
9605 ///
9606 /// @ingroup GeometrySetters Attributes
9607 ///
9608 /// @param[in] session
9609 /// The session of Houdini you are interacting with.
9610 /// See @ref HAPI_Sessions for more on sessions.
9611 /// Pass NULL to just use the default in-process session.
9612 /// <!-- default NULL -->
9613 ///
9614 /// @param[in] node_id
9615 /// The SOP node id.
9616 ///
9617 /// @param[in] part_id
9618 /// Currently not used. Just pass 0.
9619 ///
9620 /// @param[in] name
9621 /// Attribute name.
9622 /// <!-- string -->
9623 ///
9624 /// @param[in] attr_info
9625 /// ::HAPI_AttributeInfo used as input for what tuple size.
9626 /// you want. Also contains some sanity checks like
9627 /// data type. Generally should be the same struct
9628 /// returned by ::HAPI_GetAttributeInfo().
9629 ///
9630 /// @param[in] data_array
9631 /// An integer array at least the size of
9632 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9633 /// <!-- sizeparm length -->
9634 ///
9635 /// @param[in] start
9636 /// First index of range. Must be at least 0 and at
9637 /// most ::HAPI_AttributeInfo::count - 1.
9638 /// <!-- default 0 -->
9639 ///
9640 /// @param[in] length
9641 /// Must be at least 0 and at most
9642 /// ::HAPI_AttributeInfo::count - @p start.
9643 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9644 ///
9645 /// @param[out] job_id
9646 /// The id assigned to the job.
9647 ///
9649  HAPI_NodeId node_id,
9650  HAPI_PartId part_id,
9651  const char * name,
9652  const HAPI_AttributeInfo * attr_info,
9653  const int * data_array,
9654  int start, int length,
9655  int * job_id );
9656 
9657 /// @brief Set unsigned 8-bit attribute integer data asynchronously.
9658 ///
9659 /// @ingroup GeometrySetters Attributes
9660 ///
9661 /// @param[in] session
9662 /// The session of Houdini you are interacting with.
9663 /// See @ref HAPI_Sessions for more on sessions.
9664 /// Pass NULL to just use the default in-process session.
9665 /// <!-- default NULL -->
9666 ///
9667 /// @param[in] node_id
9668 /// The SOP node id.
9669 ///
9670 /// @param[in] part_id
9671 /// Currently not used. Just pass 0.
9672 ///
9673 /// @param[in] name
9674 /// Attribute name.
9675 /// <!-- string -->
9676 ///
9677 /// @param[in] attr_info
9678 /// ::HAPI_AttributeInfo used as input for what tuple size.
9679 /// you want. Also contains some sanity checks like
9680 /// data type. Generally should be the same struct
9681 /// returned by ::HAPI_GetAttributeInfo().
9682 ///
9683 /// @param[in] data_array
9684 /// An unsigned 8-bit integer array at least the size of
9685 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9686 /// <!-- sizeparm length -->
9687 ///
9688 /// @param[in] start
9689 /// First index of range. Must be at least 0 and at
9690 /// most ::HAPI_AttributeInfo::count - 1.
9691 /// <!-- default 0 -->
9692 ///
9693 /// @param[in] length
9694 /// Must be at least 0 and at most
9695 /// ::HAPI_AttributeInfo::count - @p start.
9696 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9697 ///
9698 /// @param[out] job_id
9699 /// The id assigned to the job.
9700 ///
9702  HAPI_NodeId node_id,
9703  HAPI_PartId part_id,
9704  const char * name,
9705  const HAPI_AttributeInfo * attr_info,
9706  const HAPI_UInt8 * data_array,
9707  int start, int length,
9708  int * job_id );
9709 
9710 /// @brief Set 8-bit attribute integer data asynchronously.
9711 ///
9712 /// @ingroup GeometrySetters Attributes
9713 ///
9714 /// @param[in] session
9715 /// The session of Houdini you are interacting with.
9716 /// See @ref HAPI_Sessions for more on sessions.
9717 /// Pass NULL to just use the default in-process session.
9718 /// <!-- default NULL -->
9719 ///
9720 /// @param[in] node_id
9721 /// The SOP node id.
9722 ///
9723 /// @param[in] part_id
9724 /// Currently not used. Just pass 0.
9725 ///
9726 /// @param[in] name
9727 /// Attribute name.
9728 /// <!-- string -->
9729 ///
9730 /// @param[in] attr_info
9731 /// ::HAPI_AttributeInfo used as input for what tuple size.
9732 /// you want. Also contains some sanity checks like
9733 /// data type. Generally should be the same struct
9734 /// returned by ::HAPI_GetAttributeInfo().
9735 ///
9736 /// @param[in] data_array
9737 /// An 8-bit integer array at least the size of
9738 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9739 /// <!-- sizeparm length -->
9740 ///
9741 /// @param[in] start
9742 /// First index of range. Must be at least 0 and at
9743 /// most ::HAPI_AttributeInfo::count - 1.
9744 /// <!-- default 0 -->
9745 ///
9746 /// @param[in] length
9747 /// Must be at least 0 and at most
9748 /// ::HAPI_AttributeInfo::count - @p start.
9749 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9750 ///
9751 /// @param[out] job_id
9752 /// The id assigned to the job.
9753 ///
9755  HAPI_NodeId node_id,
9756  HAPI_PartId part_id,
9757  const char * name,
9758  const HAPI_AttributeInfo * attr_info,
9759  const HAPI_Int8 * data_array,
9760  int start, int length,
9761  int * job_id );
9762 
9763 /// @brief Set 16-bit attribute integer data asynchronously.
9764 ///
9765 /// @ingroup GeometrySetters Attributes
9766 ///
9767 /// @param[in] session
9768 /// The session of Houdini you are interacting with.
9769 /// See @ref HAPI_Sessions for more on sessions.
9770 /// Pass NULL to just use the default in-process session.
9771 /// <!-- default NULL -->
9772 ///
9773 /// @param[in] node_id
9774 /// The SOP node id.
9775 ///
9776 /// @param[in] part_id
9777 /// Currently not used. Just pass 0.
9778 ///
9779 /// @param[in] name
9780 /// Attribute name.
9781 /// <!-- string -->
9782 ///
9783 /// @param[in] attr_info
9784 /// ::HAPI_AttributeInfo used as input for what tuple size.
9785 /// you want. Also contains some sanity checks like
9786 /// data type. Generally should be the same struct
9787 /// returned by ::HAPI_GetAttributeInfo().
9788 ///
9789 /// @param[in] data_array
9790 /// An 16-bit integer array at least the size of
9791 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9792 /// <!-- sizeparm length -->
9793 ///
9794 /// @param[in] start
9795 /// First index of range. Must be at least 0 and at
9796 /// most ::HAPI_AttributeInfo::count - 1.
9797 /// <!-- default 0 -->
9798 ///
9799 /// @param[in] length
9800 /// Must be at least 0 and at most
9801 /// ::HAPI_AttributeInfo::count - @p start.
9802 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9803 ///
9804 /// @param[out] job_id
9805 /// The id assigned to the job.
9806 ///
9808  HAPI_NodeId node_id,
9809  HAPI_PartId part_id,
9810  const char * name,
9811  const HAPI_AttributeInfo * attr_info,
9812  const HAPI_Int16 * data_array,
9813  int start, int length,
9814  int * job_id );
9815 
9816 /// @brief Set 64-bit attribute integer data asynchronously.
9817 ///
9818 /// @ingroup GeometrySetters Attributes
9819 ///
9820 /// @param[in] session
9821 /// The session of Houdini you are interacting with.
9822 /// See @ref HAPI_Sessions for more on sessions.
9823 /// Pass NULL to just use the default in-process session.
9824 /// <!-- default NULL -->
9825 ///
9826 /// @param[in] node_id
9827 /// The SOP node id.
9828 ///
9829 /// @param[in] part_id
9830 /// Currently not used. Just pass 0.
9831 ///
9832 /// @param[in] name
9833 /// Attribute name.
9834 /// <!-- string -->
9835 ///
9836 /// @param[in] attr_info
9837 /// ::HAPI_AttributeInfo used as input for what tuple size.
9838 /// you want. Also contains some sanity checks like
9839 /// data type. Generally should be the same struct
9840 /// returned by ::HAPI_GetAttributeInfo().
9841 ///
9842 /// @param[in] data_array
9843 /// An 64-bit integer array at least the size of
9844 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9845 /// <!-- sizeparm length -->
9846 ///
9847 /// @param[in] start
9848 /// First index of range. Must be at least 0 and at
9849 /// most ::HAPI_AttributeInfo::count - 1.
9850 /// <!-- default 0 -->
9851 ///
9852 /// @param[in] length
9853 /// Must be at least 0 and at most
9854 /// ::HAPI_AttributeInfo::count - @p start.
9855 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9856 ///
9857 /// @param[out] job_id
9858 /// The id assigned to the job.
9859 ///
9861  HAPI_NodeId node_id,
9862  HAPI_PartId part_id,
9863  const char * name,
9864  const HAPI_AttributeInfo * attr_info,
9865  const HAPI_Int64 * data_array,
9866  int start, int length,
9867  int * job_id );
9868 
9869 /// @brief Set attribute float data asynchronously.
9870 ///
9871 /// @ingroup GeometrySetters Attributes
9872 ///
9873 /// @param[in] session
9874 /// The session of Houdini you are interacting with.
9875 /// See @ref HAPI_Sessions for more on sessions.
9876 /// Pass NULL to just use the default in-process session.
9877 /// <!-- default NULL -->
9878 ///
9879 /// @param[in] node_id
9880 /// The SOP node id.
9881 ///
9882 /// @param[in] part_id
9883 /// Currently not used. Just pass 0.
9884 ///
9885 /// @param[in] name
9886 /// Attribute name.
9887 /// <!-- string -->
9888 ///
9889 /// @param[in] attr_info
9890 /// ::HAPI_AttributeInfo used as input for what tuple size.
9891 /// you want. Also contains some sanity checks like
9892 /// data type. Generally should be the same struct
9893 /// returned by ::HAPI_GetAttributeInfo().
9894 ///
9895 /// @param[in] data_array
9896 /// An float array at least the size of
9897 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9898 /// <!-- sizeparm length -->
9899 ///
9900 /// @param[in] start
9901 /// First index of range. Must be at least 0 and at
9902 /// most ::HAPI_AttributeInfo::count - 1.
9903 /// <!-- default 0 -->
9904 ///
9905 /// @param[in] length
9906 /// Must be at least 0 and at most
9907 /// ::HAPI_AttributeInfo::count - @p start.
9908 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9909 ///
9910 /// @param[out] job_id
9911 /// The id assigned to the job.
9912 ///
9914  HAPI_NodeId node_id,
9915  HAPI_PartId part_id,
9916  const char * name,
9917  const HAPI_AttributeInfo * attr_info,
9918  const float * data_array,
9919  int start, int length,
9920  int * job_id );
9921 
9922 /// @brief Set 64-bit attribute float data asynchronously.
9923 ///
9924 /// @ingroup GeometrySetters Attributes
9925 ///
9926 /// @param[in] session
9927 /// The session of Houdini you are interacting with.
9928 /// See @ref HAPI_Sessions for more on sessions.
9929 /// Pass NULL to just use the default in-process session.
9930 /// <!-- default NULL -->
9931 ///
9932 /// @param[in] node_id
9933 /// The SOP node id.
9934 ///
9935 /// @param[in] part_id
9936 /// Currently not used. Just pass 0.
9937 ///
9938 /// @param[in] name
9939 /// Attribute name.
9940 /// <!-- string -->
9941 ///
9942 /// @param[in] attr_info
9943 /// ::HAPI_AttributeInfo used as input for what tuple size.
9944 /// you want. Also contains some sanity checks like
9945 /// data type. Generally should be the same struct
9946 /// returned by ::HAPI_GetAttributeInfo().
9947 ///
9948 /// @param[in] data_array
9949 /// An 64-bit float array at least the size of
9950 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
9951 /// <!-- sizeparm length -->
9952 ///
9953 /// @param[in] start
9954 /// First index of range. Must be at least 0 and at
9955 /// most ::HAPI_AttributeInfo::count - 1.
9956 /// <!-- default 0 -->
9957 ///
9958 /// @param[in] length
9959 /// Must be at least 0 and at most
9960 /// ::HAPI_AttributeInfo::count - @p start.
9961 /// <!-- source ::HAPI_AttributeInfo::count - start -->
9962 ///
9963 /// @param[out] job_id
9964 /// The id assigned to the job.
9965 ///
9967  const HAPI_Session * session,
9968  HAPI_NodeId node_id,
9969  HAPI_PartId part_id,
9970  const char * name,
9971  const HAPI_AttributeInfo * attr_info,
9972  const double * data_array,
9973  int start, int length,
9974  int * job_id );
9975 
9976 /// @brief Set attribute string data asynchronously.
9977 ///
9978 /// @ingroup GeometrySetters Attributes
9979 ///
9980 /// @param[in] session
9981 /// The session of Houdini you are interacting with.
9982 /// See @ref HAPI_Sessions for more on sessions.
9983 /// Pass NULL to just use the default in-process session.
9984 /// <!-- default NULL -->
9985 ///
9986 /// @param[in] node_id
9987 /// The SOP node id.
9988 ///
9989 /// @param[in] part_id
9990 /// Currently not used. Just pass 0.
9991 ///
9992 /// @param[in] name
9993 /// Attribute name.
9994 /// <!-- string -->
9995 ///
9996 /// @param[in] attr_info
9997 /// ::HAPI_AttributeInfo used as input for what tuple size
9998 /// you want. Also contains some sanity checks like
9999 /// data type. Generally should be the same struct
10000 /// returned by ::HAPI_GetAttributeInfo().
10001 ///
10002 /// @param[in] data_array
10003 /// An ::HAPI_StringHandle array at least the size of
10004 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
10005 /// <!-- sizeparm length -->
10006 ///
10007 /// @param[in] start
10008 /// First index of range. Must be at least 0 and at
10009 /// most ::HAPI_AttributeInfo::count - 1.
10010 /// <!-- default 0 -->
10011 ///
10012 /// @param[in] length
10013 /// Must be at least 0 and at most
10014 /// ::HAPI_AttributeInfo::count - @p start.
10015 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10016 ///
10017 /// @param[out] job_id
10018 /// The id assigned to the job.
10019 ///
10021  const HAPI_Session * session,
10022  HAPI_NodeId node_id,
10023  HAPI_PartId part_id,
10024  const char * name,
10025  const HAPI_AttributeInfo * attr_info,
10026  const char ** data_array,
10027  int start, int length,
10028  int * job_id );
10029 
10030 /// @brief Set attribute string data by index asynchronously.
10031 ///
10032 /// @ingroup GeometrySetters Attributes
10033 ///
10034 /// @param[in] session
10035 /// The session of Houdini you are interacting with.
10036 /// See @ref HAPI_Sessions for more on sessions.
10037 /// Pass NULL to just use the default in-process session.
10038 /// <!-- default NULL -->
10039 ///
10040 /// @param[in] node_id
10041 /// The SOP node id.
10042 ///
10043 /// @param[in] part_id
10044 /// Currently not used. Just pass 0.
10045 ///
10046 /// @param[in] name
10047 /// Attribute name.
10048 /// <!-- string -->
10049 ///
10050 /// @param[in] attr_info
10051 /// ::HAPI_AttributeInfo used as input for what tuple size.
10052 /// you want. Also contains some sanity checks like
10053 /// data type. Generally should be the same struct
10054 /// returned by ::HAPI_GetAttributeInfo().
10055 ///
10056 /// @param[in] string_array
10057 /// An array of strings at least the size of
10058 /// <tt>string_count/tt>.
10059 /// <!-- sizeparm string_count -->
10060 ///
10061 /// @param[in] string_count
10062 /// Number of strings that are indexed.
10063 ///
10064 /// @param[in] indices_array
10065 /// integer array at least the size of
10066 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>. Each
10067 /// entry indexes string_array.
10068 /// <!-- sizeparm indices_length -->
10069 ///
10070 /// @param[in] indices_start
10071 /// First index of range. Must be at least 0 and at
10072 /// most ::HAPI_AttributeInfo::count - 1.
10073 /// <!-- default 0 -->
10074 ///
10075 /// @param[in] indices_length
10076 /// Must be at least 0 and at most
10077 /// ::HAPI_AttributeInfo::count - @p start.
10078 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10079 ///
10080 /// @param[out] job_id
10081 /// The id assigned to the job.
10082 ///
10084  const HAPI_Session * session,
10085  HAPI_NodeId node_id,
10086  HAPI_PartId part_id,
10087  const char * name,
10088  const HAPI_AttributeInfo * attr_info,
10089  const char ** string_array,
10090  int string_count,
10091  const int * indices_array,
10092  int indices_start,
10093  int indices_length,
10094  int * job_id );
10095 
10096 /// @brief Set multiple attribute string data to the same unique value
10097 /// asynchronously.
10098 ///
10099 /// @ingroup GeometrySetters Attributes
10100 ///
10101 /// @param[in] session
10102 /// The session of Houdini you are interacting with.
10103 /// See @ref HAPI_Sessions for more on sessions.
10104 /// Pass NULL to just use the default in-process session.
10105 /// <!-- default NULL -->
10106 ///
10107 /// @param[in] node_id
10108 /// The SOP node id.
10109 ///
10110 /// @param[in] part_id
10111 /// Currently not used. Just pass 0.
10112 ///
10113 /// @param[in] name
10114 /// Attribute name.
10115 /// <!-- string -->
10116 ///
10117 /// @param[in] attr_info
10118 /// ::HAPI_AttributeInfo used as input for what tuple size.
10119 /// you want. Also contains some sanity checks like
10120 /// data type. Generally should be the same struct
10121 /// returned by ::HAPI_GetAttributeInfo().
10122 ///
10123 /// @param[in] data_array
10124 /// A string
10125 /// <!-- string -->
10126 ///
10127 /// @param[in] data_length
10128 /// Must be the length of string data.
10129 ///
10130 /// @param[in] start_index
10131 /// Must be at least 0 and at most
10132 /// ::HAPI_AttributeInfo::count - @p start.
10133 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10134 ///
10135 /// @param[in] num_indices
10136 /// Must be at least 0 and at most
10137 /// ::HAPI_AttributeInfo::count - @p start.
10138 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10139 ///
10140 /// @param[out] job_id
10141 /// The id assigned to the job.
10142 ///
10144  const HAPI_Session * session,
10145  HAPI_NodeId node_id,
10146  HAPI_PartId part_id,
10147  const char * name,
10148  const HAPI_AttributeInfo * attr_info,
10149  const char * data_array,
10150  int data_length,
10151  int start_index,
10152  int num_indices,
10153  int * job_id );
10154 
10155 /// @brief Set multiple attribute int data to the same unique value
10156 /// asynchronously.
10157 ///
10158 /// @ingroup GeometrySetters Attributes
10159 ///
10160 /// @param[in] session
10161 /// The session of Houdini you are interacting with.
10162 /// See @ref HAPI_Sessions for more on sessions.
10163 /// Pass NULL to just use the default in-process session.
10164 /// <!-- default NULL -->
10165 ///
10166 /// @param[in] node_id
10167 /// The SOP node id.
10168 ///
10169 /// @param[in] part_id
10170 /// Currently not used. Just pass 0.
10171 ///
10172 /// @param[in] name
10173 /// Attribute name.
10174 /// <!-- string -->
10175 ///
10176 /// @param[in] attr_info
10177 /// ::HAPI_AttributeInfo used as input for what tuple size.
10178 /// you want. Also contains some sanity checks like
10179 /// data type. Generally should be the same struct
10180 /// returned by ::HAPI_GetAttributeInfo().
10181 ///
10182 /// @param[in] data_array
10183 /// A integer array at least the size of
10184 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10185 /// <!-- sizeparm data_length -->
10186 ///
10187 /// @param[in] data_length
10188 /// An integer of at least the size of
10189 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10190 ///
10191 /// @param[in] start_index
10192 /// First index of range. Must be at least 0 and at
10193 /// most ::HAPI_AttributeInfo::count - 1.
10194 /// <!-- default 0 -->
10195 ///
10196 /// @param[in] num_indices
10197 /// Must be at least 0 and at most
10198 /// ::HAPI_AttributeInfo::count - @p start_index.
10199 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10200 ///
10201 /// @param[out] job_id
10202 /// The id assigned to the job.
10203 ///
10205  const HAPI_Session * session,
10206  HAPI_NodeId node_id,
10207  HAPI_PartId part_id,
10208  const char * name,
10209  const HAPI_AttributeInfo * attr_info,
10210  const int * data_array,
10211  int data_length,
10212  int start_index,
10213  int num_indices,
10214  int * job_id );
10215 
10216 /// @brief Set multiple attribute unsigned 8-bit int data to the same unique
10217 /// value asynchronously.
10218 ///
10219 /// @ingroup GeometrySetters Attributes
10220 ///
10221 /// @param[in] session
10222 /// The session of Houdini you are interacting with.
10223 /// See @ref HAPI_Sessions for more on sessions.
10224 /// Pass NULL to just use the default in-process session.
10225 /// <!-- default NULL -->
10226 ///
10227 /// @param[in] node_id
10228 /// The SOP node id.
10229 ///
10230 /// @param[in] part_id
10231 /// Currently not used. Just pass 0.
10232 ///
10233 /// @param[in] name
10234 /// Attribute name.
10235 /// <!-- string -->
10236 ///
10237 /// @param[in] attr_info
10238 /// ::HAPI_AttributeInfo used as input for what tuple size.
10239 /// you want. Also contains some sanity checks like
10240 /// data type. Generally should be the same struct
10241 /// returned by ::HAPI_GetAttributeInfo().
10242 ///
10243 /// @param[in] data_array
10244 /// A integer array at least the size of
10245 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10246 /// <!-- sizeparm data_length -->
10247 ///
10248 /// @param[in] data_length
10249 /// An integer of at least the size of
10250 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10251 ///
10252 /// @param[in] start_index
10253 /// First index of range. Must be at least 0 and at
10254 /// most ::HAPI_AttributeInfo::count - 1.
10255 /// <!-- default 0 -->
10256 ///
10257 /// @param[in] num_indices
10258 /// Must be at least 0 and at most
10259 /// ::HAPI_AttributeInfo::count - @p start_index.
10260 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10261 ///
10262 /// @param[out] job_id
10263 /// The id assigned to the job.
10264 ///
10266  const HAPI_Session * session,
10267  HAPI_NodeId node_id,
10268  HAPI_PartId part_id,
10269  const char * name,
10270  const HAPI_AttributeInfo * attr_info,
10271  const HAPI_UInt8 * data_array,
10272  int data_length,
10273  int start_index,
10274  int num_indices,
10275  int * job_id );
10276 
10277 /// @brief Set multiple attribute 8-bit int data to the same unique value
10278 /// asynchronously.
10279 ///
10280 /// @ingroup GeometrySetters Attributes
10281 ///
10282 /// @param[in] session
10283 /// The session of Houdini you are interacting with.
10284 /// See @ref HAPI_Sessions for more on sessions.
10285 /// Pass NULL to just use the default in-process session.
10286 /// <!-- default NULL -->
10287 ///
10288 /// @param[in] node_id
10289 /// The SOP node id.
10290 ///
10291 /// @param[in] part_id
10292 /// Currently not used. Just pass 0.
10293 ///
10294 /// @param[in] name
10295 /// Attribute name.
10296 /// <!-- string -->
10297 ///
10298 /// @param[in] attr_info
10299 /// ::HAPI_AttributeInfo used as input for what tuple size.
10300 /// you want. Also contains some sanity checks like
10301 /// data type. Generally should be the same struct
10302 /// returned by ::HAPI_GetAttributeInfo().
10303 ///
10304 /// @param[in] data_array
10305 /// A integer array at least the size of
10306 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10307 /// <!-- sizeparm data_length -->
10308 ///
10309 /// @param[in] data_length
10310 /// An integer of at least the size of
10311 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10312 ///
10313 /// @param[in] start_index
10314 /// First index of range. Must be at least 0 and at
10315 /// most ::HAPI_AttributeInfo::count - 1.
10316 /// <!-- default 0 -->
10317 ///
10318 /// @param[in] num_indices
10319 /// Must be at least 0 and at most
10320 /// ::HAPI_AttributeInfo::count - @p start_index.
10321 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10322 ///
10323 /// @param[out] job_id
10324 /// The id assigned to the job.
10325 ///
10327  const HAPI_Session * session,
10328  HAPI_NodeId node_id,
10329  HAPI_PartId part_id,
10330  const char * name,
10331  const HAPI_AttributeInfo * attr_info,
10332  const HAPI_Int8* data_array,
10333  int data_length,
10334  int start_index,
10335  int num_indices,
10336  int * job_id );
10337 
10338 /// @brief Set multiple attribute 16-bit int data to the same unique value
10339 /// asynchronously.
10340 ///
10341 /// @ingroup GeometrySetters Attributes
10342 ///
10343 /// @param[in] session
10344 /// The session of Houdini you are interacting with.
10345 /// See @ref HAPI_Sessions for more on sessions.
10346 /// Pass NULL to just use the default in-process session.
10347 /// <!-- default NULL -->
10348 ///
10349 /// @param[in] node_id
10350 /// The SOP node id.
10351 ///
10352 /// @param[in] part_id
10353 /// Currently not used. Just pass 0.
10354 ///
10355 /// @param[in] name
10356 /// Attribute name.
10357 /// <!-- string -->
10358 ///
10359 /// @param[in] attr_info
10360 /// ::HAPI_AttributeInfo used as input for what tuple size.
10361 /// you want. Also contains some sanity checks like
10362 /// data type. Generally should be the same struct
10363 /// returned by ::HAPI_GetAttributeInfo().
10364 ///
10365 /// @param[in] data_array
10366 /// A integer array at least the size of
10367 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10368 /// <!-- sizeparm data_length -->
10369 ///
10370 /// @param[in] data_length
10371 /// An integer of at least the size of
10372 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10373 ///
10374 /// @param[in] start_index
10375 /// First index of range. Must be at least 0 and at
10376 /// most ::HAPI_AttributeInfo::count - 1.
10377 /// <!-- default 0 -->
10378 ///
10379 /// @param[in] num_indices
10380 /// Must be at least 0 and at most
10381 /// ::HAPI_AttributeInfo::count - @p start_index.
10382 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10383 ///
10384 /// @param[out] job_id
10385 /// The id assigned to the job.
10386 ///
10388  const HAPI_Session* session,
10389  HAPI_NodeId node_id,
10390  HAPI_PartId part_id,
10391  const char* name,
10392  const HAPI_AttributeInfo* attr_info,
10393  const HAPI_Int16* data_array,
10394  int data_length,
10395  int start_index,
10396  int num_indices,
10397  int * job_id );
10398 
10399 /// @brief Set multiple attribute 64-bit int data to the same unique value
10400 /// asynchronously.
10401 ///
10402 /// @ingroup GeometrySetters Attributes
10403 ///
10404 /// @param[in] session
10405 /// The session of Houdini you are interacting with.
10406 /// See @ref HAPI_Sessions for more on sessions.
10407 /// Pass NULL to just use the default in-process session.
10408 /// <!-- default NULL -->
10409 ///
10410 /// @param[in] node_id
10411 /// The SOP node id.
10412 ///
10413 /// @param[in] part_id
10414 /// Currently not used. Just pass 0.
10415 ///
10416 /// @param[in] name
10417 /// Attribute name.
10418 /// <!-- string -->
10419 ///
10420 /// @param[in] attr_info
10421 /// ::HAPI_AttributeInfo used as input for what tuple size.
10422 /// you want. Also contains some sanity checks like
10423 /// data type. Generally should be the same struct
10424 /// returned by ::HAPI_GetAttributeInfo().
10425 ///
10426 /// @param[in] data_array
10427 /// A integer array at least the size of
10428 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10429 /// <!-- sizeparm data_length -->
10430 ///
10431 /// @param[in] data_length
10432 /// An integer of at least the size of
10433 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10434 ///
10435 /// @param[in] start_index
10436 /// First index of range. Must be at least 0 and at
10437 /// most ::HAPI_AttributeInfo::count - 1.
10438 /// <!-- default 0 -->
10439 ///
10440 /// @param[in] num_indices
10441 /// Must be at least 0 and at most
10442 /// ::HAPI_AttributeInfo::count - @p start_index.
10443 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10444 ///
10445 /// @param[out] job_id
10446 /// The id assigned to the job.
10447 ///
10449  const HAPI_Session* session,
10450  HAPI_NodeId node_id,
10451  HAPI_PartId part_id,
10452  const char* name,
10453  const HAPI_AttributeInfo* attr_info,
10454  const HAPI_Int64* data_array,
10455  int data_length,
10456  int start_index,
10457  int num_indices,
10458  int * job_id );
10459 
10460 /// @brief Set multiple attribute float data to the same unique value
10461 /// asynchronously.
10462 ///
10463 /// @ingroup GeometrySetters Attributes
10464 ///
10465 /// @param[in] session
10466 /// The session of Houdini you are interacting with.
10467 /// See @ref HAPI_Sessions for more on sessions.
10468 /// Pass NULL to just use the default in-process session.
10469 /// <!-- default NULL -->
10470 ///
10471 /// @param[in] node_id
10472 /// The SOP node id.
10473 ///
10474 /// @param[in] part_id
10475 /// Currently not used. Just pass 0.
10476 ///
10477 /// @param[in] name
10478 /// Attribute name.
10479 /// <!-- string -->
10480 ///
10481 /// @param[in] attr_info
10482 /// ::HAPI_AttributeInfo used as input for what tuple size.
10483 /// you want. Also contains some sanity checks like
10484 /// data type. Generally should be the same struct
10485 /// returned by ::HAPI_GetAttributeInfo().
10486 ///
10487 /// @param[in] data_array
10488 /// A floating point array at least the size of
10489 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10490 /// <!-- sizeparm data_length -->
10491 ///
10492 /// @param[in] data_length
10493 /// An integer of at least the size of
10494 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10495 ///
10496 /// @param[in] start_index
10497 /// First index of range. Must be at least 0 and at
10498 /// most ::HAPI_AttributeInfo::count - 1.
10499 /// <!-- default 0 -->
10500 ///
10501 /// @param[in] num_indices
10502 /// Must be at least 0 and at most
10503 /// ::HAPI_AttributeInfo::count - @p start_index.
10504 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10505 ///
10506 /// @param[out] job_id
10507 /// The id assigned to the job.
10508 ///
10510  const HAPI_Session* session,
10511  HAPI_NodeId node_id,
10512  HAPI_PartId part_id,
10513  const char* name,
10514  const HAPI_AttributeInfo* attr_info,
10515  const float* data_array,
10516  int data_length,
10517  int start_index,
10518  int num_indices,
10519  int * job_id );
10520 
10521 /// @brief Set multiple attribute 64-bit float data to the same unique
10522 /// asynchronously.
10523 ///
10524 /// @ingroup GeometrySetters Attributes
10525 ///
10526 /// @param[in] session
10527 /// The session of Houdini you are interacting with.
10528 /// See @ref HAPI_Sessions for more on sessions.
10529 /// Pass NULL to just use the default in-process session.
10530 /// <!-- default NULL -->
10531 ///
10532 /// @param[in] node_id
10533 /// The SOP node id.
10534 ///
10535 /// @param[in] part_id
10536 /// Currently not used. Just pass 0.
10537 ///
10538 /// @param[in] name
10539 /// Attribute name.
10540 /// <!-- string -->
10541 ///
10542 /// @param[in] attr_info
10543 /// ::HAPI_AttributeInfo used as input for what tuple size.
10544 /// you want. Also contains some sanity checks like
10545 /// data type. Generally should be the same struct
10546 /// returned by ::HAPI_GetAttributeInfo().
10547 ///
10548 /// @param[in] data_array
10549 /// A floating point array at least the size of
10550 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10551 /// <!-- sizeparm data_length -->
10552 ///
10553 /// @param[in] data_length
10554 /// An integer of at least the size of
10555 /// <tt>::HAPI_AttributeInfo::tupleSize</tt>.
10556 ///
10557 /// @param[in] start_index
10558 /// First index of range. Must be at least 0 and at
10559 /// most ::HAPI_AttributeInfo::count - 1.
10560 /// <!-- default 0 -->
10561 ///
10562 /// @param[in] num_indices
10563 /// Must be at least 0 and at most
10564 /// ::HAPI_AttributeInfo::count - @p start_index.
10565 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10566 ///
10567 /// @param[out] job_id
10568 /// The id assigned to the job.
10569 ///
10571  const HAPI_Session* session,
10572  HAPI_NodeId node_id,
10573  HAPI_PartId part_id,
10574  const char* name,
10575  const HAPI_AttributeInfo* attr_info,
10576  const double* data_array,
10577  int data_length,
10578  int start_index,
10579  int num_indices,
10580  int * job_id );
10581 
10582 /// @brief Set attribute dictionary data asynchronously. The dictionary data
10583 /// should be provided as JSON-encoded strings.
10584 ///
10585 /// @ingroup GeometrySetters Attributes
10586 ///
10587 /// @param[in] session
10588 /// The session of Houdini you are interacting with.
10589 /// See @ref HAPI_Sessions for more on sessions.
10590 /// Pass NULL to just use the default in-process session.
10591 /// <!-- default NULL -->
10592 ///
10593 /// @param[in] node_id
10594 /// The SOP node id.
10595 ///
10596 /// @param[in] part_id
10597 /// Currently not used. Just pass 0.
10598 ///
10599 /// @param[in] name
10600 /// Attribute name.
10601 /// <!-- string -->
10602 ///
10603 /// @param[in] attr_info
10604 /// ::HAPI_AttributeInfo used as input for what tuple size
10605 /// you want. Also contains some sanity checks like
10606 /// data type. Generally should be the same struct
10607 /// returned by ::HAPI_GetAttributeInfo().
10608 ///
10609 /// @param[in] data_array
10610 /// An ::HAPI_StringHandle array at least the size of
10611 /// <tt>length * ::HAPI_AttributeInfo::tupleSize</tt>.
10612 /// <!-- sizeparm length -->
10613 ///
10614 /// @param[in] start
10615 /// First index of range. Must be at least 0 and at
10616 /// most ::HAPI_AttributeInfo::count - 1.
10617 /// <!-- default 0 -->
10618 ///
10619 /// @param[in] length
10620 /// Must be at least 0 and at most
10621 /// ::HAPI_AttributeInfo::count - @p start.
10622 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10623 ///
10624 /// @param[out] job_id
10625 /// The id assigned to the job.
10626 ///
10628  const HAPI_Session* session,
10629  HAPI_NodeId node_id,
10630  HAPI_PartId part_id,
10631  const char* name,
10632  const HAPI_AttributeInfo* attr_info,
10633  const char** data_array,
10634  int start, int length,
10635  int * job_id );
10636 
10637 /// @brief Set integer array attribute data asynchronously.
10638 ///
10639 /// @ingroup GeometrySetters Attributes
10640 ///
10641 /// @param[in] session
10642 /// The session of Houdini you are interacting with.
10643 /// See @ref HAPI_Sessions for more on sessions.
10644 /// Pass NULL to just use the default in-process session.
10645 /// <!-- default NULL -->
10646 ///
10647 /// @param[in] node_id
10648 /// The SOP node id.
10649 ///
10650 /// @param[in] part_id
10651 /// Currently not used. Just pass 0.
10652 ///
10653 /// @param[in] name
10654 /// Attribute name.
10655 /// <!-- string -->
10656 ///
10657 /// @param[in] attr_info
10658 /// ::HAPI_AttributeInfo that contains the description for the
10659 /// attribute that is being set.
10660 ///
10661 /// @param[in] data_fixed_array
10662 /// An array containing the int values of the attribute.
10663 /// <!-- sizeparm data_fixed_length -->
10664 ///
10665 /// @param[in] data_fixed_length
10666 /// The total size of the data array. The size can be no greater
10667 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10668 /// of the attribute.
10669 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10670 ///
10671 /// @param[in] sizes_fixed_array
10672 /// An array of integers that contains the sizes of each
10673 /// attribute array. This is required because the attribute
10674 /// array for each geometry component can be of variable size.
10675 /// <!-- sizeparm sizes_fixed_length -->
10676 ///
10677 /// @param[in] start
10678 /// First index of range. Must be at least 0 and at most
10679 /// ::HAPI_AttributeInfo::count - 1.
10680 /// <!-- default 0 -->
10681 ///
10682 /// @param[in] sizes_fixed_length
10683 /// Must be at least 0 and at most
10684 /// ::HAPI_AttributeInfo::count - @p start.
10685 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10686 ///
10687 /// @param[out] job_id
10688 /// The id assigned to the job.
10689 ///
10691  const HAPI_Session * session,
10692  HAPI_NodeId node_id,
10693  HAPI_PartId part_id,
10694  const char * name,
10695  const HAPI_AttributeInfo * attr_info,
10696  const int * data_fixed_array,
10697  int data_fixed_length,
10698  const int * sizes_fixed_array,
10699  int start,
10700  int sizes_fixed_length,
10701  int * job_id );
10702 
10703 /// @brief Set unsigned 8-bit integer array attribute data asynchronously.
10704 ///
10705 /// @ingroup GeometrySetters Attributes
10706 ///
10707 /// @param[in] session
10708 /// The session of Houdini you are interacting with.
10709 /// See @ref HAPI_Sessions for more on sessions.
10710 /// Pass NULL to just use the default in-process session.
10711 /// <!-- default NULL -->
10712 ///
10713 /// @param[in] node_id
10714 /// The SOP node id.
10715 ///
10716 /// @param[in] part_id
10717 /// Currently not used. Just pass 0.
10718 ///
10719 /// @param[in] name
10720 /// Attribute name.
10721 /// <!-- string -->
10722 ///
10723 /// @param[in] attr_info
10724 /// ::HAPI_AttributeInfo that contains the description for the
10725 /// attribute that is being set.
10726 ///
10727 /// @param[in] data_fixed_array
10728 /// An array containing the HAPI_UInt8 values of the attribute.
10729 /// <!-- sizeparm data_fixed_length -->
10730 ///
10731 /// @param[in] data_fixed_length
10732 /// The total size of the data array. The size can be no greater
10733 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10734 /// of the attribute.
10735 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10736 ///
10737 /// @param[in] sizes_fixed_array
10738 /// An array of integers that contains the sizes of each
10739 /// attribute array. This is required because the attribute
10740 /// array for each geometry component can be of variable size.
10741 /// <!-- sizeparm sizes_fixed_length -->
10742 ///
10743 /// @param[in] start
10744 /// First index of range. Must be at least 0 and at most
10745 /// ::HAPI_AttributeInfo::count - 1.
10746 /// <!-- default 0 -->
10747 ///
10748 /// @param[in] sizes_fixed_length
10749 /// Must be at least 0 and at most
10750 /// ::HAPI_AttributeInfo::count - @p start.
10751 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10752 ///
10753 /// @param[out] job_id
10754 /// The id assigned to the job.
10755 ///
10757  const HAPI_Session * session,
10758  HAPI_NodeId node_id,
10759  HAPI_PartId part_id,
10760  const char * name,
10761  const HAPI_AttributeInfo * attr_info,
10762  const HAPI_UInt8 * data_fixed_array,
10763  int data_fixed_length,
10764  const int * sizes_fixed_array,
10765  int start,
10766  int sizes_fixed_length,
10767  int * job_id );
10768 
10769 /// @brief Set 8-bit integer array attribute data asynchronously.
10770 ///
10771 /// @ingroup GeometrySetters Attributes
10772 ///
10773 /// @param[in] session
10774 /// The session of Houdini you are interacting with.
10775 /// See @ref HAPI_Sessions for more on sessions.
10776 /// Pass NULL to just use the default in-process session.
10777 /// <!-- default NULL -->
10778 ///
10779 /// @param[in] node_id
10780 /// The SOP node id.
10781 ///
10782 /// @param[in] part_id
10783 /// Currently not used. Just pass 0.
10784 ///
10785 /// @param[in] name
10786 /// Attribute name.
10787 /// <!-- string -->
10788 ///
10789 /// @param[in] attr_info
10790 /// ::HAPI_AttributeInfo that contains the description for the
10791 /// attribute that is being set.
10792 ///
10793 /// @param[in] data_fixed_array
10794 /// An array containing the HAPI_Int8 values of the attribute.
10795 /// <!-- sizeparm data_fixed_length -->
10796 ///
10797 /// @param[in] data_fixed_length
10798 /// The total size of the data array. The size can be no greater
10799 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10800 /// of the attribute.
10801 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10802 ///
10803 /// @param[in] sizes_fixed_array
10804 /// An array of integers that contains the sizes of each
10805 /// attribute array. This is required because the attribute
10806 /// array for each geometry component can be of variable size.
10807 /// <!-- sizeparm sizes_fixed_length -->
10808 ///
10809 /// @param[in] start
10810 /// First index of range. Must be at least 0 and at most
10811 /// ::HAPI_AttributeInfo::count - 1.
10812 /// <!-- default 0 -->
10813 ///
10814 /// @param[in] sizes_fixed_length
10815 /// Must be at least 0 and at most
10816 /// ::HAPI_AttributeInfo::count - @p start.
10817 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10818 ///
10819 /// @param[out] job_id
10820 /// The id assigned to the job.
10821 ///
10823  const HAPI_Session * session,
10824  HAPI_NodeId node_id,
10825  HAPI_PartId part_id,
10826  const char * name,
10827  const HAPI_AttributeInfo * attr_info,
10828  const HAPI_Int8 * data_fixed_array,
10829  int data_fixed_length,
10830  const int * sizes_fixed_array,
10831  int start,
10832  int sizes_fixed_length,
10833  int * job_id );
10834 
10835 /// @brief Set 16-bit integer array attribute data asynchronously.
10836 ///
10837 /// @ingroup GeometrySetters Attributes
10838 ///
10839 /// @param[in] session
10840 /// The session of Houdini you are interacting with.
10841 /// See @ref HAPI_Sessions for more on sessions.
10842 /// Pass NULL to just use the default in-process session.
10843 /// <!-- default NULL -->
10844 ///
10845 /// @param[in] node_id
10846 /// The SOP node id.
10847 ///
10848 /// @param[in] part_id
10849 /// Currently not used. Just pass 0.
10850 ///
10851 /// @param[in] name
10852 /// Attribute name.
10853 /// <!-- string -->
10854 ///
10855 /// @param[in] attr_info
10856 /// ::HAPI_AttributeInfo that contains the description for the
10857 /// attribute that is being set.
10858 ///
10859 /// @param[in] data_fixed_array
10860 /// An array containing the HAPI_Int16 values of the attribute.
10861 /// <!-- sizeparm data_fixed_length -->
10862 ///
10863 /// @param[in] data_fixed_length
10864 /// The total size of the data array. The size can be no greater
10865 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10866 /// of the attribute.
10867 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10868 ///
10869 /// @param[in] sizes_fixed_array
10870 /// An array of integers that contains the sizes of each
10871 /// attribute array. This is required because the attribute
10872 /// array for each geometry component can be of variable size.
10873 /// <!-- sizeparm sizes_fixed_length -->
10874 ///
10875 /// @param[in] start
10876 /// First index of range. Must be at least 0 and at most
10877 /// ::HAPI_AttributeInfo::count - 1.
10878 /// <!-- default 0 -->
10879 ///
10880 /// @param[in] sizes_fixed_length
10881 /// Must be at least 0 and at most
10882 /// ::HAPI_AttributeInfo::count - @p start.
10883 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10884 ///
10885 /// @param[out] job_id
10886 /// The id assigned to the job.
10887 ///
10889  const HAPI_Session * session,
10890  HAPI_NodeId node_id,
10891  HAPI_PartId part_id,
10892  const char * name,
10893  const HAPI_AttributeInfo * attr_info,
10894  const HAPI_Int16 * data_fixed_array,
10895  int data_fixed_length,
10896  const int * sizes_fixed_array,
10897  int start,
10898  int sizes_fixed_length,
10899  int * job_id );
10900 
10901 /// @brief Set 64-bit integer array attribute data asynchronously.
10902 ///
10903 /// @ingroup GeometrySetters Attributes
10904 ///
10905 /// @param[in] session
10906 /// The session of Houdini you are interacting with.
10907 /// See @ref HAPI_Sessions for more on sessions.
10908 /// Pass NULL to just use the default in-process session.
10909 /// <!-- default NULL -->
10910 ///
10911 /// @param[in] node_id
10912 /// The SOP node id.
10913 ///
10914 /// @param[in] part_id
10915 /// Currently not used. Just pass 0.
10916 ///
10917 /// @param[in] name
10918 /// Attribute name.
10919 /// <!-- string -->
10920 ///
10921 /// @param[in] attr_info
10922 /// ::HAPI_AttributeInfo that contains the description for the
10923 /// attribute that is being set.
10924 ///
10925 /// @param[in] data_fixed_array
10926 /// An array containing the HAPI_Int64 values of the attribute.
10927 /// <!-- sizeparm data_fixed_length -->
10928 ///
10929 /// @param[in] data_fixed_length
10930 /// The total size of the data array. The size can be no greater
10931 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10932 /// of the attribute.
10933 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
10934 ///
10935 /// @param[in] sizes_fixed_array
10936 /// An array of integers that contains the sizes of each
10937 /// attribute array. This is required because the attribute
10938 /// array for each geometry component can be of variable size.
10939 /// <!-- sizeparm sizes_fixed_length -->
10940 ///
10941 /// @param[in] start
10942 /// First index of range. Must be at least 0 and at most
10943 /// ::HAPI_AttributeInfo::count - 1.
10944 /// <!-- default 0 -->
10945 ///
10946 /// @param[in] sizes_fixed_length
10947 /// Must be at least 0 and at most
10948 /// ::HAPI_AttributeInfo::count - @p start.
10949 /// <!-- source ::HAPI_AttributeInfo::count - start -->
10950 ///
10951 /// @param[out] job_id
10952 /// The id assigned to the job.
10953 ///
10955  const HAPI_Session * session,
10956  HAPI_NodeId node_id,
10957  HAPI_PartId part_id,
10958  const char * name,
10959  const HAPI_AttributeInfo * attr_info,
10960  const HAPI_Int64 * data_fixed_array,
10961  int data_fixed_length,
10962  const int * sizes_fixed_array,
10963  int start,
10964  int sizes_fixed_length,
10965  int * job_id );
10966 
10967 /// @brief Set float array attribute data asynchronously.
10968 ///
10969 /// @ingroup GeometrySetters Attributes
10970 ///
10971 /// @param[in] session
10972 /// The session of Houdini you are interacting with.
10973 /// See @ref HAPI_Sessions for more on sessions.
10974 /// Pass NULL to just use the default in-process session.
10975 /// <!-- default NULL -->
10976 ///
10977 /// @param[in] node_id
10978 /// The SOP node id.
10979 ///
10980 /// @param[in] part_id
10981 /// Currently not used. Just pass 0.
10982 ///
10983 /// @param[in] name
10984 /// Attribute name.
10985 /// <!-- string -->
10986 ///
10987 /// @param[in] attr_info
10988 /// ::HAPI_AttributeInfo that contains the description for the
10989 /// attribute that is being set.
10990 ///
10991 /// @param[in] data_fixed_array
10992 /// An array containing the float values of the attribute.
10993 /// <!-- sizeparm data_fixed_length -->
10994 ///
10995 /// @param[in] data_fixed_length
10996 /// The total size of the data array. The size can be no greater
10997 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
10998 /// of the attribute.
10999 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
11000 ///
11001 /// @param[in] sizes_fixed_array
11002 /// An array of integers that contains the sizes of each
11003 /// attribute array. This is required because the attribute
11004 /// array for each geometry component can be of variable size.
11005 /// <!-- sizeparm sizes_fixed_length -->
11006 ///
11007 /// @param[in] start
11008 /// First index of range. Must be at least 0 and at most
11009 /// ::HAPI_AttributeInfo::count - 1.
11010 /// <!-- default 0 -->
11011 ///
11012 /// @param[in] sizes_fixed_length
11013 /// Must be at least 0 and at most
11014 /// ::HAPI_AttributeInfo::count - @p start.
11015 /// <!-- source ::HAPI_AttributeInfo::count - start -->
11016 ///
11017 /// @param[out] job_id
11018 /// The id assigned to the job.
11019 ///
11021  const HAPI_Session * session,
11022  HAPI_NodeId node_id,
11023  HAPI_PartId part_id,
11024  const char * name,
11025  const HAPI_AttributeInfo * attr_info,
11026  const float * data_fixed_array,
11027  int data_fixed_length,
11028  const int * sizes_fixed_array,
11029  int start,
11030  int sizes_fixed_length,
11031  int * job_id );
11032 
11033 /// @brief Set 64-bit float array attribute data asynchronously.
11034 ///
11035 /// @ingroup GeometrySetters Attributes
11036 ///
11037 /// @param[in] session
11038 /// The session of Houdini you are interacting with.
11039 /// See @ref HAPI_Sessions for more on sessions.
11040 /// Pass NULL to just use the default in-process session.
11041 /// <!-- default NULL -->
11042 ///
11043 /// @param[in] node_id
11044 /// The SOP node id.
11045 ///
11046 /// @param[in] part_id
11047 /// Currently not used. Just pass 0.
11048 ///
11049 /// @param[in] name
11050 /// Attribute name.
11051 /// <!-- string -->
11052 ///
11053 /// @param[in] attr_info
11054 /// ::HAPI_AttributeInfo that contains the description for the
11055 /// attribute that is being set.
11056 ///
11057 /// @param[in] data_fixed_array
11058 /// An array containing the double values of the attribute.
11059 /// <!-- sizeparm data_fixed_length -->
11060 ///
11061 /// @param[in] data_fixed_length
11062 /// The total size of the data array. The size can be no greater
11063 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
11064 /// of the attribute.
11065 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
11066 ///
11067 /// @param[in] sizes_fixed_array
11068 /// An array of integers that contains the sizes of each
11069 /// attribute array. This is required because the attribute
11070 /// array for each geometry component can be of variable size.
11071 /// <!-- sizeparm sizes_fixed_length -->
11072 ///
11073 /// @param[in] start
11074 /// First index of range. Must be at least 0 and at most
11075 /// ::HAPI_AttributeInfo::count - 1.
11076 /// <!-- default 0 -->
11077 ///
11078 /// @param[in] sizes_fixed_length
11079 /// Must be at least 0 and at most
11080 /// ::HAPI_AttributeInfo::count - @p start.
11081 /// <!-- source ::HAPI_AttributeInfo::count - start -->
11082 ///
11083 /// @param[out] job_id
11084 /// The id assigned to the job.
11085 ///
11087  const HAPI_Session * session,
11088  HAPI_NodeId node_id,
11089  HAPI_PartId part_id,
11090  const char * name,
11091  const HAPI_AttributeInfo * attr_info,
11092  const double * data_fixed_array,
11093  int data_fixed_length,
11094  const int * sizes_fixed_array,
11095  int start,
11096  int sizes_fixed_length,
11097  int * job_id );
11098 
11099 /// @brief Set string array attribute data asynchronously.
11100 ///
11101 /// @ingroup GeometrySetters Attributes
11102 ///
11103 /// @param[in] session
11104 /// The session of Houdini you are interacting with.
11105 /// See @ref HAPI_Sessions for more on sessions.
11106 /// Pass NULL to just use the default in-process session.
11107 /// <!-- default NULL -->
11108 ///
11109 /// @param[in] node_id
11110 /// The SOP node id.
11111 ///
11112 /// @param[in] part_id
11113 /// Currently not used. Just pass 0.
11114 ///
11115 /// @param[in] name
11116 /// Attribute name.
11117 /// <!-- string -->
11118 ///
11119 /// @param[in] attr_info
11120 /// ::HAPI_AttributeInfo that contains the description for the
11121 /// attribute that is being set.
11122 ///
11123 /// @param[in] data_fixed_array
11124 /// An array containing the string values of the attribute.
11125 /// <!-- sizeparm data_fixed_length -->
11126 ///
11127 /// @param[in] data_fixed_length
11128 /// The total size of the data array. The size can be no greater
11129 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
11130 /// of the attribute.
11131 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
11132 ///
11133 /// @param[in] sizes_fixed_array
11134 /// An array of integers that contains the sizes of each
11135 /// attribute array. This is required because the attribute
11136 /// array for each geometry component can be of variable size.
11137 /// <!-- sizeparm sizes_fixed_length -->
11138 ///
11139 /// @param[in] start
11140 /// First index of range. Must be at least 0 and at most
11141 /// ::HAPI_AttributeInfo::count - 1.
11142 /// <!-- default 0 -->
11143 ///
11144 /// @param[in] sizes_fixed_length
11145 /// Must be at least 0 and at most
11146 /// ::HAPI_AttributeInfo::count - @p start.
11147 /// <!-- source ::HAPI_AttributeInfo::count - start -->
11148 ///
11149 /// @param[out] job_id
11150 /// The id assigned to the job.
11151 ///
11153  const HAPI_Session * session,
11154  HAPI_NodeId node_id,
11155  HAPI_PartId part_id,
11156  const char * name,
11157  const HAPI_AttributeInfo * attr_info,
11158  const char ** data_fixed_array,
11159  int data_fixed_length,
11160  const int * sizes_fixed_array,
11161  int start,
11162  int sizes_fixed_length,
11163  int * job_id );
11164 
11165 /// @brief Set attribute dictionary array data asynchronously. The dictionary
11166 /// should be provided as JSON-encoded strings.
11167 ///
11168 /// @ingroup GeometrySetters Attributes
11169 ///
11170 /// @param[in] session
11171 /// The session of Houdini you are interacting with.
11172 /// See @ref HAPI_Sessions for more on sessions.
11173 /// Pass NULL to just use the default in-process session.
11174 /// <!-- default NULL -->
11175 ///
11176 /// @param[in] node_id
11177 /// The SOP node id.
11178 ///
11179 /// @param[in] part_id
11180 /// Currently not used. Just pass 0.
11181 ///
11182 /// @param[in] name
11183 /// Attribute name.
11184 /// <!-- string -->
11185 ///
11186 /// @param[in] attr_info
11187 /// ::HAPI_AttributeInfo that contains the description for the
11188 /// attribute that is being set.
11189 ///
11190 /// @param[in] data_fixed_array
11191 /// An array containing the dictionary values of the attribute.
11192 /// <!-- sizeparm data_fixed_length -->
11193 ///
11194 /// @param[in] data_fixed_length
11195 /// The total size of the data array. The size can be no greater
11196 /// than the <tt>::HAPI_AttributeInfo::totalArrayElements</tt>
11197 /// of the attribute.
11198 /// <!-- source ::HAPI_AttributeInfo::totalArrayElements -->
11199 ///
11200 /// @param[in] sizes_fixed_array
11201 /// An array of integers that contains the sizes of each
11202 /// attribute array. This is required because the attribute
11203 /// array for each geometry component can be of variable size.
11204 /// <!-- sizeparm sizes_fixed_length -->
11205 ///
11206 /// @param[in] start
11207 /// First index of range. Must be at least 0 and at most
11208 /// ::HAPI_AttributeInfo::count - 1.
11209 /// <!-- default 0 -->
11210 ///
11211 /// @param[in] sizes_fixed_length
11212 /// Must be at least 0 and at most
11213 /// ::HAPI_AttributeInfo::count - @p start.
11214 /// <!-- source ::HAPI_AttributeInfo::count - start -->
11215 ///
11216 /// @param[out] job_id
11217 /// The id assigned to the job.
11218 ///
11220  const HAPI_Session * session,
11221  HAPI_NodeId node_id,
11222  HAPI_PartId part_id,
11223  const char * name,
11224  const HAPI_AttributeInfo * attr_info,
11225  const char ** data_fixed_array,
11226  int data_fixed_length,
11227  const int * sizes_fixed_array,
11228  int start,
11229  int sizes_fixed_length,
11230  int * job_id );
11231 
11232 /// @brief Add a group to the input geo with the given type and name.
11233 ///
11234 /// @ingroup GeometrySetters
11235 ///
11236 /// @param[in] session
11237 /// The session of Houdini you are interacting with.
11238 /// See @ref HAPI_Sessions for more on sessions.
11239 /// Pass NULL to just use the default in-process session.
11240 /// <!-- default NULL -->
11241 ///
11242 /// @param[in] node_id
11243 /// The SOP node id.
11244 ///
11245 /// @param[in] part_id
11246 /// Currently not used. Just pass 0.
11247 ///
11248 /// @param[in] group_type
11249 /// The group type.
11250 ///
11251 /// @param[in] group_name
11252 /// Name of new group to be added.
11253 /// <!-- string -->
11254 ///
11255 HAPI_DECL HAPI_AddGroup( const HAPI_Session * session,
11256  HAPI_NodeId node_id,
11257  HAPI_PartId part_id,
11258  HAPI_GroupType group_type,
11259  const char * group_name );
11260 
11261 /// @brief Remove a group from the input geo with the given type and name.
11262 ///
11263 /// @ingroup GeometrySetters
11264 ///
11265 /// @param[in] session
11266 /// The session of Houdini you are interacting with.
11267 /// See @ref HAPI_Sessions for more on sessions.
11268 /// Pass NULL to just use the default in-process session.
11269 /// <!-- default NULL -->
11270 ///
11271 /// @param[in] node_id
11272 /// The SOP node id.
11273 ///
11274 /// @param[in] part_id
11275 /// Currently not used. Just pass 0.
11276 ///
11277 /// @param[in] group_type
11278 /// The group type.
11279 ///
11280 /// @param[in] group_name
11281 /// Name of the group to be removed
11282 /// <!-- string -->
11283 ///
11284 HAPI_DECL HAPI_DeleteGroup( const HAPI_Session * session,
11285  HAPI_NodeId node_id,
11286  HAPI_PartId part_id,
11287  HAPI_GroupType group_type,
11288  const char * group_name );
11289 
11290 /// @brief Set group membership.
11291 ///
11292 /// @ingroup GeometrySetters
11293 ///
11294 /// @param[in] session
11295 /// The session of Houdini you are interacting with.
11296 /// See @ref HAPI_Sessions for more on sessions.
11297 /// Pass NULL to just use the default in-process session.
11298 /// <!-- default NULL -->
11299 ///
11300 /// @param[in] node_id
11301 /// The SOP node id.
11302 ///
11303 /// @param[in] part_id
11304 /// Currently not used. Just pass 0.
11305 /// <!-- default 0 -->
11306 ///
11307 /// @param[in] group_type
11308 /// The group type.
11309 ///
11310 /// @param[in] group_name
11311 /// The group name.
11312 /// <!-- string -->
11313 ///
11314 /// @param[in] membership_array
11315 /// Array of ints that represent the membership of this
11316 /// group. Should be the size given by
11317 /// ::HAPI_PartInfo_GetElementCountByGroupType() with
11318 /// @p group_type and the ::HAPI_PartInfo of @p part_id.
11319 /// <!-- sizeparm length -->
11320 ///
11321 /// @param[in] start
11322 /// Start offset into the membership array. Must be
11323 /// less than ::HAPI_PartInfo_GetElementCountByGroupType().
11324 /// <!-- default 0 -->
11325 ///
11326 /// @param[in] length
11327 /// Should be less than or equal to the size
11328 /// of @p membership_array. When setting edge group membership,
11329 /// this parameter should be set to the number of points (which
11330 /// are used to implicitly define the edges), not to the number
11331 /// edges in the group.
11332 /// <!-- source ::HAPI_PartInfo_GetElementCountByGroupType -->
11333 ///
11335  HAPI_NodeId node_id,
11336  HAPI_PartId part_id,
11337  HAPI_GroupType group_type,
11338  const char * group_name,
11339  const int * membership_array,
11340  int start, int length );
11341 
11342 /// @brief Commit the current input geometry to the cook engine. Nodes
11343 /// that use this geometry node will re-cook using the input
11344 /// geometry given through the geometry setter API calls.
11345 ///
11346 /// @ingroup GeometrySetters
11347 ///
11348 /// @param[in] session
11349 /// The session of Houdini you are interacting with.
11350 /// See @ref HAPI_Sessions for more on sessions.
11351 /// Pass NULL to just use the default in-process session.
11352 /// <!-- default NULL -->
11353 ///
11354 /// @param[in] node_id
11355 /// The SOP node id.
11356 ///
11357 HAPI_DECL HAPI_CommitGeo( const HAPI_Session * session,
11358  HAPI_NodeId node_id );
11359 
11360 /// @brief Remove all changes that have been committed to this
11361 /// geometry. If this is an intermediate result node (Edit SOP), all
11362 /// deltas will be removed. If it's any other type of node, the node
11363 /// will be unlocked if it is locked.
11364 ///
11365 /// @ingroup GeometrySetters
11366 ///
11367 /// @param[in] session
11368 /// The session of Houdini you are interacting with.
11369 /// See @ref HAPI_Sessions for more on sessions.
11370 /// Pass NULL to just use the default in-process session.
11371 /// <!-- default NULL -->
11372 ///
11373 /// @param[in] node_id
11374 /// The SOP node id.
11375 ///
11376 HAPI_DECL HAPI_RevertGeo( const HAPI_Session * session,
11377  HAPI_NodeId node_id );
11378 
11379 /// @defgroup Materials
11380 /// Functions for working with materials
11381 
11382 /// @brief Get material ids by face/primitive. The material ids returned
11383 /// will be valid as long as the asset is alive. You should query
11384 /// this list after every cook to see if the material assignments
11385 /// have changed. You should also query each material individually
11386 /// using ::HAPI_GetMaterialInfo() to see if it is dirty and needs
11387 /// to be re-imported.
11388 ///
11389 /// @ingroup Materials
11390 ///
11391 /// @param[in] session
11392 /// The session of Houdini you are interacting with.
11393 /// See @ref HAPI_Sessions for more on sessions.
11394 /// Pass NULL to just use the default in-process session.
11395 /// <!-- default NULL -->
11396 ///
11397 /// @param[in] geometry_node_id
11398 /// The geometry node id.
11399 ///
11400 /// @param[in] part_id
11401 /// The part id.
11402 ///
11403 /// @param[out] are_all_the_same
11404 /// (optional) If true, all faces on this part have the
11405 /// same material assignment. You can pass NULL here.
11406 ///
11407 /// @param[out] material_ids_array
11408 /// An array of ::HAPI_NodeId at least the size of
11409 /// @p length and at most the size of
11410 /// ::HAPI_PartInfo::faceCount.
11411 /// <!-- sizeparm length -->
11412 ///
11413 /// @param[in] start
11414 /// The starting index into the list of faces from which
11415 /// you wish to get the material ids from. Note that
11416 /// this should be less than ::HAPI_PartInfo::faceCount.
11417 /// <!-- default 0 -->
11418 ///
11419 /// @param[in] length
11420 /// The number of material ids you wish to get. Note that
11421 /// this should be at most:
11422 /// ::HAPI_PartInfo::faceCount - @p start.
11423 /// <!-- source ::HAPI_PartInfo::faceCount - start -->
11424 ///
11426  HAPI_NodeId geometry_node_id,
11427  HAPI_PartId part_id,
11428  HAPI_Bool * are_all_the_same,
11429  HAPI_NodeId * material_ids_array,
11430  int start, int length );
11431 
11432 /// @brief Get the material info.
11433 ///
11434 /// @ingroup Materials
11435 ///
11436 /// @param[in] session
11437 /// The session of Houdini you are interacting with.
11438 /// See @ref HAPI_Sessions for more on sessions.
11439 /// Pass NULL to just use the default in-process session.
11440 /// <!-- default NULL -->
11441 ///
11442 /// @param[in] material_node_id
11443 /// The material node id.
11444 ///
11445 /// @param[out] material_info
11446 /// The returned material info.
11447 ///
11449  HAPI_NodeId material_node_id,
11450  HAPI_MaterialInfo * material_info );
11451 
11452 /// @brief Render a single texture from a COP to an image for
11453 /// later extraction.
11454 ///
11455 /// @ingroup Materials
11456 ///
11457 /// Note that you must call this method,
11458 /// ::HAPI_RenderCOPOutputToImage(), or ::HAPI_RenderTextureToImage()
11459 /// before any of the other material APIs.
11460 ///
11461 /// @param[in] session
11462 /// The session of Houdini you are interacting with.
11463 /// See @ref HAPI_Sessions for more on sessions.
11464 /// Pass NULL to just use the default in-process session.
11465 /// <!-- default NULL -->
11466 ///
11467 /// @param[in] cop_node_id
11468 /// The COP node id.
11469 ///
11471  HAPI_NodeId cop_node_id );
11472 
11473 /// @brief Render a single texture from a COP to an image for
11474 /// later extraction. COPs may have multiple outputs,
11475 /// so this method lets you select which output to use.
11476 ///
11477 /// @ingroup Materials
11478 ///
11479 /// Note that you must call this method,
11480 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderTextureToImage()
11481 /// before any of the other material APIs.
11482 ///
11483 /// @param[in] session
11484 /// The session of Houdini you are interacting with.
11485 /// See @ref HAPI_Sessions for more on sessions.
11486 /// Pass NULL to just use the default in-process session.
11487 /// <!-- default NULL -->
11488 ///
11489 /// @param[in] cop_node_id
11490 /// The COP node id.
11491 ///
11492 /// @param[in] cop_output_name
11493 /// The name of the output to extract. Passing in
11494 /// an empty string will default to the COP's first output.
11495 /// <!-- string -->
11496 ///
11498  HAPI_NodeId cop_node_id,
11499  const char * cop_output_name );
11500 
11501 /// @brief Render only a single texture to an image for later extraction.
11502 /// An example use of this method might be to render the diffuse,
11503 /// normal, and bump texture maps of a material to individual
11504 /// texture files for use within the client application.
11505 ///
11506 /// Note that you must call this method,
11507 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11508 /// before any of the other material APIs.
11509 ///
11510 /// @ingroup Materials
11511 ///
11512 /// @param[in] session
11513 /// The session of Houdini you are interacting with.
11514 /// See @ref HAPI_Sessions for more on sessions.
11515 /// Pass NULL to just use the default in-process session.
11516 /// <!-- default NULL -->
11517 ///
11518 /// @param[in] material_node_id
11519 /// The material node id.
11520 ///
11521 /// @param[in] parm_id
11522 /// This is the index in the parameter list of the
11523 /// material_id's node of the parameter containing the
11524 /// texture map file path.
11525 ///
11527  HAPI_NodeId material_node_id,
11528  HAPI_ParmId parm_id );
11529 
11530 /// @brief Get information about the image that was just rendered, like
11531 /// resolution and default file format. This information will be
11532 /// used when extracting planes to an image.
11533 ///
11534 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11535 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11536 /// first for this method call to make sense.
11537 ///
11538 /// @ingroup Materials
11539 ///
11540 /// @param[in] session
11541 /// The session of Houdini you are interacting with.
11542 /// See @ref HAPI_Sessions for more on sessions.
11543 /// Pass NULL to just use the default in-process session.
11544 /// <!-- default NULL -->
11545 ///
11546 /// @param[in] material_node_id
11547 /// The material node id.
11548 ///
11549 /// @param[out] image_info
11550 /// The struct containing the image information.
11551 ///
11552 HAPI_DECL HAPI_GetImageInfo( const HAPI_Session * session,
11553  HAPI_NodeId material_node_id,
11554  HAPI_ImageInfo * image_info );
11555 
11556 /// @brief Set image information like resolution and file format.
11557 /// This information will be used when extracting planes to
11558 /// an image.
11559 ///
11560 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11561 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11562 /// first for this method call to make sense.
11563 ///
11564 /// You should also first call ::HAPI_GetImageInfo() to get the
11565 /// current Image Info and change only the properties
11566 /// you don't like.
11567 ///
11568 /// @ingroup Materials
11569 ///
11570 /// @param[in] session
11571 /// The session of Houdini you are interacting with.
11572 /// See @ref HAPI_Sessions for more on sessions.
11573 /// Pass NULL to just use the default in-process session.
11574 /// <!-- default NULL -->
11575 ///
11576 /// @param[in] material_node_id
11577 /// The material node id.
11578 ///
11579 /// @param[in] image_info
11580 /// The struct containing the new image information.
11581 ///
11582 HAPI_DECL HAPI_SetImageInfo( const HAPI_Session * session,
11583  HAPI_NodeId material_node_id,
11584  const HAPI_ImageInfo * image_info );
11585 
11586 /// @brief Get the number of image planes for the just rendered image.
11587 ///
11588 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11589 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11590 /// first for this method call to make sense.
11591 ///
11592 /// @ingroup Materials
11593 ///
11594 /// @param[in] session
11595 /// The session of Houdini you are interacting with.
11596 /// See @ref HAPI_Sessions for more on sessions.
11597 /// Pass NULL to just use the default in-process session.
11598 /// <!-- default NULL -->
11599 ///
11600 /// @param[in] material_node_id
11601 /// The material node id.
11602 ///
11603 /// @param[out] image_plane_count
11604 /// The number of image planes.
11605 ///
11607  HAPI_NodeId material_node_id,
11608  int * image_plane_count );
11609 
11610 /// @brief Get the names of the image planes of the just rendered image.
11611 ///
11612 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11613 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11614 /// first for this method call to make sense.
11615 ///
11616 /// You should also call ::HAPI_GetImagePlaneCount() first to get
11617 /// the total number of image planes so you know how large the
11618 /// image_planes string handle array should be.
11619 ///
11620 /// @ingroup Materials
11621 ///
11622 /// @param[in] session
11623 /// The session of Houdini you are interacting with.
11624 /// See @ref HAPI_Sessions for more on sessions.
11625 /// Pass NULL to just use the default in-process session.
11626 /// <!-- default NULL -->
11627 ///
11628 /// @param[in] material_node_id
11629 /// The material node id.
11630 ///
11631 /// @param[out] image_planes_array
11632 /// The image plane names.
11633 /// <!-- sizeparm image_plane_count -->
11634 ///
11635 /// @param[in] image_plane_count
11636 /// The number of image planes to get names for. This
11637 /// must be less than or equal to the count returned
11638 /// by ::HAPI_GetImagePlaneCount().
11639 /// <!-- source ::HAPI_GetImagePlaneCount -->
11640 ///
11641 HAPI_DECL HAPI_GetImagePlanes( const HAPI_Session * session,
11642  HAPI_NodeId material_node_id,
11643  HAPI_StringHandle * image_planes_array,
11644  int image_plane_count );
11645 
11646 /// @brief Extract a rendered image to a file.
11647 ///
11648 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11649 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11650 /// first for this method call to make sense.
11651 ///
11652 /// @ingroup Materials
11653 ///
11654 /// @param[in] session
11655 /// The session of Houdini you are interacting with.
11656 /// See @ref HAPI_Sessions for more on sessions.
11657 /// Pass NULL to just use the default in-process session.
11658 /// <!-- default NULL -->
11659 ///
11660 /// @param[in] material_node_id
11661 /// The material node id.
11662 ///
11663 /// @param[in] image_file_format_name
11664 /// The image file format name you wish the image to be
11665 /// extracted as. You can leave this parameter NULL to
11666 /// get the image in the original format if it comes from
11667 /// another texture file or in the default HAPI format,
11668 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11669 /// is generated.
11670 ///
11671 /// You can get some of the very common standard image
11672 /// file format names from HAPI_Common.h under the
11673 /// "Defines" section.
11674 ///
11675 /// You can also get a list of all supported file formats
11676 /// (and the exact names this parameter expects)
11677 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11678 /// list will include custom file formats you created via
11679 /// custom DSOs (see HDK docs about IMG_Format). You will
11680 /// get back a list of ::HAPI_ImageFileFormat. This
11681 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11682 /// of a given image file format.
11683 /// <!-- string -->
11684 ///
11685 /// @param[in] image_planes
11686 /// The image planes you wish to extract into the file.
11687 /// Multiple image planes should be separated by spaces.
11688 /// <!-- string -->
11689 ///
11690 /// @param[in] destination_folder_path
11691 /// The folder where the image file should be created.
11692 /// <!-- string -->
11693 ///
11694 /// @param[in] destination_file_name
11695 /// Optional parameter to overwrite the name of the
11696 /// extracted texture file. This should NOT include
11697 /// the extension as the file type will be decided
11698 /// by the ::HAPI_ImageInfo you can set using
11699 /// ::HAPI_SetImageInfo(). You still have to use
11700 /// destination_file_path to get the final file path.
11701 ///
11702 /// Pass in NULL to have the file name be automatically
11703 /// generated from the name of the material SHOP node,
11704 /// the name of the texture map parameter if the
11705 /// image was rendered from a texture, and the image
11706 /// plane names specified.
11707 /// <!-- string -->
11708 ///
11709 /// @param[out] destination_file_path
11710 /// The full path string handle, including the
11711 /// destination_folder_path and the texture file name,
11712 /// to the extracted file. Note that this string handle
11713 /// will only be valid until the next call to
11714 /// this function.
11715 ///
11717  HAPI_NodeId material_node_id,
11718  const char * image_file_format_name,
11719  const char * image_planes,
11720  const char * destination_folder_path,
11721  const char * destination_file_name,
11722  int * destination_file_path );
11723 /// @brief Get the file name that this image would be saved to
11724 ///
11725 /// Check to see what file path HAPI_ExtractImageToFile would have
11726 /// saved to given the same parms. Perhaps you might wish to see
11727 /// if it already exists before extracting.
11728 ///
11729 /// @ingroup Materials
11730 ///
11731 /// @param[in] session
11732 /// The session of Houdini you are interacting with.
11733 /// See @ref HAPI_Sessions for more on sessions.
11734 /// Pass NULL to just use the default in-process session.
11735 /// <!-- default NULL -->
11736 ///
11737 /// @param[in] material_node_id
11738 /// The material node id.
11739 ///
11740 /// @param[in] image_file_format_name
11741 /// The image file format name you wish the image to be
11742 /// extracted as. See HAPI_ExtractImageToFile for more information.
11743 /// <!-- string -->
11744 ///
11745 /// @param[in] image_planes
11746 /// The image planes you wish to extract into the file.
11747 /// Multiple image planes should be separated by spaces.
11748 /// <!-- string -->
11749 ///
11750 /// @param[in] destination_folder_path
11751 /// The folder where the image file should be created.
11752 /// <!-- string -->
11753 ///
11754 /// @param[in] destination_file_name
11755 /// Optional parameter to overwrite the name of the
11756 /// extracted texture file. See HAPI_ExtractImageToFile for more information.
11757 /// <!-- string -->
11758 ///
11759 /// @param[in] texture_parm_id
11760 /// The index in the parameter list of the material node.
11761 /// of the parameter containing the texture map file path
11762 ///
11763 /// @param[out] destination_file_path
11764 /// The full path string handle, including the
11765 /// destination_folder_path and the texture file name,
11766 /// to the extracted file. Note that this string handle
11767 /// will only be valid until the next call to
11768 /// this function.
11769 ///
11771  HAPI_NodeId material_node_id,
11772  const char * image_file_format_name,
11773  const char * image_planes,
11774  const char * destination_folder_path,
11775  const char * destination_file_name,
11776  HAPI_ParmId texture_parm_id,
11777  int * destination_file_path );
11778 
11779 /// @brief Extract a rendered image to memory.
11780 ///
11781 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11782 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11783 /// first for this method call to make sense.
11784 ///
11785 /// Also note that this function will do all the work of
11786 /// extracting and compositing the image into a memory buffer
11787 /// but will not return to you that buffer, only its size. Use
11788 /// the returned size to allocated a sufficiently large buffer
11789 /// and call ::HAPI_GetImageMemoryBuffer() to fill your buffer
11790 /// with the just extracted image.
11791 ///
11792 /// @ingroup Materials
11793 ///
11794 /// @param[in] session
11795 /// The session of Houdini you are interacting with.
11796 /// See @ref HAPI_Sessions for more on sessions.
11797 /// Pass NULL to just use the default in-process session.
11798 /// <!-- default NULL -->
11799 ///
11800 /// @param[in] material_node_id
11801 /// The material node id.
11802 ///
11803 /// @param[in] image_file_format_name
11804 /// The image file format name you wish the image to be
11805 /// extracted as. You can leave this parameter NULL to
11806 /// get the image in the original format if it comes from
11807 /// another texture file or in the default HAPI format,
11808 /// which is ::HAPI_DEFAULT_IMAGE_FORMAT_NAME, if the image
11809 /// is generated.
11810 ///
11811 /// You can get some of the very common standard image
11812 /// file format names from HAPI_Common.h under the
11813 /// "Defines" section.
11814 ///
11815 /// You can also get a list of all supported file formats
11816 /// (and the exact names this parameter expects)
11817 /// by using ::HAPI_GetSupportedImageFileFormats(). This
11818 /// list will include custom file formats you created via
11819 /// custom DSOs (see HDK docs about IMG_Format). You will
11820 /// get back a list of ::HAPI_ImageFileFormat. This
11821 /// parameter expects the ::HAPI_ImageFileFormat::nameSH
11822 /// of a given image file format.
11823 /// <!-- string -->
11824 ///
11825 /// @param[in] image_planes
11826 /// The image planes you wish to extract into the file.
11827 /// Multiple image planes should be separated by spaces.
11828 /// <!-- string -->
11829 ///
11830 /// @param[out] buffer_size
11831 /// The extraction will be done to an internal buffer
11832 /// who's size you get via this parameter. Use the
11833 /// returned buffer_size when calling
11834 /// ::HAPI_GetImageMemoryBuffer() to get the image
11835 /// buffer you just extracted.
11836 ///
11838  HAPI_NodeId material_node_id,
11839  const char * image_file_format_name,
11840  const char * image_planes,
11841  int * buffer_size );
11842 
11843 /// @brief Fill your allocated buffer with the just extracted
11844 /// image buffer.
11845 ///
11846 /// Note that you must call one of ::HAPI_RenderTextureToImage(),
11847 /// ::HAPI_RenderCOPToImage(), or ::HAPI_RenderCOPOutputToImage()
11848 /// first for this method call to make sense.
11849 ///
11850 /// Also note that you must call ::HAPI_ExtractImageToMemory()
11851 /// first in order to perform the extraction and get the
11852 /// extracted image buffer size that you need to know how much
11853 /// memory to allocated to fit your extracted image.
11854 ///
11855 /// @ingroup Materials
11856 ///
11857 /// @param[in] session
11858 /// The session of Houdini you are interacting with.
11859 /// See @ref HAPI_Sessions for more on sessions.
11860 /// Pass NULL to just use the default in-process session.
11861 /// <!-- default NULL -->
11862 ///
11863 /// @param[in] material_node_id
11864 /// The material node id.
11865 ///
11866 /// @param[out] buffer
11867 /// The buffer passed in here will be filled with the
11868 /// image buffer created during the call to
11869 /// ::HAPI_ExtractImageToMemory().
11870 /// <!-- sizeparm length -->
11871 ///
11872 /// @param[in] length
11873 /// Sanity check. This size should be the same as the
11874 /// size allocated for the buffer passed in and should
11875 /// be at least as large as the buffer_size returned by
11876 /// the call to ::HAPI_ExtractImageToMemory().
11877 /// <!-- source ::HAPI_ExtractImageToMemory -->
11878 ///
11880  HAPI_NodeId material_node_id,
11881  char * buffer, int length );
11882 
11883 /// @brief Get the number of supported texture file formats.
11884 ///
11885 /// @ingroup Materials
11886 ///
11887 /// @param[in] session
11888 /// The session of Houdini you are interacting with.
11889 /// See @ref HAPI_Sessions for more on sessions.
11890 /// Pass NULL to just use the default in-process session.
11891 /// <!-- default NULL -->
11892 ///
11893 /// @param[out] file_format_count
11894 /// The number of supported texture file formats.
11895 ///
11897  int * file_format_count );
11898 
11899 /// @brief Get a list of support image file formats - their names,
11900 /// descriptions and a list of recognized extensions.
11901 ///
11902 /// Note that you MUST call
11903 /// ::HAPI_GetSupportedImageFileFormatCount()
11904 /// before calling this function for the first time.
11905 ///
11906 /// @ingroup Materials
11907 ///
11908 /// @param[in] session
11909 /// The session of Houdini you are interacting with.
11910 /// See @ref HAPI_Sessions for more on sessions.
11911 /// Pass NULL to just use the default in-process session.
11912 /// <!-- default NULL -->
11913 ///
11914 /// @param[out] formats_array
11915 /// The list of ::HAPI_ImageFileFormat structs to
11916 /// be filled.
11917 /// <!-- sizeparm file_format_count -->
11918 ///
11919 /// @param[in] file_format_count
11920 /// The number of supported texture file formats. This
11921 /// should be at least as large as the count returned
11922 /// by ::HAPI_GetSupportedImageFileFormatCount().
11923 /// <!-- source ::HAPI_GetSupportedImageFileFormatCount -->
11924 ///
11926  const HAPI_Session * session,
11927  HAPI_ImageFileFormat * formats_array,
11928  int file_format_count );
11929 
11930 /// @brief Loads some raw image data into a COP node.
11931 ///
11932 /// This method expects the image data to be in linear color space.
11933 /// It will not do any color space conversions for you; the data
11934 /// must be converted beforehand.
11935 ///
11936 /// @ingroup Materials
11937 ///
11938 /// @param[in] session
11939 /// The session of Houdini you are interacting with.
11940 /// See @ref HAPI_Sessions for more on sessions.
11941 /// Pass NULL to just use the default in-process session.
11942 /// <!-- default NULL -->
11943 ///
11944 /// @param[in] parent_node_id
11945 /// The node that the copnet containing the texture will be
11946 /// created in, or -1 if the parent is the image manager.
11947 ///
11948 /// @param[in] width
11949 /// The width of the image in pixels. @p width * @p height *
11950 /// channel count (implied by @p packing) should equal the size
11951 /// of @p data_array.
11952 ///
11953 /// @param[in] height
11954 /// The height of the image in pixels. @p width * @p height *
11955 /// channel count (implied by @p packing) should equal the size
11956 /// of @p data_array.
11957 ///
11958 /// @param[in] packing
11959 /// How the image data is packed (single-channel, RBGA, etc).
11960 ///
11961 /// @param[in] flip_x
11962 /// Whether to flip the image horizontally.
11963 ///
11964 /// @param[in] flip_y
11965 /// Whether to flip the image vertically.
11966 ///
11967 /// @param[in] data_array
11968 /// A float array representing the image's pixel data. Values
11969 /// should be between 0.0 and 1.0. The data should be packed
11970 /// according to @p packing.
11971 /// <!-- sizeparm length -->
11972 ///
11973 /// @param[in] start
11974 /// The index of the first value of @p data_array to use.
11975 /// Must be at least 0 and at most (size of @p data_array - 1).
11976 /// <!-- min 0 -->
11977 /// <!-- default 0 -->
11978 ///
11979 /// @param[in] length
11980 /// How much of @p data_array to use. Must be at least 0
11981 /// and at most (size of @p data_array - start).
11982 /// <!-- min 0 -->
11983 ///
11984 /// @param[out] new_node_id
11985 /// Newly created node's id. Use ::HAPI_GetNodeInfo()
11986 /// to get more information about the node.
11987 ///
11988 HAPI_DECL HAPI_CreateCOPImage( const HAPI_Session * session,
11989  HAPI_NodeId parent_node_id,
11990  const int width,
11991  const int height,
11992  const HAPI_ImagePacking packing,
11993  HAPI_Bool flip_x,
11994  HAPI_Bool flip_y,
11995  const float * data_array,
11996  int start, int length,
11997  HAPI_NodeId * new_node_id);
11998 
11999 /// @defgroup Animation
12000 /// Functions for working with animation.
12001 
12002 /// @brief Set an animation curve on a parameter of an exposed node.
12003 ///
12004 /// @ingroup Animation
12005 ///
12006 /// @param[in] session
12007 /// The session of Houdini you are interacting with.
12008 /// See @ref HAPI_Sessions for more on sessions.
12009 /// Pass NULL to just use the default in-process session.
12010 /// <!-- default NULL -->
12011 ///
12012 /// @param[in] node_id
12013 /// The exposed node id.
12014 ///
12015 /// @param[in] parm_id
12016 /// The id of an exposed parameter within the node.
12017 /// @param[in] parm_index
12018 /// The index of the parameter, if it is for example
12019 /// a 3 tuple
12020 ///
12021 /// @param[in] curve_keyframes_array
12022 /// An array of ::HAPI_Keyframe structs that describes
12023 /// the keys on this curve.
12024 /// <!-- sizeparm keyframe_count -->
12025 ///
12026 /// @param[in] keyframe_count
12027 /// The number of keys on the curve.
12028 ///
12029 HAPI_DECL HAPI_SetAnimCurve( const HAPI_Session * session,
12030  HAPI_NodeId node_id, HAPI_ParmId parm_id,
12031  int parm_index,
12032  const HAPI_Keyframe * curve_keyframes_array,
12033  int keyframe_count );
12034 
12035 /// @brief A specialized convenience function to set the T,R,S values
12036 /// on an exposed node.
12037 ///
12038 /// @ingroup Animation
12039 ///
12040 /// @param[in] session
12041 /// The session of Houdini you are interacting with.
12042 /// See @ref HAPI_Sessions for more on sessions.
12043 /// Pass NULL to just use the default in-process session.
12044 /// <!-- default NULL -->
12045 ///
12046 /// @param[in] node_id
12047 /// The exposed node id.
12048 ///
12049 /// @param[in] trans_comp
12050 /// A value of ::HAPI_TransformComponent that
12051 /// identifies the particular component of the
12052 /// transform to attach the curve to, for example
12053 /// ::HAPI_TRANSFORM_TX.
12054 ///
12055 /// @param[in] curve_keyframes_array
12056 /// An array of ::HAPI_Keyframe structs that describes
12057 /// the keys on this curve.
12058 /// <!-- sizeparm keyframe_count -->
12059 ///
12060 /// @param[in] keyframe_count
12061 /// The number of keys on the curve.
12062 ///
12064  const HAPI_Session * session,
12065  HAPI_NodeId node_id,
12066  HAPI_TransformComponent trans_comp,
12067  const HAPI_Keyframe * curve_keyframes_array,
12068  int keyframe_count );
12069 
12070 /// @brief Resets the simulation cache of the asset. This is very useful
12071 /// for assets that use dynamics, to be called after some
12072 /// setup has changed for the asset - for example, asset inputs
12073 ///
12074 /// @ingroup Time
12075 ///
12076 /// @param[in] session
12077 /// The session of Houdini you are interacting with.
12078 /// See @ref HAPI_Sessions for more on sessions.
12079 /// Pass NULL to just use the default in-process session.
12080 /// <!-- default NULL -->
12081 ///
12082 /// @param[in] node_id
12083 /// The asset node id.
12084 ///
12086  HAPI_NodeId node_id );
12087 
12088 /// @defgroup Volumes
12089 /// Functions for working with Volume data
12090 
12091 /// @brief Retrieve any meta-data about the volume primitive, including
12092 /// its transform, location, scale, taper, resolution.
12093 ///
12094 /// @ingroup Volumes
12095 ///
12096 /// @param[in] session
12097 /// The session of Houdini you are interacting with.
12098 /// See @ref HAPI_Sessions for more on sessions.
12099 /// Pass NULL to just use the default in-process session.
12100 /// <!-- default NULL -->
12101 ///
12102 /// @param[in] node_id
12103 /// The node id.
12104 ///
12105 /// @param[in] part_id
12106 /// The part id.
12107 ///
12108 /// @param[out] volume_info
12109 /// The meta-data associated with the volume on the
12110 /// part specified by the previous parameters.
12111 ///
12112 HAPI_DECL HAPI_GetVolumeInfo( const HAPI_Session * session,
12113  HAPI_NodeId node_id,
12114  HAPI_PartId part_id,
12115  HAPI_VolumeInfo * volume_info );
12116 
12117 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
12118 /// Start iterating through the value of the volume at part_id.
12119 ///
12120 /// @ingroup Volumes
12121 ///
12122 /// @param[in] session
12123 /// The session of Houdini you are interacting with.
12124 /// See @ref HAPI_Sessions for more on sessions.
12125 /// Pass NULL to just use the default in-process session.
12126 /// <!-- default NULL -->
12127 ///
12128 /// @param[in] node_id
12129 /// The node id.
12130 ///
12131 /// @param[in] part_id
12132 /// The part id.
12133 ///
12134 /// @param[out] tile
12135 /// The tile info referring to the first tile in the
12136 /// volume at part_id.
12137 ///
12139  HAPI_NodeId node_id,
12140  HAPI_PartId part_id,
12141  HAPI_VolumeTileInfo * tile );
12142 
12143 /// @brief Iterate through a volume based on 8x8x8 sections of the volume
12144 /// Continue iterating through the value of the volume at part_id.
12145 ///
12146 /// @ingroup Volumes
12147 ///
12148 /// @param[in] session
12149 /// The session of Houdini you are interacting with.
12150 /// See @ref HAPI_Sessions for more on sessions.
12151 /// Pass NULL to just use the default in-process session.
12152 /// <!-- default NULL -->
12153 ///
12154 /// @param[in] node_id
12155 /// The node id.
12156 ///
12157 /// @param[in] part_id
12158 /// The part id.
12159 ///
12160 /// @param[out] tile
12161 /// The tile info referring to the next tile in the
12162 /// set of tiles associated with the volume at this part.
12163 ///
12165  HAPI_NodeId node_id,
12166  HAPI_PartId part_id,
12167  HAPI_VolumeTileInfo * tile );
12168 
12169 /// @brief Retrieve floating point values of the voxel at a specific
12170 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
12171 /// to this call.
12172 ///
12173 /// @ingroup Volumes
12174 ///
12175 /// @param[in] session
12176 /// The session of Houdini you are interacting with.
12177 /// See @ref HAPI_Sessions for more on sessions.
12178 /// Pass NULL to just use the default in-process session.
12179 /// <!-- default NULL -->
12180 ///
12181 /// @param[in] node_id
12182 /// The node id.
12183 ///
12184 /// @param[in] part_id
12185 /// The part id.
12186 ///
12187 /// @param[in] x_index
12188 /// The x index/coordinate of the voxel.
12189 ///
12190 /// @param[in] y_index
12191 /// The y index/coordinate of the voxel.
12192 ///
12193 /// @param[in] z_index
12194 /// The z index/coordinate of the voxel.
12195 ///
12196 /// @param[out] values_array
12197 /// The values of the voxel.
12198 /// <!-- sizeparm value_count -->
12199 ///
12200 /// @param[in] value_count
12201 /// Should be equal to the volume's
12202 /// ::HAPI_VolumeInfo::tupleSize.
12203 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12204 ///
12206  HAPI_NodeId node_id,
12207  HAPI_PartId part_id,
12208  int x_index,
12209  int y_index,
12210  int z_index,
12211  float * values_array,
12212  int value_count );
12213 
12214 /// @brief Retrieve floating point values of the voxels pointed to
12215 /// by a tile. Note that a tile may extend beyond the limits
12216 /// of the volume so not all values in the given buffer will
12217 /// be written to. Voxels outside the volume will be initialized
12218 /// to the given fill value.
12219 ///
12220 /// @ingroup Volumes
12221 ///
12222 /// @param[in] session
12223 /// The session of Houdini you are interacting with.
12224 /// See @ref HAPI_Sessions for more on sessions.
12225 /// Pass NULL to just use the default in-process session.
12226 /// <!-- default NULL -->
12227 ///
12228 /// @param[in] node_id
12229 /// The node id.
12230 ///
12231 /// @param[in] part_id
12232 /// The part id.
12233 ///
12234 /// @param[in] fill_value
12235 /// Value that will be used to fill the @p values_array.
12236 /// This is useful so that you can see what values
12237 /// have actually been written to.
12238 ///
12239 /// @param[in] tile
12240 /// The tile to retrieve.
12241 ///
12242 /// @param[out] values_array
12243 /// The values of the tile.
12244 /// <!-- sizeparm length -->
12245 ///
12246 /// @param[in] length
12247 /// The length should be ( 8 ^ 3 ) * tupleSize.
12248 ///
12250  HAPI_NodeId node_id,
12251  HAPI_PartId part_id,
12252  float fill_value,
12253  const HAPI_VolumeTileInfo * tile,
12254  float * values_array,
12255  int length );
12256 
12257 /// @brief Retrieve integer point values of the voxel at a specific
12258 /// index. Note that you must call ::HAPI_GetVolumeInfo() prior
12259 /// to this call.
12260 ///
12261 /// @ingroup Volumes
12262 ///
12263 /// @param[in] session
12264 /// The session of Houdini you are interacting with.
12265 /// See @ref HAPI_Sessions for more on sessions.
12266 /// Pass NULL to just use the default in-process session.
12267 /// <!-- default NULL -->
12268 ///
12269 /// @param[in] node_id
12270 /// The node id.
12271 ///
12272 /// @param[in] part_id
12273 /// The part id.
12274 ///
12275 /// @param[in] x_index
12276 /// The x index/coordinate of the voxel.
12277 ///
12278 /// @param[in] y_index
12279 /// The y index/coordinate of the voxel.
12280 ///
12281 /// @param[in] z_index
12282 /// The z index/coordinate of the voxel.
12283 ///
12284 /// @param[out] values_array
12285 /// The values of the voxel.
12286 /// <!-- sizeparm value_count -->
12287 ///
12288 /// @param[in] value_count
12289 /// Should be equal to the volume's
12290 /// ::HAPI_VolumeInfo::tupleSize.
12291 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12292 ///
12294  HAPI_NodeId node_id,
12295  HAPI_PartId part_id,
12296  int x_index,
12297  int y_index,
12298  int z_index,
12299  int * values_array,
12300  int value_count );
12301 
12302 /// @brief Retrieve integer point values of the voxels pointed to
12303 /// by a tile. Note that a tile may extend beyond the limits
12304 /// of the volume so not all values in the given buffer will
12305 /// be written to. Voxels outside the volume will be initialized
12306 /// to the given fill value.
12307 ///
12308 /// @ingroup Volumes
12309 ///
12310 /// @param[in] session
12311 /// The session of Houdini you are interacting with.
12312 /// See @ref HAPI_Sessions for more on sessions.
12313 /// Pass NULL to just use the default in-process session.
12314 /// <!-- default NULL -->
12315 ///
12316 /// @param[in] node_id
12317 /// The node id.
12318 ///
12319 /// @param[in] part_id
12320 /// The part id.
12321 ///
12322 /// @param[in] fill_value
12323 /// Value that will be used to fill the @p values_array.
12324 /// This is useful so that you can see what values
12325 /// have actually been written to.
12326 ///
12327 /// @param[in] tile
12328 /// The tile to retrieve.
12329 ///
12330 /// @param[out] values_array
12331 /// The values of the tile.
12332 /// <!-- sizeparm length -->
12333 ///
12334 /// @param[in] length
12335 /// The length should be ( 8 ^ 3 ) * tupleSize.
12336 ///
12338  HAPI_NodeId node_id,
12339  HAPI_PartId part_id,
12340  int fill_value,
12341  const HAPI_VolumeTileInfo * tile,
12342  int * values_array,
12343  int length );
12344 
12345 /// @brief Get the height field data for a terrain volume as a flattened
12346 /// 2D array of float heights. Should call ::HAPI_GetVolumeInfo()
12347 /// first to make sure the volume info is initialized.
12348 ///
12349 /// @ingroup Volumes
12350 ///
12351 /// @param[in] session
12352 /// The session of Houdini you are interacting with.
12353 /// See @ref HAPI_Sessions for more on sessions.
12354 /// Pass NULL to just use the default in-process session.
12355 /// <!-- default NULL -->
12356 ///
12357 /// @param[in] node_id
12358 /// The node id.
12359 ///
12360 /// @param[in] part_id
12361 /// The part id.
12362 ///
12363 /// @param[out] values_array
12364 /// Heightfield flattened array. Should be at least the size of
12365 /// @p start + @p length.
12366 /// <!-- sizeparm length -->
12367 ///
12368 /// @param[in] start
12369 /// The start at least 0 and at most
12370 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
12371 /// - @p length.
12372 ///
12373 /// @param[in] length
12374 /// The length should be at least 1 or at most
12375 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength )
12376 /// - @p start.
12377 ///
12379  HAPI_NodeId node_id,
12380  HAPI_PartId part_id,
12381  float * values_array,
12382  int start, int length );
12383 
12384 /// @brief Set the volume info of a geo on a geo input.
12385 ///
12386 /// @ingroup Volumes
12387 ///
12388 /// @param[in] session
12389 /// The session of Houdini you are interacting with.
12390 /// See @ref HAPI_Sessions for more on sessions.
12391 /// Pass NULL to just use the default in-process session.
12392 /// <!-- default NULL -->
12393 ///
12394 /// @param[in] node_id
12395 /// The node id.
12396 ///
12397 /// @param[in] part_id
12398 /// The part id.
12399 ///
12400 /// @param[in] volume_info
12401 /// All volume information that can be specified per
12402 /// volume. This includes the position, orientation, scale,
12403 /// data format, tuple size, and taper. The tile size is
12404 /// always 8x8x8.
12405 ///
12406 HAPI_DECL HAPI_SetVolumeInfo( const HAPI_Session * session,
12407  HAPI_NodeId node_id,
12408  HAPI_PartId part_id,
12409  const HAPI_VolumeInfo * volume_info );
12410 
12411 /// @brief Set the values of a float tile: this is an 8x8x8 subsection of
12412 /// the volume.
12413 ///
12414 /// @ingroup Volumes
12415 ///
12416 /// @param[in] session
12417 /// The session of Houdini you are interacting with.
12418 /// See @ref HAPI_Sessions for more on sessions.
12419 /// Pass NULL to just use the default in-process session.
12420 /// <!-- default NULL -->
12421 ///
12422 /// @param[in] node_id
12423 /// The node id.
12424 ///
12425 /// @param[in] part_id
12426 /// The part id.
12427 ///
12428 /// @param[in] tile
12429 /// The tile that the volume will be input into.
12430 ///
12431 /// @param[in] values_array
12432 /// The values of the individual voxel tiles in the
12433 /// volume. The length of this array should
12434 /// be ( 8 ^ 3 ) * tupleSize.
12435 /// <!-- sizeparm length -->
12436 ///
12437 /// @param[in] length
12438 /// The length should be ( 8 ^ 3 ) * tupleSize.
12439 ///
12441  HAPI_NodeId node_id,
12442  HAPI_PartId part_id,
12443  const HAPI_VolumeTileInfo * tile,
12444  const float * values_array,
12445  int length );
12446 
12447 /// @brief Set the values of an int tile: this is an 8x8x8 subsection of
12448 /// the volume.
12449 ///
12450 /// @ingroup Volumes
12451 ///
12452 /// @param[in] session
12453 /// The session of Houdini you are interacting with.
12454 /// See @ref HAPI_Sessions for more on sessions.
12455 /// Pass NULL to just use the default in-process session.
12456 /// <!-- default NULL -->
12457 ///
12458 /// @param[in] node_id
12459 /// The node id.
12460 ///
12461 /// @param[in] part_id
12462 /// The part id.
12463 ///
12464 /// @param[in] tile
12465 /// The tile that the volume will be input into.
12466 ///
12467 /// @param[in] values_array
12468 /// The values of the individual voxel tiles in the
12469 /// volume. The length of this array should
12470 /// be ( 8 ^ 3 ) * tupleSize.
12471 /// <!-- sizeparm length -->
12472 ///
12473 /// @param[in] length
12474 /// The length should be ( 8 ^ 3 ) * tupleSize.
12475 ///
12477  HAPI_NodeId node_id,
12478  HAPI_PartId part_id,
12479  const HAPI_VolumeTileInfo * tile,
12480  const int * values_array,
12481  int length );
12482 
12483 /// @brief Set the values of a float voxel in the volume.
12484 ///
12485 /// @ingroup Volumes
12486 ///
12487 /// @param[in] session
12488 /// The session of Houdini you are interacting with.
12489 /// See @ref HAPI_Sessions for more on sessions.
12490 /// Pass NULL to just use the default in-process session.
12491 /// <!-- default NULL -->
12492 ///
12493 /// @param[in] node_id
12494 /// The node id.
12495 ///
12496 /// @param[in] part_id
12497 /// The part id.
12498 ///
12499 /// @param[in] x_index
12500 /// The x index/coordinate of the voxel.
12501 ///
12502 /// @param[in] y_index
12503 /// The y index/coordinate of the voxel.
12504 ///
12505 /// @param[in] z_index
12506 /// The z index/coordinate of the voxel.
12507 ///
12508 /// @param[in] values_array
12509 /// The values of the voxel.
12510 /// <!-- sizeparm value_count -->
12511 ///
12512 /// @param[in] value_count
12513 /// Should be equal to the volume's
12514 /// ::HAPI_VolumeInfo::tupleSize.
12515 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12516 ///
12518  HAPI_NodeId node_id,
12519  HAPI_PartId part_id,
12520  int x_index,
12521  int y_index,
12522  int z_index,
12523  const float * values_array,
12524  int value_count );
12525 
12526 /// @brief Set the values of a integer voxel in the volume.
12527 ///
12528 /// @ingroup Volumes
12529 ///
12530 /// @param[in] session
12531 /// The session of Houdini you are interacting with.
12532 /// See @ref HAPI_Sessions for more on sessions.
12533 /// Pass NULL to just use the default in-process session.
12534 /// <!-- default NULL -->
12535 ///
12536 /// @param[in] node_id
12537 /// The node id.
12538 ///
12539 /// @param[in] part_id
12540 /// The part id.
12541 ///
12542 /// @param[in] x_index
12543 /// The x index/coordinate of the voxel.
12544 ///
12545 /// @param[in] y_index
12546 /// The y index/coordinate of the voxel.
12547 ///
12548 /// @param[in] z_index
12549 /// The z index/coordinate of the voxel.
12550 ///
12551 /// @param[in] values_array
12552 /// The values of the voxel.
12553 /// <!-- sizeparm value_count -->
12554 ///
12555 /// @param[in] value_count
12556 /// Should be equal to the volume's
12557 /// ::HAPI_VolumeInfo::tupleSize.
12558 /// <!-- source ::HAPI_VolumeInfo::tupleSize -->
12559 ///
12561  HAPI_NodeId node_id,
12562  HAPI_PartId part_id,
12563  int x_index,
12564  int y_index,
12565  int z_index,
12566  const int * values_array,
12567  int value_count );
12568 
12569 /// @brief Get the bounding values of a volume.
12570 ///
12571 /// @ingroup Volumes
12572 ///
12573 /// @param[in] session
12574 /// The session of Houdini you are interacting with.
12575 /// See @ref HAPI_Sessions for more on sessions.
12576 /// Pass NULL to just use the default in-process session.
12577 /// <!-- default NULL -->
12578 ///
12579 /// @param[in] node_id
12580 /// The node id.
12581 ///
12582 /// @param[in] part_id
12583 /// The part id.
12584 ///
12585 /// @param[out] x_min
12586 /// The minimum x value of the volume's bounding box.
12587 /// Can be null if you do not want this value.
12588 ///
12589 /// @param[out] y_min
12590 /// The minimum y value of the volume's bounding box.
12591 /// Can be null if you do not want this value.
12592 ///
12593 /// @param[out] z_min
12594 /// The minimum z value of the volume's bounding box.
12595 /// Can be null if you do not want this value.
12596 ///
12597 /// @param[out] x_max
12598 /// The maximum x value of the volume's bounding box.
12599 /// Can be null if you do not want this value.
12600 ///
12601 /// @param[out] y_max
12602 /// The maximum y value of the volume's bounding box.
12603 /// Can be null if you do not want this value.
12604 ///
12605 /// @param[out] z_max
12606 /// The maximum z value of the volume's bounding box.
12607 /// Can be null if you do not want this value.
12608 ///
12609 /// @param[out] x_center
12610 /// The x value of the volume's bounding box center.
12611 /// Can be null if you do not want this value.
12612 ///
12613 /// @param[out] y_center
12614 /// The y value of the volume's bounding box center.
12615 /// Can be null if you do not want this value.
12616 ///
12617 /// @param[out] z_center
12618 /// The z value of the volume's bounding box center.
12619 /// Can be null if you do not want this value.
12620 ///
12622  HAPI_NodeId node_id,
12623  HAPI_PartId part_id,
12624  float * x_min, float * y_min, float * z_min,
12625  float * x_max, float * y_max, float * z_max,
12626  float * x_center, float * y_center, float * z_center );
12627 
12628 /// @brief Set the height field data for a terrain volume with the values from
12629 /// a flattened 2D array of float.
12630 /// ::HAPI_SetVolumeInfo() should be called first to make sure that the
12631 /// volume and its info are initialized.
12632 ///
12633 /// @ingroup Volumes
12634 ///
12635 /// @param[in] session
12636 /// The session of Houdini you are interacting with.
12637 /// See @ref HAPI_Sessions for more on sessions.
12638 /// Pass NULL to just use the default in-process session.
12639 /// <!-- default NULL -->
12640 ///
12641 /// @param[in] node_id
12642 /// The node id.
12643 ///
12644 /// @param[in] part_id
12645 /// The part id.
12646 ///
12647 /// @param[in] name
12648 /// The name of the volume used for the heightfield.
12649 /// If set to "height" the values will be used for height information,
12650 /// if not, the data will used as a mask.
12651 /// <!-- string -->
12652 ///
12653 /// @param[in] values_array
12654 /// Heightfield flattened array. Should be at least the size of
12655 /// @p start + @p length.
12656 /// <!-- sizeparm length -->
12657 ///
12658 /// @param[in] start
12659 /// The start at least 0 and at most
12660 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p length.
12661 ///
12662 /// @param[in] length
12663 /// The length should be at least 1 or at most
12664 /// ( ::HAPI_VolumeInfo::xLength * ::HAPI_VolumeInfo::yLength ) - @p start.
12665 ///
12667  HAPI_NodeId node_id,
12668  HAPI_PartId part_id,
12669  const char * name,
12670  const float * values_array,
12671  int start, int length );
12672 
12673 /// @brief Retrieve the visualization meta-data of the volume.
12674 ///
12675 /// @ingroup Volumes
12676 ///
12677 /// @param[in] session
12678 /// The session of Houdini you are interacting with.
12679 /// See @ref HAPI_Sessions for more on sessions.
12680 /// Pass NULL to just use the default in-process session.
12681 /// <!-- default NULL -->
12682 ///
12683 /// @param[in] node_id
12684 /// The node id.
12685 ///
12686 /// @param[in] part_id
12687 /// The part id.
12688 ///
12689 /// @param[out] visual_info
12690 /// The meta-data associated with the visualization
12691 /// settings of the part specified by the previous
12692 /// parameters.
12693 ///
12695  HAPI_NodeId node_id,
12696  HAPI_PartId part_id,
12697  HAPI_VolumeVisualInfo * visual_info );
12698 
12699 /// @defgroup Curves
12700 /// Functions for working with curves
12701 
12702 /// @brief Retrieve any meta-data about the curves, including the
12703 /// curve's type, order, and periodicity.
12704 ///
12705 /// @ingroup Curves
12706 ///
12707 /// @param[in] session
12708 /// The session of Houdini you are interacting with.
12709 /// See @ref HAPI_Sessions for more on sessions.
12710 /// Pass NULL to just use the default in-process session.
12711 /// <!-- default NULL -->
12712 ///
12713 /// @param[in] node_id
12714 /// The node id.
12715 ///
12716 /// @param[in] part_id
12717 /// The part id.
12718 ///
12719 /// @param[out] info
12720 /// The curve info represents the meta-data about
12721 /// the curves, including the type, order,
12722 /// and periodicity.
12723 ///
12724 HAPI_DECL HAPI_GetCurveInfo( const HAPI_Session * session,
12725  HAPI_NodeId node_id,
12726  HAPI_PartId part_id,
12727  HAPI_CurveInfo * info );
12728 
12729 /// @brief Retrieve the number of vertices for each curve in the part.
12730 ///
12731 /// @ingroup Curves
12732 ///
12733 /// @param[in] session
12734 /// The session of Houdini you are interacting with.
12735 /// See @ref HAPI_Sessions for more on sessions.
12736 /// Pass NULL to just use the default in-process session.
12737 /// <!-- default NULL -->
12738 ///
12739 /// @param[in] node_id
12740 /// The node id.
12741 ///
12742 /// @param[in] part_id
12743 /// The part id.
12744 ///
12745 /// @param[out] counts_array
12746 /// The number of cvs each curve contains
12747 /// <!-- sizeparm length -->
12748 ///
12749 /// @param[in] start
12750 /// The index of the first curve.
12751 /// <!-- default 0 -->
12752 ///
12753 /// @param[in] length
12754 /// The number of curves' counts to retrieve.
12755 ///
12756 HAPI_DECL HAPI_GetCurveCounts( const HAPI_Session * session,
12757  HAPI_NodeId node_id,
12758  HAPI_PartId part_id,
12759  int * counts_array,
12760  int start, int length );
12761 
12762 /// @brief Retrieve the orders for each curve in the part if the
12763 /// curve has varying order.
12764 ///
12765 /// @ingroup Curves
12766 ///
12767 /// @param[in] session
12768 /// The session of Houdini you are interacting with.
12769 /// See @ref HAPI_Sessions for more on sessions.
12770 /// Pass NULL to just use the default in-process session.
12771 /// <!-- default NULL -->
12772 ///
12773 /// @param[in] node_id
12774 /// The node id.
12775 ///
12776 /// @param[in] part_id
12777 /// The part id.
12778 ///
12779 /// @param[out] orders_array
12780 /// The order of each curve will be returned in this
12781 /// array.
12782 /// <!-- sizeparm length -->
12783 ///
12784 /// @param[in] start
12785 /// The index of the first curve.
12786 /// <!-- default 0 -->
12787 ///
12788 /// @param[in] length
12789 /// The number of curves' orders to retrieve.
12790 ///
12791 HAPI_DECL HAPI_GetCurveOrders( const HAPI_Session * session,
12792  HAPI_NodeId node_id,
12793  HAPI_PartId part_id,
12794  int * orders_array,
12795  int start, int length );
12796 
12797 /// @brief Retrieve the knots of the curves in this part.
12798 ///
12799 /// @ingroup Curves
12800 ///
12801 /// @param[in] session
12802 /// The session of Houdini you are interacting with.
12803 /// See @ref HAPI_Sessions for more on sessions.
12804 /// Pass NULL to just use the default in-process session.
12805 /// <!-- default NULL -->
12806 ///
12807 /// @param[in] node_id
12808 /// The node id.
12809 ///
12810 /// @param[in] part_id
12811 /// The part id.
12812 ///
12813 /// @param[out] knots_array
12814 /// The knots of each curve will be returned in this
12815 /// array.
12816 /// <!-- sizeparm length -->
12817 ///
12818 /// @param[in] start
12819 /// The index of the first curve.
12820 /// <!-- default 0 -->
12821 ///
12822 /// @param[in] length
12823 /// The number of curves' knots to retrieve. The
12824 /// length of all the knots on a single curve is
12825 /// the order of that curve plus the number of
12826 /// vertices (see ::HAPI_GetCurveOrders(),
12827 /// and ::HAPI_GetCurveCounts()).
12828 ///
12829 HAPI_DECL HAPI_GetCurveKnots( const HAPI_Session * session,
12830  HAPI_NodeId node_id,
12831  HAPI_PartId part_id,
12832  float * knots_array,
12833  int start, int length );
12834 
12835 /// @brief Set meta-data for the curve mesh, including the
12836 /// curve type, order, and periodicity.
12837 ///
12838 /// @ingroup Curves
12839 ///
12840 /// @param[in] session
12841 /// The session of Houdini you are interacting with.
12842 /// See @ref HAPI_Sessions for more on sessions.
12843 /// Pass NULL to just use the default in-process session.
12844 /// <!-- default NULL -->
12845 ///
12846 /// @param[in] node_id
12847 /// The node id.
12848 ///
12849 /// @param[in] part_id
12850 /// Currently unused. Input asset geos are assumed
12851 /// to have only one part.
12852 ///
12853 /// @param[in] info
12854 /// The curve info represents the meta-data about
12855 /// the curves, including the type, order,
12856 /// and periodicity.
12857 ///
12858 HAPI_DECL HAPI_SetCurveInfo( const HAPI_Session * session,
12859  HAPI_NodeId node_id,
12860  HAPI_PartId part_id,
12861  const HAPI_CurveInfo * info );
12862 
12863 /// @brief Set the number of vertices for each curve in the part.
12864 ///
12865 /// @ingroup Curves
12866 ///
12867 /// @param[in] session
12868 /// The session of Houdini you are interacting with.
12869 /// See @ref HAPI_Sessions for more on sessions.
12870 /// Pass NULL to just use the default in-process session.
12871 /// <!-- default NULL -->
12872 ///
12873 /// @param[in] node_id
12874 /// The node id.
12875 ///
12876 /// @param[in] part_id
12877 /// Currently unused. Input asset geos are assumed
12878 /// to have only one part.
12879 ///
12880 /// @param[in] counts_array
12881 /// The number of cvs each curve contains.
12882 /// <!-- sizeparm length -->
12883 ///
12884 /// @param[in] start
12885 /// The index of the first curve.
12886 /// <!-- default 0 -->
12887 ///
12888 /// @param[in] length
12889 /// The number of curves' counts to set.
12890 /// <!-- source arglength(counts_array) -->
12891 ///
12892 HAPI_DECL HAPI_SetCurveCounts( const HAPI_Session * session,
12893  HAPI_NodeId node_id,
12894  HAPI_PartId part_id,
12895  const int * counts_array,
12896  int start, int length );
12897 
12898 /// @brief Set the orders for each curve in the part if the
12899 /// curve has varying order.
12900 ///
12901 /// @ingroup Curves
12902 ///
12903 /// @param[in] session
12904 /// The session of Houdini you are interacting with.
12905 /// See @ref HAPI_Sessions for more on sessions.
12906 /// Pass NULL to just use the default in-process session.
12907 /// <!-- default NULL -->
12908 ///
12909 /// @param[in] node_id
12910 /// The node id.
12911 ///
12912 /// @param[in] part_id
12913 /// Currently unused. Input asset geos are assumed
12914 /// to have only one part.
12915 ///
12916 /// @param[in] orders_array
12917 /// The orders of each curve.
12918 /// <!-- sizeparm length -->
12919 ///
12920 /// @param[in] start
12921 /// The index of the first curve.
12922 /// <!-- default 0 -->
12923 ///
12924 /// @param[in] length
12925 /// The number of curves' orders to retrieve.
12926 /// <!-- source arglength(orders_array) -->
12927 ///
12928 HAPI_DECL HAPI_SetCurveOrders( const HAPI_Session * session,
12929  HAPI_NodeId node_id,
12930  HAPI_PartId part_id,
12931  const int * orders_array,
12932  int start, int length );
12933 
12934 /// @brief Set the knots of the curves in this part.
12935 ///
12936 /// @ingroup Curves
12937 ///
12938 /// @param[in] session
12939 /// The session of Houdini you are interacting with.
12940 /// See @ref HAPI_Sessions for more on sessions.
12941 /// Pass NULL to just use the default in-process session.
12942 /// <!-- default NULL -->
12943 ///
12944 /// @param[in] node_id
12945 /// The node id.
12946 ///
12947 /// @param[in] part_id
12948 /// Currently unused. Input asset geos are assumed
12949 /// to have only one part.
12950 ///
12951 /// @param[in] knots_array
12952 /// The knots of each curve.
12953 /// <!-- sizeparm length -->
12954 ///
12955 /// @param[in] start
12956 /// The index of the first curve.
12957 /// <!-- default 0 -->
12958 ///
12959 /// @param[in] length
12960 /// The number of curves' knots to set. The
12961 /// length of all the knots on a single curve is
12962 /// the order of that curve plus the number of
12963 /// vertices (see ::HAPI_SetCurveOrders(),
12964 /// and ::HAPI_SetCurveCounts()).
12965 ///
12966 HAPI_DECL HAPI_SetCurveKnots( const HAPI_Session * session,
12967  HAPI_NodeId node_id,
12968  HAPI_PartId part_id,
12969  const float * knots_array,
12970  int start, int length );
12971 
12972 // INPUT CURVE INFO ---------------------------------------------------------
12973 
12974 /// @defgroup InputCurves
12975 /// Functions for working with curves
12976 
12977 /// @brief Retrieve meta-data about the input curves, including the
12978 /// curve's type, order, and whether or not the curve is closed and reversed.
12979 ///
12980 /// @ingroup InputCurves
12981 ///
12982 /// @param[in] session
12983 /// The session of Houdini you are interacting with.
12984 /// See @ref HAPI_Sessions for more on sessions.
12985 /// Pass NULL to just use the default in-process session.
12986 /// <!-- default NULL -->
12987 ///
12988 /// @param[in] node_id
12989 /// The node id.
12990 ///
12991 /// @param[in] part_id
12992 /// The part id.
12993 ///
12994 /// @param[out] info
12995 /// The curve info represents the meta-data about
12996 /// the curves, including the type, order,
12997 /// and closed and reversed values.
12998 ///
13000  HAPI_NodeId node_id,
13001  HAPI_PartId part_id,
13002  HAPI_InputCurveInfo * info );
13003 
13004 /// @brief Set meta-data for the input curves, including the
13005 /// curve type, order, reverse and closed properties.
13006 ///
13007 /// @ingroup InputCurves
13008 ///
13009 /// @param[in] session
13010 /// The session of Houdini you are interacting with.
13011 /// See @ref HAPI_Sessions for more on sessions.
13012 /// Pass NULL to just use the default in-process session.
13013 /// <!-- default NULL -->
13014 ///
13015 /// @param[in] node_id
13016 /// The node id.
13017 ///
13018 /// @param[in] part_id
13019 /// Currently unused. Input asset geos are assumed
13020 /// to have only one part.
13021 ///
13022 /// @param[in] info
13023 /// The curve info represents the meta-data about
13024 /// the curves, including the type, order,
13025 /// and closed and reverse properties.
13026 ///
13028  HAPI_NodeId node_id,
13029  HAPI_PartId part_id,
13030  const HAPI_InputCurveInfo * info );
13031 
13032 /// @brief Sets the positions for input curves, doing checks for
13033 /// curve validity, and adjusting the curve settings accordingly.
13034 /// Will also cook the node.
13035 ///
13036 /// @ingroup InputCurves
13037 ///
13038 /// @param[in] session
13039 /// The session of Houdini you are interacting with.
13040 /// See @ref HAPI_Sessions for more on sessions.
13041 /// Pass NULL to just use the default in-process session.
13042 /// <!-- default NULL -->
13043 ///
13044 /// @param[in] node_id
13045 /// The node id.
13046 ///
13047 /// @param[in] part_id
13048 /// Currently unused. Input asset geos are assumed
13049 /// to have only one part.
13050 ///
13051 /// @param[in] positions_array
13052 /// A float array representing the positions attribute.
13053 /// It will read the array assuming a tuple size of 3.
13054 /// Note that this function does not do any coordinate axes
13055 /// conversion.
13056 /// <!-- sizeparm length -->
13057 ///
13058 /// @param[in] start
13059 /// The index of the first position in positions_array.
13060 /// <!-- default 0 -->
13061 ///
13062 /// @param[in] length
13063 /// The size of the positions array.
13064 /// <!-- source arglength(positions_array) -->
13065 ///
13067  const HAPI_Session* session,
13068  HAPI_NodeId node_id,
13069  HAPI_PartId part_id,
13070  const float* positions_array,
13071  int start,
13072  int length);
13073 
13074 /// @brief Sets the positions for input curves, doing checks for
13075 /// curve validity, and adjusting the curve settings accordingly.
13076 /// Will also cook the node. Additionally, adds rotation and scale
13077 /// attributes to the curve.
13078 ///
13079 /// @ingroup InputCurves
13080 ///
13081 /// @param[in] session
13082 /// The session of Houdini you are interacting with.
13083 /// See @ref HAPI_Sessions for more on sessions.
13084 /// Pass NULL to just use the default in-process session.
13085 /// <!-- default NULL -->
13086 ///
13087 /// @param[in] node_id
13088 /// The node id.
13089 ///
13090 /// @param[in] part_id
13091 /// Currently unused. Input asset geos are assumed
13092 /// to have only one part.
13093 ///
13094 /// @param[in] positions_array
13095 /// A float array representing the positions attribute.
13096 /// It will read the array assuming a tuple size of 3.
13097 /// Note that this function does not do any coordinate axes
13098 /// conversion.
13099 /// <!-- sizeparm positions_length -->
13100 ///
13101 /// @param[in] positions_start
13102 /// The index of the first position in positions_array.
13103 /// <!-- default 0 -->
13104 ///
13105 /// @param[in] positions_length
13106 /// The size of the positions array.
13107 /// <!-- source arglength(positions_array) -->
13108 ///
13109 /// @param[in] rotations_array
13110 /// A float array representing the rotation (rot) attribute.
13111 /// It will read the array assuming a tuple size of 4
13112 /// representing quaternion values
13113 /// <!-- sizeparm rotations_length -->
13114 ///
13115 /// @param[in] rotations_start
13116 /// The index of the first rotation in rotations_array.
13117 /// <!-- default 0 -->
13118 ///
13119 /// @param[in] rotations_length
13120 /// The size of the rotations array.
13121 /// <!-- source arglength(rotations_array) -->
13122 ///
13123 /// @param[in] scales_array
13124 /// A float array representing the scale attribute.
13125 /// It will read the array assuming a tuple size of 3
13126 /// <!-- sizeparm scales_length -->
13127 ///
13128 /// @param[in] scales_start
13129 /// The index of the first scale in scales_array.
13130 /// <!-- default 0 -->
13131 ///
13132 /// @param[in] scales_length
13133 /// The size of the scales array.
13134 /// <!-- source arglength(scales_array) -->
13135 ///
13137  const HAPI_Session* session,
13138  HAPI_NodeId node_id,
13139  HAPI_PartId part_id,
13140  const float* positions_array,
13141  int positions_start,
13142  int positions_length,
13143  const float* rotations_array,
13144  int rotations_start,
13145  int rotations_length,
13146  const float * scales_array,
13147  int scales_start,
13148  int scales_length);
13149 
13150 // BASIC PRIMITIVES ---------------------------------------------------------
13151 
13152 /// @brief Get the box info on a geo part (if the part is a box).
13153 ///
13154 /// @ingroup Geometry
13155 ///
13156 /// @param[in] session
13157 /// The session of Houdini you are interacting with.
13158 /// See @ref HAPI_Sessions for more on sessions.
13159 /// Pass NULL to just use the default in-process session.
13160 /// <!-- default NULL -->
13161 ///
13162 /// @param[in] geo_node_id
13163 /// The geo node id.
13164 ///
13165 /// @param[in] part_id
13166 /// The part id of the
13167 ///
13168 /// @param[out] box_info
13169 /// The returned box info.
13170 ///
13171 HAPI_DECL HAPI_GetBoxInfo( const HAPI_Session * session,
13172  HAPI_NodeId geo_node_id,
13173  HAPI_PartId part_id,
13174  HAPI_BoxInfo * box_info );
13175 
13176 /// @brief Get the sphere info on a geo part (if the part is a sphere).
13177 ///
13178 /// @ingroup Geometry
13179 ///
13180 /// @param[in] session
13181 /// The session of Houdini you are interacting with.
13182 /// See @ref HAPI_Sessions for more on sessions.
13183 /// Pass NULL to just use the default in-process session.
13184 /// <!-- default NULL -->
13185 ///
13186 /// @param[in] geo_node_id
13187 /// The geo node id.
13188 ///
13189 /// @param[in] part_id
13190 /// The part id of the
13191 ///
13192 /// @param[out] sphere_info
13193 /// The returned sphere info.
13194 ///
13195 HAPI_DECL HAPI_GetSphereInfo( const HAPI_Session * session,
13196  HAPI_NodeId geo_node_id,
13197  HAPI_PartId part_id,
13198  HAPI_SphereInfo * sphere_info );
13199 
13200 /// @defgroup Caching
13201 /// Functions for working with memory and file caches
13202 
13203 /// @brief Get the number of currently active caches.
13204 ///
13205 /// @ingroup Caching
13206 ///
13207 /// @param[in] session
13208 /// The session of Houdini you are interacting with.
13209 /// See @ref HAPI_Sessions for more on sessions.
13210 /// Pass NULL to just use the default in-process session.
13211 /// <!-- default NULL -->
13212 ///
13213 /// @param[out] active_cache_count
13214 /// The number of currently active caches.
13215 ///
13217  int * active_cache_count );
13218 
13219 /// @brief Get the names of the currently active caches.
13220 ///
13221 /// Requires a valid active cache count which you get from:
13222 /// ::HAPI_GetActiveCacheCount().
13223 ///
13224 /// @ingroup Caching
13225 ///
13226 /// @param[in] session
13227 /// The session of Houdini you are interacting with.
13228 /// See @ref HAPI_Sessions for more on sessions.
13229 /// Pass NULL to just use the default in-process session.
13230 /// <!-- default NULL -->
13231 ///
13232 /// @param[out] cache_names_array
13233 /// String array with the returned cache names. Must be
13234 /// at least the size of @a active_cache_count.
13235 /// <!-- sizeparm active_cache_count -->
13236 ///
13237 /// @param[in] active_cache_count
13238 /// The count returned by ::HAPI_GetActiveCacheCount().
13239 /// <!-- source ::HAPI_GetActiveCacheCount -->
13240 ///
13242  HAPI_StringHandle * cache_names_array,
13243  int active_cache_count );
13244 
13245 /// @brief Lets you inspect specific properties of the different memory
13246 /// caches in the current Houdini context.
13247 ///
13248 /// @ingroup Caching
13249 ///
13250 /// @param[in] session
13251 /// The session of Houdini you are interacting with.
13252 /// See @ref HAPI_Sessions for more on sessions.
13253 /// Pass NULL to just use the default in-process session.
13254 /// <!-- default NULL -->
13255 ///
13256 /// @param[in] cache_name
13257 /// Cache name from ::HAPI_GetActiveCacheNames().
13258 /// <!-- string -->
13259 ///
13260 /// @param[in] cache_property
13261 /// The specific property of the cache to get the value for.
13262 ///
13263 /// @param[out] property_value
13264 /// Returned property value.
13265 ///
13267  const char * cache_name,
13268  HAPI_CacheProperty cache_property,
13269  int * property_value );
13270 
13271 /// @brief Lets you modify specific properties of the different memory
13272 /// caches in the current Houdini context. This includes clearing
13273 /// caches, reducing their memory use, or changing how memory limits
13274 /// are respected by a cache.
13275 ///
13276 /// @ingroup Caching
13277 ///
13278 /// @param[in] session
13279 /// The session of Houdini you are interacting with.
13280 /// See @ref HAPI_Sessions for more on sessions.
13281 /// Pass NULL to just use the default in-process session.
13282 /// <!-- default NULL -->
13283 ///
13284 /// @param[in] cache_name
13285 /// Cache name from ::HAPI_GetActiveCacheNames().
13286 /// <!-- string -->
13287 ///
13288 /// @param[in] cache_property
13289 /// The specific property of the cache to modify.
13290 ///
13291 /// @param[in] property_value
13292 /// The new property value.
13293 ///
13295  const char * cache_name,
13296  HAPI_CacheProperty cache_property,
13297  int property_value );
13298 
13299 /// @brief Saves a geometry to file. The type of file to save is
13300 /// to be determined by the extension ie. .bgeo, .obj
13301 ///
13302 /// @ingroup Caching
13303 ///
13304 /// @param[in] session
13305 /// The session of Houdini you are interacting with.
13306 /// See @ref HAPI_Sessions for more on sessions.
13307 /// Pass NULL to just use the default in-process session.
13308 /// <!-- default NULL -->
13309 ///
13310 /// @param[in] node_id
13311 /// The node id.
13312 ///
13313 /// @param[in] file_name
13314 /// The name of the file to be saved. The extension
13315 /// of the file determines its type.
13316 /// <!-- string -->
13317 ///
13318 HAPI_DECL HAPI_SaveGeoToFile( const HAPI_Session * session,
13319  HAPI_NodeId node_id,
13320  const char * file_name );
13321 
13322 /// @brief Loads a geometry file and put its contents onto a SOP
13323 /// node.
13324 ///
13325 /// @ingroup Caching
13326 ///
13327 /// @param[in] session
13328 /// The session of Houdini you are interacting with.
13329 /// See @ref HAPI_Sessions for more on sessions.
13330 /// Pass NULL to just use the default in-process session.
13331 /// <!-- default NULL -->
13332 ///
13333 /// @param[in] node_id
13334 /// The node id.
13335 ///
13336 /// @param[in] file_name
13337 /// The name of the file to be loaded
13338 /// <!-- string -->
13339 ///
13341  HAPI_NodeId node_id,
13342  const char * file_name );
13343 
13344 /// @brief Saves the node and all its contents to file.
13345 /// The saved file can be loaded by calling ::HAPI_LoadNodeFromFile.
13346 ///
13347 /// @ingroup Caching
13348 ///
13349 /// @param[in] session
13350 /// The session of Houdini you are interacting with.
13351 /// See @ref HAPI_Sessions for more on sessions.
13352 /// Pass NULL to just use the default in-process session.
13353 /// <!-- default NULL -->
13354 ///
13355 /// @param[in] node_id
13356 /// The node id.
13357 ///
13358 /// @param[in] file_name
13359 /// The name of the file to be saved. The extension
13360 /// of the file determines its type.
13361 /// <!-- string -->
13362 ///
13363 HAPI_DECL HAPI_SaveNodeToFile( const HAPI_Session * session,
13364  HAPI_NodeId node_id,
13365  const char * file_name );
13366 
13367 /// @brief Loads and creates a previously saved node and all
13368 /// its contents from given file.
13369 /// The saved file must have been created by calling
13370 /// ::HAPI_SaveNodeToFile.
13371 ///
13372 /// @ingroup Caching
13373 ///
13374 /// @param[in] session
13375 /// The session of Houdini you are interacting with.
13376 /// See @ref HAPI_Sessions for more on sessions.
13377 /// Pass NULL to just use the default in-process session.
13378 /// <!-- default NULL -->
13379 ///
13380 /// @param[in] file_name
13381 /// The name of the file to be loaded
13382 /// <!-- string -->
13383 ///
13384 /// @param[in] parent_node_id
13385 /// The parent node id of the Geometry object.
13386 ///
13387 /// @param[in] node_label
13388 /// The name of the new Geometry object.
13389 /// <!-- string -->
13390 ///
13391 /// @param[in] cook_on_load
13392 /// Set to true if you wish the nodes to cook as soon
13393 /// as they are created. Otherwise, you will have to
13394 /// call ::HAPI_CookNode() explicitly for each after you
13395 /// call this function.
13396 ///
13397 /// @param[out] new_node_id
13398 /// The newly created node id.
13399 ///
13401  const char * file_name,
13402  HAPI_NodeId parent_node_id,
13403  const char * node_label,
13404  HAPI_Bool cook_on_load,
13405  HAPI_NodeId * new_node_id );
13406 
13407 /// @brief Cache the current state of the geo to memory, given the
13408 /// format, and return the size. Use this size with your call
13409 /// to ::HAPI_SaveGeoToMemory() to copy the cached geo to your
13410 /// buffer. It is guaranteed that the size will not change between
13411 /// your call to ::HAPI_GetGeoSize() and ::HAPI_SaveGeoToMemory().
13412 ///
13413 /// @ingroup Caching
13414 ///
13415 /// @param[in] session
13416 /// The session of Houdini you are interacting with.
13417 /// See @ref HAPI_Sessions for more on sessions.
13418 /// Pass NULL to just use the default in-process session.
13419 /// <!-- default NULL -->
13420 ///
13421 /// @param[in] node_id
13422 /// The node id.
13423 ///
13424 /// @param[in] format
13425 /// The file format, ie. ".obj", ".bgeo.sc" etc.
13426 /// <!-- string -->
13427 ///
13428 /// @param[out] size
13429 /// The size of the buffer required to hold the output.
13430 ///
13431 HAPI_DECL HAPI_GetGeoSize( const HAPI_Session * session,
13432  HAPI_NodeId node_id,
13433  const char * format,
13434  int * size );
13435 
13436 /// @brief Saves the cached geometry to your buffer in memory,
13437 /// whose format and required size is identified by the call to
13438 /// ::HAPI_GetGeoSize(). The call to ::HAPI_GetGeoSize() is
13439 /// required as ::HAPI_GetGeoSize() does the actual saving work.
13440 ///
13441 /// Also note that this call to ::HAPI_SaveGeoToMemory will delete
13442 /// the internal geo buffer that was cached in the previous call
13443 /// to ::HAPI_GetGeoSize(). This means that you will need to call
13444 /// ::HAPI_GetGeoSize() again before you can call this function.
13445 ///
13446 /// @ingroup Caching
13447 ///
13448 /// @param[in] session
13449 /// The session of Houdini you are interacting with.
13450 /// See @ref HAPI_Sessions for more on sessions.
13451 /// Pass NULL to just use the default in-process session.
13452 /// <!-- default NULL -->
13453 ///
13454 /// @param[in] node_id
13455 /// The node id.
13456 ///
13457 /// @param[out] buffer
13458 /// The buffer we will write into.
13459 /// <!-- sizeparm length -->
13460 ///
13461 /// @param[in] length
13462 /// The size of the buffer passed in.
13463 /// <!-- source ::HAPI_GetGeoSize -->
13464 ///
13466  HAPI_NodeId node_id,
13467  char * buffer,
13468  int length );
13469 
13470 /// @brief Loads a geometry from memory and put its
13471 /// contents onto a SOP node.
13472 ///
13473 /// @ingroup Caching
13474 ///
13475 /// @param[in] session
13476 /// The session of Houdini you are interacting with.
13477 /// See @ref HAPI_Sessions for more on sessions.
13478 /// Pass NULL to just use the default in-process session.
13479 /// <!-- default NULL -->
13480 ///
13481 /// @param[in] node_id
13482 /// The node id.
13483 ///
13484 /// @param[in] format
13485 /// The file format, ie. "obj", "bgeo" etc.
13486 /// <!-- string -->
13487 ///
13488 /// @param[in] buffer
13489 /// The buffer we will read the geometry from.
13490 /// <!-- sizeparm length -->
13491 ///
13492 /// @param[in] length
13493 /// The size of the buffer passed in.
13494 /// <!-- source arglength(buffer) -->
13495 ///
13497  HAPI_NodeId node_id,
13498  const char * format,
13499  const char * buffer,
13500  int length );
13501 
13502 /// @brief Set the specified node's display flag.
13503 ///
13504 /// @ingroup Nodes
13505 ///
13506 /// @param[in] session
13507 /// The session of Houdini you are interacting with.
13508 /// See @ref HAPI_Sessions for more on sessions.
13509 /// Pass NULL to just use the default in-process session.
13510 /// <!-- default NULL -->
13511 ///
13512 /// @param[in] node_id
13513 /// The node id.
13514 ///
13515 /// @param[in] onOff
13516 /// Display flag.
13517 ///
13518 HAPI_DECL HAPI_SetNodeDisplay( const HAPI_Session * session,
13519  HAPI_NodeId node_id,
13520  int onOff );
13521 
13522 /// @brief Get the specified node's total cook count, including
13523 /// its children, if specified.
13524 ///
13525 /// @ingroup Nodes
13526 ///
13527 /// @param[in] session
13528 /// The session of Houdini you are interacting with.
13529 /// See @ref HAPI_Sessions for more on sessions.
13530 /// Pass NULL to just use the default in-process session.
13531 /// <!-- default NULL -->
13532 ///
13533 /// @param[in] node_id
13534 /// The node id.
13535 ///
13536 /// @param[in] node_type_filter
13537 /// The node type by which to filter the children.
13538 ///
13539 /// @param[in] node_flags_filter
13540 /// The node flags by which to filter the children.
13541 ///
13542 /// @param[in] recursive
13543 /// Whether or not to include the specified node's
13544 /// children cook count in the tally.
13545 ///
13546 /// @param[out] count
13547 /// The number of cooks in total for this session.
13548 ///
13550  HAPI_NodeId node_id,
13551  HAPI_NodeTypeBits node_type_filter,
13552  HAPI_NodeFlagsBits node_flags_filter,
13553  HAPI_Bool recursive,
13554  int * count );
13555 
13556 /// @defgroup SessionSync
13557 /// Functions for working with SessionSync
13558 
13559 /// @brief Enable or disable SessionSync mode.
13560 ///
13561 /// @ingroup SessionSync
13562 ///
13563 /// @param[in] session
13564 /// The session of Houdini you are interacting with.
13565 /// See @ref HAPI_Sessions for more on sessions.
13566 /// Pass NULL to just use the default in-process session.
13567 /// <!-- default NULL -->
13568 ///
13569 /// @param[in] enable
13570 /// Enable or disable SessionSync mode.
13571 ///
13572 HAPI_DECL HAPI_SetSessionSync( const HAPI_Session * session,
13573  HAPI_Bool enable );
13574 
13575 /// @brief Get the ::HAPI_Viewport info for synchronizing viewport in
13576 /// SessionSync. When SessionSync is running this will
13577 /// return Houdini's current viewport information.
13578 ///
13579 /// @ingroup SessionSync
13580 ///
13581 /// @param[in] session
13582 /// The session of Houdini you are interacting with.
13583 /// See @ref HAPI_Sessions for more on sessions.
13584 /// Pass NULL to just use the default in-process session.
13585 ///
13586 /// @param[out] viewport
13587 /// The output ::HAPI_Viewport.
13588 ///
13589 HAPI_DECL HAPI_GetViewport( const HAPI_Session * session,
13590  HAPI_Viewport * viewport );
13591 
13592 /// @brief Set the ::HAPI_Viewport info for synchronizing viewport in
13593 /// SessionSync. When SessionSync is running, this can be
13594 /// used to set the viewport information which Houdini
13595 /// will then synchronize with for its viewport.
13596 ///
13597 /// @ingroup SessionSync
13598 ///
13599 /// @param[in] session
13600 /// The session of Houdini you are interacting with.
13601 /// See @ref HAPI_Sessions for more on sessions.
13602 /// Pass NULL to just use the default in-process session.
13603 ///
13604 /// @param[in] viewport
13605 /// A ::HAPI_Viewport that stores the viewport.
13606 ///
13607 HAPI_DECL HAPI_SetViewport( const HAPI_Session * session,
13608  const HAPI_Viewport * viewport );
13609 
13610 /// @brief Get the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13611 /// state between Houdini and Houdini Engine integrations.
13612 ///
13613 /// @ingroup SessionSync
13614 ///
13615 /// @param[in] session
13616 /// The session of Houdini you are interacting with.
13617 /// See @ref HAPI_Sessions for more on sessions.
13618 /// Pass NULL to just use the default in-process session.
13619 ///
13620 /// @param[out] session_sync_info
13621 /// The output ::HAPI_SessionSyncInfo.
13622 ///
13624  const HAPI_Session * session,
13625  HAPI_SessionSyncInfo * session_sync_info );
13626 
13627 /// @brief Set the ::HAPI_SessionSyncInfo for synchronizing SessionSync
13628 /// state between Houdini and Houdini Engine integrations.
13629 ///
13630 /// @ingroup SessionSync
13631 ///
13632 /// @param[in] session
13633 /// The session of Houdini you are interacting with.
13634 /// See @ref HAPI_Sessions for more on sessions.
13635 /// Pass NULL to just use the default in-process session.
13636 ///
13637 /// @param[in] session_sync_info
13638 /// A ::HAPI_SessionSyncInfo that stores the state.
13639 ///
13641  const HAPI_Session * session,
13642  const HAPI_SessionSyncInfo * session_sync_info );
13643 
13644 /// @defgroup PDG PDG/TOPs
13645 /// Functions for working with PDG/TOPs
13646 
13647 /// @brief Return an array of PDG graph context names and ids, the first
13648 /// count names will be returned. These ids can be used
13649 /// with ::HAPI_GetPDGEvents and ::HAPI_GetPDGState. The values
13650 /// of the names can be retrieved with ::HAPI_GetString.
13651 ///
13652 /// @ingroup PDG
13653 ///
13654 /// @param[in] session
13655 /// The session of Houdini you are interacting with.
13656 /// See @ref HAPI_Sessions for more on sessions.
13657 /// Pass NULL to just use the default in-process session.
13658 /// <!-- default NULL -->
13659 ///
13660 /// @param[out] context_names_array
13661 /// Array of context names stored as ::HAPI_StringHandle
13662 /// at least the size of length. These can be used
13663 /// with ::HAPI_GetString() and are valid until the
13664 /// next call to this function.
13665 /// <!-- sizeparm length -->
13666 ///
13667 /// @param[out] context_id_array
13668 /// Array of graph context ids at least the size of length.
13669 /// <!-- sizeparm length -->
13670 ///
13671 /// @param[in] start
13672 /// First index of range. Must be at least @c 0 and at most
13673 /// @c context_count - 1 where @c context_count is the count
13674 /// returned by ::HAPI_GetPDGGraphContextsCount()
13675 /// <!-- min 0 -->
13676 /// <!-- max ::HAPI_GetPDGGraphContextsCount -->
13677 /// <!-- default 0 -->
13678 ///
13679 /// @param[in] length
13680 /// Given @c num_contexts returned by ::HAPI_GetPDGGraphContextsCount(),
13681 /// length should be at least @c 0 and at most <tt>num_contexts - start.</tt>
13682 /// <!-- default 0 -->
13684  HAPI_StringHandle * context_names_array,
13685  HAPI_PDG_GraphContextId * context_id_array,
13686  int start,
13687  int length );
13688 
13689 /// @brief Return the total number of PDG graph contexts found.
13690 ///
13691 /// @ingroup PDG
13692 ///
13693 /// @param[in] session
13694 /// The session of Houdini you are interacting with.
13695 /// See @ref HAPI_Sessions for more on sessions.
13696 /// Pass NULL to just use the default in-process session.
13697 /// <!-- default NULL -->
13698 ///
13699 /// @param[out] num_contexts
13700 /// Total PDG graph contexts count.
13701 ///
13703  const HAPI_Session* session,
13704  int* num_contexts );
13705 
13706 /// @brief Get the PDG graph context for the specified TOP node.
13707 ///
13708 /// @ingroup PDG
13709 ///
13710 /// @param[in] session
13711 /// The session of Houdini you are interacting with.
13712 /// See @ref HAPI_Sessions for more on sessions.
13713 /// Pass NULL to just use the default in-process session.
13714 /// <!-- default NULL -->
13715 ///
13716 /// @param[in] top_node_id
13717 /// The id of the TOP node to query its graph context.
13718 ///
13719 /// @param[out] context_id
13720 /// The PDG graph context id.
13721 ///
13723  HAPI_NodeId top_node_id,
13724  HAPI_PDG_GraphContextId * context_id );
13725 
13726 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13727 /// Progress can be checked with ::HAPI_GetPDGState() and
13728 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13729 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13730 /// discarded at the start of the cook.
13731 ///
13732 /// If there are any $HIPFILE file dependencies on nodes involved in the cook
13733 /// a hip file will be automatically saved to $HOUDINI_TEMP_DIR directory so
13734 /// that it can be copied to the working directory by the scheduler. This means
13735 /// $HIP will be equal to $HOUDINI_TEMP_DIR.
13736 ///
13737 /// @ingroup PDG
13738 ///
13739 /// @param[in] session
13740 /// The session of Houdini you are interacting with.
13741 /// See @ref HAPI_Sessions for more on sessions.
13742 /// Pass NULL to just use the default in-process session.
13743 ///
13744 /// @param[in] cook_node_id
13745 /// The node id of a TOP node for the cook operation.
13746 ///
13747 /// @param[in] generate_only
13748 /// 1 means only static graph generation will done. 0 means
13749 /// a full graph cook. Generation is always blocking.
13750 ///
13751 /// @param[in] blocking
13752 /// 0 means return immediately and cooking will be done
13753 /// asynchronously. 1 means return when cooking completes.
13754 ///
13755 HAPI_DECL HAPI_CookPDG( const HAPI_Session * session,
13756  HAPI_NodeId cook_node_id,
13757  int generate_only,
13758  int blocking );
13759 
13760 /// @brief Starts a PDG cooking operation. This can be asynchronous.
13761 /// Progress can be checked with ::HAPI_GetPDGState() and
13762 /// ::HAPI_GetPDGState(). Events generated during this cook can be
13763 /// collected with ::HAPI_GetPDGEvents(). Any uncollected events will be
13764 /// discarded at the start of the cook.
13765 ///
13766 /// If there are any $HIPFILE file dependencies on nodes involved in the
13767 /// cook a hip file will be automatically saved to $HOUDINI_TEMP_DIR
13768 /// directory so that it can be copied to the working directory by the
13769 /// scheduler. This means $HIP will be equal to $HOUDINI_TEMP_DIR.
13770 ///
13771 /// If cook_node_id is a network / subnet, then if it has output nodes
13772 /// it cooks all of its output nodes and not just output 0. If it does
13773 /// not have output nodes it cooks the node with the output flag.
13774 ///
13775 /// @ingroup PDG
13776 ///
13777 /// @param[in] session
13778 /// The session of Houdini you are interacting with.
13779 /// See @ref HAPI_Sessions for more on sessions.
13780 /// Pass NULL to just use the default in-process session.
13781 ///
13782 /// @param[in] cook_node_id
13783 /// The node id of a TOP node for the cook operation.
13784 ///
13785 /// @param[in] generate_only
13786 /// 1 means only static graph generation will done. 0 means
13787 /// a full graph cook. Generation is always blocking.
13788 ///
13789 /// @param[in] blocking
13790 /// 0 means return immediately and cooking will be done
13791 /// asynchronously. 1 means return when cooking completes.
13792 ///
13794  const HAPI_Session* session,
13795  HAPI_NodeId cook_node_id,
13796  int generate_only,
13797  int blocking);
13798 
13799 /// @brief Returns PDG events that have been collected. Calling this function
13800 /// will remove those events from the queue. Events collection is restarted
13801 /// by calls to ::HAPI_CookPDG().
13802 ///
13803 /// @ingroup PDG
13804 ///
13805 ///
13806 /// @param[in] session
13807 /// The session of Houdini you are interacting with.
13808 /// See @ref HAPI_Sessions for more on sessions.
13809 /// Pass NULL to just use the default in-process session.
13810 /// <!-- default NULL -->
13811 ///
13812 /// @param[in] graph_context_id
13813 /// The id of the graph context
13814 ///
13815 /// @param[out] event_array
13816 /// buffer of ::HAPI_PDG_EventInfo of size at least length.
13817 /// <!-- sizeparm length -->
13818 ///
13819 /// @param[in] length
13820 /// The size of the buffer passed in.
13821 ///
13822 /// @param[out] event_count
13823 /// Number of events removed from queue and copied to buffer.
13824 ///
13825 /// @param[out] remaining_events
13826 /// Number of queued events remaining after this operation.
13827 ///
13828 HAPI_DECL HAPI_GetPDGEvents( const HAPI_Session * session,
13829  HAPI_PDG_GraphContextId graph_context_id,
13830  HAPI_PDG_EventInfo * event_array,
13831  int length,
13832  int * event_count,
13833  int * remaining_events );
13834 
13835 /// @brief Gets the state of a PDG graph
13836 ///
13837 /// @ingroup PDG
13838 ///
13839 ///
13840 /// @param[in] session
13841 /// The session of Houdini you are interacting with.
13842 /// See @ref HAPI_Sessions for more on sessions.
13843 /// Pass NULL to just use the default in-process session.
13844 /// <!-- default NULL -->
13845 ///
13846 /// @param[in] graph_context_id
13847 /// The graph context id
13848 ///
13849 /// @param[out] pdg_state
13850 /// One of ::HAPI_PDG_State.
13851 ///
13852 HAPI_DECL HAPI_GetPDGState( const HAPI_Session * session,
13853  HAPI_PDG_GraphContextId graph_context_id,
13854  int * pdg_state );
13855 
13856 /// @brief Creates a new pending work item for the given node. The work item
13857 /// will not be submitted to the graph until it is committed with
13858 /// ::HAPI_CommitWorkItems(). The node is expected to be a generator type.
13859 ///
13860 /// @ingroup PDG
13861 ///
13862 /// @param[in] session
13863 /// The session of Houdini you are interacting with.
13864 /// See @ref HAPI_Sessions for more on sessions.
13865 /// Pass NULL to just use the default in-process session.
13866 /// <!-- default NULL -->
13867 ///
13868 /// @param[in] node_id
13869 /// The node id.
13870 ///
13871 /// @param[out] work_item_id
13872 /// The id of the pending workitem.
13873 ///
13874 /// @param[in] name
13875 /// The null-terminated name of the work item. The name will
13876 /// be automatically suffixed to make it unique.
13877 /// <!-- string -->
13878 ///
13879 /// @param[in] index
13880 /// The index of the work item. The semantics of the index
13881 /// are user defined.
13882 ///
13883 HAPI_DECL HAPI_CreateWorkItem( const HAPI_Session * session,
13884  HAPI_NodeId node_id,
13885  HAPI_PDG_WorkItemId * work_item_id,
13886  const char * name,
13887  int index );
13888 
13889 /// @brief Retrieves the info of a given work item by id.
13890 ///
13891 /// @ingroup PDG
13892 ///
13893 /// @param[in] session
13894 /// The session of Houdini you are interacting with.
13895 /// See @ref HAPI_Sessions for more on sessions.
13896 /// Pass NULL to just use the default in-process session.
13897 /// <!-- default NULL -->
13898 ///
13899 /// @param[in] graph_context_id
13900 /// The graph context that the work item is in.
13901 ///
13902 /// @param[in] work_item_id
13903 /// The id of the work item.
13904 ///
13905 /// @param[out] work_item_info
13906 /// The returned ::HAPI_PDG_WorkItemInfo for the work item. Note
13907 /// that the enclosed string handle is only valid until the next
13908 /// call to this function.
13909 ///
13911  HAPI_PDG_GraphContextId graph_context_id,
13912  HAPI_PDG_WorkItemId work_item_id,
13913  HAPI_PDG_WorkItemInfo * work_item_info );
13914 
13915 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
13916 ///
13917 /// @ingroup PDG
13918 ///
13919 /// @param[in] session
13920 /// The session of Houdini you are interacting with.
13921 /// See @ref HAPI_Sessions for more on sessions.
13922 /// Pass NULL to just use the default in-process session.
13923 /// <!-- default NULL -->
13924 ///
13925 /// @param[in] node_id
13926 /// The node id.
13927 ///
13928 /// @param[in] work_item_id
13929 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
13930 ///
13931 /// @param[in] attribute_name
13932 /// null-terminated name of the work item attribute
13933 /// <!-- string -->
13934 ///
13935 /// @param[in] values_array
13936 /// array of integer values
13937 /// <!-- sizeparm length -->
13938 ///
13939 /// @param[in] length
13940 /// number of values to copy from values_array to the parameter
13941 ///
13943  HAPI_NodeId node_id,
13944  HAPI_PDG_WorkItemId work_item_id,
13945  const char * attribute_name,
13946  const int * values_array,
13947  int length );
13948 
13949 /// @brief Adds float data to a pending PDG work item attribute for the given node.
13950 ///
13951 /// @ingroup PDG
13952 ///
13953 /// @param[in] session
13954 /// The session of Houdini you are interacting with.
13955 /// See @ref HAPI_Sessions for more on sessions.
13956 /// Pass NULL to just use the default in-process session.
13957 /// <!-- default NULL -->
13958 ///
13959 /// @param[in] node_id
13960 /// The node id.
13961 ///
13962 /// @param[in] work_item_id
13963 /// The id of the pending work item returned by ::HAPI_CreateWorkItem()
13964 ///
13965 /// @param[in] attribute_name
13966 /// null-terminated name of the work item attribute
13967 /// <!-- string -->
13968 ///
13969 /// @param[in] values_array
13970 /// array of float values
13971 /// <!-- sizeparm length -->
13972 ///
13973 /// @param[in] length
13974 /// number of values to copy from values_array to the parameter
13975 ///
13977  HAPI_NodeId node_id,
13978  HAPI_PDG_WorkItemId work_item_id,
13979  const char * attribute_name,
13980  const float * values_array,
13981  int length );
13982 
13983 /// @brief Adds integer data to a pending PDG work item attribute for the given node.
13984 ///
13985 /// @ingroup PDG
13986 ///
13987 /// @param[in] session
13988 /// The session of Houdini you are interacting with.
13989 /// See @ref HAPI_Sessions for more on sessions.
13990 /// Pass NULL to just use the default in-process session.
13991 /// <!-- default NULL -->
13992 ///
13993 /// @param[in] node_id
13994 /// The node id.
13995 ///
13996 /// @param[in] work_item_id
13997 /// The id of the created work item returned by HAPI_CreateWorkItem()
13998 ///
13999 /// @param[in] attribute_name
14000 /// null-terminated name of the work item attribute
14001 /// <!-- string -->
14002 ///
14003 /// @param[in] data_index
14004 /// index of the string data member
14005 ///
14006 /// @param[in] value
14007 /// null-terminated string to copy to the work item data member
14008 /// <!-- string -->
14009 ///
14011  HAPI_NodeId node_id,
14012  HAPI_PDG_WorkItemId work_item_id,
14013  const char * attribute_name,
14014  int data_index,
14015  const char * value );
14016 
14017 /// @brief Commits any pending work items.
14018 ///
14019 /// @ingroup PDG
14020 ///
14021 /// @param[in] session
14022 /// The session of Houdini you are interacting with.
14023 /// See @ref HAPI_Sessions for more on sessions.
14024 /// Pass NULL to just use the default in-process session.
14025 /// <!-- default NULL -->
14026 ///
14027 /// @param[in] node_id
14028 /// The node id for which the pending work items have been
14029 /// created but not yet injected.
14030 ///
14032  HAPI_NodeId node_id );
14033 
14034 /// @brief Gets the number of work items that are available on the given node.
14035 /// Should be used with ::HAPI_GetWorkItems.
14036 ///
14037 /// @ingroup PDG
14038 ///
14039 /// @param[in] session
14040 /// The session of Houdini you are interacting with.
14041 /// See @ref HAPI_Sessions for more on sessions.
14042 /// Pass NULL to just use the default in-process session.
14043 /// <!-- default NULL -->
14044 ///
14045 /// @param[in] node_id
14046 /// The node id.
14047 ///
14048 /// @param[out] num
14049 /// The number of work items.
14050 ///
14052  HAPI_NodeId node_id,
14053  int * num );
14054 
14055 /// @brief Gets the list of work item ids for the given node
14056 ///
14057 /// @ingroup PDG
14058 ///
14059 /// @param[in] session
14060 /// The session of Houdini you are interacting with.
14061 /// See @ref HAPI_Sessions for more on sessions.
14062 /// Pass NULL to just use the default in-process session.
14063 /// <!-- default NULL -->
14064 ///
14065 /// @param[in] node_id
14066 /// The node id.
14067 ///
14068 /// @param[out] work_item_ids_array
14069 /// buffer for resulting array of ::HAPI_PDG_WorkItemId
14070 /// <!-- sizeparm length -->
14071 ///
14072 /// @param[in] length
14073 /// The length of the @p work_item_ids buffer
14074 ///
14075 HAPI_DECL HAPI_GetWorkItems( const HAPI_Session * session,
14076  HAPI_NodeId node_id,
14077  int * work_item_ids_array,
14078  int length );
14079 
14080 /// @brief Gets the size of the work item attribute.
14081 /// It is the length of the array of data.
14082 ///
14083 /// @ingroup PDG
14084 ///
14085 /// @param[in] session
14086 /// The session of Houdini you are interacting with.
14087 /// See @ref HAPI_Sessions for more on sessions.
14088 /// Pass NULL to just use the default in-process session.
14089 /// <!-- default NULL -->
14090 ///
14091 /// @param[in] node_id
14092 /// The node id.
14093 ///
14094 /// @param[in] work_item_id
14095 /// The id of the work item
14096 ///
14097 /// @param[in] attribute_name
14098 /// null-terminated name of the work item attribute
14099 /// <!-- string -->
14100 ///
14101 /// @param[out] length
14102 /// The length of the data member array
14103 ///
14105  HAPI_NodeId node_id,
14106  HAPI_PDG_WorkItemId work_item_id,
14107  const char * attribute_name,
14108  int * length );
14109 
14110 /// @brief Gets int data from a work item attribute.
14111 ///
14112 /// @ingroup PDG
14113 ///
14114 /// @param[in] session
14115 /// The session of Houdini you are interacting with.
14116 /// See @ref HAPI_Sessions for more on sessions.
14117 /// Pass NULL to just use the default in-process session.
14118 /// <!-- default NULL -->
14119 ///
14120 /// @param[in] node_id
14121 /// The node id.
14122 ///
14123 /// @param[in] work_item_id
14124 /// The id of the work_item
14125 ///
14126 /// @param[in] attribute_name
14127 /// null-terminated name of the work item attribute
14128 /// <!-- string -->
14129 ///
14130 /// @param[out] data_array
14131 /// buffer of at least size length to copy the data into. The required
14132 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14133 /// <!-- sizeparm length -->
14134 ///
14135 /// @param[in] length
14136 /// The length of @p data_array
14137 ///
14139  HAPI_NodeId node_id,
14140  HAPI_PDG_WorkItemId work_item_id,
14141  const char * attribute_name,
14142  int * data_array,
14143  int length );
14144 
14145 /// @brief Gets float data from a work item attribute.
14146 ///
14147 /// @ingroup PDG
14148 ///
14149 /// @param[in] session
14150 /// The session of Houdini you are interacting with.
14151 /// See @ref HAPI_Sessions for more on sessions.
14152 /// Pass NULL to just use the default in-process session.
14153 /// <!-- default NULL -->
14154 ///
14155 /// @param[in] node_id
14156 /// The node id.
14157 ///
14158 /// @param[in] work_item_id
14159 /// The id of the work_item
14160 ///
14161 /// @param[in] attribute_name
14162 /// null-terminated name of the work item attribute
14163 /// <!-- string -->
14164 ///
14165 /// @param[out] data_array
14166 /// buffer of at least size length to copy the data into. The required
14167 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14168 /// <!-- sizeparm length -->
14169 ///
14170 /// @param[in] length
14171 /// The length of the @p data_array
14172 ///
14174  HAPI_NodeId node_id,
14175  HAPI_PDG_WorkItemId work_item_id,
14176  const char * attribute_name,
14177  float * data_array,
14178  int length );
14179 
14180 /// @brief Gets string ids from a work item attribute.
14181 ///
14182 /// @ingroup PDG
14183 ///
14184 /// @param[in] session
14185 /// The session of Houdini you are interacting with.
14186 /// See @ref HAPI_Sessions for more on sessions.
14187 /// Pass NULL to just use the default in-process session.
14188 /// <!-- default NULL -->
14189 ///
14190 /// @param[in] node_id
14191 /// The node id.
14192 ///
14193 /// @param[in] work_item_id
14194 /// The id of the work item
14195 ///
14196 /// @param[in] attribute_name
14197 /// null-terminated name of the work item attribute
14198 /// <!-- string -->
14199 ///
14200 /// @param[out] data_array
14201 /// buffer of at least size length to copy the data into. The required
14202 /// length should be determined by ::HAPI_GetWorkItemDataLength().
14203 /// The data is an array of ::HAPI_StringHandle which can be used with
14204 /// ::HAPI_GetString(). The string handles are valid until the
14205 /// next call to this function.
14206 /// <!-- sizeparm length -->
14207 ///
14208 /// @param[in] length
14209 /// The length of @p data_array
14210 ///
14212  HAPI_NodeId node_id,
14213  HAPI_PDG_WorkItemId work_item_id,
14214  const char * attribute_name,
14215  HAPI_StringHandle * data_array,
14216  int length );
14217 
14218 /// @brief Gets the info for work item output files.
14219 /// The number of work item results is found on the ::HAPI_PDG_WorkItemInfo
14220 /// returned by ::HAPI_GetWorkItemInfo()
14221 ///
14222 /// @ingroup PDG
14223 ///
14224 /// @param[in] session
14225 /// The session of Houdini you are interacting with.
14226 /// See @ref HAPI_Sessions for more on sessions.
14227 /// Pass NULL to just use the default in-process session.
14228 /// <!-- default NULL -->
14229 ///
14230 /// @param[in] node_id
14231 /// The node id.
14232 ///
14233 /// @param[in] work_item_id
14234 /// The id of the work item
14235 ///
14236 /// @param[out] resultinfo_array
14237 /// Buffer to fill with info structs. String handles are valid
14238 /// until the next call of this function.
14239 /// <!-- sizeparm resultinfo_count -->
14240 ///
14241 /// @param[in] resultinfo_count
14242 /// The length of @p resultinfo_array
14243 ///
14245  HAPI_NodeId node_id,
14246  HAPI_PDG_WorkItemId work_item_id,
14247  HAPI_PDG_WorkItemOutputFile * resultinfo_array,
14248  int resultinfo_count );
14249 
14250 /// @brief Dirties the given node. Cancels the cook if necessary and then
14251 /// deletes all workitems on the node.
14252 ///
14253 /// @ingroup PDG
14254 ///
14255 /// @param[in] session
14256 /// The session of Houdini you are interacting with.
14257 /// See @ref HAPI_Sessions for more on sessions.
14258 /// Pass NULL to just use the default in-process session.
14259 /// <!-- default NULL -->
14260 ///
14261 /// @param[in] node_id
14262 /// The node id.
14263 ///
14264 /// @param[in] clean_results
14265 /// Remove the results generated by the node.
14266 /// <!-- default 0 -->
14267 ///
14268 HAPI_DECL HAPI_DirtyPDGNode( const HAPI_Session * session,
14269  HAPI_NodeId node_id,
14270  HAPI_Bool clean_results );
14271 
14272 /// @brief Pause the PDG cooking operation.
14273 ///
14274 /// @ingroup PDG
14275 ///
14276 /// @param[in] session
14277 /// The session of Houdini you are interacting with.
14278 /// See @ref HAPI_Sessions for more on sessions.
14279 /// Pass NULL to just use the default in-process session.
14280 /// <!-- default NULL -->
14281 ///
14282 /// @param[in] graph_context_id
14283 /// The id of the graph context
14284 ///
14285 HAPI_DECL HAPI_PausePDGCook( const HAPI_Session * session,
14286  HAPI_PDG_GraphContextId graph_context_id );
14287 
14288 /// @brief Cancel the PDG cooking operation.
14289 ///
14290 /// @ingroup PDG
14291 ///
14292 /// @param[in] session
14293 /// The session of Houdini you are interacting with.
14294 /// See @ref HAPI_Sessions for more on sessions.
14295 /// Pass NULL to just use the default in-process session.
14296 /// <!-- default NULL -->
14297 ///
14298 /// @param[in] graph_context_id
14299 /// The id of the graph context
14300 ///
14301 HAPI_DECL HAPI_CancelPDGCook( const HAPI_Session * session,
14302  HAPI_PDG_GraphContextId graph_context_id );
14303 
14304 #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:1861
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:234
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:522
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:2132
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_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.
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:877
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_GetCameraTransform(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_Transform *transform)
Retrieves the transform of the SOP camera primitive. Scale is always locked to [1, 1, 1].
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:782
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:844
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_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_GetCookingTotalCount(const HAPI_Session *session, int *count)
Get total number of nodes that need to cook in the current session.
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_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_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_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:2115
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_SetInputCameraTransform(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_RSTOrder rst_order, HAPI_XYZOrder rot_order, const HAPI_Transform *transform)
Configures the SOP Camera node's transform parameters.
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_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_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:1208
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:574
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:1642
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:505
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:1165
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 specifically creating a curve input geometry SOP. Inside the specified parent node...
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_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:795
Data associated with a PDG Event.
Definition: HAPI_Common.h:2089
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:1735
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 ...
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:280
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:822
#define HAPI_DECL_DEPRECATED(hapi_ver, houdini_ver)
Definition: HAPI_API.h:97
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:1366
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:282
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_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:2197
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...
Data for SOP camera primitives.
Definition: HAPI_Common.h:2062
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_SetInputCameraInfo(const HAPI_Session *session, HAPI_NodeId node_id, const HAPI_CameraInfo *camera_info)
Configures the SOP Camera node's parameters.
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:922
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_CreateInputCameraNode(const HAPI_Session *session, HAPI_NodeId parent_node_id, HAPI_NodeId *node_id, const char *camera_name, const char *node_label)
Creates a SOP Camera node which can then be configured with HAPI_SetInputCameraInfo() and HAPI_SetInp...
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:1136
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:1267
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_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_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:1123
#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:1691
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:1108
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:1196
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_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 transform of an OBJ node.
HAPI_PresetType
Definition: HAPI_Common.h:494
Data for a Box Part.
Definition: HAPI_Common.h:2045
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_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:562
Data for a Sphere Part.
Definition: HAPI_Common.h:2054
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:1096
HAPI_DECL HAPI_DisconnectNodeInput(const HAPI_Session *session, HAPI_NodeId node_id, int input_index)
Disconnect a node input.
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:564
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:1852
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:889
HAPI_DECL HAPI_GetCameraInfo(const HAPI_Session *session, HAPI_NodeId node_id, HAPI_PartId part_id, HAPI_CameraInfo *camera_info)
Retrieves the camera parms for a SOP camera primitive.
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:1890
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_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, HAPI_NodeId *new_node_id)
Loads some raw image data into a COP node.
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:764
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:1597
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