1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

Integration of OCCT 6.5.0 from SVN

This commit is contained in:
bugmaster
2011-03-16 07:30:28 +00:00
committed by bugmaster
parent 4903637061
commit 7fd59977df
16375 changed files with 3882564 additions and 0 deletions

16
src/XmlTObjDrivers/FILES Executable file
View File

@@ -0,0 +1,16 @@
XmlTObjDrivers.cxx
XmlTObjDrivers.hxx
XmlTObjDrivers_DocumentRetrievalDriver.cxx
XmlTObjDrivers_DocumentRetrievalDriver.hxx
XmlTObjDrivers_DocumentStorageDriver.cxx
XmlTObjDrivers_DocumentStorageDriver.hxx
XmlTObjDrivers_IntSparseArrayDriver.cxx
XmlTObjDrivers_IntSparseArrayDriver.hxx
XmlTObjDrivers_ModelDriver.cxx
XmlTObjDrivers_ModelDriver.hxx
XmlTObjDrivers_ObjectDriver.cxx
XmlTObjDrivers_ObjectDriver.hxx
XmlTObjDrivers_ReferenceDriver.cxx
XmlTObjDrivers_ReferenceDriver.hxx
XmlTObjDrivers_XYZDriver.cxx
XmlTObjDrivers_XYZDriver.hxx

View File

@@ -0,0 +1,64 @@
// File: XmlTObjDrivers.cxx
// Created: 24.11.04 11:10:33
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <XmlLDrivers.hxx>
#include <XmlTObjDrivers.hxx>
#include <XmlMDF_ADriverTable.hxx>
#include <XmlTObjDrivers_DocumentStorageDriver.hxx>
#include <XmlTObjDrivers_DocumentRetrievalDriver.hxx>
#include <XmlTObjDrivers_ModelDriver.hxx>
#include <XmlTObjDrivers_ObjectDriver.hxx>
#include <XmlTObjDrivers_ReferenceDriver.hxx>
#include <XmlTObjDrivers_XYZDriver.hxx>
#include <XmlTObjDrivers_IntSparseArrayDriver.hxx>
#include <Plugin_Macro.hxx>
// avoid warnings on 'extern "C"' functions returning C++ classes
#ifdef WNT
#pragma warning(4:4190)
#endif
static Standard_GUID XmlStorageDriver ("f78ff4a0-a779-11d5-aab4-0050044b1af1");
static Standard_GUID XmlRetrievalDriver("f78ff4a1-a779-11d5-aab4-0050044b1af1");
Handle(Standard_Transient) XmlTObjDrivers::Factory(const Standard_GUID& aGUID)
{
if(aGUID == XmlStorageDriver)
{
cout << "XmlTObjDrivers : Storage Plugin" << endl;
static Handle(XmlTObjDrivers_DocumentStorageDriver) model_sd
= new XmlTObjDrivers_DocumentStorageDriver
("Copyright: Open CASCADE 2004"); // default copyright
return model_sd;
}
if(aGUID == XmlRetrievalDriver)
{
cout << "XmlTObjDrivers : Retrieval Plugin" << endl;
static Handle (XmlTObjDrivers_DocumentRetrievalDriver) model_rd
= new XmlTObjDrivers_DocumentRetrievalDriver;
return model_rd;
}
return XmlLDrivers::Factory (aGUID);
}
//=======================================================================
//function : AddDrivers
//purpose :
//=======================================================================
void XmlTObjDrivers::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
const Handle(CDM_MessageDriver)& anMsgDrv)
{
aDriverTable -> AddDriver (new XmlTObjDrivers_ModelDriver (anMsgDrv));
aDriverTable -> AddDriver (new XmlTObjDrivers_ObjectDriver (anMsgDrv));
aDriverTable -> AddDriver (new XmlTObjDrivers_ReferenceDriver (anMsgDrv));
aDriverTable -> AddDriver (new XmlTObjDrivers_XYZDriver (anMsgDrv));
aDriverTable -> AddDriver (new XmlTObjDrivers_IntSparseArrayDriver(anMsgDrv));
}
PLUGIN(XmlTObjDrivers)

View File

