/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** @file rs_element.rsh * \brief Element routines * * */ #ifndef __RS_ELEMENT_RSH__ #define __RS_ELEMENT_RSH__ // New API's #if (defined(RS_VERSION) && (RS_VERSION >= 16)) /** * Elements could be simple, such as an int or a float, or a * structure with multiple sub elements, such as a collection of * floats, float2, float4. This function returns zero for simple * elements or the number of sub-elements otherwise. * * @param e element to get data from * @return number of sub-elements in this element */ extern uint32_t __attribute__((overloadable)) rsElementGetSubElementCount(rs_element e); /** * For complex elements, this function will return the * sub-element at index * * @param e element to get data from * @param index index of the sub-element to return * @return sub-element in this element at given index */ extern rs_element __attribute__((overloadable)) rsElementGetSubElement(rs_element, uint32_t index); /** * For complex elements, this function will return the length of * sub-element name at index * * @param e element to get data from * @param index index of the sub-element to return * @return length of the sub-element name including the null * terminator (size of buffer needed to write the name) */ extern uint32_t __attribute__((overloadable)) rsElementGetSubElementNameLength(rs_element e, uint32_t index); /** * For complex elements, this function will return the * sub-element name at index * * @param e element to get data from * @param index index of the sub-element * @param name array to store the name into * @param nameLength length of the provided name array * @return number of characters actually written, excluding the * null terminator */ extern uint32_t __attribute__((overloadable)) rsElementGetSubElementName(rs_element e, uint32_t index, char *name, uint32_t nameLength); /** * For complex elements, some sub-elements could be statically * sized arrays. This function will return the array size for * sub-element at index * * @param e element to get data from * @param index index of the sub-element * @return array size of sub-element in this element at given * index */ extern uint32_t __attribute__((overloadable)) rsElementGetSubElementArraySize(rs_element e, uint32_t index); /** * This function specifies the location of a sub-element within * the element * * @param e element to get data from * @param index index of the sub-element * @return offset in bytes of sub-element in this element at * given index */ extern uint32_t __attribute__((overloadable)) rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); /** * Returns the size of element in bytes * * @param e element to get data from * @return total size of the element in bytes */ extern uint32_t __attribute__((overloadable)) rsElementGetBytesSize(rs_element e); /** * Returns the element's data type * * @param e element to get data from * @return element's data type */ extern rs_data_type __attribute__((overloadable)) rsElementGetDataType(rs_element e); /** * Returns the element's data kind * * @param e element to get data from * @return element's data size */ extern rs_data_kind __attribute__((overloadable)) rsElementGetDataKind(rs_element e); /** * Returns the element's vector size * * @param e element to get data from * @return length of the element vector (for float2, float3, * etc.) */ extern uint32_t __attribute__((overloadable)) rsElementGetVectorSize(rs_element e); #endif // (defined(RS_VERSION) && (RS_VERSION >= 16)) #endif // __RS_ELEMENT_RSH__