//AGV 150202: Changed prototype LDOM_Node::getOwnerDocument()
#include <BRepTools.hxx>
-#include <CDM_MessageDriver.hxx>
+#include <Message_Messenger.hxx>
+#include <Message_ProgressScope.hxx>
#include <LDOM_OSStream.hxx>
#include <LDOM_Text.hxx>
#include <Standard_SStream.hxx>
//=======================================================================
XmlMNaming_NamedShapeDriver::XmlMNaming_NamedShapeDriver
- (const Handle(CDM_MessageDriver)& theMessageDriver)
+ (const Handle(Message_Messenger)& theMessageDriver)
: XmlMDF_ADriver (theMessageDriver, NULL),
myShapeSet (Standard_False) // triangles mode
{}
Standard_Integer upper = NewPShapes.Upper();
if (OldPShapes.Upper() > upper) upper = OldPShapes.Upper();
- for (Standard_Integer i = lower; i <= upper; i++)
+ for (Standard_Integer i = upper; i >= lower; --i)
{
const XmlMNaming_Shape1 aNewPShape = NewPShapes.Value(i);
const XmlMNaming_Shape1 anOldPShape = OldPShapes.Value(i);
if ( evol != TNaming_PRIMITIVE && anOldPShape.Element() != NULL )
{
if (::doTranslate (anOldPShape, anOldShape, aShapeSet)) {
- WriteMessage ("NamedShapeDriver: Error reading a shape from array");
+ myMessageDriver->Send ("NamedShapeDriver: Error reading a shape from array", Message_Fail);
return Standard_False;
}
}
if (evol != TNaming_DELETE && aNewPShape.Element() != NULL )
{
if (::doTranslate (aNewPShape, aNewShape, aShapeSet)) {
- WriteMessage ("NamedShapeDriver: Error reading a shape from array");
+ myMessageDriver->Send ("NamedShapeDriver: Error reading a shape from array", Message_Fail);
return Standard_False;
}
}
// aBld.Replace(anOldShape,aNewShape);
// break;
default:
- Standard_DomainError::Raise("TNaming_Evolution; enum term unknown");
+ throw Standard_DomainError("TNaming_Evolution; enum term unknown");
}
anOldShape.Nullify();
aNewShape.Nullify();
case TNaming_SELECTED : return ::EvolSelectedString();
case TNaming_REPLACE : return ::EvolModifyString(); // case TNaming_REPLACE : return ::EvolReplaceString(); for compatibility
default:
- Standard_DomainError::Raise("TNaming_Evolution; enum term unknown");
+ throw Standard_DomainError("TNaming_Evolution; enum term unknown");
}
- static XmlObjMgt_DOMString aNullString;
- return aNullString; // To avoid compilation error message.
}
//=======================================================================
else if (theString.equals (::EvolReplaceString()))
aResult = TNaming_MODIFY; // for compatibility //TNaming_REPLACE;
else
- Standard_DomainError::Raise
- ("TNaming_Evolution; string value without enum term equivalence");
+ throw Standard_DomainError("TNaming_Evolution; string value without enum term equivalence");
}
return aResult;
}
//purpose :
//=======================================================================
-void XmlMNaming_NamedShapeDriver::ReadShapeSection
- (const XmlObjMgt_Element& theElement)
+void XmlMNaming_NamedShapeDriver::ReadShapeSection (const XmlObjMgt_Element& theElement,
+ const Message_ProgressRange& theRange)
{
XmlObjMgt_Element anElement =
XmlObjMgt::FindChildByName (theElement, ::ShapesString());
LDOMString aData = aNode.getNodeValue();
std::stringstream aStream (std::string(aData.GetString()));
myShapeSet.Clear();
- myShapeSet.Read (aStream);
+ myShapeSet.Read (aStream, theRange);
break;
}
}
//purpose :
//=======================================================================
-void XmlMNaming_NamedShapeDriver::WriteShapeSection
- (XmlObjMgt_Element& theElement)
+void XmlMNaming_NamedShapeDriver::WriteShapeSection (XmlObjMgt_Element& theElement,
+ const Message_ProgressRange& theRange)
{
// Create "shapes" element and append it as child
XmlObjMgt_Document aDoc = theElement.getOwnerDocument();
LDOM_OSStream aStream (16 * 1024);
// ostrstream aStream;
// aStream.rdbuf() -> setbuf (0, 16380);
- myShapeSet.Write (aStream);
- aStream << ends;
+ Message_ProgressScope aPS(theRange, "Writing shape section", 2);
+ myShapeSet.Write (aStream, aPS.Next());
+ if (!aPS.More())
+ return;
+
+ aStream << std::ends;
char * aStr = (char *)aStream.str();
LDOM_Text aText = aDoc.createTextNode (aStr);
delete [] aStr;
// Clear the shape set to avoid appending to it on the next write
BRepTools_ShapeSet& aShapeSet = (BRepTools_ShapeSet&) myShapeSet;
aShapeSet.Clear();
+ if (!aPS.More())
+ return;
+ aPS.Next();
}
}