1044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/* 2044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Copyright (C) 2011 The Android Open Source Project 3044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 4044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * you may not use this file except in compliance with the License. 6044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * You may obtain a copy of the License at 7044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 8044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 10044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Unless required by applicable law or agreed to in writing, software 11044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * See the License for the specific language governing permissions and 14044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * limitations under the License. 15044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 16044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 17044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** @file rs_object.rsh 18044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \brief Object routines 19044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 20044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 21044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 22044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 23044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams#ifndef __RS_OBJECT_RSH__ 24044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams#define __RS_OBJECT_RSH__ 25044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 26044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 27044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 28044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Copy reference to the specified object. 29044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 30044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * @param dst 31044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * @param src 32044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 33044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 34044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_element *dst, rs_element src); 35044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 36044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 37044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 38044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 39044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_type *dst, rs_type src); 40044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 41044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 42044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 43044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 44044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_allocation *dst, rs_allocation src); 45044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 46044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 47044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 48044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 49044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_sampler *dst, rs_sampler src); 50044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 51044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 52044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 53044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 54044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_script *dst, rs_script src); 55044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 56044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 57044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 58044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 599e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsSetObject(rs_path *dst, rs_path src); 609e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/** 619e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * \overload 629e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */ 639e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsextern void __attribute__((overloadable)) 64044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_mesh *dst, rs_mesh src); 65044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 66044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 67044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 68044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 69044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_program_fragment *dst, rs_program_fragment src); 70044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 71044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 72044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 73044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 74044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_program_vertex *dst, rs_program_vertex src); 75044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 76044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 77044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 78044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 79044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_program_raster *dst, rs_program_raster src); 80044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 81044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 82044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 83044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 84044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_program_store *dst, rs_program_store src); 85044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 86044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 87044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 88044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 89044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsSetObject(rs_font *dst, rs_font src); 90044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 91044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 92044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Sets the object to NULL. 93044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 94044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * @return bool 95044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 96044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 97044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_element *dst); 98044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 99044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 100044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 101044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 102044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_type *dst); 103044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 104044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 105044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 106044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 107044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_allocation *dst); 108044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 109044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 110044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 111044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 112044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_sampler *dst); 113044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 114044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 115044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 116044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 117044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_script *dst); 118044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 119044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 120044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 121044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 1229e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsClearObject(rs_path *dst); 1239e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/** 1249e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * \overload 1259e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */ 1269e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsextern void __attribute__((overloadable)) 127044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_mesh *dst); 128044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 129044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 130044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 131044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 132044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_program_fragment *dst); 133044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 134044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 135044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 136044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 137044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_program_vertex *dst); 138044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 139044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 140044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 141044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 142044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_program_raster *dst); 143044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 144044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 145044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 146044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 147044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_program_store *dst); 148044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 149044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 150044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 151044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern void __attribute__((overloadable)) 152044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsClearObject(rs_font *dst); 153044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 154044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 155044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 156044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 157044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * Tests if the object is valid. Returns true if the object is valid, false if 158044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * it is NULL. 159044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * 160044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * @return bool 161044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 162044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 163044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_element); 164044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 165044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 166044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 167044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 168044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_type); 169044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 170044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 171044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 172044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 173044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_allocation); 174044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 175044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 176044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 177044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 178044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_sampler); 179044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 180044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 181044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 182044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 183044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_script); 184044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 185044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 186044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 187044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 1889e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams rsIsObject(rs_path); 1899e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams/** 1909e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams * \overload 1919e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Sams */ 1929e0afb5a2b3e476c42a373e7cd89cef4a34f8195Jason Samsextern bool __attribute__((overloadable)) 193044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_mesh); 194044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 195044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 196044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 197044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 198044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_program_fragment); 199044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 200044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 201044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 202044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 203044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_program_vertex); 204044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 205044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 206044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 207044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 208044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_program_raster); 209044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 210044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 211044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 212044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 213044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_program_store); 214044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams/** 215044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams * \overload 216044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams */ 217044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Samsextern bool __attribute__((overloadable)) 218044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams rsIsObject(rs_font); 219044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams 220044e2ee36ffe6520570a7f0207d75a8fce8b8e91Jason Sams#endif 221