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

42
src/XmlMDataXtd/XmlMDataXtd.cdl Executable file
View File

@@ -0,0 +1,42 @@
-- File: XmlMDataXtd.cdl
package XmlMDataXtd
---Purpose: Storage and Retrieval drivers for modelling attributes.
-- Transient attributes are defined in package TDataXtd.
uses XmlMDF,
XmlObjMgt,
TDF,
CDM
is
---Purpose: Storage/Retrieval drivers for TDataXtd attributes
-- =======================================
class AxisDriver;
class ShapeDriver;
class PointDriver;
class PlaneDriver;
class GeometryDriver;
class ConstraintDriver;
class PlacementDriver;
class PatternStdDriver;
AddDrivers (aDriverTable : ADriverTable from XmlMDF;
anMsgDrv : MessageDriver from CDM);
---Purpose: Adds the attribute drivers to <aDriverTable>.
SetDocumentVersion (DocVersion : Integer from Standard);
DocumentVersion returns Integer from Standard;
end XmlMDataXtd;

52
src/XmlMDataXtd/XmlMDataXtd.cxx Executable file
View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd.cxx
// Created: Mon Aug 27 17:33:16 2001
// Author: Alexander GRIGORIEV
// Copyright: Open Cascade 2001
// History:
// modified 20.04.2009 Sergey Zaritchny
#include <XmlMDataXtd.ixx>
#include <XmlMDataXtd_ShapeDriver.hxx>
#include <XmlMDataXtd_PointDriver.hxx>
#include <XmlMDataXtd_AxisDriver.hxx>
#include <XmlMDataXtd_PlaneDriver.hxx>
#include <XmlMDataXtd_GeometryDriver.hxx>
#include <XmlMDataXtd_ConstraintDriver.hxx>
#include <XmlMDataXtd_PlacementDriver.hxx>
#include <XmlMDataXtd_PatternStdDriver.hxx>
static Standard_Integer myDocumentVersion = -1;
//=======================================================================
//function : AddDrivers
//purpose :
//=======================================================================
void XmlMDataXtd::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable,
const Handle(CDM_MessageDriver)& anMsgDrv)
{
aDriverTable-> AddDriver (new XmlMDataXtd_ShapeDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_PointDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_AxisDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_PlaneDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_GeometryDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_ConstraintDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_PlacementDriver (anMsgDrv));
aDriverTable-> AddDriver (new XmlMDataXtd_PatternStdDriver (anMsgDrv));
}
//=======================================================================
//function : SetDocumentVersion
//purpose : Sets current document version
//=======================================================================
void XmlMDataXtd::SetDocumentVersion(const Standard_Integer theVersion)
{
myDocumentVersion = theVersion;
}
//=======================================================================
//function : DocumentVersion
//purpose : Retrieved document version
//=======================================================================
Standard_Integer XmlMDataXtd::DocumentVersion()
{
return myDocumentVersion;
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_AxisDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class AxisDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable AxisDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end AxisDriver;

View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd_AxisDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_AxisDriver.ixx>
#include <TDataXtd_Axis.hxx>
//=======================================================================
//function : XmlMDataXtd_AxisDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_AxisDriver::XmlMDataXtd_AxisDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_AxisDriver::NewEmpty() const
{
return (new TDataXtd_Axis());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_AxisDriver::Paste
(const XmlObjMgt_Persistent&,
const Handle(TDF_Attribute)&,
XmlObjMgt_RRelocationTable& ) const
{
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_AxisDriver::Paste (const Handle(TDF_Attribute)&,
XmlObjMgt_Persistent&,
XmlObjMgt_SRelocationTable& ) const
{
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_ConstraintDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class ConstraintDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable ConstraintDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end ConstraintDriver;

View File

@@ -0,0 +1,381 @@
// File: XmlMDataXtd_ConstraintDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_ConstraintDriver.ixx>
#include <TDataXtd_Constraint.hxx>
#include <TDataStd_Real.hxx>
#include <TNaming_NamedShape.hxx>
#include <XmlObjMgt.hxx>
static TDataXtd_ConstraintEnum ConstraintTypeEnum
(const XmlObjMgt_DOMString&);
static const XmlObjMgt_DOMString& ConstraintTypeString
(const TDataXtd_ConstraintEnum);
IMPLEMENT_DOMSTRING (TypeString, "contype")
IMPLEMENT_DOMSTRING (ValueString, "valueref")
IMPLEMENT_DOMSTRING (GeometriesString, "geometries")
IMPLEMENT_DOMSTRING (PlaneString, "plane")
IMPLEMENT_DOMSTRING (StatusString, "flags")
// planar constraints
IMPLEMENT_DOMSTRING (ConRadiusString, "radius")
IMPLEMENT_DOMSTRING (ConDiameterString, "diameter")
IMPLEMENT_DOMSTRING (ConMinRadiusString, "minorradius")
IMPLEMENT_DOMSTRING (ConMajRadiusString, "majorradius")
IMPLEMENT_DOMSTRING (ConTangentString, "tangent")
IMPLEMENT_DOMSTRING (ConParallelString, "parallel")
IMPLEMENT_DOMSTRING (ConPerpendicularString, "perpendicular")
IMPLEMENT_DOMSTRING (ConConcentricString, "concentric")
IMPLEMENT_DOMSTRING (ConCoincidentString, "coincident")
IMPLEMENT_DOMSTRING (ConDistanceString, "distance")
IMPLEMENT_DOMSTRING (ConAngleString, "angle")
IMPLEMENT_DOMSTRING (ConEqualRadiusString, "equalradius")
IMPLEMENT_DOMSTRING (ConSymmetryString, "symmetry")
IMPLEMENT_DOMSTRING (ConMidPointString, "midpoint")
IMPLEMENT_DOMSTRING (ConEqualDistanceString, "equaldist")
IMPLEMENT_DOMSTRING (ConFixString, "fix")
IMPLEMENT_DOMSTRING (ConRigidString, "rigid")
// placement constraints
IMPLEMENT_DOMSTRING (ConFromString, "from")
IMPLEMENT_DOMSTRING (ConAxisString, "axis")
IMPLEMENT_DOMSTRING (ConMateString, "mate")
IMPLEMENT_DOMSTRING (ConAlignFacesString, "alignfaces")
IMPLEMENT_DOMSTRING (ConAlignAxesString, "alignaxes")
IMPLEMENT_DOMSTRING (ConAxesAngleString, "axesangle")
IMPLEMENT_DOMSTRING (ConFacesAngleString, "facesangle")
IMPLEMENT_DOMSTRING (ConRoundString, "round")
IMPLEMENT_DOMSTRING (ConOffsetString, "offset")
//=======================================================================
//function : XmlMDataXtd_ConstraintDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_ConstraintDriver::XmlMDataXtd_ConstraintDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_ConstraintDriver::NewEmpty() const
{
return (new TDataXtd_Constraint());
}
//=======================================================================
//function : Paste
//purpose : persistent -> transient (retrieve)
//=======================================================================
Standard_Boolean XmlMDataXtd_ConstraintDriver::Paste
(const XmlObjMgt_Persistent& theSource,
const Handle(TDF_Attribute)& theTarget,
XmlObjMgt_RRelocationTable& theRelocTable) const
{
Handle(TDataXtd_Constraint) aC =
Handle(TDataXtd_Constraint)::DownCast(theTarget);
const XmlObjMgt_Element& anElem = theSource;
Standard_Integer aNb;
TCollection_ExtendedString aMsgString;
// value
Handle(TDataStd_Real) aTValue;
XmlObjMgt_DOMString aDOMStr = anElem.getAttribute(::ValueString());
if (aDOMStr != NULL)
{
if (!aDOMStr.GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_ConstraintDriver: "
"Cannot retrieve reference on Integer attribute from \"")
+ aDOMStr + "\"";
WriteMessage (aMsgString);
return Standard_False;
}
if (aNb > 0)
{
if (theRelocTable.IsBound(aNb))
aTValue = Handle(TDataStd_Real)::DownCast(theRelocTable.Find(aNb));
else
{
aTValue = new TDataStd_Real;
theRelocTable.Bind(aNb, aTValue);
}
aC->SetValue(aTValue);
}
}
// geometries
aDOMStr = anElem.getAttribute(::GeometriesString());
if (aDOMStr != NULL)
{
Standard_CString aGs = Standard_CString(aDOMStr.GetString());
// first geometry
if (!XmlObjMgt::GetInteger(aGs, aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_ConstraintDriver: Cannot retrieve reference on first Geometry from \"")
+ aDOMStr + "\"";
WriteMessage (aMsgString);
return Standard_False;
}
Standard_Integer i = 1;
while (aNb > 0)
{
Handle(TNaming_NamedShape) aG;
if (theRelocTable.IsBound(aNb))
aG = Handle(TNaming_NamedShape)::DownCast(theRelocTable.Find(aNb));
else
{
aG = new TNaming_NamedShape;
theRelocTable.Bind(aNb, aG);
}
aC->SetGeometry (i, aG);
// next geometry
if (!XmlObjMgt::GetInteger(aGs, aNb)) aNb = 0;
i++;
}
}
// plane
aDOMStr = anElem.getAttribute(::PlaneString());
if (aDOMStr != NULL)
{
if (!aDOMStr.GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_ConstraintDriver: Cannot retrieve reference on Plane from \"")
+ aDOMStr + "\"";
WriteMessage (aMsgString);
return Standard_False;
}
Handle(TNaming_NamedShape) aTPlane;
if (aNb > 0)
{
if (theRelocTable.IsBound(aNb))
aTPlane = Handle(TNaming_NamedShape)::DownCast(theRelocTable.Find(aNb));
else
{
aTPlane = new TNaming_NamedShape;
theRelocTable.Bind(aNb, aTPlane);
}
aC->SetPlane(aTPlane);
}
}
// constraint type
XmlObjMgt_DOMString aType = anElem.getAttribute(::TypeString());
aC->SetType(ConstraintTypeEnum(aType));
// flags
XmlObjMgt_DOMString aString = anElem.getAttribute(::StatusString());
const char * aPtr = aString.GetString();
aC->Verified((*aPtr) == '+');
aPtr ++;
aC->Inverted((*aPtr) == '+');
aPtr ++;
aC->Reversed((*aPtr) == '+');
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose : transient -> persistent (store)
//=======================================================================
void XmlMDataXtd_ConstraintDriver::Paste
(const Handle(TDF_Attribute)& theSource,
XmlObjMgt_Persistent& theTarget,
XmlObjMgt_SRelocationTable& theRelocTable) const
{
Handle(TDataXtd_Constraint) aC =
Handle(TDataXtd_Constraint)::DownCast(theSource);
XmlObjMgt_Element& anElem = theTarget;
Standard_Integer aNb;
// value
Handle(TDataStd_Real) aValue = aC->GetValue();
if (!aValue.IsNull())
{
aNb = theRelocTable.FindIndex(aValue);
if (aNb == 0)
{
aNb = theRelocTable.Add(aValue);
}
anElem.setAttribute(::ValueString(), aNb);
}
// geometries
Standard_Integer NbGeom = aC->NbGeometries();
if (NbGeom >= 1)
{
TCollection_AsciiString aGsStr;
for (Standard_Integer i = 1; i <= NbGeom; i++)
{
Handle(TNaming_NamedShape) aG = aC->GetGeometry(i);
aNb = 0;
if (!aG.IsNull())
{
aNb = theRelocTable.FindIndex(aG);
if (aNb == 0)
{
aNb = theRelocTable.Add(aG);
}
aGsStr += TCollection_AsciiString(aNb) + " ";
}
else aGsStr += "0 ";
}
anElem.setAttribute(::GeometriesString(), aGsStr.ToCString());
}
// plane
Handle(TNaming_NamedShape) aTPlane = aC->GetPlane();
if (!aTPlane.IsNull())
{
aNb = theRelocTable.FindIndex(aTPlane);
if (aNb == 0)
{
aNb = theRelocTable.Add(aTPlane);
}
anElem.setAttribute(::PlaneString(), aNb);
}
// constraint type
anElem.setAttribute(::TypeString(), ConstraintTypeString(aC->GetType()));
// flags
TCollection_AsciiString aStatusStr;
if (aC->Verified()) aStatusStr += "+";
else aStatusStr += "-";
if (aC->Inverted()) aStatusStr += "+";
else aStatusStr += "-";
if (aC->Reversed()) aStatusStr += "+";
else aStatusStr += "-";
anElem.setAttribute(::StatusString(), aStatusStr.ToCString());
}
//=======================================================================
//function : ConstraintTypeEnum
//purpose :
//=======================================================================
static TDataXtd_ConstraintEnum ConstraintTypeEnum (const XmlObjMgt_DOMString& theString)
{
TDataXtd_ConstraintEnum aResult = TDataXtd_RADIUS;
// planar constraints
if (!theString.equals (::ConRadiusString()))
{
if (theString.equals (::ConDiameterString()))
aResult = TDataXtd_DIAMETER;
else if (theString.equals (::ConMinRadiusString()))
aResult = TDataXtd_MINOR_RADIUS;
else if (theString.equals (::ConMajRadiusString()))
aResult = TDataXtd_MAJOR_RADIUS;
else if (theString.equals (::ConTangentString()))
aResult = TDataXtd_TANGENT;
else if (theString.equals (::ConParallelString()))
aResult = TDataXtd_PARALLEL;
else if (theString.equals (::ConPerpendicularString()))
aResult = TDataXtd_PERPENDICULAR;
else if (theString.equals (::ConConcentricString()))
aResult = TDataXtd_CONCENTRIC;
else if (theString.equals (::ConCoincidentString()))
aResult = TDataXtd_COINCIDENT;
else if (theString.equals (::ConDistanceString()))
aResult = TDataXtd_DISTANCE;
else if (theString.equals (::ConAngleString()))
aResult = TDataXtd_ANGLE;
else if (theString.equals (::ConEqualRadiusString()))
aResult = TDataXtd_EQUAL_RADIUS;
else if (theString.equals (::ConSymmetryString()))
aResult = TDataXtd_SYMMETRY;
else if (theString.equals (::ConMidPointString()))
aResult = TDataXtd_MIDPOINT;
else if (theString.equals (::ConEqualDistanceString()))
aResult = TDataXtd_EQUAL_DISTANCE;
else if (theString.equals (::ConFixString()))
aResult = TDataXtd_FIX;
else if (theString.equals (::ConRigidString()))
aResult = TDataXtd_RIGID;
// placement constraints
else if (theString.equals (::ConFromString()))
aResult = TDataXtd_FROM;
else if (theString.equals (::ConAxisString()))
aResult = TDataXtd_AXIS;
else if (theString.equals (::ConMateString()))
aResult = TDataXtd_MATE;
else if (theString.equals (::ConAlignFacesString()))
aResult = TDataXtd_ALIGN_FACES;
else if (theString.equals (::ConAlignAxesString()))
aResult = TDataXtd_ALIGN_AXES;
else if (theString.equals (::ConAxesAngleString()))
aResult = TDataXtd_AXES_ANGLE;
else if (theString.equals (::ConFacesAngleString()))
aResult = TDataXtd_FACES_ANGLE;
else if (theString.equals (::ConRoundString()))
aResult = TDataXtd_ROUND;
else if (theString.equals (::ConOffsetString()))
aResult = TDataXtd_OFFSET;
else
Standard_DomainError::Raise
("TDataXtd_ConstraintEnum; string value without enum term equivalence");
}
return aResult;
}
//=======================================================================
//function : ConstraintTypeString
//purpose :
//=======================================================================
static const XmlObjMgt_DOMString& ConstraintTypeString (const TDataXtd_ConstraintEnum theE)
{
switch (theE)
{
// planar constraints
case TDataXtd_RADIUS : return ::ConRadiusString();
case TDataXtd_DIAMETER : return ::ConDiameterString();
case TDataXtd_MINOR_RADIUS : return ::ConMinRadiusString();
case TDataXtd_MAJOR_RADIUS : return ::ConMajRadiusString();
case TDataXtd_TANGENT : return ::ConTangentString();
case TDataXtd_PARALLEL : return ::ConParallelString();
case TDataXtd_PERPENDICULAR : return ::ConPerpendicularString();
case TDataXtd_CONCENTRIC : return ::ConConcentricString();
case TDataXtd_COINCIDENT : return ::ConCoincidentString();
case TDataXtd_DISTANCE : return ::ConDistanceString();
case TDataXtd_ANGLE : return ::ConAngleString();
case TDataXtd_EQUAL_RADIUS : return ::ConEqualRadiusString();
case TDataXtd_SYMMETRY : return ::ConSymmetryString();
case TDataXtd_MIDPOINT : return ::ConMidPointString();
case TDataXtd_EQUAL_DISTANCE : return ::ConEqualDistanceString();
case TDataXtd_FIX : return ::ConFixString();
case TDataXtd_RIGID : return ::ConRigidString();
// placement constraints
case TDataXtd_FROM : return ::ConFromString();
case TDataXtd_AXIS : return ::ConAxisString();
case TDataXtd_MATE : return ::ConMateString();
case TDataXtd_ALIGN_FACES : return ::ConAlignFacesString();
case TDataXtd_ALIGN_AXES : return ::ConAlignAxesString();
case TDataXtd_AXES_ANGLE : return ::ConAxesAngleString();
case TDataXtd_FACES_ANGLE : return ::ConFacesAngleString();
case TDataXtd_ROUND : return ::ConRoundString();
case TDataXtd_OFFSET : return ::ConOffsetString();
default:
Standard_DomainError::Raise("TDataXtd_ConstraintEnum; enum term unknown");
}
static XmlObjMgt_DOMString aNullString;
return aNullString; // To avoid compilation error message.
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_GeometryDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class GeometryDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable GeometryDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end GeometryDriver;

View File

@@ -0,0 +1,124 @@
// File: XmlMDataXtd_GeometryDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_GeometryDriver.ixx>
#include <TDataXtd_Geometry.hxx>
static const XmlObjMgt_DOMString& GeometryTypeString
(const TDataXtd_GeometryEnum);
static Standard_Boolean GeometryTypeEnum
(const XmlObjMgt_DOMString& theString,
TDataXtd_GeometryEnum& theResult);
IMPLEMENT_DOMSTRING (TypeString, "geomtype")
IMPLEMENT_DOMSTRING (GeomAnyString, "any")
IMPLEMENT_DOMSTRING (GeomPointString, "point")
IMPLEMENT_DOMSTRING (GeomLineString, "line")
IMPLEMENT_DOMSTRING (GeomCircleString, "circle")
IMPLEMENT_DOMSTRING (GeomEllipseString, "ellipse")
//=======================================================================
//function : XmlMDataXtd_GeometryDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_GeometryDriver::XmlMDataXtd_GeometryDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_GeometryDriver::NewEmpty() const
{
return (new TDataXtd_Geometry());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_GeometryDriver::Paste
(const XmlObjMgt_Persistent& theSource,
const Handle(TDF_Attribute)& theTarget,
XmlObjMgt_RRelocationTable& ) const
{
Handle(TDataXtd_Geometry) aT =
Handle(TDataXtd_Geometry)::DownCast (theTarget);
XmlObjMgt_DOMString aType = theSource.Element().getAttribute(::TypeString());
TDataXtd_GeometryEnum aTypeEnum;
if (GeometryTypeEnum (aType, aTypeEnum) == Standard_False) {
WriteMessage ("TDataXtd_GeometryEnum; "
"string value without enum term equivalence");
return Standard_False;
}
aT->SetType (aTypeEnum);
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_GeometryDriver::Paste (const Handle(TDF_Attribute)& theSource,
XmlObjMgt_Persistent& theTarget,
XmlObjMgt_SRelocationTable& ) const
{
Handle(TDataXtd_Geometry) aG = Handle(TDataXtd_Geometry)::DownCast(theSource);
theTarget.Element().setAttribute (::TypeString(),
GeometryTypeString (aG->GetType()));
}
//=======================================================================
//function : GeometryTypeEnum
//purpose :
//=======================================================================
static Standard_Boolean GeometryTypeEnum (const XmlObjMgt_DOMString& theString,
TDataXtd_GeometryEnum& theResult)
{
TDataXtd_GeometryEnum aResult = TDataXtd_ANY_GEOM;
if (!theString.equals (::GeomAnyString()))
{
if (theString.equals (::GeomPointString()))
aResult = TDataXtd_POINT;
else if (theString.equals (::GeomLineString()))
aResult = TDataXtd_LINE;
else if (theString.equals (::GeomCircleString()))
aResult = TDataXtd_CIRCLE;
else if (theString.equals (::GeomEllipseString()))
aResult = TDataXtd_ELLIPSE;
else
return Standard_False;
}
theResult = aResult;
return Standard_True;
}
//=======================================================================
//function : GeometryTypeString
//purpose :
//=======================================================================
static const XmlObjMgt_DOMString& GeometryTypeString
(const TDataXtd_GeometryEnum theE)
{
switch (theE)
{
case TDataXtd_ANY_GEOM : return ::GeomAnyString();
case TDataXtd_POINT : return ::GeomPointString();
case TDataXtd_LINE : return ::GeomLineString();
case TDataXtd_CIRCLE : return ::GeomCircleString();
case TDataXtd_ELLIPSE : return ::GeomEllipseString();
default:
Standard_DomainError::Raise("TDataXtd_GeometryEnum; enum term unknown");
}
static XmlObjMgt_DOMString aNullString;
return aNullString; // To avoid compilation error message.
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_PatternStdDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class PatternStdDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable PatternStdDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end PatternStdDriver;

View File

@@ -0,0 +1,310 @@
// File: XmlMDataXtd_PatternStdDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_PatternStdDriver.ixx>
#include <TDataStd_Real.hxx>
#include <TDataStd_Integer.hxx>
#include <TDataXtd_PatternStd.hxx>
#include <TNaming_NamedShape.hxx>
IMPLEMENT_DOMSTRING (SignatureString, "signature")
IMPLEMENT_DOMSTRING (Axis1RevString, "axis1reversed")
IMPLEMENT_DOMSTRING (Axis2RevString, "axis2reversed")
IMPLEMENT_DOMSTRING (NbInstances1RefString, "nbinstances1")
IMPLEMENT_DOMSTRING (Value1RefString, "value1ref")
IMPLEMENT_DOMSTRING (Axis1RefString, "axis1")
IMPLEMENT_DOMSTRING (NbInstances2RefString, "nbinstances2")
IMPLEMENT_DOMSTRING (Value2RefString, "value2ref")
IMPLEMENT_DOMSTRING (Axis2RefString, "axis2")
IMPLEMENT_DOMSTRING (MirrorRefString, "mirror")
IMPLEMENT_DOMSTRING (TrueString, "true")
//=======================================================================
//function : XmlMDataXtd_PatternStdDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_PatternStdDriver::XmlMDataXtd_PatternStdDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_PatternStdDriver::NewEmpty() const
{
return (new TDataXtd_PatternStd());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_PatternStdDriver::Paste
(const XmlObjMgt_Persistent& theSource,
const Handle(TDF_Attribute)& theTarget,
XmlObjMgt_RRelocationTable& theRelocTable) const
{
Handle(TDataXtd_PatternStd) aP =
Handle(TDataXtd_PatternStd)::DownCast(theTarget);
const XmlObjMgt_Element& anElem = theSource;
Standard_Integer aNb;
TCollection_ExtendedString aMsgString;
Standard_Integer signature;
if (!anElem.getAttribute(::SignatureString()).GetInteger(signature))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::SignatureString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
aP->Signature(signature);
XmlObjMgt_DOMString aString = anElem.getAttribute(::Axis1RevString());
aP->Axis1Reversed(aString != NULL);
aString = anElem.getAttribute(::Axis2RevString());
aP->Axis2Reversed(aString != NULL);
Handle(TNaming_NamedShape) TNS;
Handle(TDataStd_Real) TReal;
Handle(TDataStd_Integer) TInt;
if (signature < 5)
{
if (!anElem.getAttribute(::Axis1RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::Axis1RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TNS = Handle(TNaming_NamedShape)::DownCast(theRelocTable.Find(aNb));
else
{
TNS = new TNaming_NamedShape;
theRelocTable.Bind(aNb, TNS);
}
aP->Axis1(TNS);
if (!anElem.getAttribute(::Value1RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::Value1RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TReal = Handle(TDataStd_Real)::DownCast(theRelocTable.Find(aNb));
else
{
TReal = new TDataStd_Real;
theRelocTable.Bind(aNb, TReal);
}
aP->Value1(TReal);
if (!anElem.getAttribute(::NbInstances1RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::NbInstances1RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TInt = Handle(TDataStd_Integer)::DownCast(theRelocTable.Find(aNb));
else
{
TInt = new TDataStd_Integer;
theRelocTable.Bind(aNb, TInt);
}
aP->NbInstances1(TInt);
if (signature > 2)
{
if (!anElem.getAttribute(::Axis2RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::Axis2RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TNS = Handle(TNaming_NamedShape)::DownCast(theRelocTable.Find(aNb));
else
{
TNS = new TNaming_NamedShape;
theRelocTable.Bind(aNb, TNS);
}
aP->Axis2(TNS);
if (!anElem.getAttribute(::Value2RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::Value2RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TReal = Handle(TDataStd_Real)::DownCast(theRelocTable.Find(aNb));
else
{
TReal = new TDataStd_Real;
theRelocTable.Bind(aNb, TReal);
}
aP->Value2(TReal);
if (!anElem.getAttribute(::NbInstances2RefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::NbInstances2RefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TInt = Handle(TDataStd_Integer)::DownCast(theRelocTable.Find(aNb));
else
{
TInt = new TDataStd_Integer;
theRelocTable.Bind(aNb, TInt);
}
aP->NbInstances2(TInt);
}
}
else
{
if (!anElem.getAttribute(::MirrorRefString()).GetInteger(aNb))
{
aMsgString = TCollection_ExtendedString
("XmlMDataXtd_PatternStdDriver: Bad or undefined value for a \"")
+ ::MirrorRefString() + "\" attribute (must be integer)";
WriteMessage (aMsgString);
return Standard_False;
}
if (theRelocTable.IsBound(aNb))
TNS = Handle(TNaming_NamedShape)::DownCast(theRelocTable.Find(aNb));
else
{
TNS = new TNaming_NamedShape;
theRelocTable.Bind(aNb, TNS);
}
aP->Mirror(TNS);
}
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_PatternStdDriver::Paste
(const Handle(TDF_Attribute)& theSource,
XmlObjMgt_Persistent& theTarget,
XmlObjMgt_SRelocationTable& theRelocTable) const
{
Handle(TDataXtd_PatternStd) aP =
Handle(TDataXtd_PatternStd)::DownCast(theSource);
XmlObjMgt_Element& anElem = theTarget;
Standard_Integer signature = aP->Signature();
anElem.setAttribute(::SignatureString(), signature);
if (aP->Axis1Reversed())
anElem.setAttribute(::Axis1RevString(), ::TrueString());
if (aP->Axis2Reversed())
anElem.setAttribute(::Axis2RevString(), ::TrueString());
Handle(TNaming_NamedShape) TNS;
Handle(TDataStd_Real) TReal;
Handle(TDataStd_Integer) TInt;
Standard_Integer aNb;
if (signature < 5)
{
// axis 1
TNS = aP->Axis1();
aNb = theRelocTable.FindIndex(TNS);
if (aNb == 0)
{
aNb = theRelocTable.Add(TNS);
}
anElem.setAttribute(::Axis1RefString(), aNb);
// real value 1
TReal = aP->Value1();
aNb = theRelocTable.FindIndex(TReal);
if (aNb == 0)
{
aNb = theRelocTable.Add(TReal);
}
anElem.setAttribute(::Value1RefString(), aNb);
// number of instances 1
TInt = aP->NbInstances1();
aNb = theRelocTable.FindIndex(TInt);
if (aNb == 0)
{
aNb = theRelocTable.Add(TInt);
}
anElem.setAttribute(::NbInstances1RefString(), aNb);
if (signature > 2)
{
// axis 2
TNS = aP->Axis2();
aNb = theRelocTable.FindIndex(TNS);
if (aNb == 0)
{
aNb = theRelocTable.Add(TNS);
}
anElem.setAttribute(::Axis2RefString(), aNb);
// real value 2
TReal = aP->Value2();
aNb = theRelocTable.FindIndex(TReal);
if (aNb == 0)
{
aNb = theRelocTable.Add(TReal);
}
anElem.setAttribute(::Value2RefString(), aNb);
// number of instances 2
TInt = aP->NbInstances2();
aNb = theRelocTable.FindIndex(TInt);
if (aNb == 0)
{
aNb = theRelocTable.Add(TInt);
}
anElem.setAttribute(::NbInstances2RefString(), aNb);
}
}
else
{
TNS = aP->Mirror();
aNb = theRelocTable.FindIndex(TNS);
if (aNb == 0)
{
aNb = theRelocTable.Add(TNS);
}
anElem.setAttribute(::MirrorRefString(), aNb);
}
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_PlacementDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class PlacementDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable PlacementDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end PlacementDriver;

View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd_PlacementDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_PlacementDriver.ixx>
#include <TDataXtd_Placement.hxx>
//=======================================================================
//function : XmlMDataXtd_PlacementDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_PlacementDriver::XmlMDataXtd_PlacementDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_PlacementDriver::NewEmpty() const
{
return (new TDataXtd_Placement());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_PlacementDriver::Paste
(const XmlObjMgt_Persistent&,
const Handle(TDF_Attribute)&,
XmlObjMgt_RRelocationTable& ) const
{
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_PlacementDriver::Paste (const Handle(TDF_Attribute)&,
XmlObjMgt_Persistent&,
XmlObjMgt_SRelocationTable& ) const
{
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_PlaneDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class PlaneDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable PlaneDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end PlaneDriver;

View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd_PlaneDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_PlaneDriver.ixx>
#include <TDataXtd_Plane.hxx>
//=======================================================================
//function : XmlMDataXtd_PlaneDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_PlaneDriver::XmlMDataXtd_PlaneDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_PlaneDriver::NewEmpty() const
{
return (new TDataXtd_Plane());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_PlaneDriver::Paste
(const XmlObjMgt_Persistent&,
const Handle(TDF_Attribute)&,
XmlObjMgt_RRelocationTable& ) const
{
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_PlaneDriver::Paste (const Handle(TDF_Attribute)&,
XmlObjMgt_Persistent&,
XmlObjMgt_SRelocationTable& ) const
{
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_PointDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class PointDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable PointDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end PointDriver;

View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd_PointDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_PointDriver.ixx>
#include <TDataXtd_Point.hxx>
//=======================================================================
//function : XmlMDataXtd_PointDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_PointDriver::XmlMDataXtd_PointDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_PointDriver::NewEmpty() const
{
return (new TDataXtd_Point());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_PointDriver::Paste
(const XmlObjMgt_Persistent&,
const Handle(TDF_Attribute)&,
XmlObjMgt_RRelocationTable& ) const
{
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_PointDriver::Paste (const Handle(TDF_Attribute)&,
XmlObjMgt_Persistent&,
XmlObjMgt_SRelocationTable& ) const
{
}

View File

@@ -0,0 +1,32 @@
-- File: XmlMDataXtd_ShapeDriver.cdl
-- Created: Fri Aug 24 20:16:51 2001
-- Author: Alexander GRIGORIEV
-- Copyright: Open Cascade 2001
class ShapeDriver from XmlMDataXtd inherits ADriver from XmlMDF
---Purpose: Attribute Driver.
uses
SRelocationTable from XmlObjMgt,
RRelocationTable from XmlObjMgt,
Persistent from XmlObjMgt,
MessageDriver from CDM,
Attribute from TDF
is
Create (theMessageDriver:MessageDriver from CDM)
returns mutable ShapeDriver from XmlMDataXtd;
NewEmpty (me) returns mutable Attribute from TDF;
Paste(me; Source : Persistent from XmlObjMgt;
Target : mutable Attribute from TDF;
RelocTable : out RRelocationTable from XmlObjMgt)
returns Boolean from Standard;
Paste(me; Source : Attribute from TDF;
Target : in out Persistent from XmlObjMgt;
RelocTable : out SRelocationTable from XmlObjMgt);
end ShapeDriver;

View File

@@ -0,0 +1,52 @@
// File: XmlMDataXtd_ShapeDriver.cxx
// Created: Fri Aug 24 20:46:58 2001
// Author: Alexnder GRIGORIEV
// Copyright: Open Cascade 2001
// History:
#include <XmlMDataXtd_ShapeDriver.ixx>
#include <TDataXtd_Shape.hxx>
//=======================================================================
//function : XmlMDataXtd_ShapeDriver
//purpose : Constructor
//=======================================================================
XmlMDataXtd_ShapeDriver::XmlMDataXtd_ShapeDriver
(const Handle(CDM_MessageDriver)& theMsgDriver)
: XmlMDF_ADriver (theMsgDriver, NULL)
{}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XmlMDataXtd_ShapeDriver::NewEmpty() const
{
return (new TDataXtd_Shape());
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
Standard_Boolean XmlMDataXtd_ShapeDriver::Paste
(const XmlObjMgt_Persistent&,
const Handle(TDF_Attribute)&,
XmlObjMgt_RRelocationTable& ) const
{
return Standard_True;
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XmlMDataXtd_ShapeDriver::Paste (const Handle(TDF_Attribute)&,
XmlObjMgt_Persistent&,
XmlObjMgt_SRelocationTable& ) const
{
}