11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2010 Google Inc.
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef GrRefCnt_DEFINED
121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrRefCnt_DEFINED
131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "GrTypes.h"
151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "SkRefCnt.h"
161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergertypedef SkRefCnt GrRefCnt;
181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergertypedef SkAutoRef GrAutoRef;
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergertypedef SkAutoUnref GrAutoUnref;
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrSafeRef SkSafeRef
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrSafeUnref SkSafeUnref
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrSafeAssign(a, b)  SkRefCnt_SafeAssign(a, b)
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergertemplate<typename T>
261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerstatic inline void GrSafeSetNull(T*& obj) {
271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    if (NULL != obj) {
281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        obj->unref();
291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        obj = NULL;
301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    }
311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif
341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
35