rsObjectBase.cpp revision 992a0b70d8fd7a14f0c57bc3c7e16c1f269a6609
1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams/*
2326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Copyright (C) 2009 The Android Open Source Project
3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * you may not use this file except in compliance with the License.
6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * You may obtain a copy of the License at
7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams *
10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * Unless required by applicable law or agreed to in writing, software
11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * See the License for the specific language governing permissions and
14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams * limitations under the License.
15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams */
16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams#include "rsObjectBase.h"
18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
19326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android;
20326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsusing namespace android::renderscript;
21326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
22326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsObjectBase::ObjectBase()
23326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
24326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    mRefCount = 0;
25a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams    mName = NULL;
26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
27326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
28326e0ddf89e8df2837752fbfd7a014814b32082cJason SamsObjectBase::~ObjectBase()
29326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
30326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    rsAssert(!mRefCount);
31326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
32326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
33326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ObjectBase::incRef() const
34326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    mRefCount ++;
36992a0b70d8fd7a14f0c57bc3c7e16c1f269a6609Jason Sams    //LOGV("ObjectBase %p inc ref %i", this, mRefCount);
37326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
38326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
39326e0ddf89e8df2837752fbfd7a014814b32082cJason Samsvoid ObjectBase::decRef() const
40326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams{
41326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    rsAssert(mRefCount > 0);
42326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    mRefCount --;
43992a0b70d8fd7a14f0c57bc3c7e16c1f269a6609Jason Sams    //LOGV("ObjectBase %p dec ref %i", this, mRefCount);
44326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    if (!mRefCount) {
45326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams        delete this;
46326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams    }
47326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams}
48326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams
49a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Samsvoid ObjectBase::setName(const char *name)
50a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams{
51a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams    delete mName;
52a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams    mName = NULL;
53a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams    if (name) {
54a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams        mName = new char[strlen(name) +1];
55a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams        strcpy(mName, name);
56a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams    }
57a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams}
58a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams
59a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Samsvoid ObjectBase::setName(const char *name, uint32_t len)
60a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams{
61a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams    delete mName;
62a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams    mName = NULL;
63a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams    if (name) {
64a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams        mName = new char[len + 1];
65a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams        memcpy(mName, name, len);
66a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams        mName[len] = 0;
67a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams    }
68a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams}
69a4a54e42fc710a62b47cbcb9d64c34a190429d9eJason Sams
70