### List Info Availability LightWave® 9.2.1 Component Layout Header lwrender.h This interface provides access functions for managing the internal lists of objects maintained by LightWave Layout. Global Call
       LWListInfo *liFunc;
       liFunc = global( LWLISTINFO_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to a `LWListInfo` structure.
        typedef struct st_LWListInfo {
            int          (*index)(LWItemID object);
            int          (*reorder)(LWItemID *list);
            int          (*swap)(LWItemID *list);
            int          (*splice)(LWItemID point, LWItemID* list);
        } LWListInfo;
Exported ListInfo Functions
    index = index( id )
This function will map the provided LWItemID to the owning object's linear index value in the internal array. If the identifier is invalid, then the return value is `LI_Failure`.
    result = reorder( list[] )
  Provided a list of LWItemIDs (terminated by a LWITEM_NULL), this function will arrange the internal array to match the ordering found within the list. Any LWItemIDs not found in the list will be appended to the end of the internal array in the order in which they currently exist. Possible `result` values are:
  | `LI_Success` |  | The operation completed successfully.
  | `LI_MixedTypes` |  | The item types in the provided list are not all the same.
  | `LI_InvalidBoneParent` |  | The parent object of a provided Bone identifier is invalid.
  | `LI_MixedBones` |  | Bones in the list are from different parent objects.
    result = swap( list[] )
  This function allows a finer granularity of control over the movement of objects within the list. The caller provides a list of LWItemID pairs, and the objects found at those offsets within the specificed internal array for the item type will switch places. `list` should be terminated with an LWITEM_NULL entry. Possible `result` values are:
  | `LI_Success` |  | The operation completed successfully.
  | `LI_InvalidItemType` |  | The type of the identifier could not be determined.
  | `LI_MixedTypes` |  | The item types in the provided list are not all the same.
  | `LI_InvalidBoneParent` |  | The parent object of a provided Bone identifier is invalid.
  | `LI_MixedBones` |  | Bones in the list are from different parent objects.
  | `LI_InvalidPair` |  | A matched pair of identifiers is identical.
  | `LI_OutOfBounds` |  | The number of pairs provided exceeds the size of the type array.
    result = splice( point, list[] )
  Splicing takes the provided `LWITEM_NULL`-terminated list of LWItemIDs and inserts them into the internal array at the indicated insertion `point`. The item occupying the insertion `point`, and all entries following it, will be moved "down" in the array to make room for the spliced collection of identifiers. The `point` identifier can have the value `SPLICE_HEAD`, which indicates to the splice() function that the list items should be inserted at beginning of the array. In addition, a `point` value of `SPLICE_TAIL` will cause the items in the list to be appended to the end of the internal array. Possible `result` values are:
  | `LI_Success` |  | The operation completed successfully.
  | `LI_MixedTypes` |  | The item types in the provided list are not all the same.
  | `LI_ItemTypeMismatch` |  | The type of the insertion point identifier does not match the type of the first element in the list.
  | `LI_CyclicInsertionPoint` |  | The provided insertion point identifier is a member of the provided list.
  | `LI_InvalidBoneParent` |  | The parent object of a provided Bone identifier is invalid.
  | `LI_InvalidItemType` |  | The type of the identifier could not be determined.
  | `LI_InvalidInsertionPoint` |  | The provided insertion point identifier could not be found.
  | `LI_MixedBones` |  | Bones in the list are from different parent objects.