x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
daeSmartRef.h - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\DarkPuzzle\libs\bullet_sdk\Extras\COLLADA_DOM\include\dae\daeSmartRef.h
旋转
特效
属性
历史版本
/* * Copyright 2006 Sony Computer Entertainment Inc. * * Licensed under the SCEA Shared Source License, Version 1.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * http://research.scea.com/scea_shared_source_license.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing permissions and limitations under the * License. */ #ifndef __DAE_SMARTREF_H__ #define __DAE_SMARTREF_H__ #include
#include
template
class daeElementWrapper {}; /** * The @c daeSmartRef template class automates reference counting for * objects derived from @c daeElement. */ template
class daeSmartRef { public: /** * Constructor */ inline daeSmartRef() : _ptr((T*) NULL){} /** * Destructor */ inline ~daeSmartRef() { daeElement::release((daeElement*)_ptr); } /** * Constructor that will convert from one template to the other. * unimplemented. * @param */ template
inline daeSmartRef(const daeElementWrapper
&) : _ptr(U::instance()) {} /** * Copy Constructor that will convert from one template to the other. * @param smartRef a daeSmartRef to the object to copy from. */ template
inline daeSmartRef(const daeSmartRef
& smartRef) : _ptr(smartRef.cast()){ daeElement::ref((const daeElement*)_ptr); } /** * Function that returns a pointer to object being reference counted. * @return the object being reference counted. */ inline T* cast() const { return _ptr; } /** * Copy Constructor. * @param smartRef a daeSmartRef of the same template type to copy from */ inline daeSmartRef(const daeSmartRef
& smartRef) : _ptr(smartRef._ptr){ daeElement::ref((const daeElement*)_ptr); } /** * Constructor * @param ptr a pointer to an object of the same template type. */ inline daeSmartRef(T* ptr) : _ptr(ptr) { daeElement::ref((const daeElement*)_ptr); } /** * Overloaded assignment operator which will convert between template types. * @return Returns a reference to this object. * @note Unimplemented */ template
inline const daeSmartRef
& operator=(const daeElementWrapper
&){ daeElement::release((const daeElement*)_ptr); _ptr = U::instance(); return *this; } /** * Overloaded assignment operator which will convert between template types. * @param smartRef a daeSmartRef to the object to copy from. * @return Returns a reference to this object. */ template
inline const daeSmartRef
& operator=(const daeSmartRef
& smartRef) { T* ptr = smartRef.cast(); daeElement::ref((const daeElement*)ptr); daeElement::release((const daeElement*)_ptr); _ptr = ptr; return *this; } /** * Overloaded assignment operator. * @param other a daeSmartRef to the object to copy from. Must be of the same template type. * @return Returns a reference to this object. */ inline const daeSmartRef
& operator=(const daeSmartRef
& other) { T* ptr = other._ptr; daeElement::ref((const daeElement*)ptr); daeElement::release((const daeElement *)_ptr); _ptr = ptr; return *this; } /** * Overloaded assignment operator. * @param ptr a pointer to the object to copy from. Must be of the same template type. * @return Returns a reference to this object. */ inline const daeSmartRef
& operator=(T* ptr) { daeElement::ref((const daeElement*)ptr); daeElement::release((const daeElement*)_ptr); _ptr = ptr; return *this; } /** * Overloaded member selection operator. * @return a pointer of the template class to the object. */ inline T* operator->() const { assert (_ptr != (T*)NULL); return _ptr; } /** * Overloaded cast operator. * @return a pointer of the template class to the object. */ inline operator T*() const { return _ptr; } /** * Static cast function. * @param smartRef a smartRef to cast from * @return a pointer to an object of this template class */ template
inline static T* staticCast(const daeSmartRef
& smartRef) { return static_cast
(smartRef.cast()); } private: /* The pointer to the element which is being reference counted */ T* _ptr; }; #endif // __DAE_SMARTREF_H__
daeSmartRef.h
网页地址
文件地址
上一页
27/33
下一页
下载
( 4 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.