#pragma once class SHAcDbLayerTableRecPtr { public: SHAcDbLayerTableRecPtr(const TCHAR *pszLayer, AcDb::OpenMode opMode); ~SHAcDbLayerTableRecPtr(); int operator !() ; operator AcDbLayerTableRecord & (); public: AcDbLayerTableRecord *m_pLayer; }; inline SHAcDbLayerTableRecPtr::SHAcDbLayerTableRecPtr(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 SHAcDbLayerTableRecPtr::~SHAcDbLayerTableRecPtr() { if (m_pLayer) { m_pLayer->close(); } } inline int SHAcDbLayerTableRecPtr::operator !() { return !m_pLayer; } inline SHAcDbLayerTableRecPtr::operator AcDbLayerTableRecord & () { assert(m_pLayer); return *m_pLayer; }