NAME

cxPickAlloc, cxPickCopy, cxPickDup, cxPickEventDataGet, cxPickEventDataSet, cxPickEventTypeGet, cxPickEventTypeSet, cxPickHitColorGet, cxPickHitColorLen, cxPickHitColorRem, cxPickHitColorSet, cxPickHitConePartGet, cxPickHitConePartSet, cxPickHitCylinderPartGet, cxPickHitCylinderPartSet, cxPickHitFaceIndicesGet, cxPickHitFaceIndicesLen, cxPickHitFaceIndicesRem, cxPickHitFaceIndicesSet, cxPickHitFaceNormalsGet, cxPickHitFaceNormalsLen, cxPickHitFaceNormalsRem, cxPickHitFaceNormalsSet, cxPickHitFaceNumVerticesGet, cxPickHitFaceNumVerticesSet, cxPickHitFacePointsGet, cxPickHitFacePointsLen, cxPickHitFacePointsRem, cxPickHitFacePointsSet, cxPickHitFlagsGet, cxPickHitFlagsSet, cxPickHitGlobalTransformGet, cxPickHitGlobalTransformLen, cxPickHitGlobalTransformRem, cxPickHitGlobalTransformSet, cxPickHitIdGet, cxPickHitIdSet, cxPickHitLabelGet, cxPickHitLabelRem, cxPickHitLabelSet, cxPickHitLineIndicesGet, cxPickHitLineIndicesLen, cxPickHitLineIndicesRem, cxPickHitLineIndicesSet, cxPickHitLineNormalsGet, cxPickHitLineNormalsLen, cxPickHitLineNormalsRem, cxPickHitLineNormalsSet, cxPickHitLinePointsGet, cxPickHitLinePointsLen, cxPickHitLinePointsRem, cxPickHitLinePointsSet, cxPickHitLocalTransformGet, cxPickHitLocalTransformLen, cxPickHitLocalTransformRem, cxPickHitLocalTransformSet, cxPickHitLocationGet, cxPickHitLocationLen, cxPickHitLocationRem, cxPickHitLocationSet, cxPickHitNormalGet, cxPickHitNormalLen, cxPickHitNormalRem, cxPickHitNormalSet, cxPickHitObjectTypeGet, cxPickHitObjectTypeSet, cxPickHitPointIndexGet, cxPickHitPointIndexSet, cxPickHitsArrayLen, cxPickHitsArrayRem, cxPickModifierKeysGet, cxPickModifierKeysSet, cxPickNumObjectHitsGet, cxPickNumObjectHitsSet, cxPickPositionArrayGet, cxPickPositionArrayLen, cxPickPositionArrayRem, cxPickPositionArraySet, cxPickProjectionMatrixGet, cxPickProjectionMatrixLen, cxPickProjectionMatrixRem, cxPickProjectionMatrixSet, cxPickRayDirectionGet, cxPickRayDirectionLen, cxPickRayDirectionRem, cxPickRayDirectionSet, cxPickRayOriginGet, cxPickRayOriginLen, cxPickRayOriginRem, cxPickRayOriginSet, cxPickRead, cxPickWindowSizeArrayGet, cxPickWindowSizeArrayLen, cxPickWindowSizeArrayRem, cxPickWindowSizeArraySet, cxPickWrite

interface routines for IRIS Explorer cxPick data structure

#include <cx/cxPick.api.h>
#ifndef __cxPick_API_H_
#define __cxPick_API_H_