@@ -0,0 +1,38 @@
// File: XmlTObjDrivers.hxx
// Created: 24.11.04 11:11:08
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_HeaderFile
#define XmlTObjDrivers_HeaderFile
#include <TObj_Common.hxx>
#include <Standard_GUID.hxx>
class Handle(XmlMDF_ADriverTable);
class Handle(CDM_MessageDriver);
// Class for registering storage/retrieval drivers for TObj XML persistence
//
class XmlTObjDrivers
{
public:
// ---------- PUBLIC METHODS ----------
Standard_EXPORT static Handle(Standard_Transient) Factory
(const Standard_GUID& aGUID);
// Returns a driver corresponding to <aGUID>. Used for plugin.
Standard_EXPORT static void AddDrivers
(const Handle(XmlMDF_ADriverTable)& aDriverTable,
const Handle(CDM_MessageDriver)& anMsgDrv);
};
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,41 @@
// File: XmlTObjDrivers_DocumentRetrievalDriver.cxx
// Created: 24.11.04 18:52:29
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <XmlTObjDrivers_DocumentRetrievalDriver.hxx>
#include <XmlLDrivers.hxx>
#include <XmlTObjDrivers.hxx>
IMPLEMENT_STANDARD_HANDLE (XmlTObjDrivers_DocumentRetrievalDriver,
XmlLDrivers_DocumentRetrievalDriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_DocumentRetrievalDriver,
XmlLDrivers_DocumentRetrievalDriver)
//=======================================================================
//function : XmlTObjDrivers_DocumentRetrievalDriver
//purpose :
//=======================================================================
XmlTObjDrivers_DocumentRetrievalDriver::XmlTObjDrivers_DocumentRetrievalDriver()
{
}
//=======================================================================
//function : AttributeDrivers
//purpose :
//=======================================================================
Handle(XmlMDF_ADriverTable)
XmlTObjDrivers_DocumentRetrievalDriver::AttributeDrivers
(const Handle(CDM_MessageDriver)& theMsgDrv)
{
// Standard drivers
Handle(XmlMDF_ADriverTable) aTable = XmlLDrivers::AttributeDrivers (theMsgDrv);
// Native drivers
XmlTObjDrivers::AddDrivers(aTable, theMsgDrv);
return aTable;
}

View File

@@ -0,0 +1,44 @@
// File: XmlTObjDrivers_DocumentRetrievalDriver.hxx
// Created: 24.11.04 18:41:43
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_DocumentRetrievalDriver_HeaderFile
#define XmlTObjDrivers_DocumentRetrievalDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlLDrivers_DocumentRetrievalDriver.hxx>
#include <Handle_XmlMDF_ADriverTable.hxx>
class Handle(CDM_MessageDriver);
// Retrieval driver of a TObj XML document
//
class XmlTObjDrivers_DocumentRetrievalDriver :
public XmlLDrivers_DocumentRetrievalDriver
{
public:
// ---------- PUBLIC METHODS ----------
Standard_EXPORT XmlTObjDrivers_DocumentRetrievalDriver ();
// Constructor
Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers
(const Handle(CDM_MessageDriver)& theMsgDriver);
public:
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI (XmlTObjDrivers_DocumentRetrievalDriver)
};
// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (XmlTObjDrivers_DocumentRetrievalDriver,
XmlLDrivers_DocumentRetrievalDriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,43 @@
// File: XmlTObjDrivers_DocumentStorageDriver.cxx
// Created: 24.11.04 19:00:21
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <XmlTObjDrivers_DocumentStorageDriver.hxx>
#include <XmlLDrivers.hxx>
#include <XmlTObjDrivers.hxx>
IMPLEMENT_STANDARD_HANDLE (XmlTObjDrivers_DocumentStorageDriver,
XmlLDrivers_DocumentStorageDriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_DocumentStorageDriver,
XmlLDrivers_DocumentStorageDriver)
//=======================================================================
//function : XmlTObjDrivers_DocumentStorageDriver
//purpose :
//=======================================================================
XmlTObjDrivers_DocumentStorageDriver::XmlTObjDrivers_DocumentStorageDriver
(const TCollection_ExtendedString& theCopyright)
: XmlLDrivers_DocumentStorageDriver (theCopyright)
{
}
//=======================================================================
//function : AttributeDrivers
//purpose :
//=======================================================================
Handle(XmlMDF_ADriverTable)
XmlTObjDrivers_DocumentStorageDriver::AttributeDrivers
(const Handle(CDM_MessageDriver)& theMsgDrv)
{
// Standard drivers
Handle(XmlMDF_ADriverTable) aTable = XmlLDrivers::AttributeDrivers (theMsgDrv);
// Native drivers
XmlTObjDrivers::AddDrivers(aTable, theMsgDrv);
return aTable;
}

