//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TAcDbLayerTableRecPtr.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: ÀàµÄÉùÃ÷ // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TACDBLAYERTABLERECPTR_H_ #define _TACDBLAYERTABLERECPTR_H_ class GEOAPI TAcDbLayerTableRecPtr { public: TAcDbLayerTableRecPtr(const TCHAR *pszLayer, AcDb::OpenMode opMode); ~TAcDbLayerTableRecPtr(); int operator !() ; operator AcDbLayerTableRecord & (); public: AcDbLayerTableRecord *m_pLayer; }; inline TAcDbLayerTableRecPtr::TAcDbLayerTableRecPtr(const TCHAR *pszLayer, AcDb::OpenMode opMode) : m_pLayer(NULL) { AcDbLayerTable *pLayerTable; Acad::ErrorStatus es = acdbCurDwg()->getLayerTable(pLayerTable, AcDb::kForRead); if (es != Acad::eOk) { return; } es = pLayerTable->getAt(pszLayer, m_pLayer, opMode); pLayerTable->close(); } inline TAcDbLayerTableRecPtr::~TAcDbLayerTableRecPtr() { if (m_pLayer) { m_pLayer->close(); } } inline int TAcDbLayerTableRecPtr::operator !() { return !m_pLayer; } inline TAcDbLayerTableRecPtr::operator AcDbLayerTableRecord & () { assert(m_pLayer); return *m_pLayer; } #endif