#ifdef __cplusplus
 extern "C" {
#endif

#include <stdio.h>
#if defined(__sun) || defined(WIN32)
 cxPick* cxPickAlloc( signed int NumObjectHits );
 cxPick* cxPickCopy( cxPick *src );
 cxPick* cxPickDup( cxPick *src );
 signed long cxPickEventDataGet( cxPick *src, cxErrorCode *ec );
 void cxPickEventDataSet( cxPick *src, signed long val, cxErrorCode *ec );
 signed int cxPickEventTypeGet( cxPick *src, cxErrorCode *ec );
 void cxPickEventTypeSet( cxPick *src, signed int val, cxErrorCode *ec );
 float* cxPickHitColorGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitColorLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitColorRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitColorSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitConePartGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitConePartSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitCylinderPartGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitCylinderPartSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 signed long* cxPickHitFaceIndicesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFaceIndicesLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceIndicesRem( cxPick *src, signed long* *val, cxErrorCode *ec );
 void cxPickHitFaceIndicesSet( cxPick *src, signed long* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitFaceNormalsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFaceNormalsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceNormalsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitFaceNormalsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitFaceNumVerticesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceNumVerticesSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitFacePointsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFacePointsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFacePointsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitFacePointsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitFlagsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFlagsSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitGlobalTransformGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitGlobalTransformLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitGlobalTransformRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitGlobalTransformSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitIdGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitIdSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 char * cxPickHitLabelGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLabelRem( cxPick *src, char * *val, cxErrorCode *ec );
 void cxPickHitLabelSet( cxPick *src, char * val, long HitsArrayInd, cxErrorCode *ec );
 signed long* cxPickHitLineIndicesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLineIndicesLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLineIndicesRem( cxPick *src, signed long* *val, cxErrorCode *ec );
 void cxPickHitLineIndicesSet( cxPick *src, signed long* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLineNormalsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLineNormalsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLineNormalsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLineNormalsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLinePointsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLinePointsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLinePointsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLinePointsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLocalTransformGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLocalTransformLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLocalTransformRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLocalTransformSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLocationGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLocationLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLocationRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLocationSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitNormalGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitNormalLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitNormalRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitNormalSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 cxPickObject cxPickHitObjectTypeGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitObjectTypeSet( cxPick *src, cxPickObject val, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitPointIndexGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitPointIndexSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitsArrayLen( cxPick *src, cxErrorCode *ec );
 void cxPickHitsArrayRem( cxPick *src, cxPickHit* *val, cxErrorCode *ec );
 signed long cxPickModifierKeysGet( cxPick *src, cxErrorCode *ec );
 void cxPickModifierKeysSet( cxPick *src, signed long val, cxErrorCode *ec );
 signed int cxPickNumObjectHitsGet( cxPick *src, cxErrorCode *ec );
 void cxPickNumObjectHitsSet( cxPick *src, signed int val, cxErrorCode *ec );
 signed int* cxPickPositionArrayGet( cxPick *src, cxErrorCode *ec );
 long cxPickPositionArrayLen( cxPick *src, cxErrorCode *ec );
 void cxPickPositionArrayRem( cxPick *src, signed int* *val, cxErrorCode *ec );
 void cxPickPositionArraySet( cxPick *src, signed int* val, cxErrorCode *ec );
 float* cxPickProjectionMatrixGet( cxPick *src, cxErrorCode *ec );
 long cxPickProjectionMatrixLen( cxPick *src, cxErrorCode *ec );
 void cxPickProjectionMatrixRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickProjectionMatrixSet( cxPick *src, float* val, cxErrorCode *ec );
 float* cxPickRayDirectionGet( cxPick *src, cxErrorCode *ec );
 long cxPickRayDirectionLen( cxPick *src, cxErrorCode *ec );
 void cxPickRayDirectionRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickRayDirectionSet( cxPick *src, float* val, cxErrorCode *ec );
 float* cxPickRayOriginGet( cxPick *src, cxErrorCode *ec );
 long cxPickRayOriginLen( cxPick *src, cxErrorCode *ec );
 void cxPickRayOriginRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickRayOriginSet( cxPick *src, float* val, cxErrorCode *ec );
 cxPick* cxPickRead( FILE *fd );
 signed int* cxPickWindowSizeArrayGet( cxPick *src, cxErrorCode *ec );
 long cxPickWindowSizeArrayLen( cxPick *src, cxErrorCode *ec );
 void cxPickWindowSizeArrayRem( cxPick *src, signed int* *val, cxErrorCode *ec );
 void cxPickWindowSizeArraySet( cxPick *src, signed int* val, cxErrorCode *ec );
 void cxPickWrite( FILE *fd, int mode, cxPick *src );
#ifndef __cxPick_API_H_
#define __cxPick_API_H_

#ifdef __cplusplus
 extern "C" {
#endif

#include <stdio.h>
#if defined(__sun) || defined(WIN32)
 integer function cxPickAlloc( NumObjectHits )
 integer function cxPickCopy( src )
 integer function cxPickDup( src )
 integer function cxPickEventDataGet( src, ec )
 subroutine cxPickEventDataSet( src, val, ec )
 integer function cxPickEventTypeGet( src, ec )
 subroutine cxPickEventTypeSet( src, val, ec )
 integer function cxPickHitColorGet( src, HitsArrayInd, ec )
 integer function cxPickHitColorLen( src, HitsArrayInd, ec )
 subroutine cxPickHitColorRem( src, val, ec )
 subroutine cxPickHitColorSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitConePartGet( src, HitsArrayInd, ec )
 subroutine cxPickHitConePartSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitCylinderPartGet( src, HitsArrayInd, ec )
 subroutine cxPickHitCylinderPartSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitFaceIndicesGet( src, HitsArrayInd, ec )
 integer function cxPickHitFaceIndicesLen( src, HitsArrayInd, ec )
 subroutine cxPickHitFaceIndicesRem( src, val, ec )
 subroutine cxPickHitFaceIndicesSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitFaceNormalsGet( src, HitsArrayInd, ec )
 integer function cxPickHitFaceNormalsLen( src, HitsArrayInd, ec )
 subroutine cxPickHitFaceNormalsRem( src, val, ec )
 subroutine cxPickHitFaceNormalsSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitFaceNumVerticesGet( src, HitsArrayInd, ec )
 subroutine cxPickHitFaceNumVerticesSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitFacePointsGet( src, HitsArrayInd, ec )
 integer function cxPickHitFacePointsLen( src, HitsArrayInd, ec )
 subroutine cxPickHitFacePointsRem( src, val, ec )
 subroutine cxPickHitFacePointsSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitFlagsGet( src, HitsArrayInd, ec )
 subroutine cxPickHitFlagsSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitGlobalTransformGet( src, HitsArrayInd, ec )
 integer function cxPickHitGlobalTransformLen( src, HitsArrayInd, ec )
 subroutine cxPickHitGlobalTransformRem( src, val, ec )
 subroutine cxPickHitGlobalTransformSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitIdGet( src, HitsArrayInd, ec )
 subroutine cxPickHitIdSet( src, val, HitsArrayInd, ec )
 subroutine  cxPickHitLabelGet( src, HitsArrayInd, ec , retval)
 subroutine cxPickHitLabelRem( src, val, ec )
 subroutine cxPickHitLabelSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitLineIndicesGet( src, HitsArrayInd, ec )
 integer function cxPickHitLineIndicesLen( src, HitsArrayInd, ec )
 subroutine cxPickHitLineIndicesRem( src, val, ec )
 subroutine cxPickHitLineIndicesSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitLineNormalsGet( src, HitsArrayInd, ec )
 integer function cxPickHitLineNormalsLen( src, HitsArrayInd, ec )
 subroutine cxPickHitLineNormalsRem( src, val, ec )
 subroutine cxPickHitLineNormalsSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitLinePointsGet( src, HitsArrayInd, ec )
 integer function cxPickHitLinePointsLen( src, HitsArrayInd, ec )
 subroutine cxPickHitLinePointsRem( src, val, ec )
 subroutine cxPickHitLinePointsSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitLocalTransformGet( src, HitsArrayInd, ec )
 integer function cxPickHitLocalTransformLen( src, HitsArrayInd, ec )
 subroutine cxPickHitLocalTransformRem( src, val, ec )
 subroutine cxPickHitLocalTransformSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitLocationGet( src, HitsArrayInd, ec )
 integer function cxPickHitLocationLen( src, HitsArrayInd, ec )
 subroutine cxPickHitLocationRem( src, val, ec )
 subroutine cxPickHitLocationSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitNormalGet( src, HitsArrayInd, ec )
 integer function cxPickHitNormalLen( src, HitsArrayInd, ec )
 subroutine cxPickHitNormalRem( src, val, ec )
 subroutine cxPickHitNormalSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitObjectTypeGet( src, HitsArrayInd, ec )
 subroutine cxPickHitObjectTypeSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitPointIndexGet( src, HitsArrayInd, ec )
 subroutine cxPickHitPointIndexSet( src, val, HitsArrayInd, ec )
 integer function cxPickHitsArrayLen( src, ec )
 subroutine cxPickHitsArrayRem( src, val, ec )
 integer function cxPickModifierKeysGet( src, ec )
 subroutine cxPickModifierKeysSet( src, val, ec )
 integer function cxPickNumObjectHitsGet( src, ec )
 subroutine cxPickNumObjectHitsSet( src, val, ec )
 integer function cxPickPositionArrayGet( src, ec )
 integer function cxPickPositionArrayLen( src, ec )
 subroutine cxPickPositionArrayRem( src, val, ec )
 subroutine cxPickPositionArraySet( src, val, ec )
 integer function cxPickProjectionMatrixGet( src, ec )
 integer function cxPickProjectionMatrixLen( src, ec )
 subroutine cxPickProjectionMatrixRem( src, val, ec )
 subroutine cxPickProjectionMatrixSet( src, val, ec )
 integer function cxPickRayDirectionGet( src, ec )
 integer function cxPickRayDirectionLen( src, ec )
 subroutine cxPickRayDirectionRem( src, val, ec )
 subroutine cxPickRayDirectionSet( src, val, ec )
 integer function cxPickRayOriginGet( src, ec )
 integer function cxPickRayOriginLen( src, ec )
 subroutine cxPickRayOriginRem( src, val, ec )
 subroutine cxPickRayOriginSet( src, val, ec )
 integer function cxPickRead( fd )
 integer function cxPickWindowSizeArrayGet( src, ec )
 integer function cxPickWindowSizeArrayLen( src, ec )
 subroutine cxPickWindowSizeArrayRem( src, val, ec )
 subroutine cxPickWindowSizeArraySet( src, val, ec )
 subroutine cxPickWrite( fd, mode, src )
src
In C, a pointer to the data structure to be accessed in whole or part. In Fortran, an opaque integer handle to the data structure to be accessed in whole or part.
val
The val argument (if present) is the new value to be assigned to the structure member. See the section on Set routines below for more information on the val argument.
*Ind
Arguments following src and preceding ec with variable name ending in Ind (if any) are integer array bounds. If such an argument exists, the requested member is part of an array of structures, for which the *Ind variable provides the array index.
ec
In C, a pointer to a returned error code (if present). In Fortran, an integer output error code (if present). The ec output is an enumerated integer with cx_err_none (zero) indicating success. Any other value indicates an improper src input or an out-of-bounds Ind argument.
The return value (if present) is the accessed member, member type or length, allocated array or structure, duplicated structure, or read structure. See the section on the appropriate routines below for more information. The cxPick IRIS Explorer data structure is used to communicate data between modules in the IRIS Explorer scientific visualization system. The cxPick structure is defined using the IRIS Explorer Typing Language; the actual datatype specification is given at the bottom of the manual page. Derived from this datatype are several C and Fortran language routines that support manipulation of the cxPick structure members. The name of each routine is derived from the label of the associated member in the cxPick along with a keyword to denote the routine's action. Each routine name has the three parts type, member, and action, where type is either cxPick or a subsidiary reference-counted type, the optional member indicates the member to be accessed (or, if missing, indicates that the entire structure is the subject of the action), and action names the action the routine performs. Routines are generated to support only the actions which make sense for the cxPick structure. Not all types of routines may be represented if cxPick does not contain all types of structure members. Routines may be generated to support getting, setting and allocating structure members. Other routines compute the type, length, or array dimension product of appropriate structure members. Additional routines support copying, duplication, reading and writing of the entire cxPick data structure and of its subordinate reference counted sub-structures (if any). Similar routines are described together in a section below. Each description gives the information common to the routines in that section, with a table of the details particular to each routine. While the section headings mention only the cxPick routines, their discussions also pertain to similar routines for reference-counted types within cxPick. While most routines for the cxPick structure deal with the entire structure or a single member of it, some routines may access several members that have been aliased together (see, for instance, the data and coordinates arrays in the cxData and cxCoord structures of the cxLattice type). The routines that manipulate the non-uniquely labelled members in the cases of a switch structure have a special structure. Whereas a routine accessing a single structure member can have arguments and a return value of known type, the argument types of the union-based routine are not known at compile time. Therefore, such a routine expects as input or returns as output a pointer to memory; the pointer is either the pointer to the scalar member, or the actual member address in the case of an array or referenced structure. Some Get, Set, Type and Len routines may have this behavior. All of the routines documented above are automatically generated from the type file (whose suffix is .t). If you wish to examine the generated code for a given type (user- or IRIS Explorer-defined), you can recreate those files at will. Once you have created a .t file containing the type specification, you must also create a file named TYPES, which has on a single line the name of your type (without the .t suffix). Then create a Makefile by executing cxmkmf; you use the Makefile to build the type library. In the process of doing this, the generated code will be written to the file with suffix .api.c.

For example, assuming that the cxPick.t file exists, you would take the following steps:

        echo cxPick > TYPES
        cxmkmf
        make
Now your automatically generated code will reside in cxPick.api.c.

Note that this process will create several files in the local directory, so it is often helpful to use a separate directory for types, just as modules are developed in their own directories.

Routines in this group return the value of the appropriate structure member. The label of the member is used to construct the name of the routine, which has the three parts type, member, and Get. If the label refers to several members in disjoint cases of a switch statement, then the return value is a pointer to storage. This pointer is either a reference to the scalar member, or the actual member pointer, depending on the type of the member.
 signed long cxPickEventDataGet( cxPick *src, cxErrorCode *ec );
 signed int cxPickEventTypeGet( cxPick *src, cxErrorCode *ec );
 float* cxPickHitColorGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitConePartGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitCylinderPartGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long* cxPickHitFaceIndicesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitFaceNormalsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitFaceNumVerticesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitFacePointsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitFlagsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitGlobalTransformGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitIdGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 char * cxPickHitLabelGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long* cxPickHitLineIndicesGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLineNormalsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLinePointsGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLocalTransformGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitLocationGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 float* cxPickHitNormalGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 cxPickObject cxPickHitObjectTypeGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickHitPointIndexGet( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 signed long cxPickModifierKeysGet( cxPick *src, cxErrorCode *ec );
 signed int cxPickNumObjectHitsGet( cxPick *src, cxErrorCode *ec );
 signed int* cxPickPositionArrayGet( cxPick *src, cxErrorCode *ec );
 float* cxPickProjectionMatrixGet( cxPick *src, cxErrorCode *ec );
 float* cxPickRayDirectionGet( cxPick *src, cxErrorCode *ec );
 float* cxPickRayOriginGet( cxPick *src, cxErrorCode *ec );
 signed int* cxPickWindowSizeArrayGet( cxPick *src, cxErrorCode *ec );
 integer function cxPickEventDataGet( src, ec )
 integer function cxPickEventTypeGet( src, ec )
 integer function cxPickHitColorGet( src, HitsArrayInd, ec )
 integer function cxPickHitConePartGet( src, HitsArrayInd, ec )
 integer function cxPickHitCylinderPartGet( src, HitsArrayInd, ec )
 integer function cxPickHitFaceIndicesGet( src, HitsArrayInd, ec )
 integer function cxPickHitFaceNormalsGet( src, HitsArrayInd, ec )
 integer function cxPickHitFaceNumVerticesGet( src, HitsArrayInd, ec )
 integer function cxPickHitFacePointsGet( src, HitsArrayInd, ec )
 integer function cxPickHitFlagsGet( src, HitsArrayInd, ec )
 integer function cxPickHitGlobalTransformGet( src, HitsArrayInd, ec )
 integer function cxPickHitIdGet( src, HitsArrayInd, ec )
 subroutine  cxPickHitLabelGet( src, HitsArrayInd, ec , retval)
 integer function cxPickHitLineIndicesGet( src, HitsArrayInd, ec )
 integer function cxPickHitLineNormalsGet( src, HitsArrayInd, ec )
 integer function cxPickHitLinePointsGet( src, HitsArrayInd, ec )
 integer function cxPickHitLocalTransformGet( src, HitsArrayInd, ec )
 integer function cxPickHitLocationGet( src, HitsArrayInd, ec )
 integer function cxPickHitNormalGet( src, HitsArrayInd, ec )
 integer function cxPickHitObjectTypeGet( src, HitsArrayInd, ec )
 integer function cxPickHitPointIndexGet( src, HitsArrayInd, ec )
 integer function cxPickModifierKeysGet( src, ec )
 integer function cxPickNumObjectHitsGet( src, ec )
 integer function cxPickPositionArrayGet( src, ec )
 integer function cxPickProjectionMatrixGet( src, ec )
 integer function cxPickRayDirectionGet( src, ec )
 integer function cxPickRayOriginGet( src, ec )
 integer function cxPickWindowSizeArrayGet( src, ec )
<ans>
The returned argument represents the structure member of interest. There are two cases, with different interpretations of the returned argument. The first case, in which the return type is not a generic pointer (in C a void* pointer, in Fortran an integer), returns the member of interest, whether scalar or pointer. In the second case, in which the return type is a generic pointer (in C a void* pointer), the returned value is a pointer to storage. If the requested member is a scalar, the returned value is a reference to that scalar. If the requested member is a pointer, the returned value is actually that pointer. This case happens when several members in different cases of a switch structure are given the same label in the IRIS Explorer Typing Language file cxPick.t. It may be difficult to distinguish the two cases in Fortran based on the function return type (if that type is integer). In this case the user should consult the definition of cxPick to determine whether several members have the same label string. In Fortran, the Get routines that return a character string or array of character strings are implemented as subroutines having that string as their last argument. They are not written as character functions. Such a subroutine returning an array of character strings assumes the caller has passed in enough storage to hold all the strings; the number of elements necessary to form the array can be found by calling the related Len routine.
Routines in this group set the value of the appropriate structure member. The label of the member is used to construct the name of the routine, which has the three parts type, member, and Set. If the label refers to several members in disjoint cases of a switch statement, then the input value must be a pointer to storage. This pointer is either a reference to a scalar value used to override the old member value, or the actual pointer used to replace the member, depending on the type of the member. The old member is deleted, if an array, or has its reference count decremented, if a shared structure.
 void cxPickEventDataSet( cxPick *src, signed long val, cxErrorCode *ec );
 void cxPickEventTypeSet( cxPick *src, signed int val, cxErrorCode *ec );
 void cxPickHitColorSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitConePartSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitCylinderPartSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceIndicesSet( cxPick *src, signed long* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceNormalsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFaceNumVerticesSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFacePointsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitFlagsSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitGlobalTransformSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitIdSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLabelSet( cxPick *src, char * val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLineIndicesSet( cxPick *src, signed long* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLineNormalsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLinePointsSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLocalTransformSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitLocationSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitNormalSet( cxPick *src, float* val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitObjectTypeSet( cxPick *src, cxPickObject val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickHitPointIndexSet( cxPick *src, signed long val, long HitsArrayInd, cxErrorCode *ec );
 void cxPickModifierKeysSet( cxPick *src, signed long val, cxErrorCode *ec );
 void cxPickNumObjectHitsSet( cxPick *src, signed int val, cxErrorCode *ec );
 void cxPickPositionArraySet( cxPick *src, signed int* val, cxErrorCode *ec );
 void cxPickProjectionMatrixSet( cxPick *src, float* val, cxErrorCode *ec );
 void cxPickRayDirectionSet( cxPick *src, float* val, cxErrorCode *ec );
 void cxPickRayOriginSet( cxPick *src, float* val, cxErrorCode *ec );
 void cxPickWindowSizeArraySet( cxPick *src, signed int* val, cxErrorCode *ec );
 subroutine cxPickEventDataSet( src, val, ec )
 subroutine cxPickEventTypeSet( src, val, ec )
 subroutine cxPickHitColorSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitConePartSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitCylinderPartSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitFaceIndicesSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitFaceNormalsSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitFaceNumVerticesSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitFacePointsSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitFlagsSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitGlobalTransformSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitIdSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLabelSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLineIndicesSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLineNormalsSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLinePointsSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLocalTransformSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitLocationSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitNormalSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitObjectTypeSet( src, val, HitsArrayInd, ec )
 subroutine cxPickHitPointIndexSet( src, val, HitsArrayInd, ec )
 subroutine cxPickModifierKeysSet( src, val, ec )
 subroutine cxPickNumObjectHitsSet( src, val, ec )
 subroutine cxPickPositionArraySet( src, val, ec )
 subroutine cxPickProjectionMatrixSet( src, val, ec )
 subroutine cxPickRayDirectionSet( src, val, ec )
 subroutine cxPickRayOriginSet( src, val, ec )
 subroutine cxPickWindowSizeArraySet( src, val, ec )
val
The val argument (if present) is the new value to be assigned to the structure member. There are two cases, with different interpretations of val. The first case, in which the type of val is not a generic pointer (in C a void* pointer, in Fortran an integer), assigns val, whether scalar or pointer. In the second case, in which the type of val is a generic pointer (in C a void* pointer), val is a pointer to storage. If the requested member is a scalar, val is a reference to that scalar. If the requested member is a pointer, val is interpreted as actually that pointer. This case happens when several members in different cases of a switch structure are given the same label in the IRIS Explorer Typing Language file cxPick.t. It may be difficult to distinguish the two cases in Fortran based on the argument type (if that type is integer). In this case the user should consult the definition of cxPick to determine whether several members have the same label string.
Routines in this group return the type of the appropriate structure member, which is one of several members sharing the same label. The label of the member is used to construct the name of the routine, which has the three parts type, member, and Type. Routines in this group return the length in words of the appropriate array member. This length is calculated as the product of the dimensioning scalars and variables used to declare the array. The label of the member is used to construct the name of the routine, which has the three parts type, member, and Len.
 long cxPickHitColorLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFaceIndicesLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFaceNormalsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitFacePointsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitGlobalTransformLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLineIndicesLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLineNormalsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLinePointsLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLocalTransformLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitLocationLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitNormalLen( cxPick *src, long HitsArrayInd, cxErrorCode *ec );
 long cxPickHitsArrayLen( cxPick *src, cxErrorCode *ec );
 long cxPickPositionArrayLen( cxPick *src, cxErrorCode *ec );
 long cxPickProjectionMatrixLen( cxPick *src, cxErrorCode *ec );
 long cxPickRayDirectionLen( cxPick *src, cxErrorCode *ec );
 long cxPickRayOriginLen( cxPick *src, cxErrorCode *ec );
 long cxPickWindowSizeArrayLen( cxPick *src, cxErrorCode *ec );
 integer function cxPickHitColorLen( src, HitsArrayInd, ec )
 integer function cxPickHitFaceIndicesLen( src, HitsArrayInd, ec )
 integer function cxPickHitFaceNormalsLen( src, HitsArrayInd, ec )
 integer function cxPickHitFacePointsLen( src, HitsArrayInd, ec )
 integer function cxPickHitGlobalTransformLen( src, HitsArrayInd, ec )
 integer function cxPickHitLineIndicesLen( src, HitsArrayInd, ec )
 integer function cxPickHitLineNormalsLen( src, HitsArrayInd, ec )
 integer function cxPickHitLinePointsLen( src, HitsArrayInd, ec )
 integer function cxPickHitLocalTransformLen( src, HitsArrayInd, ec )
 integer function cxPickHitLocationLen( src, HitsArrayInd, ec )
 integer function cxPickHitNormalLen( src, HitsArrayInd, ec )
 integer function cxPickHitsArrayLen( src, ec )
 integer function cxPickPositionArrayLen( src, ec )
 integer function cxPickProjectionMatrixLen( src, ec )
 integer function cxPickRayDirectionLen( src, ec )
 integer function cxPickRayOriginLen( src, ec )
 integer function cxPickWindowSizeArrayLen( src, ec )
<ans>
The type of the requested switch discriminator variable. In C, the return value is a cxPrimType enumerated integer. In Fortran, the return value is an integer. See the file /usr/explorer/include/cx/Typedefs.h for more information.
Routines in this group compute the product of an array member's elements, to reflect the contribution to the length of an array that uses this member as a dimensioning variable. The label of the member to be allocated is used to construct the name of the routine, which has the three parts type, member, and Prod.
<ans>
The returned integer value is the length of an array dimensioned by the specified member, computed by taking the product of the member's values.
Routines in this group duplicate the entire data structure. The type of the structure is used to construct the name of the routine, which has the two parts type and Dup.
 cxPick* cxPickDup( cxPick *src );
 integer function cxPickDup( src )
<ans>
The return value references the duplicated structure, or is zero if an error was encountered. In C, the return value is a pointer to the structure. In Fortran, the return value is an opaque integer handle to the duplicated data structure.
Routines in this group copy the data structure, but not its reference counted children. The children of the input structure are referenced from the output structure and their reference counts incremented. For instance, a copied lattice would have a new cxLattice structure and a new dims vector, but would refer to the original cxData and cxCoord structures. The type of the structure is used to construct the name of the routine, which has the two parts type and Copy.
 cxPick* cxPickCopy( cxPick *src );
 integer function cxPickCopy( src )
<ans>
The return value references the copied structure, or is zero if an error was encountered. In C, the return value is a pointer to the structure. In Fortran, the return value is an opaque integer handle to the duplicated data structure.
Routines in this group allocate a reference-counted structure, an array member, or one of several union members sharing the same label. The label of the member to be allocated is used to construct the name of the routine, which has the three parts type, (optionally) member, and Alloc. If there is no member designated, the routine allocates the entire reference-counted structure.
 cxPick* cxPickAlloc( signed int NumObjectHits );
 integer function cxPickAlloc( NumObjectHits )
There are two types of allocation routines, those that allocate an array and those that allocate a reference-counted structure.
src
If src is an argument, then the allocation creates an array needed by the src structure. It is assumed that the src structure has been constructed to contain all the information needed to dimension the array. In C, src is a pointer to the structure. In Fortran, src is an opaque integer handle to the data structure.
<other>
The arguments other than src, if any, are dimensioning scalars, dimensioning arrays, and discriminating switches of some enumerated type. In C, the respective types of these arguments are long, long*, and enumerated types. In Fortran, their respective types are integer, integer array, and enumerated integer. These arguments are included in the argument list if they are needed to compute the size of an array or which case of a switch to take in allocating a reference-counted structure. It is possible that a structure allocation routine will not fully allocate the structure. This happens when an array or switch contains several items to also be allocated; there is no acceptable way to put all of the dimensioning information into the function call, so the array is not allocated (a null pointer is used instead) and the user is expected to use array allocation and member setting routines to complete the structure allocation. The return value references the allocated array or structure, or is zero if an error was encountered. In C, the return value is a pointer to the allocated structure. In Fortran, the return value is an opaque integer handle to the allocated data structure.
Routines in this group remove an array of objects, which may be scalars, structures, or reference-counted structures. Simple arrays are freed, arrays of structures are operated on recursively to remove their contents, and reference-counted structures have their reference counts decremented. The label of the member to be removed is used to construct the name of the routine, which has the three parts type, member, and Rem. No routine is created for removal of single reference-counted structures, use cxDataRefDec for that purpose. These routines are internal utilities used only by the Set routines. They are not meant for public use. No Fortran interface is provided. To delete a reference-counted object and the members it contains, use cxDataRefDec. To replace a member, use the related Set routine.
 void cxPickHitColorRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitFaceIndicesRem( cxPick *src, signed long* *val, cxErrorCode *ec );
 void cxPickHitFaceNormalsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitFacePointsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitGlobalTransformRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLabelRem( cxPick *src, char * *val, cxErrorCode *ec );
 void cxPickHitLineIndicesRem( cxPick *src, signed long* *val, cxErrorCode *ec );
 void cxPickHitLineNormalsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLinePointsRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLocalTransformRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitLocationRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitNormalRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickHitsArrayRem( cxPick *src, cxPickHit* *val, cxErrorCode *ec );
 void cxPickPositionArrayRem( cxPick *src, signed int* *val, cxErrorCode *ec );
 void cxPickProjectionMatrixRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickRayDirectionRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickRayOriginRem( cxPick *src, float* *val, cxErrorCode *ec );
 void cxPickWindowSizeArrayRem( cxPick *src, signed int* *val, cxErrorCode *ec );
src
src is the reference-counted structure containing the member to be removed. In C, src is a pointer to the structure.
val
val is the address of the member to be removed. An array is deleted, while a shared structure has its reference count decremented. In C, val is a pointer to the member.
Routines in this group use the IRIS Explorer transcription mechanism to read an ASCII or binary IRIS Explorer data structure from a file descriptor. The name of the type is used to construct the name of the routine, which has the two parts type and Read.
 cxPick* cxPickRead( FILE *fd );
 integer function cxPickRead( fd )
fd
The fd argument is the file descriptor from which to read data. In C, fd is of type FILE*. In Fortran, its type is integer.
Routines in this group use the IRIS Explorer transcription mechanism to write an ASCII or binary IRIS Explorer data structure to a file descriptor. The name of the type is used to construct the name of the routine, which has the two parts type and Write. The IRIS Explorer ASCII transcription format is not documented (to preserve the option of change at a future date), but is a straightforward ASCII presentation of the input structure; a careful comparison of such an output file with the input dataset will elucidate the format.
 void cxPickWrite( FILE *fd, int mode, cxPick *src );
 subroutine cxPickWrite( fd, mode, src )
fd
The fd argument is the file descriptor to which to write data. In C, fd is of type FILE*. In Fortran, its type is integer.
mode
The integer mode argument determines whether the output file is transcribed in ASCII (mode == 0) or binary (mode != 0) IRIS Explorer format.
This is the cxPick data structure definition as specified in the file cxPick.t.
shared root typedef struct
{
    int       eventType       "Event Type";
    long            eventData       "Event Data";
    long            eventModifiers      "Modifier Keys";
    int             position[2]       "Position Array";
    int             windowSize[2]     "Window Size Array";
    float           origin[3]       "Ray Origin";
    float           direction[3]      "Ray Direction";
    float           projectionMatrix[4, 4]  "Projection Matrix";
    int             numHits       "Num Object Hits";
    cxPickHit       hit[numHits]      "Hits Array";
} cxPick;
typedef struct
{
    long            id    "Hit Id";
    long            validInfo "Hit Flags";
    float           point[3]  "Hit Location";
    float           normal[3] "Hit Normal";
    float           color[3]  "Hit Color";
    string          label "Hit Label";
    float           localTransform[4, 4]  "Hit Local Transform";
    float           globalTransform[4, 4] "Hit Global Transform";
    cxPickObject    objectType  "Hit Object Type";
    switch (objectType) {
    case cx_pick_point:
  long            index "Hit Point Index";
    case cx_pick_line:
  long            index[2]  "Hit Line Indices";
  float           point[2, 3] "Hit Line Points";
  float           normal[2, 3]  "Hit Line Normals";
    case cx_pick_face:
  long            nvertices "Hit Face NumVertices";
  long            index[nvertices]  "Hit Face Indices";
  float           point[nvertices, 3] "Hit Face Points";
  float           normal[nvertices, 3]  "Hit Face Normals";
    case cx_pick_cone:
  long            part  "Hit Cone Part";
    case cx_pick_cylinder:
  long            part  "Hit Cylinder Part";
    } o;
} cxPickHit;
typedef enum {
  cx_pick_none,
  cx_pick_point,
  cx_pick_line,
  cx_pick_face,
  cx_pick_sphere,
  cx_pick_cone,
  cx_pick_cylinder,
  cx_pick_nurb,
  cx_pick_splat,
  cx_pick_other
} cxPickObject;
cxDataRefInc(3E), cxDataRefDec(3E), cxDataMalloc(3E), cxDataObjNew(3E), cxmkmf(1E)
Last modified: Mon Nov 6 16:33:36 GMT 2000
[ Documentation Home ]
© The Numerical Algorithms Group Ltd, Oxford UK. 1999