1221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams/*
269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams * Copyright (C) 2012 The Android Open Source Project
3221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams *
4221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * you may not use this file except in compliance with the License.
6221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * You may obtain a copy of the License at
7221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams *
8221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams *
10221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Unless required by applicable law or agreed to in writing, software
11221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * See the License for the specific language governing permissions and
14221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * limitations under the License.
15221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams */
16221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
17221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#ifndef __ANDROID_BASE_OBJ_H__
18221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#define __ANDROID_BASE_OBJ_H__
19221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
20221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
2169cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams#include "utils/RefBase.h"
22221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <pthread.h>
23221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <rs.h>
24221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
25221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "RenderScript.h"
26221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
2769cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace android {
2869cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsnamespace renderscriptCpp {
2969cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams
3069cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams
3169cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsclass BaseObj : public android::LightRefBase<BaseObj> {
32221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsprotected:
33221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    friend class Element;
34221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    friend class Type;
35b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams    friend class Allocation;
36b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams    friend class Script;
37b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams    friend class ScriptC;
38221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
39221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    void *mID;
40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    RenderScript *mRS;
41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    android::String8 mName;
42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    void * getID() const;
44221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
45221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    BaseObj(void *id, RenderScript *rs);
46221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    void checkValid();
47221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
4869cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams    static void * getObjID(sp<const BaseObj> o);
49b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams
50221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samspublic:
51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    virtual ~BaseObj();
53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    virtual void updateFromNative();
54221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams    virtual bool equals(const BaseObj *obj);
55221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams};
56221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams
5769cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams}
5869cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams}
59221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#endif
60