// Created on: 2002-10-29 // Created by: Michael SAZONOV // Copyright (c) 2002-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. //======================================================================= //function : AssignId //purpose : Assigns the ID to the driver of the Type //======================================================================= inline void BinMDF_ADriverTable::AssignId (const Handle(Standard_Type)& theType, const Standard_Integer theId) { myMapId.Bind (theType, theId); } //======================================================================= //function : GetDriver //purpose : Gets a driver according to . // Returns Type ID if the driver was assigned an ID; 0 otherwise. //======================================================================= inline Standard_Integer BinMDF_ADriverTable::GetDriver (const Handle(Standard_Type)& theType, Handle(BinMDF_ADriver)& theDriver) { if (!myMap.IsBound (theType)) // try to assign driver for derived type { AddDerivedDriver (theType->Name()); } Standard_Integer anId = 0; if (myMap.IsBound(theType)) { theDriver = myMap (theType); if (myMapId.IsBound1(theType)) anId = myMapId.Find1 (theType); } return anId; } //======================================================================= //function : GetDriver //purpose : Returns a driver according to . // Returns null handle if a driver is not found //======================================================================= inline Handle(BinMDF_ADriver) BinMDF_ADriverTable::GetDriver (const Standard_Integer theTypeId) { Handle(BinMDF_ADriver) aDriver; if (myMapId.IsBound2(theTypeId)) { const Handle(Standard_Type)& aType = myMapId.Find2 (theTypeId); aDriver = myMap (aType); } return aDriver; }