diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.cxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.cxx new file mode 100644 index 0000000000..118a9460ec --- /dev/null +++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.cxx @@ -0,0 +1,80 @@ +// Created on: 2017-02-14 +// Created by: Sergey NIKONOV +// Copyright (c) 2008-2017 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. + +#include +#include +#include +#include +#include +#include + +IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_AssemblyItemRefDriver, XmlMDF_ADriver) +IMPLEMENT_DOMSTRING(Path, "path") + +//======================================================================= +//function : +//purpose : +//======================================================================= +XmlMXCAFDoc_AssemblyItemRefDriver::XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMsgDriver) +: XmlMDF_ADriver(theMsgDriver, STANDARD_TYPE(XCAFDoc_AssemblyItemRef)->Name()) +{ +} + +//======================================================================= +//function : +//purpose : +//======================================================================= +Handle(TDF_Attribute) XmlMXCAFDoc_AssemblyItemRefDriver::NewEmpty() const +{ + return new XCAFDoc_AssemblyItemRef(); +} + +//======================================================================= +//function : +//purpose : +//======================================================================= +Standard_Boolean XmlMXCAFDoc_AssemblyItemRefDriver::Paste(const XmlObjMgt_Persistent& theSource, + const Handle(TDF_Attribute)& theTarget, + XmlObjMgt_RRelocationTable& /*theRelocTable*/) const +{ + const XmlObjMgt_Element& anElement = theSource; + + XmlObjMgt_DOMString aPath = anElement.getAttribute(::Path()); + if (aPath == NULL) + return Standard_False; + + Handle(XCAFDoc_AssemblyItemRef) aThis = Handle(XCAFDoc_AssemblyItemRef)::DownCast(theTarget); + if (aThis.IsNull()) + return Standard_False; + + aThis->Set(aPath.GetString()); + + return Standard_True; +} + +//======================================================================= +//function : +//purpose : +//======================================================================= +void XmlMXCAFDoc_AssemblyItemRefDriver::Paste(const Handle(TDF_Attribute)& theSource, + XmlObjMgt_Persistent& theTarget, + XmlObjMgt_SRelocationTable& /*theRelocTable*/) const +{ + Handle(XCAFDoc_AssemblyItemRef) aThis = Handle(XCAFDoc_AssemblyItemRef)::DownCast(theSource); + + XmlObjMgt_DOMString aPath(aThis->Get().ToString().ToCString()); + + theTarget.Element().setAttribute(::Path(), aPath); +} diff --git a/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.hxx b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.hxx new file mode 100644 index 0000000000..2be1a1e751 --- /dev/null +++ b/src/XmlMXCAFDoc/XmlMXCAFDoc_AssemblyAtemRefDriver.hxx @@ -0,0 +1,55 @@ +// Created on: 2017-02-16 +// Created by: Sergey NIKONOV +// Copyright (c) 2008-2017 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. + +#ifndef _XmlMXCAFDoc_AssemblyItemRefDriver_HeaderFile +#define _XmlMXCAFDoc_AssemblyItemRefDriver_HeaderFile + +#include +#include + +#include +#include +#include +#include + +class CDM_MessageDriver; +class TDF_Attribute; +class XmlObjMgt_Persistent; + +class XmlMXCAFDoc_AssemblyItemRefDriver; +DEFINE_STANDARD_HANDLE(XmlMXCAFDoc_AssemblyItemRefDriver, XmlMDF_ADriver) + +//! Attribute Driver. +class XmlMXCAFDoc_AssemblyItemRefDriver : public XmlMDF_ADriver +{ +public: + + Standard_EXPORT XmlMXCAFDoc_AssemblyItemRefDriver(const Handle(CDM_MessageDriver)& theMessageDriver); + + Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE; + + Standard_EXPORT Standard_Boolean Paste(const XmlObjMgt_Persistent& theSource, + const Handle(TDF_Attribute)& theTarget, + XmlObjMgt_RRelocationTable& theRelocTable) const Standard_OVERRIDE; + + Standard_EXPORT void Paste(const Handle(TDF_Attribute)& theSource, + XmlObjMgt_Persistent& theTarget, + XmlObjMgt_SRelocationTable& theRelocTable) const Standard_OVERRIDE; + + DEFINE_STANDARD_RTTIEXT(XmlMXCAFDoc_AssemblyItemRefDriver, XmlMDF_ADriver) + +}; + +#endif // _XmlMXCAFDoc_AssemblyItemRefDriver_HeaderFile