View File

@@ -0,0 +1,45 @@
// File: XmlTObjDrivers_DocumentStorageDriver.hxx
// Created: 24.11.04 18:56:20
// Author: Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_DocumentStorageDriver_HeaderFile
#define XmlTObjDrivers_DocumentStorageDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlLDrivers_DocumentStorageDriver.hxx>
#include <Handle_XmlMDF_ADriverTable.hxx>
class Handle(CDM_MessageDriver);
// Block of comments describing class XmlTObjDrivers_DocumentStorageDriver
//
class XmlTObjDrivers_DocumentStorageDriver :
public XmlLDrivers_DocumentStorageDriver
{
public:
// ---------- PUBLIC METHODS ----------
Standard_EXPORT XmlTObjDrivers_DocumentStorageDriver
(const TCollection_ExtendedString& theCopyright);
// Constructor
Standard_EXPORT virtual Handle(XmlMDF_ADriverTable) AttributeDrivers
(const Handle(CDM_MessageDriver)& theMsgDriver);
public:
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI (XmlTObjDrivers_DocumentStorageDriver)
};
// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (XmlTObjDrivers_DocumentStorageDriver,
XmlLDrivers_DocumentStorageDriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,119 @@
// File : XmlTObjDrivers_IntSparseArrayDriver.cxx
// Created : 30.03.2007
// Author : Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <XmlTObjDrivers_IntSparseArrayDriver.hxx>
#include <CDM_MessageDriver.hxx>
#include <TDF_Attribute.hxx>
#include <XmlObjMgt_Persistent.hxx>
#include <TObj_TIntSparseArray.hxx>
#include <TObj_Assistant.hxx>
#include <TCollection_AsciiString.hxx>
#include <TDF_Tool.hxx>
IMPLEMENT_STANDARD_HANDLE(XmlTObjDrivers_IntSparseArrayDriver,XmlMDF_ADriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_IntSparseArrayDriver,XmlMDF_ADriver)
#define ITEM_ID "itemId_"
#define ITEM_VALUE "itemValue_"
//=======================================================================
//function : XmlTObjDrivers_IntSparseArrayDriver
//purpose : constructor
//=======================================================================
XmlTObjDrivers_IntSparseArrayDriver::XmlTObjDrivers_IntSparseArrayDriver
(const Handle(CDM_MessageDriver)& theMessageDriver)
: XmlMDF_ADriver( theMessageDriver, NULL)
{
}
//=======================================================================
//function : NewEmpty
//purpose : Creates a new attribute
//=======================================================================
Handle(TDF_Attribute) XmlTObjDrivers_IntSparseArrayDriver::NewEmpty() const
{
return new TObj_TIntSparseArray;
}
//=======================================================================
//function : Paste
//purpose : Retrieve. Translate the contents of <theSource> and put it
// into <theTarget>.
//=======================================================================
Standard_Boolean XmlTObjDrivers_IntSparseArrayDriver::Paste
(const XmlObjMgt_Persistent& theSource,
const Handle(TDF_Attribute)& theTarget,
XmlObjMgt_RRelocationTable&) const
{
const XmlObjMgt_Element& anElement = theSource;
Handle(TObj_TIntSparseArray) aTarget =
Handle(TObj_TIntSparseArray)::DownCast(theTarget);
// get pairs (ID, value) while ID != 0
Standard_Integer i = 1;
TCollection_AsciiString anItemID;
TCollection_AsciiString anIdStr = TCollection_AsciiString( ITEM_ID ) +
TCollection_AsciiString( i );
anItemID = anElement.getAttribute( anIdStr.ToCString() );
while( anItemID.IsIntegerValue() && anItemID.IntegerValue() != 0 )
{
TCollection_AsciiString aStrIndex = TCollection_AsciiString( ITEM_VALUE ) +
TCollection_AsciiString( i );
TCollection_AsciiString anItemValue = anElement.getAttribute( aStrIndex.ToCString() );
if ( anItemValue.IsIntegerValue() )
{
// store the value in the target array
aTarget->SetDoBackup (Standard_False);
aTarget->SetValue (anItemID.IntegerValue(), anItemValue.IntegerValue());
aTarget->SetDoBackup (Standard_True);
}
i++;
}
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose : Store. Translate the contents of <theSource> and put it
// into <theTarget>
//=======================================================================
void XmlTObjDrivers_IntSparseArrayDriver::Paste
(const Handle(TDF_Attribute)& theSource,
XmlObjMgt_Persistent& theTarget,
XmlObjMgt_SRelocationTable&) const
{
Handle(TObj_TIntSparseArray) aSource =
Handle(TObj_TIntSparseArray)::DownCast (theSource);
// put only non-null values as pairs (ID, value)
// terminate the list by ID=0
TObj_TIntSparseArray::Iterator anIt = aSource->GetIterator();
Standard_Integer i = 1;
for ( ; anIt.More() ; anIt.Next() )
{
Standard_Integer aValue = anIt.Value();
if (aValue == 0)
continue;
TCollection_AsciiString anIdStr = TCollection_AsciiString( ITEM_ID ) +
TCollection_AsciiString( i );
TCollection_AsciiString aStrIndex = TCollection_AsciiString( ITEM_VALUE ) +
TCollection_AsciiString( i );
theTarget.Element().setAttribute( anIdStr.ToCString(), anIt.Index() );
theTarget.Element().setAttribute( aStrIndex.ToCString(), anIt.Value() );
i++;
}
// write last item
TCollection_AsciiString anIdStr = TCollection_AsciiString( ITEM_ID ) +
TCollection_AsciiString( i );
TCollection_AsciiString aStrIndex = TCollection_AsciiString( ITEM_VALUE ) +
TCollection_AsciiString( i );
theTarget.Element().setAttribute( anIdStr.ToCString(), 0 );
theTarget.Element().setAttribute( aStrIndex.ToCString(), 0 );
}

View File

@@ -0,0 +1,51 @@
// File : XmlTObjDrivers_IntSparseArrayDriver.hxx
// Created : 30.03.2007
// Author : Michael SAZONOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_IntSparseArrayDriver_HeaderFile
#define XmlTObjDrivers_IntSparseArrayDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlMDF_ADriver.hxx>
class XmlTObjDrivers_IntSparseArrayDriver : public XmlMDF_ADriver
{
public:
Standard_EXPORT XmlTObjDrivers_IntSparseArrayDriver
(const Handle(CDM_MessageDriver)& theMessageDriver);
// constructor
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
// Creates a new attribute
Standard_EXPORT Standard_Boolean Paste
(const XmlObjMgt_Persistent& theSource,
const Handle(TDF_Attribute)& theTarget,
XmlObjMgt_RRelocationTable& theRelocTable) const;
// Translate the contents of <theSource> and put it
// into <theTarget>
Standard_EXPORT void Paste
(const Handle(TDF_Attribute)& theSource,
XmlObjMgt_Persistent& theTarget,
XmlObjMgt_SRelocationTable& theRelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI(XmlTObjDrivers_IntSparseArrayDriver)
};
// Define handle class
DEFINE_STANDARD_HANDLE(XmlTObjDrivers_IntSparseArrayDriver,XmlMDF_ADriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,100 @@
// File : XmlTObjDrivers_ModelDriver.cxx
// Created : Wed Nov 24 11:14:21 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include "XmlTObjDrivers_ModelDriver.hxx"
#include <CDM_MessageDriver.hxx>
#include <XmlObjMgt_Persistent.hxx>
#include <XmlObjMgt_RRelocationTable.hxx>
#include <XmlObjMgt.hxx>
#include <Standard_GUID.hxx>
#include <TDF_Attribute.hxx>
#include <TObj_TModel.hxx>
#include <TObj_Model.hxx>
#include <TObj_Assistant.hxx>
IMPLEMENT_STANDARD_HANDLE(XmlTObjDrivers_ModelDriver,XmlMDF_ADriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_ModelDriver,XmlMDF_ADriver);
//=======================================================================
//function : XmlTObjDrivers_ModelDriver
//purpose : constructor
//=======================================================================
XmlTObjDrivers_ModelDriver::XmlTObjDrivers_ModelDriver
(const Handle(CDM_MessageDriver)& theMessageDriver)
: XmlMDF_ADriver( theMessageDriver, NULL)
{
}
//=======================================================================
//function : NewEmpty
//purpose : Creates a new attribute
//=======================================================================
Handle(TDF_Attribute) XmlTObjDrivers_ModelDriver::NewEmpty() const
{
return new TObj_TModel;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Set CurrentModel of TObj_Assistant into Target TObj_TModel
// if its GUID and GUID stored in Source are same
//=======================================================================
Standard_Boolean XmlTObjDrivers_ModelDriver::Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& /*RelocTable*/) const
{
TCollection_ExtendedString aString;
if (XmlObjMgt::GetExtendedString (Source, aString))
{
Standard_GUID aGUID (aString.ToExtString());
Handle(TObj_Model) aCurrentModel = TObj_Assistant::GetCurrentModel();
if (aGUID == aCurrentModel->GetGUID())
{
Handle(TObj_TModel) aTModel = Handle(TObj_TModel)::DownCast( Target );
aCurrentModel->SetLabel ( aTModel->Label() );
aTModel->Set( aCurrentModel );
return Standard_True;
}
WriteMessage("TObj_TModel retrieval: wrong model GUID");
return Standard_False;
}
WriteMessage("error retrieving ExtendedString for type TObj_TModel");
return Standard_False;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// a Model is stored as its GUID
//=======================================================================
void XmlTObjDrivers_ModelDriver::Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& /*RelocTable*/) const
{
Handle(TObj_TModel) aTModel =
Handle(TObj_TModel)::DownCast( Source );
Handle(TObj_Model) aModel = aTModel->Model();
// Store model GUID.
Standard_PCharacter aPGuidString = new Standard_Character[256];
aModel->GetGUID().ToCString( aPGuidString );
XmlObjMgt::SetExtendedString (Target, *aPGuidString);
delete []aPGuidString;
}

View File

@@ -0,0 +1,57 @@
// File : XmlTObjDrivers_ModelDriver.hxx
// Created : Wed Nov 24 11:15:32 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_ModelDriver_HeaderFile
#define XmlTObjDrivers_ModelDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlMDF_ADriver.hxx>
class XmlTObjDrivers_ModelDriver : public XmlMDF_ADriver
{
public:
Standard_EXPORT XmlTObjDrivers_ModelDriver
(const Handle(CDM_MessageDriver)& theMessageDriver);
// constructor
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
// Creates a new attribute
Standard_EXPORT Standard_Boolean Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Set CurrentModel of TObj_Persistence into Target TObj_TModel
// if its GUID and GUID stored in Source are same
Standard_EXPORT void Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// a Model is stored as its GUID
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI(XmlTObjDrivers_ModelDriver)
};
// Define handle class
DEFINE_STANDARD_HANDLE(XmlTObjDrivers_ModelDriver,XmlMDF_ADriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,84 @@
// File : XmlTObjDrivers_ObjectDriver.cxx
// Created : Wed Nov 24 11:16:34 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <CDM_MessageDriver.hxx>
#include "XmlTObjDrivers_ObjectDriver.hxx"
#include <TObj_TObject.hxx>
#include <TObj_Persistence.hxx>
#include <XmlObjMgt_Persistent.hxx>
#include <XmlObjMgt_RRelocationTable.hxx>
#include <XmlObjMgt.hxx>
IMPLEMENT_STANDARD_HANDLE(XmlTObjDrivers_ObjectDriver,XmlMDF_ADriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_ObjectDriver,XmlMDF_ADriver);
//=======================================================================
//function : XmlTObjDrivers_ObjectDriver
//purpose : constructor
//=======================================================================
XmlTObjDrivers_ObjectDriver::XmlTObjDrivers_ObjectDriver
(const Handle(CDM_MessageDriver)& theMessageDriver)
: XmlMDF_ADriver( theMessageDriver, NULL)
{
}
//=======================================================================
//function : NewEmpty
//purpose : Creates a new attribute
//=======================================================================
Handle(TDF_Attribute) XmlTObjDrivers_ObjectDriver::NewEmpty() const
{
return new TObj_TObject;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
//=======================================================================
Standard_Boolean XmlTObjDrivers_ObjectDriver::Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& /*RelocTable*/) const
{
TCollection_ExtendedString aString;
if (XmlObjMgt::GetExtendedString (Source, aString))
{
TCollection_AsciiString anAscii (aString);
Handle(TObj_Object) anObject =
TObj_Persistence::CreateNewObject(anAscii.ToCString(),Target->Label());
Handle(TObj_TObject)::DownCast (Target) ->Set( anObject );
return Standard_True;
}
WriteMessage("error retrieving ExtendedString for type TObj_TModel");
return Standard_False;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// anObject is stored as a Name of class derived from TObj_Object
//=======================================================================
void XmlTObjDrivers_ObjectDriver::Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& /*RelocTable*/) const
{
Handle(TObj_TObject) aTObj =
Handle(TObj_TObject)::DownCast( Source );
Handle(TObj_Object) anIObject = aTObj->Get();
XmlObjMgt::SetExtendedString (Target, anIObject->DynamicType()->Name());
}

View File

@@ -0,0 +1,58 @@
// File : XmlTObjDrivers_ObjectDriver.hxx
// Created : Wed Nov 24 11:17:02 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_ObjectDriver_HeaderFile
#define XmlTObjDrivers_ObjectDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlMDF_ADriver.hxx>
class XmlTObjDrivers_ObjectDriver : public XmlMDF_ADriver
{
public:
Standard_EXPORT XmlTObjDrivers_ObjectDriver
(const Handle(CDM_MessageDriver)& theMessageDriver);
// constructor
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
// Creates a new attribute
Standard_EXPORT Standard_Boolean Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// an TObj_Object is restored by TObj_Persistence basing on class name
// stored in Source
Standard_EXPORT void Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// anObject is stored as a Name of class derived from TObj_Object
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI(XmlTObjDrivers_ObjectDriver)
};
// Define handle class
DEFINE_STANDARD_HANDLE(XmlTObjDrivers_ObjectDriver,XmlMDF_ADriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,133 @@
// File : XmlTObjDrivers_ReferenceDriver.cxx
// Created : Wed Nov 24 11:18:43 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include "XmlTObjDrivers_ReferenceDriver.hxx"
#include <CDM_MessageDriver.hxx>
#include <TDF_Tool.hxx>
#include <TDF_Attribute.hxx>
#include <XmlObjMgt.hxx>
#include <XmlObjMgt_Persistent.hxx>
#include <XmlObjMgt_RRelocationTable.hxx>
#include <TObj_TReference.hxx>
#include <TObj_Model.hxx>
#include <TObj_Object.hxx>
#include <TObj_Assistant.hxx>
#include <TDF_ChildIterator.hxx>
IMPLEMENT_STANDARD_HANDLE(XmlTObjDrivers_ReferenceDriver,XmlMDF_ADriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_ReferenceDriver,XmlMDF_ADriver)
IMPLEMENT_DOMSTRING (MasterEntry, "master")
IMPLEMENT_DOMSTRING (ReferredEntry, "entry")
IMPLEMENT_DOMSTRING (ReferredModelEntry, "modelentry")
//=======================================================================
//function : XmlTObjDrivers_ReferenceDriver
//purpose : constructor
//=======================================================================
XmlTObjDrivers_ReferenceDriver::XmlTObjDrivers_ReferenceDriver
(const Handle(CDM_MessageDriver)& theMessageDriver)
: XmlMDF_ADriver( theMessageDriver, NULL)
{
}
//=======================================================================
//function : NewEmpty
//purpose : Creates a new attribute
//=======================================================================
Handle(TDF_Attribute) XmlTObjDrivers_ReferenceDriver::NewEmpty() const
{
return new TObj_TReference;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
//=======================================================================
Standard_Boolean XmlTObjDrivers_ReferenceDriver::Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& /*RelocTable*/) const
{
const XmlObjMgt_Element& anElement = Source;
// get entries
TCollection_AsciiString RefEntry = anElement.getAttribute(::ReferredEntry());
TCollection_AsciiString MasterEntry = anElement.getAttribute(::MasterEntry());
// entry in model holder
TCollection_AsciiString InHolderEntry =
anElement.getAttribute(::ReferredModelEntry());
// master label
TDF_Label aLabel, aMasterLabel;
TDF_Tool::Label (Target->Label().Data(), MasterEntry, aMasterLabel);
// referred label
if (InHolderEntry.IsEmpty())
TDF_Tool::Label (Target->Label().Data(), RefEntry, aLabel, Standard_True);
else
{
Handle(TObj_Model) aModel = Handle(TObj_Model)::DownCast
( TObj_Assistant::FindModel( InHolderEntry.ToCString() ));
TDF_Tool::Label (aModel->GetLabel().Data(), RefEntry, aLabel, Standard_True);
}
Handle(TObj_TReference) aTarget =
Handle(TObj_TReference)::DownCast (Target);
aTarget->Set ( aLabel, aMasterLabel );
return !aLabel.IsNull() && !aMasterLabel.IsNull();
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Store master and referred labels as entry, the other model referred
// as entry in model-container
//=======================================================================
void XmlTObjDrivers_ReferenceDriver::Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& /*RelocTable*/) const
{
Handle(TObj_TReference) aSource =
Handle(TObj_TReference)::DownCast (Source);
Handle(TObj_Object) aLObject = aSource->Get();
if (aLObject.IsNull())
return;
// referred entry
TCollection_AsciiString entry;
TDF_Label aLabel = aLObject->GetLabel();
TDF_Tool::Entry( aLabel, entry );
Target.Element().setAttribute(::ReferredEntry(), entry.ToCString());
// master entry
entry.Clear();
TDF_Label aMasterLabel = aSource->GetMasterLabel();
TDF_Tool::Entry( aMasterLabel, entry );
Target.Element().setAttribute(::MasterEntry(), entry.ToCString());
// is reference to other document
if (aLabel.Root() == aMasterLabel.Root()) return;
Handle(TObj_Model) aModel =
Handle(TObj_Model)::DownCast( aLObject->GetModel() );
TCollection_AsciiString aModelName( aModel->GetModelName()->String() );
Target.Element().setAttribute(::ReferredModelEntry(), aModelName.ToCString());
}

View File

@@ -0,0 +1,57 @@
// File : XmlTObjDrivers_ReferenceDriver.hxx
// Created : Wed Nov 24 11:19:22 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_ReferenceDriver_HeaderFile
#define XmlTObjDrivers_ReferenceDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlMDF_ADriver.hxx>
class XmlTObjDrivers_ReferenceDriver : public XmlMDF_ADriver
{
public:
Standard_EXPORT XmlTObjDrivers_ReferenceDriver
(const Handle(CDM_MessageDriver)& theMessageDriver);
// constructor
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
// Creates a new attribute
Standard_EXPORT Standard_Boolean Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
Standard_EXPORT void Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Store master and referred labels as entry, the other model referred
// as entry in model-container
// The reference pointing nowhere is not stored
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI(XmlTObjDrivers_ReferenceDriver)
};
// Define handle class
DEFINE_STANDARD_HANDLE(XmlTObjDrivers_ReferenceDriver,XmlMDF_ADriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif

View File

@@ -0,0 +1,124 @@
// File : XmlTObjDrivers_XYZDriver.cxx
// Created : Wed Nov 24 11:20:06 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#include <XmlTObjDrivers_XYZDriver.hxx>
#include <CDM_MessageDriver.hxx>
#include <TDF_Attribute.hxx>
#include <XmlObjMgt.hxx>
#include <XmlObjMgt_Persistent.hxx>
#include <XmlObjMgt_RRelocationTable.hxx>
#include <TObj_TXYZ.hxx>
IMPLEMENT_STANDARD_HANDLE(XmlTObjDrivers_XYZDriver,XmlMDF_ADriver)
IMPLEMENT_STANDARD_RTTIEXT(XmlTObjDrivers_XYZDriver,XmlMDF_ADriver)
IMPLEMENT_DOMSTRING (CoordX, "X")
IMPLEMENT_DOMSTRING (CoordY, "Y")
IMPLEMENT_DOMSTRING (CoordZ, "Z")
//=======================================================================
//function : XmlTObjDrivers_XYZDriver
//purpose : constructor
//=======================================================================
XmlTObjDrivers_XYZDriver::XmlTObjDrivers_XYZDriver
(const Handle(CDM_MessageDriver)& theMessageDriver)
: XmlMDF_ADriver( theMessageDriver, NULL)
{
}
//=======================================================================
//function : NewEmpty
//purpose : Creates a new attribute
//=======================================================================
Handle(TDF_Attribute) XmlTObjDrivers_XYZDriver::NewEmpty() const
{
return new TObj_TXYZ;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
//=======================================================================
Standard_Boolean XmlTObjDrivers_XYZDriver::Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& /*RelocTable*/) const
{
const XmlObjMgt_Element& anElement = Source;
// get co-ordinates
TCollection_AsciiString CoordX = anElement.getAttribute(::CoordX());
TCollection_AsciiString CoordY = anElement.getAttribute(::CoordY());
TCollection_AsciiString CoordZ = anElement.getAttribute(::CoordZ());
// creating gp_XYZ
gp_XYZ aXYZ;
Standard_CString aStr;
Standard_Real aCoord;
aStr = CoordX.ToCString();
if(!XmlObjMgt::GetReal( aStr, aCoord )) return Standard_False;
aXYZ.SetX(aCoord);
aStr = CoordY.ToCString();
if(!XmlObjMgt::GetReal( aStr, aCoord )) return Standard_False;
aXYZ.SetY(aCoord);
aStr = CoordZ.ToCString();
if(!XmlObjMgt::GetReal( aStr, aCoord )) return Standard_False;
aXYZ.SetZ(aCoord);
// setting gp_XYZ
Handle(TObj_TXYZ) aTarget = Handle(TObj_TXYZ)::DownCast (Target);
aTarget->Set ( aXYZ );
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose : Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Store master and referred labels as entry, the other model referred
// as entry in model-container
//=======================================================================
void XmlTObjDrivers_XYZDriver::Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& /*RelocTable*/) const
{
Handle(TObj_TXYZ) aSource =
Handle(TObj_TXYZ)::DownCast (Source);
if(aSource.IsNull()) return;
gp_XYZ aXYZ = aSource->Get();
TCollection_AsciiString aCoord;
// co-ordinate X
aCoord = TCollection_AsciiString( aXYZ.X() );
Target.Element().setAttribute(::CoordX(), aCoord.ToCString());
// co-ordinate Y
aCoord = TCollection_AsciiString( aXYZ.Y() );
Target.Element().setAttribute(::CoordY(), aCoord.ToCString());
// co-ordinate Z
aCoord = TCollection_AsciiString( aXYZ.Z() );
Target.Element().setAttribute(::CoordZ(), aCoord.ToCString());
}

View File

@@ -0,0 +1,57 @@
// File : XmlTObjDrivers_XYZDriver.hxx
// Created : Wed Nov 24 11:21:42 2004
// Author : Edward AGAPOV
// Copyright: Open CASCADE 2007
// The original implementation Copyright: (C) RINA S.p.A
#ifndef XmlTObjDrivers_XYZDriver_HeaderFile
#define XmlTObjDrivers_XYZDriver_HeaderFile
#include <TObj_Common.hxx>
#include <XmlMDF_ADriver.hxx>
class XmlTObjDrivers_XYZDriver : public XmlMDF_ADriver
{
public:
Standard_EXPORT XmlTObjDrivers_XYZDriver
(const Handle(CDM_MessageDriver)& theMessageDriver);
// constructor
Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
// Creates a new attribute
Standard_EXPORT Standard_Boolean Paste
(const XmlObjMgt_Persistent& Source,
const Handle(TDF_Attribute)& Target,
XmlObjMgt_RRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
Standard_EXPORT void Paste
(const Handle(TDF_Attribute)& Source,
XmlObjMgt_Persistent& Target,
XmlObjMgt_SRelocationTable& RelocTable) const;
// Translate the contents of <aSource> and put it
// into <aTarget>, using the relocation table
// <aRelocTable> to keep the sharings.
// Store master and referred labels as entry, the other model referred
// as entry in model-container
// The XYZ pointing nowhere is not stored
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI(XmlTObjDrivers_XYZDriver)
};
// Define handle class
DEFINE_STANDARD_HANDLE(XmlTObjDrivers_XYZDriver,XmlMDF_ADriver)
#endif
#ifdef _MSC_VER
#pragma once
#endif