Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/TDbObjectPointer.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

105 lines
2.2 KiB
C++

// Copyright (C), 1998-2007, Beijing Tangent Engineering Software Co. Ltd.
// = FileName: TDbObjectPointer.h
// = Version: 8.5
// = Author: lgh
// = Date: 2010-11-5 16:58:09
// = Description: ARX自带smart指针平台之间有差异,在此左一层封装。
// = Maintainers:
#pragma once
#include "commonRoad.h"
#include <dbObjptr.h>
template <class TDbObject>
class TDbObjectPointer
{
public:
TDbObjectPointer(void);
~TDbObjectPointer(void);
const TDbObject *object() const;
TDbObject *object();
const TDbObject * operator->() const;
TDbObject * operator->();
Acad::ErrorStatus open(AcDbObjectId objId, AcDb::OpenMode mode, bool openErased = false);
void close();
private:
AcDbObjectPointer<TDbObject> *m_pointerImp;
};
template <class TDbObject>
TDbObjectPointer<TDbObject>::TDbObjectPointer(void)
: m_pointerImp(NULL)
{
}
template <class TDbObject>
TDbObjectPointer<TDbObject>::~TDbObjectPointer(void)
{
delete m_pointerImp;
m_pointerImp = NULL;
}
template<class TDbObject> inline const TDbObject *
TDbObjectPointer<TDbObject>::object() const
{
ASSERT(m_pointerImp != NULL);
ASSERT(m_pointerImp->openStatus() == Acad::eOk);
return (*m_pointerImp).object();
}
template<class TDbObject> inline TDbObject *
TDbObjectPointer<TDbObject>::object()
{
ASSERT(m_pointerImp != NULL);
ASSERT(m_pointerImp->openStatus() == Acad::eOk);
return (*m_pointerImp).object();
}
template<class TDbObject> inline const TDbObject *
TDbObjectPointer<TDbObject>::operator->() const
{
return object();
}
template<class TDbObject> inline TDbObject *
TDbObjectPointer<TDbObject>::operator->()
{
return object();
}
template <class TDbObject>
Acad::ErrorStatus TDbObjectPointer<TDbObject>::open(AcDbObjectId objId, AcDb::OpenMode mode, bool openErased)
{
ASSERT(m_pointerImp == NULL);
m_pointerImp = new AcDbObjectPointer<TDbObject>(objId, mode, openErased);
Acad::ErrorStatus eRet = m_pointerImp->openStatus();
if (m_pointerImp->openStatus() != Acad::eOk)
{
delete m_pointerImp;
m_pointerImp = NULL;
}
return eRet;
}
template <class TDbObject>
void TDbObjectPointer<TDbObject>::close()
{
if (m_pointerImp != NULL)
{
delete m_pointerImp;
m_pointerImp = NULL;
}
}
#define AcDbObjectPointer TDbObjectPointer