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