]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0021684: EDF 2221 : Display the arguments and the name of the operations
authoreap <eap@opencascade.com>
Mon, 17 Jun 2013 12:44:32 +0000 (12:44 +0000)
committereap <eap@opencascade.com>
Mon, 17 Jun 2013 12:44:32 +0000 (12:44 +0000)
+ virtual bool GetCreationInformation(std::string&             theOperationName,
+                                     std::vector<GEOM_Param>& params);

100 files changed:
src/GEOMImpl/GEOMImpl_3DSketcherDriver.cxx
src/GEOMImpl/GEOMImpl_3DSketcherDriver.hxx
src/GEOMImpl/GEOMImpl_ArcDriver.cxx
src/GEOMImpl/GEOMImpl_ArcDriver.hxx
src/GEOMImpl/GEOMImpl_ArchimedeDriver.cxx
src/GEOMImpl/GEOMImpl_ArchimedeDriver.hxx
src/GEOMImpl/GEOMImpl_BlockDriver.cxx
src/GEOMImpl/GEOMImpl_BlockDriver.hxx
src/GEOMImpl/GEOMImpl_BooleanDriver.cxx
src/GEOMImpl/GEOMImpl_BooleanDriver.hxx
src/GEOMImpl/GEOMImpl_BoxDriver.cxx
src/GEOMImpl/GEOMImpl_BoxDriver.hxx
src/GEOMImpl/GEOMImpl_ChamferDriver.cxx
src/GEOMImpl/GEOMImpl_ChamferDriver.hxx
src/GEOMImpl/GEOMImpl_CircleDriver.cxx
src/GEOMImpl/GEOMImpl_CircleDriver.hxx
src/GEOMImpl/GEOMImpl_ConeDriver.cxx
src/GEOMImpl/GEOMImpl_ConeDriver.hxx
src/GEOMImpl/GEOMImpl_CopyDriver.cxx
src/GEOMImpl/GEOMImpl_CopyDriver.hxx
src/GEOMImpl/GEOMImpl_CylinderDriver.cxx
src/GEOMImpl/GEOMImpl_CylinderDriver.hxx
src/GEOMImpl/GEOMImpl_DiskDriver.cxx
src/GEOMImpl/GEOMImpl_DiskDriver.hxx
src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx
src/GEOMImpl/GEOMImpl_DividedDiskDriver.hxx
src/GEOMImpl/GEOMImpl_EllipseDriver.cxx
src/GEOMImpl/GEOMImpl_EllipseDriver.hxx
src/GEOMImpl/GEOMImpl_ExportDriver.cxx
src/GEOMImpl/GEOMImpl_ExportDriver.hxx
src/GEOMImpl/GEOMImpl_FaceDriver.cxx
src/GEOMImpl/GEOMImpl_FaceDriver.hxx
src/GEOMImpl/GEOMImpl_Fillet1dDriver.cxx
src/GEOMImpl/GEOMImpl_Fillet1dDriver.hxx
src/GEOMImpl/GEOMImpl_Fillet2dDriver.cxx
src/GEOMImpl/GEOMImpl_Fillet2dDriver.hxx
src/GEOMImpl/GEOMImpl_FilletDriver.cxx
src/GEOMImpl/GEOMImpl_FilletDriver.hxx
src/GEOMImpl/GEOMImpl_FillingDriver.cxx
src/GEOMImpl/GEOMImpl_FillingDriver.hxx
src/GEOMImpl/GEOMImpl_GlueDriver.cxx
src/GEOMImpl/GEOMImpl_GlueDriver.hxx
src/GEOMImpl/GEOMImpl_HealingDriver.cxx
src/GEOMImpl/GEOMImpl_HealingDriver.hxx
src/GEOMImpl/GEOMImpl_ImportDriver.cxx
src/GEOMImpl/GEOMImpl_ImportDriver.hxx
src/GEOMImpl/GEOMImpl_LineDriver.cxx
src/GEOMImpl/GEOMImpl_LineDriver.hxx
src/GEOMImpl/GEOMImpl_MarkerDriver.cxx
src/GEOMImpl/GEOMImpl_MarkerDriver.hxx
src/GEOMImpl/GEOMImpl_MeasureDriver.cxx
src/GEOMImpl/GEOMImpl_MeasureDriver.hxx
src/GEOMImpl/GEOMImpl_MirrorDriver.cxx
src/GEOMImpl/GEOMImpl_MirrorDriver.hxx
src/GEOMImpl/GEOMImpl_OffsetDriver.cxx
src/GEOMImpl/GEOMImpl_OffsetDriver.hxx
src/GEOMImpl/GEOMImpl_PartitionDriver.cxx
src/GEOMImpl/GEOMImpl_PartitionDriver.hxx
src/GEOMImpl/GEOMImpl_PipeDriver.cxx
src/GEOMImpl/GEOMImpl_PipeDriver.hxx
src/GEOMImpl/GEOMImpl_PipePathDriver.cxx
src/GEOMImpl/GEOMImpl_PipePathDriver.hxx
src/GEOMImpl/GEOMImpl_PipeTShapeDriver.cxx
src/GEOMImpl/GEOMImpl_PipeTShapeDriver.hxx
src/GEOMImpl/GEOMImpl_PlaneDriver.cxx
src/GEOMImpl/GEOMImpl_PlaneDriver.hxx
src/GEOMImpl/GEOMImpl_PointDriver.cxx
src/GEOMImpl/GEOMImpl_PointDriver.hxx
src/GEOMImpl/GEOMImpl_PolylineDriver.cxx
src/GEOMImpl/GEOMImpl_PolylineDriver.hxx
src/GEOMImpl/GEOMImpl_PositionDriver.cxx
src/GEOMImpl/GEOMImpl_PositionDriver.hxx
src/GEOMImpl/GEOMImpl_PrismDriver.cxx
src/GEOMImpl/GEOMImpl_PrismDriver.hxx
src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx
src/GEOMImpl/GEOMImpl_ProjectionDriver.hxx
src/GEOMImpl/GEOMImpl_RevolutionDriver.cxx
src/GEOMImpl/GEOMImpl_RevolutionDriver.hxx
src/GEOMImpl/GEOMImpl_RotateDriver.cxx
src/GEOMImpl/GEOMImpl_RotateDriver.hxx
src/GEOMImpl/GEOMImpl_ScaleDriver.cxx
src/GEOMImpl/GEOMImpl_ScaleDriver.hxx
src/GEOMImpl/GEOMImpl_ShapeDriver.cxx
src/GEOMImpl/GEOMImpl_ShapeDriver.hxx
src/GEOMImpl/GEOMImpl_SketcherDriver.cxx
src/GEOMImpl/GEOMImpl_SketcherDriver.hxx
src/GEOMImpl/GEOMImpl_SmoothingSurfaceDriver.cxx
src/GEOMImpl/GEOMImpl_SmoothingSurfaceDriver.hxx
src/GEOMImpl/GEOMImpl_SphereDriver.cxx
src/GEOMImpl/GEOMImpl_SphereDriver.hxx
src/GEOMImpl/GEOMImpl_SplineDriver.cxx
src/GEOMImpl/GEOMImpl_SplineDriver.hxx
src/GEOMImpl/GEOMImpl_ThruSectionsDriver.cxx
src/GEOMImpl/GEOMImpl_ThruSectionsDriver.hxx
src/GEOMImpl/GEOMImpl_TorusDriver.cxx
src/GEOMImpl/GEOMImpl_TorusDriver.hxx
src/GEOMImpl/GEOMImpl_TranslateDriver.cxx
src/GEOMImpl/GEOMImpl_TranslateDriver.hxx
src/GEOMImpl/GEOMImpl_VectorDriver.cxx
src/GEOMImpl/GEOMImpl_VectorDriver.hxx

index b44e43ce3d61903b19e7da03e528e94cceef0bd0..d4961a50ff347b0a165a98256966cc44877e1968 100755 (executable)
@@ -323,45 +323,47 @@ Standard_Integer GEOMImpl_3DSketcherDriver::Execute(TFunction_Logbook& log) cons
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_3DSketcherDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_3DSketcherDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_3DSketcherDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
+  GEOMImpl_I3DSketcher aCI( function );
+  Standard_Integer aType = function->GetType();
 
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_3DSketcherDriver",
-                                                         sizeof(GEOMImpl_3DSketcherDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
+  theOperationName = "3DSKETCH";
 
-  return _aType;
-}
+  if (aType == SKETCHER3D_COORDS)
+  {
+    theParams.resize( 1 );
+    theParams[0].Set( "(X,Y,Z)" );
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_3DSketcherDriver) Handle(GEOMImpl_3DSketcherDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_3DSketcherDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_3DSketcherDriver))) {
-       _anOtherObject = Handle(GEOMImpl_3DSketcherDriver)((Handle(GEOMImpl_3DSketcherDriver)&)AnObject);
-     }
+    Handle(TColStd_HArray1OfReal) aCoordsArray = aCI.GetCoordinates();
+    int anArrayLength = aCoordsArray->Length();
+    for (int i = 0; i <= (anArrayLength-3); i += 3)
+      theParams[0] << "( "
+                   << aCoordsArray->Value(i+1) << ", "
+                   << aCoordsArray->Value(i+2) << ", "
+                   << aCoordsArray->Value(i+3) << " ) ";
   }
-
-  return _anOtherObject ;
+  else if (aType == SKETCHER3D_COMMAND) 
+  {
+    AddParam( theParams, "Command", aCI.GetCommand() );
+  }
+  else {
+    return false;
+  }
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_3DSketcherDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT(GEOMImpl_3DSketcherDriver,GEOM_BaseDriver);
index 44372bb5b6ce2c70289dc0c18a3f362f1dda82c4..18f51385379e132970a23e4db2efa20df7e31c4f 100755 (executable)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_3DSketcherDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_3DSketcherDriver);
-
-class Handle(GEOMImpl_3DSketcherDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_3DSketcherDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_3DSketcherDriver)(const Handle(GEOMImpl_3DSketcherDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_3DSketcherDriver)(const GEOMImpl_3DSketcherDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_3DSketcherDriver)& operator=(const Handle(GEOMImpl_3DSketcherDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_3DSketcherDriver)& operator=(const GEOMImpl_3DSketcherDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
+#include <GEOM_BaseDriver.hxx>
 
-    GEOMImpl_3DSketcherDriver* operator->() 
-     {
-      return (GEOMImpl_3DSketcherDriver *)ControlAccess();
-     }
+DEFINE_STANDARD_HANDLE( GEOMImpl_3DSketcherDriver, GEOM_BaseDriver );
 
-    GEOMImpl_3DSketcherDriver* operator->() const 
-     {
-      return (GEOMImpl_3DSketcherDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_3DSketcherDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_3DSketcherDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
-#ifndef _TFunction_Driver_HeaderFile
-#include <TFunction_Driver.hxx>
+#ifndef _GEOM_BaseDriver_HeaderFile
+#include <GEOM_BaseDriver.hxx>
 #endif
 #ifndef _TFunction_Logbook_HeaderFile
 #include <TFunction_Logbook.hxx>
@@ -116,26 +58,11 @@ class Handle(GEOMImpl_3DSketcherDriver) : public Handle(TFunction_Driver) {
 #include <Standard_CString.hxx>
 #endif
 
-class TColStd_SequenceOfExtendedString;
-
 
-class GEOMImpl_3DSketcherDriver : public TFunction_Driver {
+class GEOMImpl_3DSketcherDriver : public GEOM_BaseDriver {
 
 public:
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
  // Methods PUBLIC
  // 
 Standard_EXPORT GEOMImpl_3DSketcherDriver();
@@ -145,14 +72,12 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_3DSketcherDriver() {};
 
+Standard_EXPORT virtual bool GetCreationInformation(std::string&             theOperationName,
+                                                    std::vector<GEOM_Param>& params);
 
  // Type management
  //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_3DSketcherDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_3DSketcherDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_3DSketcherDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+  DEFINE_STANDARD_RTTI( GEOMImpl_3DSketcherDriver )
 };
 
 #endif
index 5d8f152117241ce379e43376b1094a879a85ed4b..f5aa5652859a5d33f136e3355a5e295f7cd70477 100644 (file)
@@ -162,45 +162,48 @@ Standard_Integer GEOMImpl_ArcDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ArcDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ArcDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ArcDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ArcDriver",
-                                                         sizeof(GEOMImpl_ArcDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IArc aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "ARC";
+
+  switch ( aType ) {
+  case CIRC_ARC_THREE_PNT:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    AddParam( theParams, "Point 3", aCI.GetPoint3() );
+    break;
+  case CIRC_ARC_CENTER:
+    AddParam( theParams, "Center Point", aCI.GetPoint1() );
+    AddParam( theParams, "Point Start", aCI.GetPoint2() );
+    AddParam( theParams, "Point End", aCI.GetPoint3() );
+    AddParam( theParams, "Reverse", aCI.GetSense() );
+    break;
+  case ELLIPSE_ARC_CENTER_TWO_PNT:
+    AddParam( theParams, "Center Point", aCI.GetPoint1() );
+    AddParam( theParams, "Point 1", aCI.GetPoint2() );
+    AddParam( theParams, "Point 2", aCI.GetPoint3() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_ArcDriver) Handle(GEOMImpl_ArcDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ArcDriver) _anOtherObject;
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ArcDriver,GEOM_BaseDriver);
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ArcDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ArcDriver)((Handle(GEOMImpl_ArcDriver)&)AnObject);
-     }
-  }
-
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ArcDriver,GEOM_BaseDriver);
index 1e4a6fef887fe58cebc4fe4f2595f4d21c0c9b0b..52cca4d0e4a372abe8b159adc47baf63a0da22f4 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ArcDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ArcDriver);
-
-class Handle(GEOMImpl_ArcDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ArcDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ArcDriver)(const Handle(GEOMImpl_ArcDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ArcDriver)(const GEOMImpl_ArcDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ArcDriver)& operator=(const Handle(GEOMImpl_ArcDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ArcDriver)& operator=(const GEOMImpl_ArcDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ArcDriver* operator->() 
-     {
-      return (GEOMImpl_ArcDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ArcDriver* operator->() const 
-     {
-      return (GEOMImpl_ArcDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ArcDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ArcDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ArcDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ArcDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ArcDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ArcDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,10 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ArcDriver() {};
 
+Standard_EXPORT virtual bool GetCreationInformation(std::string&             theOperationName,
+                                                    std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ArcDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ArcDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ArcDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ArcDriver )
 };
 
 #endif
index ceb145712531bdfd9fa83042e849b8c75474cbdb..955caf300beaa7aae6c7068e4b4981a1950da409 100644 (file)
@@ -147,46 +147,33 @@ Standard_Integer GEOMImpl_ArchimedeDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ArchimedeDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ArchimedeDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ArchimedeDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
+  GEOMImpl_IArchimede IA (function);
+  Standard_Integer aType = function->GetType();
+  if (aType != ARCHIMEDE_TYPE) return 0;
 
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ArchimedeDriver",
-                                                         sizeof(GEOMImpl_ArchimedeDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
+  theOperationName = "ARCHIMEDE";
 
-  return _aType;
+  AddParam( theParams, "Objects", IA.GetBasicShape() );
+  AddParam( theParams, "Weight", IA.GetWeight() );
+  AddParam( theParams, "Water Density", IA.GetDensity() );
+  AddParam( theParams, "Meshing Deflect.", IA.GetDeflection() );
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-
-const Handle(GEOMImpl_ArchimedeDriver) Handle(GEOMImpl_ArchimedeDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ArchimedeDriver) _anOtherObject;
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ArchimedeDriver,GEOM_BaseDriver);
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ArchimedeDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ArchimedeDriver)((Handle(GEOMImpl_ArchimedeDriver)&)AnObject);
-     }
-  }
-
-  return _anOtherObject;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ArchimedeDriver,GEOM_BaseDriver);
index 190117df35c7ff2b279bb9646b196159be3c0b9f..b32282749f6b929144fc4f49025c29331ee7a086 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ArchimedeDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ArchimedeDriver);
-
-class Handle(GEOMImpl_ArchimedeDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ArchimedeDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ArchimedeDriver)(const Handle(GEOMImpl_ArchimedeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ArchimedeDriver)(const GEOMImpl_ArchimedeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ArchimedeDriver)& operator=(const Handle(GEOMImpl_ArchimedeDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ArchimedeDriver)& operator=(const GEOMImpl_ArchimedeDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ArchimedeDriver* operator->() 
-     {
-      return (GEOMImpl_ArchimedeDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ArchimedeDriver* operator->() const 
-     {
-      return (GEOMImpl_ArchimedeDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ArchimedeDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ArchimedeDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ArchimedeDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ArchimedeDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ArchimedeDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ArchimedeDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,10 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ArchimedeDriver() {};
 
+Standard_EXPORT virtual bool GetCreationInformation(std::string&             theOperationName,
+                                                    std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ArchimedeDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ArchimedeDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ArchimedeDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ArchimedeDriver )
 };
 
 #endif
index 19aec6ceca10e8aa1c723205180d91c9024d30ae..a13dd628cde497bca08e234c119959ee8fbfcbe5 100644 (file)
@@ -1063,45 +1063,99 @@ void GEOMImpl_BlockDriver::MultiTransformate2D (const TopoDS_Shape&    theBlock,
   theResult = aCompound;
 }
 
-//=======================================================================
-//function :  GEOMImpl_BlockDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_BlockDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_BlockDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  Standard_Integer aType = function->GetType();
+  GEOMImpl_IBlocks    aCI1 (function);
+  GEOMImpl_IBlockTrsf aCI2 (function);
+  Handle(TColStd_HSequenceOfTransient) aShapes = aCI1.GetShapes();
+
+  switch ( aType ) {
+  case BLOCK_FACE_FOUR_EDGES:
+    theOperationName = "Q_FACE";
+    AddParam( theParams, "Edge 1", aShapes->Value(1) );
+    AddParam( theParams, "Edge 2", aShapes->Value(2) );
+    AddParam( theParams, "Edge 3", aShapes->Value(3) );
+    AddParam( theParams, "Edge 4", aShapes->Value(4) );
+    break;
+  case BLOCK_FACE_TWO_EDGES:
+    theOperationName = "Q_FACE";
+    AddParam( theParams, "Edge 1", aShapes->Value(1) );
+    AddParam( theParams, "Edge 2", aShapes->Value(2) );
+    break;
+  case BLOCK_FACE_FOUR_PNT:
+    theOperationName = "Q_FACE";
+    AddParam( theParams, "Point 1", aShapes->Value(1) );
+    AddParam( theParams, "Point 2", aShapes->Value(2) );
+    AddParam( theParams, "Point 3", aShapes->Value(3) );
+    AddParam( theParams, "Point 4", aShapes->Value(4) );
+    break;
+  case BLOCK_SIX_FACES:
+    theOperationName = "HEX_SOLID";
+    AddParam( theParams, "Face 1", aShapes->Value(1) );
+    AddParam( theParams, "Face 2", aShapes->Value(2) );
+    AddParam( theParams, "Face 3", aShapes->Value(3) );
+    AddParam( theParams, "Face 4", aShapes->Value(4) );
+    AddParam( theParams, "Face 5", aShapes->Value(5) );
+    AddParam( theParams, "Face 6", aShapes->Value(6) );
+    break;
+  case BLOCK_TWO_FACES:
+    theOperationName = "HEX_SOLID";
+    AddParam( theParams, "Face 1", aShapes->Value(1) );
+    AddParam( theParams, "Face 2", aShapes->Value(2) );
+    break;
+  case BLOCK_COMPOUND_GLUE:
+    theOperationName = "MakeBlockCompound";
+    AddParam( theParams, "Compound", aShapes->Value(1) );
+    break;
+  case BLOCK_REMOVE_EXTRA:
+    theOperationName = "REMOVE_EXTRA_EDGES";
+    AddParam( theParams, "Selected shape", aCI2.GetOriginal() );
+    AddParam( theParams, "Union faces", aCI2.GetOptimumNbFaces() == 0);
+    break;
+  case BLOCK_COMPOUND_IMPROVE:
+    theOperationName = "CHECK_COMPOUND";
+    AddParam( theParams, "Selected shape", aCI2.GetOriginal() );
+    break;
+  case BLOCK_MULTI_TRANSFORM_1D:
+    theOperationName = "MUL_TRANSFORM";
+    AddParam( theParams, "Main Object", aCI2.GetOriginal() );
+    AddParam( theParams, "Face 1", aCI2.GetFace1U() );
+    AddParam( theParams, "Face 2", aCI2.GetFace2U() );
+    AddParam( theParams, "Nb. Times", aCI2.GetNbIterU() );
+    break;
+  case BLOCK_MULTI_TRANSFORM_2D:
+    theOperationName = "MUL_TRANSFORM";
+    AddParam( theParams, "Main Object", aCI2.GetOriginal() );
+    AddParam( theParams, "Face 1 U", aCI2.GetFace1U() );
+    AddParam( theParams, "Face 2 U", aCI2.GetFace2U() );
+    AddParam( theParams, "Nb. Times V", aCI2.GetNbIterV() );
+    AddParam( theParams, "Face 1 V", aCI2.GetFace1V() );
+    AddParam( theParams, "Face 2 V", aCI2.GetFace2V() );
+    AddParam( theParams, "Nb. Times V", aCI2.GetNbIterV() );
+    break;
+  case BLOCK_UNION_FACES:
+    theOperationName = "UNION_FACES";
+    AddParam( theParams, "Selected shape", aCI2.GetOriginal() );
+    break;
+  default:
+    return false;
+  }
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BlockDriver",
-                                                         sizeof(GEOMImpl_BlockDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_BlockDriver) Handle(GEOMImpl_BlockDriver)::DownCast
-  (const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_BlockDriver) _anOtherObject;
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_BlockDriver,GEOM_BaseDriver);
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BlockDriver))) {
-       _anOtherObject = Handle(GEOMImpl_BlockDriver)((Handle(GEOMImpl_BlockDriver)&)AnObject);
-     }
-  }
-
-  return _anOtherObject;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_BlockDriver,GEOM_BaseDriver);
index 0f5a078328220c1205d9482d9d7d99318e6f2058..c35aba1512452183dba9b1c4a954cd30cb7ae9db 100644 (file)
 #include <Standard_GUID.hxx>
 #endif
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_BlockDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BlockDriver);
-
-class Handle(GEOMImpl_BlockDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress)
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size)
-      {
-        return Standard::Allocate(size);
-      }
-    inline void  operator delete(void *anAddress)
-      {
-        if (anAddress) Standard::Free((Standard_Address&)anAddress);
-      }
-
-    Handle(GEOMImpl_BlockDriver)():Handle(TFunction_Driver)() {}
-    Handle(GEOMImpl_BlockDriver)(const Handle(GEOMImpl_BlockDriver)& aHandle) : Handle(TFunction_Driver)(aHandle)
-     {
-     }
-
-    Handle(GEOMImpl_BlockDriver)(const GEOMImpl_BlockDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem)
-     {
-     }
-
-    Handle(GEOMImpl_BlockDriver)& operator=(const Handle(GEOMImpl_BlockDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_BlockDriver)& operator=(const GEOMImpl_BlockDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_BlockDriver* operator->()
-     {
-      return (GEOMImpl_BlockDriver *)ControlAccess();
-     }
-
-    GEOMImpl_BlockDriver* operator->() const
-     {
-      return (GEOMImpl_BlockDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_BlockDriver)() {};
-
-   Standard_EXPORT static const Handle(GEOMImpl_BlockDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -123,22 +61,13 @@ class Handle(GEOMImpl_BlockDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_BlockDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_BlockDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress)
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size)
-      {
-        return Standard::Allocate(size);
-      }
-    inline void  operator delete(void *anAddress)
-      {
-        if (anAddress) Standard::Free((Standard_Address&)anAddress);
-      }
+class GEOMImpl_BlockDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  //
@@ -149,12 +78,8 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_BlockDriver() {};
 
-
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BlockDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_BlockDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BlockDriver) == AType || TFunction_Driver::IsKind(AType)); }
+Standard_EXPORT virtual bool GetCreationInformation(std::string&             theOperationName,
+                                                    std::vector<GEOM_Param>& params);
 
 private:
     void MultiTransformate1D (const TopoDS_Shape&    theBlock,
@@ -172,6 +97,8 @@ private:
                               const Standard_Integer theNbIterV,
                               TopoDS_Shape&          theResult) const;
 
+DEFINE_STANDARD_RTTI( GEOMImpl_BlockDriver )
+
 };
 
 #endif
index 8cc9f8bfdd485c6943fe148c2df092f766805b4e..e1dccd8d0cc68535e25a046e334c4a5d2754cb57 100644 (file)
@@ -510,42 +510,63 @@ TopoDS_Shape GEOMImpl_BooleanDriver::performOperation
   return aShape;
 }
 
-//=======================================================================
-//function :  GEOMImpl_BooleanDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_BooleanDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_BooleanDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BooleanDriver",
-                                                         sizeof(GEOMImpl_BooleanDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_BooleanDriver) Handle(GEOMImpl_BooleanDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_BooleanDriver) _anOtherObject;
+  GEOMImpl_IBoolean aCI (function);
+  Standard_Integer aType = function->GetType();
 
-  if (!AnObject.IsNull()) {
-    if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BooleanDriver))) {
-      _anOtherObject = Handle(GEOMImpl_BooleanDriver)((Handle(GEOMImpl_BooleanDriver)&)AnObject);
-    }
+  switch ( aType ) {
+  case BOOLEAN_COMMON:
+    theOperationName = "COMMON";
+    AddParam( theParams, "Object 1", aCI.GetShape1() );
+    AddParam( theParams, "Object 2", aCI.GetShape2() );
+    break;
+  case BOOLEAN_CUT:
+    theOperationName = "CUT";
+    AddParam( theParams, "Main Object", aCI.GetShape1() );
+    AddParam( theParams, "Tool Object", aCI.GetShape2() );
+    break;
+  case BOOLEAN_FUSE:
+    theOperationName = "FUSE";
+    AddParam( theParams, "Object 1", aCI.GetShape1() );
+    AddParam( theParams, "Object 2", aCI.GetShape2() );
+    break;
+  case BOOLEAN_SECTION:
+    theOperationName = "SECTION";
+    AddParam( theParams, "Object 1", aCI.GetShape1() );
+    AddParam( theParams, "Object 2", aCI.GetShape2() );
+    break;
+  case BOOLEAN_COMMON_LIST:
+    theOperationName = "COMMON";
+    AddParam( theParams, "Selected objects", aCI.GetShapes() );
+    break;
+  case BOOLEAN_FUSE_LIST:
+    theOperationName = "FUSE";
+    AddParam( theParams, "Selected objects", aCI.GetShapes() );
+    break;
+  case BOOLEAN_CUT_LIST:
+    theOperationName = "CUT";
+    AddParam( theParams, "Main Object", aCI.GetShape1() );
+    AddParam( theParams, "Tool Objects", aCI.GetShapes() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_BooleanDriver,GEOM_BaseDriver);
+
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_BooleanDriver,GEOM_BaseDriver);
index 6bc1af7f20322cca728af8b0fed8a00d35239b1a..041a391e0bffe721ea06a42a4cbdae32269a3468 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
 #ifndef _TopoDS_Shape_HeaderFile
 #include <TopoDS_Shape.hxx>
 #endif
@@ -61,58 +57,7 @@ class Handle_Standard_Type;
 class Handle(TFunction_Driver);
 class GEOMImpl_BooleanDriver;
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BooleanDriver);
-
-class Handle(GEOMImpl_BooleanDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_BooleanDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_BooleanDriver)(const Handle(GEOMImpl_BooleanDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_BooleanDriver)(const GEOMImpl_BooleanDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_BooleanDriver)& operator=(const Handle(GEOMImpl_BooleanDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_BooleanDriver)& operator=(const GEOMImpl_BooleanDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_BooleanDriver* operator->() 
-     {
-      return (GEOMImpl_BooleanDriver *)ControlAccess();
-     }
-
-    GEOMImpl_BooleanDriver* operator->() const 
-     {
-      return (GEOMImpl_BooleanDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_BooleanDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_BooleanDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
+
 
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
@@ -127,22 +72,13 @@ class Handle(GEOMImpl_BooleanDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_BooleanDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_BooleanDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_BooleanDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -153,13 +89,8 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_BooleanDriver() {};
 
-
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BooleanDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_BooleanDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BooleanDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+Standard_EXPORT virtual bool GetCreationInformation(std::string&             theOperationName,
+                                                    std::vector<GEOM_Param>& params);
 
 private:
 
@@ -167,6 +98,7 @@ private:
                                 const TopoDS_Shape theShape2,
                                 const Standard_Integer theType) const;
 
+DEFINE_STANDARD_RTTI( GEOMImpl_BooleanDriver )
 };
 
 #endif
index 40dffa9f833af0c3ca57da81e3d53644875998b9..f2b580fe1a66890ae61d3cf11971fdd9e1cd6ed9 100644 (file)
@@ -121,45 +121,42 @@ Standard_Integer GEOMImpl_BoxDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_BoxDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_BoxDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_BoxDriver::GetCreationInformation(std::string&             theOperationName,
+                                                std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
+  GEOMImpl_IBox aBI (aFunction);
+  Standard_Integer aType = aFunction->GetType();
 
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_BoxDriver",
-                                                         sizeof(GEOMImpl_BoxDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
+  theOperationName = "BOX";
 
-  return _aType;
+  if (aType == BOX_DX_DY_DZ)
+  {
+    AddParam( theParams, "Dx", aBI.GetDX() );
+    AddParam( theParams, "Dy", aBI.GetDY() );
+    AddParam( theParams, "Dz", aBI.GetDZ() );
+  }
+  else if (aType == BOX_TWO_PNT) 
+  {
+    AddParam( theParams, "Point 1", aBI.GetRef1() );
+    AddParam( theParams, "Point 2", aBI.GetRef2() );
+  }
+  else {
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_BoxDriver) Handle(GEOMImpl_BoxDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_BoxDriver) _anOtherObject;
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_BoxDriver))) {
-       _anOtherObject = Handle(GEOMImpl_BoxDriver)((Handle(GEOMImpl_BoxDriver)&)AnObject);
-     }
-  }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_BoxDriver,GEOM_BaseDriver);
 
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_BoxDriver,GEOM_BaseDriver);
index fdb50a03edce9158498ea7e93b6480bd127d6b22..23a645c45109c188725f28058bebca9144db397c 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_BoxDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BoxDriver);
-
-class Handle(GEOMImpl_BoxDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_BoxDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_BoxDriver)(const Handle(GEOMImpl_BoxDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_BoxDriver)(const GEOMImpl_BoxDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_BoxDriver)& operator=(const Handle(GEOMImpl_BoxDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_BoxDriver)& operator=(const GEOMImpl_BoxDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_BoxDriver* operator->() 
-     {
-      return (GEOMImpl_BoxDriver *)ControlAccess();
-     }
-
-    GEOMImpl_BoxDriver* operator->() const 
-     {
-      return (GEOMImpl_BoxDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_BoxDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_BoxDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_BoxDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_BoxDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_BoxDriver, GEOM_BaseDriver );
+
+class GEOMImpl_BoxDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,12 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_BoxDriver() {};
 
-
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BoxDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_BoxDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BoxDriver) == AType || TFunction_Driver::IsKind(AType)); } 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationNameName,
+                              std::vector<GEOM_Param>& params);
 
 
+DEFINE_STANDARD_RTTI( GEOMImpl_BoxDriver )
 };
 
 #endif
index d0aff9a4f2854934ae7c5a85d964958d68318bb1..9afdb9adb2ac733b478aa976d67aab21677b5dbc 100644 (file)
@@ -286,43 +286,91 @@ Standard_Integer GEOMImpl_ChamferDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ChamferDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ChamferDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ChamferDriver",
-                                                         sizeof(GEOMImpl_ChamferDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_ChamferDriver) Handle(GEOMImpl_ChamferDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ChamferDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_ChamferDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ChamferDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ChamferDriver)((Handle(GEOMImpl_ChamferDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IChamfer aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "CHAMFER";
+
+  switch ( aType ) {
+  case CHAMFER_SHAPE_ALL:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected Edges", "all" );
+    AddParam( theParams, "D", aCI.GetD() );
+    break;
+  case CHAMFER_SHAPE_EDGE:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Face 1", aCI.GetFace1() );
+    AddParam( theParams, "Face 2", aCI.GetFace2() );
+    AddParam( theParams, "D1", aCI.GetD1() );
+    AddParam( theParams, "D2", aCI.GetD2() );
+    break;
+  case CHAMFER_SHAPE_EDGE_AD:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Face 1", aCI.GetFace1() );
+    AddParam( theParams, "Face 2", aCI.GetFace2() );
+    AddParam( theParams, "D", aCI.GetD() );
+    AddParam( theParams, "Angle", aCI.GetAngle() );
+    break;
+  case CHAMFER_SHAPE_FACES:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected Faces" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " faces: ";
+    for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+      theParams[1] << aCI.GetFace(i) << " ";
+    AddParam( theParams, "D1", aCI.GetD1() );
+    AddParam( theParams, "D2", aCI.GetD2() );
+    break;
+  case CHAMFER_SHAPE_FACES_AD:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected Faces" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " faces: ";
+    for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+      theParams[1] << aCI.GetFace(i) << " ";
+    AddParam( theParams, "D", aCI.GetD() );
+    AddParam( theParams, "Angle", aCI.GetAngle() );
+    break;
+  case CHAMFER_SHAPE_EDGES:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected Edges" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " edges: ";
+    for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+      theParams[1] << aCI.GetEdge(i) << " ";
+    AddParam( theParams, "D1", aCI.GetD1() );
+    AddParam( theParams, "D2", aCI.GetD2() );
+    break;
+  case CHAMFER_SHAPE_EDGES_AD:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected Edges" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " edges: ";
+    for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+      theParams[1] << aCI.GetFace(i) << " ";
+    AddParam( theParams, "D", aCI.GetD() );
+    AddParam( theParams, "Angle", aCI.GetAngle() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ChamferDriver,GEOM_BaseDriver);
+
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ChamferDriver,GEOM_BaseDriver);
index b52356811ef2d8cc00203d9d8237090678b26daf..d2160c2694a99362c036e724b538e4b2aba3f688 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ChamferDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ChamferDriver);
-
-class Handle(GEOMImpl_ChamferDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ChamferDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ChamferDriver)(const Handle(GEOMImpl_ChamferDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ChamferDriver)(const GEOMImpl_ChamferDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ChamferDriver)& operator=(const Handle(GEOMImpl_ChamferDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ChamferDriver)& operator=(const GEOMImpl_ChamferDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ChamferDriver* operator->() 
-     {
-      return (GEOMImpl_ChamferDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ChamferDriver* operator->() const 
-     {
-      return (GEOMImpl_ChamferDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ChamferDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ChamferDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ChamferDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ChamferDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ChamferDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ChamferDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ChamferDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ChamferDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ChamferDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ChamferDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ChamferDriver )
 };
 
 #endif
index 0cf7a12c365de51982a3bbdecd9504b878d71a4d..9336c64b50a347a94e3557ec84186a80638065d7 100644 (file)
@@ -192,45 +192,47 @@ Standard_Integer GEOMImpl_CircleDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_CircleDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_CircleDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_CircleDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CircleDriver",
-                                                         sizeof(GEOMImpl_CircleDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ICircle aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "CIRCLE";
+
+  switch ( aType ) {
+  case CIRCLE_PNT_VEC_R:
+    AddParam( theParams, "Center Point", aCI.GetCenter(), "Origin" );
+    AddParam( theParams, "Vector", aCI.GetVector(), "Z axis" );
+    AddParam( theParams, "Radius", aCI.GetRadius() );
+    break;
+  case CIRCLE_CENTER_TWO_PNT:
+    AddParam( theParams, "Center Point", aCI.GetPoint1() );
+    AddParam( theParams, "Point 1", aCI.GetPoint2() );
+    AddParam( theParams, "Point 2", aCI.GetPoint3() );
+    break;
+  case CIRCLE_THREE_PNT:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    AddParam( theParams, "Point 3", aCI.GetPoint3() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_CircleDriver) Handle(GEOMImpl_CircleDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_CircleDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CircleDriver))) {
-       _anOtherObject = Handle(GEOMImpl_CircleDriver)((Handle(GEOMImpl_CircleDriver)&)AnObject);
-     }
-  }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_CircleDriver,GEOM_BaseDriver);
 
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_CircleDriver,GEOM_BaseDriver);
index d07441c46d545bb9e816630c875a32f4c882369c..63abd3ae352c1ac175b98016fb876e929214f6af 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_CircleDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CircleDriver);
-
-class Handle(GEOMImpl_CircleDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_CircleDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_CircleDriver)(const Handle(GEOMImpl_CircleDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_CircleDriver)(const GEOMImpl_CircleDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_CircleDriver)& operator=(const Handle(GEOMImpl_CircleDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_CircleDriver)& operator=(const GEOMImpl_CircleDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_CircleDriver* operator->() 
-     {
-      return (GEOMImpl_CircleDriver *)ControlAccess();
-     }
-
-    GEOMImpl_CircleDriver* operator->() const 
-     {
-      return (GEOMImpl_CircleDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_CircleDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_CircleDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_CircleDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_CircleDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_CircleDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_CircleDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_CircleDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CircleDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_CircleDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CircleDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_CircleDriver )
 };
 
 #endif
index d75bb52121855c114a35d60edb21235476c57f12..21c3d7e580b880113322b824c333d4823107b32d 100644 (file)
@@ -143,45 +143,44 @@ Standard_Integer GEOMImpl_ConeDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ConeDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ConeDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ConeDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ConeDriver",
-                                                         sizeof(GEOMImpl_ConeDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ICone aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "CONE";
+
+  switch ( aType ) {
+  case CONE_R1_R2_H:
+    AddParam( theParams, "Radius 1", aCI.GetR1() );
+    AddParam( theParams, "Radius 2", aCI.GetR2() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    break;
+  case CONE_PNT_VEC_R1_R2_H:
+    AddParam( theParams, "Base Point", aCI.GetPoint() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Radius 1", aCI.GetR1() );
+    AddParam( theParams, "Radius 2", aCI.GetR2() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_ConeDriver) Handle(GEOMImpl_ConeDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ConeDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ConeDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ConeDriver)((Handle(GEOMImpl_ConeDriver)&)AnObject);
-     }
-  }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ConeDriver,GEOM_BaseDriver);
 
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ConeDriver,GEOM_BaseDriver);
index 811bd77070d3233791ca53e9bdafa6ddb97712c9..55b86ae1ed7b5fdd6ff02ae08b3b386b1d2a4df2 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ConeDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ConeDriver);
-
-class Handle(GEOMImpl_ConeDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ConeDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ConeDriver)(const Handle(GEOMImpl_ConeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ConeDriver)(const GEOMImpl_ConeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ConeDriver)& operator=(const Handle(GEOMImpl_ConeDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ConeDriver)& operator=(const GEOMImpl_ConeDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ConeDriver* operator->() 
-     {
-      return (GEOMImpl_ConeDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ConeDriver* operator->() const 
-     {
-      return (GEOMImpl_ConeDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ConeDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ConeDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ConeDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ConeDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ConeDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ConeDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ConeDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ConeDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ConeDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ConeDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ConeDriver )
 };
 
 #endif
index b342798238e103d483abd38fffa27ff61abf9789..e7d5cda44b10408dfa5af479961a7eed7bbe02c4 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <Standard_Stream.hxx>
-
-#include <GEOMImpl_CopyDriver.hxx>
-#include <GEOMImpl_ICopy.hxx>
-#include <GEOMImpl_Types.hxx>
-#include <GEOM_Function.hxx>
+#include "GEOMImpl_CopyDriver.hxx"
+#include "GEOMImpl_ICopy.hxx"
+#include "GEOMImpl_Types.hxx"
+#include "GEOM_Function.hxx"
+#include "GEOM_Object.hxx"
 
 #include <BRep_Tool.hxx>
 #include <gp_Pnt.hxx>
@@ -92,45 +91,44 @@ Standard_Integer GEOMImpl_CopyDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_CopyDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_CopyDriver_Type_()
+bool GEOMImpl_CopyDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CopyDriver",
-                                                         sizeof(GEOMImpl_CopyDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ICopy aCI( function );
+  Standard_Integer aType = function->GetType();
+
+
+  switch ( aType ) {
+  case COPY_WITH_REF:
+    theOperationName = "MakeCopy";
+    AddParam( theParams, "Original", aCI.GetOriginal() );
+    break;
+  case COPY_WITHOUT_REF:
+  {
+    theOperationName = "RestoreShape";
+    TDF_Label label = Label();
+    Handle(GEOM_Object) obj = GEOM_Object::GetObject(label);
+    if ( !obj.IsNull() && obj->GetType() == GEOM_FREE_BOUNDS )
+      theOperationName = "CHECK_FREE_BNDS";
+    break;
+  }
+  default:
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_CopyDriver) Handle(GEOMImpl_CopyDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_CopyDriver) _anOtherObject;
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_CopyDriver,GEOM_BaseDriver);
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CopyDriver))) {
-       _anOtherObject = Handle(GEOMImpl_CopyDriver)((Handle(GEOMImpl_CopyDriver)&)AnObject);
-     }
-  }
-
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_CopyDriver,GEOM_BaseDriver);
index 94fb0e69ab27ca61c3af33395f5e040784afa60c..ed8be218ae484cac48222dd994a5db9102ee6a19 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_CopyDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CopyDriver);
-
-class Handle(GEOMImpl_CopyDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_CopyDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_CopyDriver)(const Handle(GEOMImpl_CopyDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_CopyDriver)(const GEOMImpl_CopyDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_CopyDriver)& operator=(const Handle(GEOMImpl_CopyDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_CopyDriver)& operator=(const GEOMImpl_CopyDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_CopyDriver* operator->() 
-     {
-      return (GEOMImpl_CopyDriver *)ControlAccess();
-     }
-
-    GEOMImpl_CopyDriver* operator->() const 
-     {
-      return (GEOMImpl_CopyDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_CopyDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_CopyDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_CopyDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_CopyDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_CopyDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_CopyDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_CopyDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CopyDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_CopyDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CopyDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_CopyDriver )
 };
 
 #endif
index f9a39ea9f72581be3068edf0ab4116bac37822c9..b17ee2ea38d8bba11fcaad4645e04c84f17dc3a6 100644 (file)
@@ -126,45 +126,42 @@ Standard_Integer GEOMImpl_CylinderDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_CylinderDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_CylinderDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_CylinderDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_CylinderDriver",
-                                                         sizeof(GEOMImpl_CylinderDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ICylinder aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "CYLINDER";
+
+  switch ( aType ) {
+  case CYLINDER_R_H:
+    AddParam( theParams, "Radius", aCI.GetR() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    break;
+  case CONE_PNT_VEC_R1_R2_H:
+    AddParam( theParams, "Base Point", aCI.GetPoint() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Radius", aCI.GetR() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_CylinderDriver) Handle(GEOMImpl_CylinderDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_CylinderDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_CylinderDriver))) {
-       _anOtherObject = Handle(GEOMImpl_CylinderDriver)((Handle(GEOMImpl_CylinderDriver)&)AnObject);
-     }
-  }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_CylinderDriver,GEOM_BaseDriver);
 
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_CylinderDriver,GEOM_BaseDriver);
index e3d601023a130d2a565ff502d298161e0cc9136f..1061b3f24fe66c728fa5ad11d7116c158a5b378d 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_CylinderDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_CylinderDriver);
-
-class Handle(GEOMImpl_CylinderDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_CylinderDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_CylinderDriver)(const Handle(GEOMImpl_CylinderDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_CylinderDriver)(const GEOMImpl_CylinderDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_CylinderDriver)& operator=(const Handle(GEOMImpl_CylinderDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_CylinderDriver)& operator=(const GEOMImpl_CylinderDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_CylinderDriver* operator->() 
-     {
-      return (GEOMImpl_CylinderDriver *)ControlAccess();
-     }
-
-    GEOMImpl_CylinderDriver* operator->() const 
-     {
-      return (GEOMImpl_CylinderDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_CylinderDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_CylinderDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_CylinderDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_CylinderDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_CylinderDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_CylinderDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_CylinderDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_CylinderDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_CylinderDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_CylinderDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_CylinderDriver )
 };
 
 #endif
index 49a004a674cc61990725797d16da647f024ca9be..a0670668541987eb6e1d7113c82e48de59720c42 100755 (executable)
@@ -159,45 +159,45 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_DiskDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_DiskDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_DiskDriver",
-                                                         sizeof(GEOMImpl_DiskDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_DiskDriver) Handle(GEOMImpl_DiskDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_DiskDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_DiskDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_DiskDriver))) {
-       _anOtherObject = Handle(GEOMImpl_DiskDriver)((Handle(GEOMImpl_DiskDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IDisk aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "DISK";
+
+  switch ( aType ) {
+  case DISK_PNT_VEC_R:
+    AddParam( theParams, "Center Point", aCI.GetCenter() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Radius", aCI.GetRadius() );
+    break;
+  case DISK_THREE_PNT:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    AddParam( theParams, "Point 3", aCI.GetPoint3() );
+    break;
+  case DISK_R:
+    AddParam( theParams, "Radius", aCI.GetRadius() );
+    AddParam( theParams, "Orientation", aCI.GetOrientation() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_DiskDriver,GEOM_BaseDriver);
+
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_DiskDriver,GEOM_BaseDriver);
index 19a758833a16836f7084d6868b3055ee1db60bf2..a5d8b5af630bfc6392502b0898c159ea86ee4aa2 100755 (executable)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_DiskDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_DiskDriver);
-
-class Handle(GEOMImpl_DiskDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_DiskDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_DiskDriver)(const Handle(GEOMImpl_DiskDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_DiskDriver)(const GEOMImpl_DiskDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_DiskDriver)& operator=(const Handle(GEOMImpl_DiskDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_DiskDriver)& operator=(const GEOMImpl_DiskDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_DiskDriver* operator->() 
-     {
-      return (GEOMImpl_DiskDriver *)ControlAccess();
-     }
-
-    GEOMImpl_DiskDriver* operator->() const 
-     {
-      return (GEOMImpl_DiskDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_DiskDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_DiskDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -119,22 +57,13 @@ class Handle(GEOMImpl_DiskDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_DiskDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_DiskDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_DiskDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -145,14 +74,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_DiskDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_DiskDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_DiskDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_DiskDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_DiskDriver )
 };
 
 #endif
index c1d0da36fa87088f5e0d931e59e39a49054b2fbc..8a756d56cb9f4b424e8052fcc13fef698c26b76d 100644 (file)
@@ -485,41 +485,43 @@ TopoDS_Shape GEOMImpl_DividedDiskDriver::WPlaneTransform(TopoDS_Shape theShape,
   return aTransformation.Shape();
 }
 
-//=======================================================================
-//function :  GEOMImpl_DividedDiskDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_DividedDiskDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_DividedDiskDriver",
-                                                         sizeof(GEOMImpl_DividedDiskDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_DividedDiskDriver) Handle(GEOMImpl_DividedDiskDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_DividedDiskDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_DividedDiskDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_DividedDiskDriver))) {
-       _anOtherObject = Handle(GEOMImpl_DividedDiskDriver)((Handle(GEOMImpl_DividedDiskDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IDividedDisk aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "DIVIDEDDISK";
+
+  switch ( aType ) {
+  case DIVIDEDDISK_R_RATIO:
+    AddParam( theParams, "Radius", aCI.GetR() );
+    AddParam( theParams, "Ratio", aCI.GetRatio() );
+    AddParam( theParams, "Orientation", aCI.GetOrientation() );
+    AddParam( theParams, "Division pattern", aCI.GetType() );
+    break;
+  case DIVIDEDDISK_R_VECTOR_PNT:
+    AddParam( theParams, "Center Point", aCI.GetCenter() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Radius", aCI.GetR() );
+    AddParam( theParams, "Division pattern", aCI.GetType() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_DividedDiskDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_DividedDiskDriver,GEOM_BaseDriver);
index bb28103296339b3414f33707fa8c524263e035b2..8f6755a800e1e2fc6419e25cfe40969950512d1e 100644 (file)
@@ -33,73 +33,13 @@ class gp_Pnt;
 class gp_Dir;
 class gp_Ax3;
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_DividedDiskDriver);
+#include "GEOM_BaseDriver.hxx"
 
-class Handle(GEOMImpl_DividedDiskDriver) : public Handle(TFunction_Driver) {
-public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  Handle(GEOMImpl_DividedDiskDriver)():Handle(TFunction_Driver)() {} 
-  Handle(GEOMImpl_DividedDiskDriver)(const Handle(GEOMImpl_DividedDiskDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-  {}
-
-  Handle(GEOMImpl_DividedDiskDriver)(const GEOMImpl_DividedDiskDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-  {}
-
-  Handle(GEOMImpl_DividedDiskDriver)& operator=(const Handle(GEOMImpl_DividedDiskDriver)& aHandle)
-  {
-    Assign(aHandle.Access());
-    return *this;
-  }
-  
-  Handle(GEOMImpl_DividedDiskDriver)& operator=(const GEOMImpl_DividedDiskDriver* anItem)
-  {
-    Assign((Standard_Transient *)anItem);
-    return *this;
-  }
-  
-  GEOMImpl_DividedDiskDriver* operator->() 
-  {
-    return (GEOMImpl_DividedDiskDriver *)ControlAccess();
-  }
-  
-  GEOMImpl_DividedDiskDriver* operator->() const 
-  {
-    return (GEOMImpl_DividedDiskDriver *)ControlAccess();
-  }
-  
-  Standard_EXPORT ~Handle(GEOMImpl_DividedDiskDriver)() {};
-  
-  Standard_EXPORT static const Handle(GEOMImpl_DividedDiskDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
+DEFINE_STANDARD_HANDLE( GEOMImpl_DividedDiskDriver, GEOM_BaseDriver );
 
-class GEOMImpl_DividedDiskDriver : public TFunction_Driver {
+class GEOMImpl_DividedDiskDriver : public GEOM_BaseDriver {
 public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_DividedDiskDriver();
   Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const; 
@@ -110,25 +50,18 @@ public:
   }
   Standard_EXPORT static const Standard_GUID& GetID();
   Standard_EXPORT ~GEOMImpl_DividedDiskDriver() {};
-  
-  // Type management
-  //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_DividedDiskDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const
-  {
-    return STANDARD_TYPE(GEOMImpl_DividedDiskDriver);
-  }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  {
-    return (STANDARD_TYPE(GEOMImpl_DividedDiskDriver) == AType || TFunction_Driver::IsKind(AType));
-  } 
-  
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 private:
   TopoDS_Shape TransformShape  (TopoDS_Shape aShape, int theOrientation) const;
   TopoDS_Shape TransformShape  (TopoDS_Shape aShape, gp_Pnt P, gp_Dir V) const;
   TopoDS_Shape WPlaneTransform (TopoDS_Shape aShape, gp_Ax3 theWPlane) const;
   TopoDS_Shell MakeDiskHexagon (double R, double Ratio) const;
   TopoDS_Shape MakeDiskSquare  (double R, double Ratio) const;
+
+  DEFINE_STANDARD_RTTI( GEOMImpl_DividedDiskDriver )
 };
 
 #endif // _GEOMImpl_DividedDiskDriver_HXX
index beb4ef1119f090e489f27657f97819b42e9cd0a1..4cadef824c20c0bdf3bb2e1cea6ba967a78ab5a5 100644 (file)
@@ -159,45 +159,38 @@ Standard_Integer GEOMImpl_EllipseDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_EllipseDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_EllipseDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_EllipseDriver",
-                                                         sizeof(GEOMImpl_EllipseDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_EllipseDriver) Handle(GEOMImpl_EllipseDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_EllipseDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_EllipseDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_EllipseDriver))) {
-       _anOtherObject = Handle(GEOMImpl_EllipseDriver)((Handle(GEOMImpl_EllipseDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IEllipse aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "ELLIPSE";
+
+  switch ( aType ) {
+  case ELLIPSE_PNT_VEC_RR:
+    AddParam( theParams, "Center", aCI.GetCenter(), "Origin" );
+    AddParam( theParams, "Vector", aCI.GetVector(), "Z axis" );
+    AddParam( theParams, "Major Axis", aCI.GetVectorMajor(), "X axis");
+    AddParam( theParams, "Major radius", aCI.GetRMajor() );
+    AddParam( theParams, "Minor radius", aCI.GetRMinor() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_EllipseDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_EllipseDriver,GEOM_BaseDriver);
index 47fdf0212c3e9303711a46694182aba58a0570d3..0faded4e407de4441ab2f96a1289a5640eae2789 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_EllipseDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_EllipseDriver);
-
-class Handle(GEOMImpl_EllipseDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_EllipseDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_EllipseDriver)(const Handle(GEOMImpl_EllipseDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_EllipseDriver)(const GEOMImpl_EllipseDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_EllipseDriver)& operator=(const Handle(GEOMImpl_EllipseDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_EllipseDriver)& operator=(const GEOMImpl_EllipseDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_EllipseDriver* operator->() 
-     {
-      return (GEOMImpl_EllipseDriver *)ControlAccess();
-     }
-
-    GEOMImpl_EllipseDriver* operator->() const 
-     {
-      return (GEOMImpl_EllipseDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_EllipseDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_EllipseDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_EllipseDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_EllipseDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_EllipseDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_EllipseDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_EllipseDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_EllipseDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_EllipseDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_EllipseDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_EllipseDriver )
 };
 
 #endif
index d1c5eab3bcb830aba4921319571a04f29b65cdff..618bcdee40f8fcdc5537ba87fb82ce42b86893fa 100644 (file)
@@ -126,45 +126,18 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
   return res;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ExportDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ExportDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ExportDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ExportDriver",
-                                                         sizeof(GEOMImpl_ExportDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
+  return false;
 }
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_ExportDriver) Handle(GEOMImpl_ExportDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ExportDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ExportDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ExportDriver)((Handle(GEOMImpl_ExportDriver)&)AnObject);
-     }
-  }
-
-  return _anOtherObject ;
-}
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ExportDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ExportDriver,GEOM_BaseDriver);
index d1dd9b98a85fdac63d5a5f89411766bae141c8c6..2f1040e980f116e84a8b7ccb57e602acf3b39ada 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ExportDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ExportDriver);
-
-class Handle(GEOMImpl_ExportDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ExportDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ExportDriver)(const Handle(GEOMImpl_ExportDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ExportDriver)(const GEOMImpl_ExportDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ExportDriver)& operator=(const Handle(GEOMImpl_ExportDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ExportDriver)& operator=(const GEOMImpl_ExportDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ExportDriver* operator->() 
-     {
-      return (GEOMImpl_ExportDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ExportDriver* operator->() const 
-     {
-      return (GEOMImpl_ExportDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ExportDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ExportDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ExportDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ExportDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ExportDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ExportDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ExportDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ExportDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ExportDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ExportDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ExportDriver )
 };
 
 #endif
index 197a0376412498ae9a98d0bb102fbbfe670cd1a0..76ec520559ea91deeb34a4ba13d51ac7950eefad 100755 (executable)
@@ -123,45 +123,48 @@ Standard_Integer GEOMImpl_FaceDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_FaceDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_FaceDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_FaceDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_FaceDriver",
-                                                         sizeof(GEOMImpl_FaceDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
+  GEOMImpl_IFace aCI( function );
+  Standard_Integer aType = function->GetType();
 
-  return _aType;
-}
+  theOperationName = "RECTANGLE";
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_FaceDriver) Handle(GEOMImpl_FaceDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_FaceDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_FaceDriver))) {
-       _anOtherObject = Handle(GEOMImpl_FaceDriver)((Handle(GEOMImpl_FaceDriver)&)AnObject);
-     }
+  switch ( aType ) {
+  case FACE_OBJ_H_W:
+  {
+    Handle(GEOM_Function) aRefFunct = aCI.GetRef1();
+    TopoDS_Shape aRefShape = aRefFunct->GetValue();
+    if (aRefShape.ShapeType() == TopAbs_EDGE)
+      AddParam( theParams, "Edge", aRefFunct );
+    else
+      AddParam( theParams, "Face", aRefFunct );
+    AddParam( theParams, "Height", aCI.GetH() );
+    AddParam( theParams, "Width", aCI.GetW() );
+    break;
   }
-
-  return _anOtherObject ;
+  case FACE_H_W:
+    AddParam( theParams, "Height", aCI.GetH() );
+    AddParam( theParams, "Width", aCI.GetW() );
+    AddParam( theParams, "Orientation", aCI.GetOrientation() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_FaceDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_FaceDriver,GEOM_BaseDriver);
index 499b50e0f8f025310e68cb6d48d23d6e11221c85..a7dd0769e20b4d76b55022aee1bd21f5f166c8b5 100755 (executable)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_FaceDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_FaceDriver);
-
-class Handle(GEOMImpl_FaceDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_FaceDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_FaceDriver)(const Handle(GEOMImpl_FaceDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_FaceDriver)(const GEOMImpl_FaceDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_FaceDriver)& operator=(const Handle(GEOMImpl_FaceDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_FaceDriver)& operator=(const GEOMImpl_FaceDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_FaceDriver* operator->() 
-     {
-      return (GEOMImpl_FaceDriver *)ControlAccess();
-     }
-
-    GEOMImpl_FaceDriver* operator->() const 
-     {
-      return (GEOMImpl_FaceDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_FaceDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_FaceDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -119,22 +57,13 @@ class Handle(GEOMImpl_FaceDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_FaceDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_FaceDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_FaceDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -145,14 +74,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_FaceDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_FaceDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_FaceDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_FaceDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_FaceDriver )
 };
 
 #endif
index 657d8a2053f5e2844e6e4833249c0560241dcf49..57768c160aaf5e6d6dbacd864615adf65ed96196 100644 (file)
@@ -367,44 +367,41 @@ bool GEOMImpl_Fillet1dDriver::MakeFillet(const TopoDS_Wire& aWire,
 
   return isAllStepsOk;
 }
-
-
-//=======================================================================
-//function :  GEOMImpl_Fillet1dDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_Fillet1dDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_Fillet1dDriver",
-                                                         sizeof(GEOMImpl_Fillet1dDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_Fillet1dDriver) Handle(GEOMImpl_Fillet1dDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_Fillet1dDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_Fillet1dDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_Fillet1dDriver))) {
-       _anOtherObject = Handle(GEOMImpl_Fillet1dDriver)((Handle(GEOMImpl_Fillet1dDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IFillet1d aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "FILLET_1D";
+
+  switch ( aType ) {
+  case GEOM_FILLET_1D:
+    AddParam( theParams, "Wire", aCI.GetShape() );
+    AddParam( theParams, "Vertexes");
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " vertexes: ";
+    for (int i = 1; i <= aCI.GetLength(); ++i )
+      theParams[1] << aCI.GetVertex( i ) << " ";
+    AddParam( theParams, "Radius", aCI.GetR() );
+    AddParam( theParams, "Fuse collinear edges", aCI.GetFlag() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_Fillet1dDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_Fillet1dDriver,GEOM_BaseDriver);
index b5f96467c58058caba5a7ff83ca11f25b9a134d2..e98b64084e496337aa5ceaeaf77d4a30f690a391 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
 #include <TopoDS_Wire.hxx>
 #include <TopTools_ListOfShape.hxx>
 
@@ -56,58 +52,7 @@ class Handle_Standard_Type;
 class Handle(TFunction_Driver);
 class GEOMImpl_Fillet1dDriver;
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_Fillet1dDriver);
-
-class Handle(GEOMImpl_Fillet1dDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_Fillet1dDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_Fillet1dDriver)(const Handle(GEOMImpl_Fillet1dDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_Fillet1dDriver)(const GEOMImpl_Fillet1dDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_Fillet1dDriver)& operator=(const Handle(GEOMImpl_Fillet1dDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_Fillet1dDriver)& operator=(const GEOMImpl_Fillet1dDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_Fillet1dDriver* operator->() 
-     {
-      return (GEOMImpl_Fillet1dDriver *)ControlAccess();
-     }
-
-    GEOMImpl_Fillet1dDriver* operator->() const 
-     {
-      return (GEOMImpl_Fillet1dDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_Fillet1dDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_Fillet1dDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
+
 
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
@@ -122,24 +67,15 @@ class Handle(GEOMImpl_Fillet1dDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_Fillet1dDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
+
+DEFINE_STANDARD_HANDLE( GEOMImpl_Fillet1dDriver, GEOM_BaseDriver );
+
+class GEOMImpl_Fillet1dDriver : public GEOM_BaseDriver {
 
 public:
 
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_Fillet1dDriver();
   Standard_EXPORT ~GEOMImpl_Fillet1dDriver() {};
@@ -150,19 +86,15 @@ public:
   Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {}
   Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; }
 
-  // Type management
-  //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_Fillet1dDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const 
-  { return STANDARD_TYPE(GEOMImpl_Fillet1dDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  { return (STANDARD_TYPE(GEOMImpl_Fillet1dDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 private:
 
   Standard_EXPORT bool MakeFillet(const TopoDS_Wire&, const TopTools_ListOfShape&,
                                   const Standard_Real, bool, TopoDS_Wire&) const; 
 
+DEFINE_STANDARD_RTTI( GEOMImpl_Fillet1dDriver )
 };
 
 #endif
index f107de8e6c80a14e56cca24c33cf504c2216dd86..a6440f7bb075404ae8c3b704d3788dc0a7fb90f5 100755 (executable)
@@ -179,44 +179,40 @@ Standard_Integer GEOMImpl_Fillet2dDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_Fillet2dDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_Fillet2dDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_Fillet2dDriver",
-                                                         sizeof(GEOMImpl_Fillet2dDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_Fillet2dDriver) Handle(GEOMImpl_Fillet2dDriver)::DownCast
-                                   (const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_Fillet2dDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_Fillet2dDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_Fillet2dDriver))) {
-       _anOtherObject = Handle(GEOMImpl_Fillet2dDriver)((Handle(GEOMImpl_Fillet2dDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IFillet2d aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "FILLET_2D";
+
+  switch ( aType ) {
+  case FILLET_2D_SHAPE_VERTEXES:
+    AddParam( theParams, "Face", aCI.GetShape() );
+    AddParam( theParams, "Vertexes");
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " vertexes: ";
+    for (int i = 1; i <= aCI.GetLength(); ++i )
+      theParams[1] << aCI.GetVertex( i ) << " ";
+    AddParam( theParams, "Radius", aCI.GetR() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_Fillet2dDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_Fillet2dDriver,GEOM_BaseDriver);
index 1a24255cbb1ff1229bfc7966af4ed4d30571e473..dbb8e29bbd2954c48f29dd17918ea0836db75941 100755 (executable)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_Fillet2dDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_Fillet2dDriver);
-
-class Handle(GEOMImpl_Fillet2dDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_Fillet2dDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_Fillet2dDriver)(const Handle(GEOMImpl_Fillet2dDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_Fillet2dDriver)(const GEOMImpl_Fillet2dDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_Fillet2dDriver)& operator=(const Handle(GEOMImpl_Fillet2dDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_Fillet2dDriver)& operator=(const GEOMImpl_Fillet2dDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_Fillet2dDriver* operator->() 
-     {
-      return (GEOMImpl_Fillet2dDriver *)ControlAccess();
-     }
-
-    GEOMImpl_Fillet2dDriver* operator->() const 
-     {
-      return (GEOMImpl_Fillet2dDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_Fillet2dDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_Fillet2dDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -119,22 +57,13 @@ class Handle(GEOMImpl_Fillet2dDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_Fillet2dDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_Fillet2dDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_Fillet2dDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -145,14 +74,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_Fillet2dDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_Fillet2dDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_Fillet2dDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_Fillet2dDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_Fillet2dDriver )
 };
 
 #endif
index dad8f968e6143e9eb97ecc077e2816fcfd9d4a8f..40d4f016c05745c1a6b93076a40490450def6318 100644 (file)
@@ -157,45 +157,67 @@ Standard_Integer GEOMImpl_FilletDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_FilletDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_FilletDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_FilletDriver",
-                                                         sizeof(GEOMImpl_FilletDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_FilletDriver) Handle(GEOMImpl_FilletDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_FilletDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_FilletDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_FilletDriver))) {
-       _anOtherObject = Handle(GEOMImpl_FilletDriver)((Handle(GEOMImpl_FilletDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IFillet aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "FILLET";
+
+  switch ( aType ) {
+  case FILLET_SHAPE_ALL:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected edges", "all" );
+    break;
+  case FILLET_SHAPE_EDGES:
+  case FILLET_SHAPE_EDGES_2R:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected edges" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " edges: ";
+    for (int i = 1; i <= aCI.GetLength(); ++i )
+      theParams[1] << aCI.GetEdge( i ) << " ";
+    if ( aType == FILLET_SHAPE_EDGES ) {
+      AddParam( theParams, "Radius", aCI.GetR() );
+    }
+    else {
+      AddParam( theParams, "R1", aCI.GetR1() );
+      AddParam( theParams, "R2", aCI.GetR2() );
+    }
+    break;
+  case FILLET_SHAPE_FACES:
+  case FILLET_SHAPE_FACES_2R:
+    AddParam( theParams, "Main Object", aCI.GetShape() );
+    AddParam( theParams, "Selected faces" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " faces: ";
+    for (int i = 1; i <= aCI.GetLength(); ++i )
+      theParams[1] << aCI.GetFace( i ) << " ";
+    if ( aType == FILLET_SHAPE_FACES ) {
+      AddParam( theParams, "Radius", aCI.GetR() );
+    }
+    else {
+      AddParam( theParams, "R1", aCI.GetR1() );
+      AddParam( theParams, "R2", aCI.GetR2() );
+    }
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_FilletDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_FilletDriver,GEOM_BaseDriver);
index f85583b3bbc5d6c925d10d6b13a7b20394093369..f2c69a70edff563e41db4e6ca819bbb5b4a3ddbb 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_FilletDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_FilletDriver);
-
-class Handle(GEOMImpl_FilletDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_FilletDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_FilletDriver)(const Handle(GEOMImpl_FilletDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_FilletDriver)(const GEOMImpl_FilletDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_FilletDriver)& operator=(const Handle(GEOMImpl_FilletDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_FilletDriver)& operator=(const GEOMImpl_FilletDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_FilletDriver* operator->() 
-     {
-      return (GEOMImpl_FilletDriver *)ControlAccess();
-     }
-
-    GEOMImpl_FilletDriver* operator->() const 
-     {
-      return (GEOMImpl_FilletDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_FilletDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_FilletDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_FilletDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_FilletDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_FilletDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_FilletDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_FilletDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_FilletDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_FilletDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_FilletDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_FilletDriver )
 };
 
 #endif
index 1907c7e539f0188b48d104541fb746a51d96bbc2..77d2295402d02a4dba492833a25b08077627a424 100644 (file)
@@ -386,44 +386,47 @@ Standard_Integer GEOMImpl_FillingDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_FillingDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_FillingDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_FillingDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_FillingDriver",
-                                                         sizeof(GEOMImpl_FillingDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_FillingDriver) Handle(GEOMImpl_FillingDriver)::DownCast
-                                 (const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_FillingDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_FillingDriver))) {
-       _anOtherObject = Handle(GEOMImpl_FillingDriver)((Handle(GEOMImpl_FillingDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IFilling aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "FILLING";
+
+  switch ( aType ) {
+  case BASIC_FILLING:
+  {
+    AddParam( theParams, "Input compound", aCI.GetShape() );
+    AddParam( theParams, "Method", aCI.GetMethod() );
+    const char* method[3] =
+      { "Standard", "Use edges orientation", "Correct edges orientation" };
+    if ( 0 <= aCI.GetMethod() && aCI.GetMethod() < 3 )
+      theParams[1] << " = " << method[ aCI.GetMethod() ];
+    AddParam( theParams, "Min deg", aCI.GetMinDeg() );
+    AddParam( theParams, "Max deg", aCI.GetMaxDeg() );
+    AddParam( theParams, "Nb. Iter", aCI.GetNbIter() );
+    AddParam( theParams, "Tol. 2D", aCI.GetTol2D() );
+    AddParam( theParams, "Tol. 3D", aCI.GetTol3D() );
+    AddParam( theParams, "Approximation", aCI.GetApprox() );
+    break;
+  }
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_FillingDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_FillingDriver,GEOM_BaseDriver);
index c5ddff99db1777f05e167e907b8b8377082c1b84..c047acb03696a1d9a0916aadfdeeee3c12af38b6 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_FillingDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_FillingDriver);
-
-class Handle(GEOMImpl_FillingDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_FillingDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_FillingDriver)(const Handle(GEOMImpl_FillingDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_FillingDriver)(const GEOMImpl_FillingDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_FillingDriver)& operator=(const Handle(GEOMImpl_FillingDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_FillingDriver)& operator=(const GEOMImpl_FillingDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_FillingDriver* operator->() 
-     {
-      return (GEOMImpl_FillingDriver *)ControlAccess();
-     }
-
-    GEOMImpl_FillingDriver* operator->() const 
-     {
-      return (GEOMImpl_FillingDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_FillingDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_FillingDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_FillingDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_FillingDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_FillingDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_FillingDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_FillingDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_FillingDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_FillingDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_FillingDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_FillingDriver )
 };
 
 #endif
index bd4ca1b1bcc03a34e2cf46c3561ac1981a00a52a..3f4aa435203c78df0ce9b6772fc94b8f935553fc 100644 (file)
@@ -456,7 +456,7 @@ TopoDS_Shape GEOMImpl_GlueDriver::GlueWithWarnings (const TopoDS_Shape& theShape
       const TopTools_ListOfShape& aLSS = aIDMSS.FindFromIndex(i);
       aItLS.Initialize(aLSS);
       for (; aItLS.More(); aItLS.Next()) {
-       const TopoDS_Shape& aSs = aItLS.Value();
+        const TopoDS_Shape& aSs = aItLS.Value();
       }
     }
     */
@@ -756,8 +756,7 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const
       TopoDS_Shape aFace = aRefSh->GetValue();
       if (aFace.IsNull())
         continue;
-      if (!aFaces.Contains(aFace))
-        aFaces.Add(aFace);
+      aFaces.Add(aFace);
     }
 
     Standard_Boolean aGlueAllEdges = Standard_False;
@@ -781,44 +780,54 @@ Standard_Integer GEOMImpl_GlueDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-//=======================================================================
-//function :  GEOMImpl_GlueDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_GlueDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if (aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if (aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if (aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_GlueDriver",
-                                                         sizeof(GEOMImpl_GlueDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_GlueDriver) Handle(GEOMImpl_GlueDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+bool GEOMImpl_GlueDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_GlueDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_GlueDriver))) {
-       _anOtherObject = Handle(GEOMImpl_GlueDriver)((Handle(GEOMImpl_GlueDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IGlue aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case GLUE_FACES:
+    theOperationName = "GLUE_FACES";
+    AddParam( theParams, "Selected shape", aCI.GetBase() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    AddParam( theParams, "To keep non solids", aCI.GetKeepNonSolids() );
+    break;
+  case GLUE_EDGES:
+    theOperationName = "GLUE_EDGES";
+    AddParam( theParams, "Selected shape", aCI.GetBase() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    break;
+  case GLUE_FACES_BY_LIST:
+    theOperationName = "GLUE_FACES";
+    AddParam( theParams, "Selected shape", aCI.GetBase() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    AddParam( theParams, "Faces", aCI.GetFaces() );
+    AddParam( theParams, "To keep non solids", aCI.GetKeepNonSolids() );
+    AddParam( theParams, "To glue all edges", aCI.GetGlueAllEdges() );
+    break;
+  case GLUE_EDGES_BY_LIST:
+    theOperationName = "GLUE_EDGES";
+    AddParam( theParams, "Selected shape", aCI.GetBase() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    AddParam( theParams, "Edges", aCI.GetFaces() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_GlueDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_GlueDriver,GEOM_BaseDriver);
index cc5ede3e20e497c4b051a21ba295649fe88848bc..1e1a3100e0aedb56289251efadec8a10af35155e 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_GlueDriver;
-
 #include <TopTools_MapOfShape.hxx>
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_GlueDriver);
-
-class Handle(GEOMImpl_GlueDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_GlueDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_GlueDriver)(const Handle(GEOMImpl_GlueDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_GlueDriver)(const GEOMImpl_GlueDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_GlueDriver)& operator=(const Handle(GEOMImpl_GlueDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_GlueDriver)& operator=(const GEOMImpl_GlueDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_GlueDriver* operator->() 
-     {
-      return (GEOMImpl_GlueDriver *)ControlAccess();
-     }
-
-    GEOMImpl_GlueDriver* operator->() const 
-     {
-      return (GEOMImpl_GlueDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_GlueDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_GlueDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
 
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
@@ -126,22 +65,13 @@ class Handle(GEOMImpl_GlueDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_GlueDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_GlueDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_GlueDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -152,6 +82,10 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_GlueDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
+
 Standard_EXPORT static TopoDS_Shape GlueFaces (const TopoDS_Shape& theShape,
                                                const Standard_Real theTolerance,
                                                const Standard_Boolean doKeepNonSolids = Standard_True);
@@ -179,13 +113,7 @@ Standard_EXPORT static TopoDS_Shape GlueByList (const TopoDS_Shape& theShape,
                                                 const Standard_Boolean doGlueAllEdges);
 
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_GlueDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_GlueDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_GlueDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_GlueDriver )
 };
 
 #endif
index 7010b0e33191d594edf273d3fa6413f710a64c3f..644b8a835e4d51f754ceac6d93a77a738e843e90 100644 (file)
@@ -812,45 +812,105 @@ Standard_Boolean GEOMImpl_HealingDriver::AreEdgesC1 (const TopoDS_Edge& E1, cons
   return Standard_False;
 }
 
-//=======================================================================
-//function :  GEOMImpl_HealingDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_HealingDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_HealingDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_HealingDriver",
-                                                         sizeof(GEOMImpl_HealingDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-
-const Handle(GEOMImpl_HealingDriver) Handle(GEOMImpl_HealingDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_HealingDriver) _anOtherObject;
+  GEOMImpl_IHealing aCI( function );
+  Standard_Integer aType = function->GetType();
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_HealingDriver))) {
-       _anOtherObject = Handle(GEOMImpl_HealingDriver)((Handle(GEOMImpl_HealingDriver)&)AnObject);
-     }
+  switch ( aType ) {
+  case SHAPE_PROCESS:
+  {
+    theOperationName = "SHAPE_PROCESS";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    Handle(TColStd_HArray1OfExtendedString) anOperators = aCI.GetOperators();
+    Handle(TColStd_HArray1OfExtendedString) aParams     = aCI.GetParameters();
+    Handle(TColStd_HArray1OfExtendedString) aValues     = aCI.GetValues();
+    for ( int i = anOperators->Lower(), nb = anOperators->Upper(); i <= nb; ++i )
+    {
+      const TCollection_ExtendedString& op = anOperators->Value(i);
+      AddParam( theParams, "Operation", op );
+      for ( int iP = aParams->Lower(), nbP = aParams->Upper(); iP <= nbP; ++iP )
+      {
+        const TCollection_ExtendedString& par = aParams->Value(i);
+        TCollection_AsciiString parAscii( par );
+        if ( par.Search( op ) == 1 && parAscii.Value( op.Length() + 1 ) == '.' )
+        {
+          GEOM_Param& p = AddParam( theParams, parAscii.ToCString() );
+          if ( iP <= aValues->Upper() )
+            p << aValues->Value( iP );
+        }
+      }
+    }
+    break;
   }
-
-  return _anOtherObject;
+  case SUPPRESS_FACES:
+    theOperationName = "SUPPRESS_FACES";
+    AddParam( theParams, "Selected Shape", aCI.GetOriginal() );
+    AddParam( theParams, "Faces to remove", aCI.GetFaces() );
+    break;
+  case CLOSE_CONTOUR:
+    theOperationName = "CLOSE_CONTOUR";
+    AddParam( theParams, "Selected Shape", aCI.GetOriginal() );
+    AddParam( theParams, "Contour to close", aCI.GetWires() );
+    AddParam( theParams, "Close by common vertex", aCI.GetIsCommonVertex() );
+    break;
+  case REMOVE_INT_WIRES:
+    theOperationName = "SUPPRESS_INT_WIRES";
+    AddParam( theParams, "Selected face", aCI.GetOriginal() );
+    AddParam( theParams, "Wires to remove", aCI.GetWires(), "all" );
+    break;
+  case FILL_HOLES:
+    theOperationName = "SUPPERSS_HOLES";
+    AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+    AddParam( theParams, "Wires to remove", aCI.GetWires(), "all" );
+    break;
+  case SEWING:
+  case SEWING_NON_MANIFOLD:
+    theOperationName = "SEWING";
+    AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+    AddParam( theParams, "Allow Non Manifold", ( aType == SEWING_NON_MANIFOLD ));
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    break;
+  case DIVIDE_EDGE:
+    theOperationName = "POINT_ON_EDGE";
+    if ( aCI.GetIndex() > 0 )
+      AddParam( theParams, "Edge", "#" ) << aCI.GetIndex() << " of " << aCI.GetOriginal();
+    else
+      AddParam( theParams, "Edge", aCI.GetOriginal() );
+    AddParam( theParams, "By parameter", aCI.GetIsByParameter() );
+    AddParam( theParams, "Value", aCI.GetDevideEdgeValue() );
+    break;
+  case CHANGE_ORIENTATION:
+    theOperationName = "CHANGE_ORIENTATION";
+    AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+    break;
+  case LIMIT_TOLERANCE:
+    theOperationName = "LIMIT_TOLERANCE";
+    AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    break;
+  case FUSE_COLLINEAR_EDGES:
+    theOperationName = "FUSE_EDGES";
+    AddParam( theParams, "Wire", aCI.GetOriginal() );
+    AddParam( theParams, "Vertexes", aCI.GetShapes() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_HealingDriver,GEOM_BaseDriver);
+
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_HealingDriver,GEOM_BaseDriver);
index 83dacd6fa89922ca166cc4af4ec0f27708ffd885..821dff71a18e06e077d62e46d10b7721dca57624 100644 (file)
 #include <Standard_GUID.hxx>
 #endif
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_HealingDriver;
-
-class GEOMImpl_IHealing;
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Edge.hxx>
 #include <TColStd_HSequenceOfTransient.hxx>
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_HealingDriver);
-
-class Handle(GEOMImpl_HealingDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress)
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size)
-      {
-        return Standard::Allocate(size);
-      }
-    inline void  operator delete(void *anAddress)
-      {
-        if (anAddress) Standard::Free((Standard_Address&)anAddress);
-      }
-
-    Handle(GEOMImpl_HealingDriver)():Handle(TFunction_Driver)() {}
-    Handle(GEOMImpl_HealingDriver)(const Handle(GEOMImpl_HealingDriver)& aHandle) : Handle(TFunction_Driver)(aHandle)
-     {
-     }
-
-    Handle(GEOMImpl_HealingDriver)(const GEOMImpl_HealingDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem)
-     {
-     }
-
-    Handle(GEOMImpl_HealingDriver)& operator=(const Handle(GEOMImpl_HealingDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_HealingDriver)& operator=(const GEOMImpl_HealingDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_HealingDriver* operator->()
-     {
-      return (GEOMImpl_HealingDriver *)ControlAccess();
-     }
-
-    GEOMImpl_HealingDriver* operator->() const
-     {
-      return (GEOMImpl_HealingDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_HealingDriver)() {};
-
-   Standard_EXPORT static const Handle(GEOMImpl_HealingDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
 
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
@@ -123,27 +61,18 @@ class Handle(GEOMImpl_HealingDriver) : public Handle(TFunction_Driver) {
 #include <Standard_CString.hxx>
 #endif
 
-class TColStd_SequenceOfExtendedString;
+class GEOMImpl_IHealing;
+
 
+#include "GEOM_BaseDriver.hxx"
 
-class GEOMImpl_HealingDriver : public TFunction_Driver {
+DEFINE_STANDARD_HANDLE( GEOMImpl_HealingDriver, GEOM_BaseDriver );
+
+class GEOMImpl_HealingDriver : public GEOM_BaseDriver {
 
 public:
 
-  inline void* operator new(size_t,void* anAddress)
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size)
-  {
-    return Standard::Allocate(size);
-  }
-  inline void  operator delete(void *anAddress)
-  {
-    if (anAddress) Standard::Free((Standard_Address&)anAddress);
-  }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
   //
   Standard_EXPORT GEOMImpl_HealingDriver();
   Standard_EXPORT ~GEOMImpl_HealingDriver() {};
@@ -158,12 +87,14 @@ public:
   Standard_EXPORT static void FuseCollinearEdges (const TopoDS_Shape&,
                                                   const Handle(TColStd_HSequenceOfTransient)&,
                                                   TopoDS_Shape&);
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_HealingDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_HealingDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_HealingDriver) == AType || TFunction_Driver::IsKind(AType)); }
+DEFINE_STANDARD_RTTI( GEOMImpl_HealingDriver )
+
 
 private:
   Standard_Boolean ShapeProcess  ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
index 2122e643e8b356e43209a2f3d151b8339dd681e2..16a8b8ce539ca79a3de8a3d73aa9ee5954706a3f 100644 (file)
@@ -183,46 +183,36 @@ TCollection_AsciiString GEOMImpl_ImportDriver::ReadValue(const TCollection_Ascii
   return aValue;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ImportDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ImportDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ImportDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ImportDriver",
-                                                         sizeof(GEOMImpl_ImportDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
+  GEOMImpl_IImportExport aCI( function );
+  Standard_Integer aType = function->GetType();
 
-  return _aType;
-}
+  theOperationName = "IMPORT";
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_ImportDriver) Handle(GEOMImpl_ImportDriver)::DownCast
-                               (const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ImportDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ImportDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ImportDriver)((Handle(GEOMImpl_ImportDriver)&)AnObject);
-     }
+  switch ( aType ) {
+  case IMPORT_SHAPE:
+    AddParam( theParams, "File name", aCI.GetFileName() );
+    AddParam( theParams, "Format", aCI.GetFormatName() );
+    AddParam( theParams, "Plugin name", aCI.GetPluginName() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ImportDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ImportDriver,GEOM_BaseDriver);
index b1ba6dc728bb05357a70312c52e944682d8479a0..4f177b866e85df421da49a73d8b024d99ba625fd 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ImportDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ImportDriver);
-
-class Handle(GEOMImpl_ImportDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ImportDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ImportDriver)(const Handle(GEOMImpl_ImportDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ImportDriver)(const GEOMImpl_ImportDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ImportDriver)& operator=(const Handle(GEOMImpl_ImportDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ImportDriver)& operator=(const GEOMImpl_ImportDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ImportDriver* operator->() 
-     {
-      return (GEOMImpl_ImportDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ImportDriver* operator->() const 
-     {
-      return (GEOMImpl_ImportDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ImportDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ImportDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -124,22 +62,13 @@ class Handle(GEOMImpl_ImportDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ImportDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ImportDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ImportDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -150,19 +79,17 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ImportDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
+
   // Static method
   Standard_EXPORT static TCollection_AsciiString ReadValue (const TCollection_AsciiString& theFileName,
                                                             const TCollection_AsciiString& theLibName,
                                                             const TCollection_AsciiString& theParameterName,
                                                             TCollection_AsciiString& theError);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ImportDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ImportDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ImportDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ImportDriver )
 };
 
 #endif
index 73d6bbb95f5e076e4f2b4487428326cf7355a463..06f984bda33f1b921c340b8dd9f08c1229332c87 100644 (file)
@@ -182,46 +182,43 @@ Standard_Integer GEOMImpl_LineDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_LineDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_LineDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_LineDriver",
-                                                         sizeof(GEOMImpl_LineDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_LineDriver) Handle(GEOMImpl_LineDriver)::DownCast
-       (const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_LineDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_LineDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_LineDriver))) {
-       _anOtherObject = Handle(GEOMImpl_LineDriver)((Handle(GEOMImpl_LineDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ILine aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "LINE";
+
+  switch ( aType ) {
+  case LINE_TWO_PNT:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    break;
+  case LINE_TWO_FACES:
+    AddParam( theParams, "Face 1", aCI.GetFace1() );
+    AddParam( theParams, "Face 2", aCI.GetFace2() );
+    break;
+  case LINE_PNT_DIR:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Vector", aCI.GetPoint2() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_LineDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_LineDriver,GEOM_BaseDriver);
index d6809221502c3fc4543cb9beb889f941ee9d52b0..2d81bfae14490842c5c7d4cc1c3c4fcd644752a9 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_LineDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_LineDriver);
-
-class Handle(GEOMImpl_LineDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_LineDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_LineDriver)(const Handle(GEOMImpl_LineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_LineDriver)(const GEOMImpl_LineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_LineDriver)& operator=(const Handle(GEOMImpl_LineDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_LineDriver)& operator=(const GEOMImpl_LineDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_LineDriver* operator->() 
-     {
-      return (GEOMImpl_LineDriver *)ControlAccess();
-     }
-
-    GEOMImpl_LineDriver* operator->() const 
-     {
-      return (GEOMImpl_LineDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_LineDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_LineDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_LineDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_LineDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_LineDriver, GEOM_BaseDriver );
+
+class GEOMImpl_LineDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -148,13 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_LineDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_LineDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_LineDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_LineDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+DEFINE_STANDARD_RTTI( GEOMImpl_LineDriver )
 };
 
 #endif
index 266ad0bd67b4cdd7808f85f7b024a6a6052254b4..9301a0ddd68c5f8437a1e2db39dea053a39030fa 100644 (file)
@@ -162,46 +162,50 @@ Standard_Integer GEOMImpl_MarkerDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_MarkerDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_MarkerDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MarkerDriver",
-                                                         sizeof(GEOMImpl_MarkerDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_MarkerDriver) Handle(GEOMImpl_MarkerDriver)::DownCast
-       (const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_MarkerDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_MarkerDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MarkerDriver))) {
-       _anOtherObject = Handle(GEOMImpl_MarkerDriver)((Handle(GEOMImpl_MarkerDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IMarker aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "LOCAL_CS";
+
+  switch ( aType ) {
+  case MARKER_CS:
+  {
+    double OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ;
+    aCI.GetOrigin(OX, OY, OZ);
+    aCI.GetXDir(XDX, XDY, XDZ);
+    aCI.GetYDir(YDX, YDY, YDZ);
+    AddParam( theParams, "Coordinates of origin" ) << OX << ", " << OY << ", " << OZ;
+    AddParam( theParams, "X axis direction" ) << XDX << ", " << XDY << ", " << XDZ;
+    AddParam( theParams, "Y axis direction" ) << YDX << ", " << YDY << ", " << YDZ;
+    break;
   }
-
-  return _anOtherObject ;
+  case MARKER_SHAPE:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    break;
+  case MARKER_PNT2VEC:
+    AddParam( theParams, "Point", aCI.GetOrigin() );
+    AddParam( theParams, "X axis direction", aCI.GetXVec() );
+    AddParam( theParams, "Y axis direction", aCI.GetYVec() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_MarkerDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_MarkerDriver,GEOM_BaseDriver);
index 1ca7b7fdf6e204f98488fb6554e615638b8051b5..013afcbc4da789c86e1e8b837e0274d36cefb5fa 100644 (file)
 #include <Standard_GUID.hxx>
 #endif
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_MarkerDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MarkerDriver);
-
-class Handle(GEOMImpl_MarkerDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress)
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size)
-      {
-        return Standard::Allocate(size);
-      }
-    inline void  operator delete(void *anAddress)
-      {
-        if (anAddress) Standard::Free((Standard_Address&)anAddress);
-      }
-
-    Handle(GEOMImpl_MarkerDriver)():Handle(TFunction_Driver)() {}
-    Handle(GEOMImpl_MarkerDriver)(const Handle(GEOMImpl_MarkerDriver)& aHandle) : Handle(TFunction_Driver)(aHandle)
-     {
-     }
-
-    Handle(GEOMImpl_MarkerDriver)(const GEOMImpl_MarkerDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem)
-     {
-     }
-
-    Handle(GEOMImpl_MarkerDriver)& operator=(const Handle(GEOMImpl_MarkerDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_MarkerDriver)& operator=(const GEOMImpl_MarkerDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_MarkerDriver* operator->()
-     {
-      return (GEOMImpl_MarkerDriver *)ControlAccess();
-     }
-
-    GEOMImpl_MarkerDriver* operator->() const
-     {
-      return (GEOMImpl_MarkerDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_MarkerDriver)() {};
-
-   Standard_EXPORT static const Handle(GEOMImpl_MarkerDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_MarkerDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_MarkerDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_MarkerDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress)
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size)
-      {
-        return Standard::Allocate(size);
-      }
-    inline void  operator delete(void *anAddress)
-      {
-        if (anAddress) Standard::Free((Standard_Address&)anAddress);
-      }
+class GEOMImpl_MarkerDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  //
@@ -148,13 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_MarkerDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MarkerDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_MarkerDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MarkerDriver) == AType || TFunction_Driver::IsKind(AType)); }
-
+DEFINE_STANDARD_RTTI( GEOMImpl_MarkerDriver )
 };
 
 #endif
index 5e77d9502c370230a5f6abb5bd83fe13c60cb991..b23bf35a1c367cd503643ec843a6cd9dafbb2c3a 100644 (file)
@@ -322,45 +322,48 @@ Standard_Integer GEOMImpl_MeasureDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_MeasureDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_MeasureDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_MeasureDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MeasureDriver",
-                                                         sizeof(GEOMImpl_MeasureDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_MeasureDriver) Handle(GEOMImpl_MeasureDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_MeasureDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MeasureDriver))) {
-       _anOtherObject = Handle(GEOMImpl_MeasureDriver)((Handle(GEOMImpl_MeasureDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IMeasure aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case CDG_MEASURE:
+    theOperationName = "MASS_CENTER";
+    AddParam( theParams, "Object", aCI.GetBase() );
+    break;
+  case BND_BOX_MEASURE:
+  case BND_BOX_MEASURE_PRECISE:
+    theOperationName = "BND_BOX";
+    AddParam( theParams, "Object", aCI.GetBase() );
+    break;
+  case VERTEX_BY_INDEX:
+    theOperationName = "GetVertexByIndex";
+    AddParam( theParams, "Object", aCI.GetBase() );
+    AddParam( theParams, "Index", aCI.GetIndex() );
+    break;
+  case VECTOR_FACE_NORMALE:
+    theOperationName = "NORMALE";
+    AddParam( theParams, "Face", aCI.GetBase() );
+    AddParam( theParams, "Point", aCI.GetPoint(), "face center" );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_MeasureDriver,GEOM_BaseDriver);
+
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_MeasureDriver,GEOM_BaseDriver);
index 8a77029311bef94bd6f83cce1d314a8318c4357f..551c70db61f7d1304b254bc5f1dfc9fc18feaa53 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_MeasureDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MeasureDriver);
-
-class Handle(GEOMImpl_MeasureDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_MeasureDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_MeasureDriver)(const Handle(GEOMImpl_MeasureDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_MeasureDriver)(const GEOMImpl_MeasureDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_MeasureDriver)& operator=(const Handle(GEOMImpl_MeasureDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_MeasureDriver)& operator=(const GEOMImpl_MeasureDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_MeasureDriver* operator->() 
-     {
-      return (GEOMImpl_MeasureDriver *)ControlAccess();
-     }
-
-    GEOMImpl_MeasureDriver* operator->() const 
-     {
-      return (GEOMImpl_MeasureDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_MeasureDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_MeasureDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_MeasureDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_MeasureDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_MeasureDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_MeasureDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_MeasureDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MeasureDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_MeasureDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MeasureDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_MeasureDriver )
 };
 
 #endif
index 3a7c98f9147fcbb318adba890ed87a0743f59cc7..920d7738d28eec9a13dd4a2b1ad735592580d709 100644 (file)
@@ -161,46 +161,46 @@ Standard_Integer GEOMImpl_MirrorDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_MirrorDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_MirrorDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_MirrorDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_MirrorDriver",
-                                                         sizeof(GEOMImpl_MirrorDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-
-const Handle(GEOMImpl_MirrorDriver) Handle(GEOMImpl_MirrorDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_MirrorDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_MirrorDriver))) {
-       _anOtherObject = Handle(GEOMImpl_MirrorDriver)((Handle(GEOMImpl_MirrorDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IMirror aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "MIRROR";
+
+  switch ( aType ) {
+  case MIRROR_PLANE:
+  case MIRROR_PLANE_COPY:
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Plane Mirror", aCI.GetPlane() );
+    break;
+  case MIRROR_AXIS:
+  case MIRROR_AXIS_COPY:
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Axis Mirror", aCI.GetAxis() );
+    break;
+  case MIRROR_POINT:
+  case MIRROR_POINT_COPY:
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Point Mirror", aCI.GetPoint() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_MirrorDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_MirrorDriver,GEOM_BaseDriver);
index 3f6e101415e54e1ef6ac5cf41d5b1cd9eb6a97cf..e6f4100b016ffd03501a0d87c42c04b816bf3562 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_MirrorDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_MirrorDriver);
-
-class Handle(GEOMImpl_MirrorDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_MirrorDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_MirrorDriver)(const Handle(GEOMImpl_MirrorDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_MirrorDriver)(const GEOMImpl_MirrorDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_MirrorDriver)& operator=(const Handle(GEOMImpl_MirrorDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_MirrorDriver)& operator=(const GEOMImpl_MirrorDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_MirrorDriver* operator->() 
-     {
-      return (GEOMImpl_MirrorDriver *)ControlAccess();
-     }
-
-    GEOMImpl_MirrorDriver* operator->() const 
-     {
-      return (GEOMImpl_MirrorDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_MirrorDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_MirrorDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_MirrorDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_MirrorDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_MirrorDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_MirrorDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_MirrorDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_MirrorDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_MirrorDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_MirrorDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_MirrorDriver )
 };
 
 #endif
index 2c870d03c7aa4a35a12149f455ff76187537cfb5..393c8a1336c7da0ebcbe74ec026a1cc40c2b9135 100644 (file)
@@ -81,20 +81,20 @@ Standard_Integer GEOMImpl_OffsetDriver::Execute(TFunction_Logbook& log) const
   Standard_Integer aType = aFunction->GetType();
 
   TopoDS_Shape aShape;
-  
+
   Handle(GEOM_Function) aRefShape = aCI.GetShape();
   TopoDS_Shape aShapeBase = aRefShape->GetValue();
   Standard_Real anOffset = aCI.GetValue();
   Standard_Real aTol = Precision::Confusion();
-  
+
   if (Abs(anOffset) < aTol) {
-      TCollection_AsciiString aMsg ("Absolute value of offset can not be less than the tolerance value (");
-      aMsg += TCollection_AsciiString(aTol);
-      aMsg += ")";
-      StdFail_NotDone::Raise(aMsg.ToCString());
+    TCollection_AsciiString aMsg ("Absolute value of offset can not be less than the tolerance value (");
+    aMsg += TCollection_AsciiString(aTol);
+    aMsg += ")";
+    StdFail_NotDone::Raise(aMsg.ToCString());
   }
 
-  if (aType == OFFSET_SHAPE || aType == OFFSET_SHAPE_COPY) {  
+  if (aType == OFFSET_SHAPE || aType == OFFSET_SHAPE_COPY) {
     BRepOffsetAPI_MakeOffsetShape MO (aShapeBase,
                                       aCI.GetValue(),
                                       aTol);
@@ -118,7 +118,7 @@ Standard_Integer GEOMImpl_OffsetDriver::Execute(TFunction_Logbook& log) const
     else {
       StdFail_NotDone::Raise("Offset construction failed");
     }
-  } 
+  }
   else if (aType == OFFSET_THICKENING || aType == OFFSET_THICKENING_COPY)
   {
     BRepClass3d_SolidClassifier aClassifier = BRepClass3d_SolidClassifier(aShapeBase);
@@ -132,13 +132,13 @@ Standard_Integer GEOMImpl_OffsetDriver::Execute(TFunction_Logbook& log) const
 
     BRepOffset_MakeOffset myOffsetShape(aShapeBase, anOffset, aTol, BRepOffset_Skin,
                                         Standard_False, Standard_False, GeomAbs_Intersection, Standard_True);
-  
+
     if (!myOffsetShape.IsDone())
     {
       StdFail_NotDone::Raise("Thickening construction failed");
     }
     aShape = myOffsetShape.Shape();
-    
+
     // Control the solid orientation. This is mostly done to fix a bug in case of extrusion
     // of a circle. The built solid is then badly oriented
     BRepClass3d_SolidClassifier anotherClassifier = BRepClass3d_SolidClassifier(aShape);
@@ -158,45 +158,41 @@ Standard_Integer GEOMImpl_OffsetDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_OffsetDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_OffsetDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_OffsetDriver",
-                                                         sizeof(GEOMImpl_OffsetDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_OffsetDriver) Handle(GEOMImpl_OffsetDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+bool GEOMImpl_OffsetDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_OffsetDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_OffsetDriver))) {
-       _anOtherObject = Handle(GEOMImpl_OffsetDriver)((Handle(GEOMImpl_OffsetDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IOffset aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case OFFSET_SHAPE:
+  case OFFSET_SHAPE_COPY:
+    theOperationName = "OFFSET";
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Offset", aCI.GetValue() );
+    break;
+  case OFFSET_THICKENING:
+  case OFFSET_THICKENING_COPY:
+    theOperationName = "MakeThickening";
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Offset", aCI.GetValue() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_OffsetDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_OffsetDriver,GEOM_BaseDriver);
index 056bfe44b3278b681e52a139b80f3c9c1a60a00b..e8690e7ce2b1e089421cc74cd8749e8895585866 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_OffsetDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_OffsetDriver);
-
-class Handle(GEOMImpl_OffsetDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_OffsetDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_OffsetDriver)(const Handle(GEOMImpl_OffsetDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_OffsetDriver)(const GEOMImpl_OffsetDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_OffsetDriver)& operator=(const Handle(GEOMImpl_OffsetDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_OffsetDriver)& operator=(const GEOMImpl_OffsetDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_OffsetDriver* operator->() 
-     {
-      return (GEOMImpl_OffsetDriver *)ControlAccess();
-     }
-
-    GEOMImpl_OffsetDriver* operator->() const 
-     {
-      return (GEOMImpl_OffsetDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_OffsetDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_OffsetDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_OffsetDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_OffsetDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_OffsetDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_OffsetDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_OffsetDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_OffsetDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_OffsetDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_OffsetDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_OffsetDriver )
 };
 
 #endif
index 04363aba5330d8b59c7fd5ca69729fa8d1831134..13fcd8114f65045da78bf4f170441a800f04b528 100644 (file)
@@ -478,41 +478,54 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_PartitionDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PartitionDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PartitionDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if (aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if (aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if (aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[] = {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType =
-    new Standard_Type ("GEOMImpl_PartitionDriver", sizeof(GEOMImpl_PartitionDriver),
-                       1, (Standard_Address)_Ancestors, (Standard_Address)NULL);
-
-  return _aType;
-}
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PartitionDriver) Handle(GEOMImpl_PartitionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_PartitionDriver) _anOtherObject;
+  GEOMImpl_IPartition aCI( function );
+  Standard_Integer aType = function->GetType();
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PartitionDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PartitionDriver)((Handle(GEOMImpl_PartitionDriver)&)AnObject);
-     }
-  }
+  theOperationName = "PARTITION";
 
-  return _anOtherObject;
+  switch ( aType ) {
+  case PARTITION_PARTITION:
+  case PARTITION_NO_SELF_INTERSECTIONS:
+    AddParam( theParams, "Objects", aCI.GetShapes() );
+    AddParam( theParams, "Tool objects", aCI.GetTools() );
+    {
+      Handle(TColStd_HSequenceOfTransient) objSeq = aCI.GetKeepIns();
+      if ( !objSeq.IsNull() && objSeq->Length() > 0 )
+        AddParam( theParams, "Objects to keep inside", objSeq );
+      objSeq = aCI.GetRemoveIns();
+      if ( !objSeq.IsNull() && objSeq->Length() > 0 )
+        AddParam( theParams, "Objects to remove inside", objSeq );
+      Handle(TColStd_HArray1OfInteger) intSeq = aCI.GetMaterials();
+      if ( !intSeq.IsNull() && intSeq->Length() > 0 )
+        AddParam( theParams, "Materials", aCI.GetMaterials() );
+    }
+    AddParam( theParams, "Resulting type", (TopAbs_ShapeEnum) aCI.GetLimit());
+    AddParam( theParams, "Keep shapes of lower type", aCI.GetKeepNonlimitShapes());
+    AddParam( theParams, "No object intersections", ( aType == PARTITION_NO_SELF_INTERSECTIONS ));
+    break;
+  case PARTITION_HALF:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Plane", aCI.GetPlane() );
+    break;
+  default:
+    return false;
+  }
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PartitionDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PartitionDriver,GEOM_BaseDriver);
index 2c2d7c60ef905afaa7e26d44dab3e08b7419a20e..2bcda9636105f86d9cdb736cc73c26f8d65f49a3 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PartitionDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PartitionDriver);
-
-class Handle(GEOMImpl_PartitionDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PartitionDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PartitionDriver)(const Handle(GEOMImpl_PartitionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PartitionDriver)(const GEOMImpl_PartitionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PartitionDriver)& operator=(const Handle(GEOMImpl_PartitionDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PartitionDriver)& operator=(const GEOMImpl_PartitionDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PartitionDriver* operator->() 
-     {
-      return (GEOMImpl_PartitionDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PartitionDriver* operator->() const 
-     {
-      return (GEOMImpl_PartitionDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PartitionDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PartitionDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_PartitionDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PartitionDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_PartitionDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_PartitionDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_PartitionDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PartitionDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PartitionDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PartitionDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_PartitionDriver )
 };
 
 #endif
index 50160d3bc54da46689c0dac8049ed4bc9baaa5b2..de0958f1ff18b90b1643c93b8ba60778f6695682 100644 (file)
@@ -2502,42 +2502,75 @@ Standard_Integer GEOMImpl_PipeDriver::Execute (TFunction_Logbook& log) const
   return 1;
 }
 
-//=======================================================================
-//function :  GEOMImpl_PipeDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PipeDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if (aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if (aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if (aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PipeDriver",
-                                                         sizeof(GEOMImpl_PipeDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PipeDriver) Handle(GEOMImpl_PipeDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PipeDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_PipeDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PipeDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PipeDriver)((Handle(GEOMImpl_PipeDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case PIPE_BASE_PATH:
+  {
+    theOperationName = "PIPE";
+    GEOMImpl_IPipe aCI( function );
+    AddParam( theParams, "Base Object", aCI.GetBase() );
+    AddParam( theParams, "Path Object", aCI.GetPath() );
+    break;
   }
-
-  return _anOtherObject;
+  case PIPE_BI_NORMAL_ALONG_VECTOR:
+  {
+    theOperationName = "PIPE";
+    GEOMImpl_IPipeBiNormal aCI( function );
+    AddParam( theParams, "Base Object", aCI.GetBase() );
+    AddParam( theParams, "Path Object", aCI.GetPath() );
+    AddParam( theParams, "BiNormal", aCI.GetVector() );
+    break;
+  }
+  case PIPE_DIFFERENT_SECTIONS:
+  {
+    theOperationName = "PIPE";
+    GEOMImpl_IPipeDiffSect aCI( function );
+    AddParam( theParams, "Bases", aCI.GetBases() );
+    AddParam( theParams, "Locations", aCI.GetLocations() );
+    AddParam( theParams, "Path", aCI.GetPath() );
+    AddParam( theParams, "With contact", aCI.GetWithContactMode() );
+    AddParam( theParams, "With correction", aCI.GetWithCorrectionMode() );
+    break;
+  }
+  case PIPE_SHELL_SECTIONS:
+  {
+    theOperationName = "PIPE";
+    GEOMImpl_IPipeShellSect aCI( function );
+    AddParam( theParams, "Bases", aCI.GetBases() );
+    AddParam( theParams, "Sub-Bases", aCI.GetSubBases() );
+    AddParam( theParams, "Locations", aCI.GetLocations() );
+    AddParam( theParams, "Path", aCI.GetPath() );
+    AddParam( theParams, "With contact", aCI.GetWithContactMode() );
+    AddParam( theParams, "With correction", aCI.GetWithCorrectionMode() );
+    break;
+  }
+  case PIPE_SHELLS_WITHOUT_PATH:
+  {
+    theOperationName = "PIPE"; // MakePipeShellsWithoutPath
+    GEOMImpl_IPipeShellSect aCI( function );
+    AddParam( theParams, "Bases", aCI.GetBases() );
+    AddParam( theParams, "Locations", aCI.GetLocations() );
+    break;
+  }
+  default:
+    return false;
+  }
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PipeDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PipeDriver,GEOM_BaseDriver);
index 38975b64b1058af21fa2861010bbd0030dfa68fb..6db6a0c7e87d12da467941105c650b5d1664ac93 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PipeDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PipeDriver);
-
-class Handle(GEOMImpl_PipeDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PipeDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PipeDriver)(const Handle(GEOMImpl_PipeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PipeDriver)(const GEOMImpl_PipeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PipeDriver)& operator=(const Handle(GEOMImpl_PipeDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PipeDriver)& operator=(const GEOMImpl_PipeDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PipeDriver* operator->() 
-     {
-      return (GEOMImpl_PipeDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PipeDriver* operator->() const 
-     {
-      return (GEOMImpl_PipeDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PipeDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PipeDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -127,24 +64,15 @@ class Handle(GEOMImpl_PipeDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PipeDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
+
+DEFINE_STANDARD_HANDLE( GEOMImpl_PipeDriver, GEOM_BaseDriver );
+
+class GEOMImpl_PipeDriver : public GEOM_BaseDriver {
 
 public:
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_PipeDriver();
   Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const; 
@@ -161,15 +89,14 @@ public:
                                       const Standard_Boolean theWithContact,
                                       const Standard_Boolean theWithCorrect);
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PipeDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const
-  { return STANDARD_TYPE(GEOMImpl_PipeDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  { return (STANDARD_TYPE(GEOMImpl_PipeDriver) == AType ||
-            TFunction_Driver::IsKind(AType)); } 
+DEFINE_STANDARD_RTTI( GEOMImpl_PipeDriver )
+
 
 };
 
index 91962183dfac058341557412cd9dce1fa61ebc45..9566aa62fcf008c7f97a6269350568fd65666b35 100644 (file)
@@ -202,42 +202,41 @@ Standard_Integer GEOMImpl_PipePathDriver::Execute (TFunction_Logbook& log) const
   return 1;
 }
 
-//=======================================================================
-//function :  GEOMImpl_PipePathDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PipePathDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PipePathDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if (aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if (aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if (aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PipePathDriver",
-                                                         sizeof(GEOMImpl_PipePathDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PipePathDriver) Handle(GEOMImpl_PipePathDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_PipePathDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PipePathDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PipePathDriver)((Handle(GEOMImpl_PipePathDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPipePath aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "PIPE_PATH";
+
+  switch ( aType ) {
+  case PIPE_PATH_TWO_BASES:
+    AddParam( theParams, "Pipe-like object", aCI.GetShape() );
+    AddParam( theParams, "First base", aCI.GetBase1() );
+    AddParam( theParams, "Second base", aCI.GetBase2() );
+    break;
+  case PIPE_PATH_TWO_SEQS:
+    AddParam( theParams, "Pipe-like object", aCI.GetShape() );
+    AddParam( theParams, "First bases", aCI.GetBaseSeq1() );
+    AddParam( theParams, "Second bases", aCI.GetBaseSeq2() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PipePathDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PipePathDriver,GEOM_BaseDriver);
index 3cefc6ff5ec18da07557ae2e45045f0ad1381e01..67bc80444d33070bdb4c51155e0b1c7a3beed1d3 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PipePathDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PipePathDriver);
-
-class Handle(GEOMImpl_PipePathDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PipePathDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PipePathDriver)(const Handle(GEOMImpl_PipePathDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PipePathDriver)(const GEOMImpl_PipePathDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PipePathDriver)& operator=(const Handle(GEOMImpl_PipePathDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PipePathDriver)& operator=(const GEOMImpl_PipePathDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PipePathDriver* operator->() 
-     {
-      return (GEOMImpl_PipePathDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PipePathDriver* operator->() const 
-     {
-      return (GEOMImpl_PipePathDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PipePathDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PipePathDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -127,24 +64,15 @@ class Handle(GEOMImpl_PipePathDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PipePathDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
+
+DEFINE_STANDARD_HANDLE( GEOMImpl_PipePathDriver, GEOM_BaseDriver );
+
+class GEOMImpl_PipePathDriver : public GEOM_BaseDriver {
 
 public:
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_PipePathDriver();
   Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const; 
@@ -154,14 +82,13 @@ public:
   Standard_EXPORT static const Standard_GUID& GetID();
   Standard_EXPORT ~GEOMImpl_PipePathDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PipePathDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const
-  { return STANDARD_TYPE(GEOMImpl_PipePathDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  { return (STANDARD_TYPE(GEOMImpl_PipePathDriver) == AType ||
-            TFunction_Driver::IsKind(AType)); } 
+DEFINE_STANDARD_RTTI( GEOMImpl_PipePathDriver )
+
 
 };
 
index 7a36593cadba3500390e60d3e902d57f640fe2b8..4446e8343020cb1e85871c6895e3b1db39d3df6c 100644 (file)
@@ -616,41 +616,61 @@ Standard_Integer GEOMImpl_PipeTShapeDriver::Execute (TFunction_Logbook& log) con
   return 1;
 }
 
-//=======================================================================
-//function :  GEOMImpl_PipeTShapeDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PipeTShapeDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PipeTShapeDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PipeTShapeDriver",
-                                                         sizeof(GEOMImpl_PipeTShapeDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PipeTShapeDriver) Handle(GEOMImpl_PipeTShapeDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_PipeTShapeDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PipeTShapeDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PipeTShapeDriver)((Handle(GEOMImpl_PipeTShapeDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPipeTShape aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "PIPETSHAPE";
+
+  switch ( aType ) {
+  case TSHAPE_BASIC:
+    AddParam( theParams, "Main radius", aCI.GetR1() );
+    AddParam( theParams, "Main width", aCI.GetW1() );
+    AddParam( theParams, "Main half-length", aCI.GetL1() );
+    AddParam( theParams, "Incident pipe radius", aCI.GetR2() );
+    AddParam( theParams, "Incident pipe width", aCI.GetW2() );
+    AddParam( theParams, "Incident pipe half-length", aCI.GetL2() );
+    AddParam( theParams, "For hex mesh", aCI.GetHexMesh() );
+    break;
+  case TSHAPE_CHAMFER:
+    AddParam( theParams, "Main radius", aCI.GetR1() );
+    AddParam( theParams, "Main width", aCI.GetW1() );
+    AddParam( theParams, "Main half-length", aCI.GetL1() );
+    AddParam( theParams, "Incident pipe radius", aCI.GetR2() );
+    AddParam( theParams, "Incident pipe width", aCI.GetW2() );
+    AddParam( theParams, "Incident pipe half-length", aCI.GetL2() );
+    AddParam( theParams, "Chamfer height", aCI.GetH() );
+    AddParam( theParams, "Chamfer width", aCI.GetW() );
+    AddParam( theParams, "For hex mesh", aCI.GetHexMesh() );
+    break;
+  case TSHAPE_FILLET:
+    AddParam( theParams, "Main radius", aCI.GetR1() );
+    AddParam( theParams, "Main width", aCI.GetW1() );
+    AddParam( theParams, "Main half-length", aCI.GetL1() );
+    AddParam( theParams, "Incident pipe radius", aCI.GetR2() );
+    AddParam( theParams, "Incident pipe width", aCI.GetW2() );
+    AddParam( theParams, "Incident pipe half-length", aCI.GetL2() );
+    AddParam( theParams, "Fillet radius", aCI.GetRF() );
+    AddParam( theParams, "For hex mesh", aCI.GetHexMesh() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PipeTShapeDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PipeTShapeDriver,GEOM_BaseDriver);
index 0179b9121d826ca32929f3bc3a80124767632eaa..39396262c52f42d94cac1cfb3869f2f09032c70d 100644 (file)
 class Handle_Standard_Type;
 class GEOMImpl_PipeTShapeDriver;
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PipeTShapeDriver);
 
-class Handle(GEOMImpl_PipeTShapeDriver) : public Handle(TFunction_Driver) {
-public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  Handle(GEOMImpl_PipeTShapeDriver)():Handle(TFunction_Driver)() {} 
-  Handle(GEOMImpl_PipeTShapeDriver)(const Handle(GEOMImpl_PipeTShapeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-  {}
 
-  Handle(GEOMImpl_PipeTShapeDriver)(const GEOMImpl_PipeTShapeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-  {}
+#include "GEOM_BaseDriver.hxx"
 
-  Handle(GEOMImpl_PipeTShapeDriver)& operator=(const Handle(GEOMImpl_PipeTShapeDriver)& aHandle)
-  {
-    Assign(aHandle.Access());
-    return *this;
-  }
-  
-  Handle(GEOMImpl_PipeTShapeDriver)& operator=(const GEOMImpl_PipeTShapeDriver* anItem)
-  {
-    Assign((Standard_Transient *)anItem);
-    return *this;
-  }
-  
-  GEOMImpl_PipeTShapeDriver* operator->() 
-  {
-    return (GEOMImpl_PipeTShapeDriver *)ControlAccess();
-  }
-  
-  GEOMImpl_PipeTShapeDriver* operator->() const 
-  {
-    return (GEOMImpl_PipeTShapeDriver *)ControlAccess();
-  }
-  
-  Standard_EXPORT ~Handle(GEOMImpl_PipeTShapeDriver)() {};
-  
-  Standard_EXPORT static const Handle(GEOMImpl_PipeTShapeDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
+DEFINE_STANDARD_HANDLE( GEOMImpl_PipeTShapeDriver, GEOM_BaseDriver );
 
-class GEOMImpl_PipeTShapeDriver : public TFunction_Driver {
+class GEOMImpl_PipeTShapeDriver : public GEOM_BaseDriver {
 public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_PipeTShapeDriver();
   Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const; 
@@ -114,17 +56,13 @@ public:
   Standard_EXPORT static const Standard_GUID& GetID();
   Standard_EXPORT ~GEOMImpl_PipeTShapeDriver() {};
   
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PipeTShapeDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const
-  {
-    return STANDARD_TYPE(GEOMImpl_PipeTShapeDriver);
-  }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  {
-    return (STANDARD_TYPE(GEOMImpl_PipeTShapeDriver) == AType || TFunction_Driver::IsKind(AType));
-  }
+DEFINE_STANDARD_RTTI( GEOMImpl_PipeTShapeDriver )
+
 private:
 
   /*!
@@ -187,9 +125,9 @@ private:
   //           along OX and OZ
   //=======================================================================
   void GetCommonShapesOnCylinders(const TopoDS_Shape& theShape,
-                                 TopAbs_ShapeEnum theShapeType,
+                                  TopAbs_ShapeEnum theShapeType,
                                   double r, double r2,
-                                 Handle(TopTools_HSequenceOfShape)& commonShapes) const;
+                                  Handle(TopTools_HSequenceOfShape)& commonShapes) const;
 
 };
 
index 16878565ce22cec0981286984a207508ae70b6c4..c557d8205b9f56c13cfca538e3d2d684510a4291 100644 (file)
@@ -247,45 +247,62 @@ Standard_Integer GEOMImpl_PlaneDriver::Execute(TFunction_Logbook& log) const
 }
 
 
-//=======================================================================
-//function :  GEOMImpl_PlaneDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PlaneDriver",
-                                                         sizeof(GEOMImpl_PlaneDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PlaneDriver) Handle(GEOMImpl_PlaneDriver)::DownCast
-       (const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PlaneDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_PlaneDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PlaneDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PlaneDriver)((Handle(GEOMImpl_PlaneDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPlane aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "PLANE";
+
+  switch ( aType ) {
+  case PLANE_PNT_VEC:
+    AddParam( theParams, "Point", aCI.GetPoint() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  case PLANE_THREE_PNT:
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    AddParam( theParams, "Point 3", aCI.GetPoint3() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  case PLANE_FACE:
+    AddParam( theParams, "Face", aCI.GetFace() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  case PLANE_TANGENT_FACE:
+    AddParam( theParams, "Face", aCI.GetFace() );
+    AddParam( theParams, "Parameter U", aCI.GetParameterU() );
+    AddParam( theParams, "Parameter V", aCI.GetParameterV() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  case PLANE_2_VEC:
+    AddParam( theParams, "Vector 1", aCI.GetVector1() );
+    AddParam( theParams, "Vector 2", aCI.GetVector2() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  case PLANE_LCS:
+    AddParam( theParams, "Local coordinate system", aCI.GetLCS() );
+    AddParam( theParams, "Orientation", aCI.GetOrientation() );
+    AddParam( theParams, "Size of plane", aCI.GetSize() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PlaneDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PlaneDriver,GEOM_BaseDriver);
index 54baf098298d690e9e2afac5b99d9774f17ad666..9c459c9e56d54c3cbce024e66f823f2a585cf3b9 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PlaneDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PlaneDriver);
-
-class Handle(GEOMImpl_PlaneDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PlaneDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PlaneDriver)(const Handle(GEOMImpl_PlaneDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PlaneDriver)(const GEOMImpl_PlaneDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PlaneDriver)& operator=(const Handle(GEOMImpl_PlaneDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PlaneDriver)& operator=(const GEOMImpl_PlaneDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PlaneDriver* operator->() 
-     {
-      return (GEOMImpl_PlaneDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PlaneDriver* operator->() const 
-     {
-      return (GEOMImpl_PlaneDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PlaneDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PlaneDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_PlaneDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PlaneDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_PlaneDriver, GEOM_BaseDriver );
+
+class GEOMImpl_PlaneDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -148,13 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_PlaneDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PlaneDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PlaneDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PlaneDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+DEFINE_STANDARD_RTTI( GEOMImpl_PlaneDriver )
 };
 
 #endif
index e08547a8eb7e58eaa8895e210ece7cc9edcfe22b..6fef626e5662453087ab7fac9e599f34e2bd01c2 100644 (file)
@@ -153,16 +153,16 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
       TopoDS_Iterator It(aRefShape, Standard_False, Standard_False);
       TopoDS_Vertex aVertex;
       if ( It.More() ) {
-       TopoDS_Shape aShape = It.Value();
-       if ( !aShape.IsNull() )
-         aVertex = TopoDS::Vertex( aShape );
+        TopoDS_Shape aShape = It.Value();
+        if ( !aShape.IsNull() )
+          aVertex = TopoDS::Vertex( aShape );
       }
       if ( !aVertex.IsNull() ) {
-       aPnt = BRep_Tool::Pnt( aVertex );
+        aPnt = BRep_Tool::Pnt( aVertex );
       }
       else {
-       Standard_TypeMismatch::Raise
-         ("Point On Curve creation aborted : null curve");
+        Standard_TypeMismatch::Raise
+          ("Point On Curve creation aborted : null curve");
       }
     }
   }
@@ -234,8 +234,8 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
       gp_Pnt P2 = EdgeCurve->Value(par2);
       
       if (aRefPnt.SquareDistance(P2) < aRefPnt.SquareDistance(P1)) {
-       ReOrientedCurve = EdgeCurve->Reversed();
-       UFirst = EdgeCurve->ReversedParameter(ULast);
+        ReOrientedCurve = EdgeCurve->Reversed();
+        UFirst = EdgeCurve->ReversedParameter(ULast);
       }
       
       // Get the point by length
@@ -249,16 +249,16 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
       TopoDS_Iterator It(aRefEdge, Standard_False, Standard_False);
       TopoDS_Vertex aVertex;
       if ( It.More() ) {
-       TopoDS_Shape aShape = It.Value();
-       if ( !aShape.IsNull() )
-         aVertex = TopoDS::Vertex( aShape );
+        TopoDS_Shape aShape = It.Value();
+        if ( !aShape.IsNull() )
+          aVertex = TopoDS::Vertex( aShape );
       }
       if ( !aVertex.IsNull() ) {
-       aPnt = BRep_Tool::Pnt( aVertex );
+        aPnt = BRep_Tool::Pnt( aVertex );
       }
       else {
-       Standard_TypeMismatch::Raise
-         ("Point On Curve creation aborted : null curve");
+        Standard_TypeMismatch::Raise
+          ("Point On Curve creation aborted : null curve");
       }
     }
   }
@@ -360,46 +360,75 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_PointDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PointDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PointDriver",
-                                                         sizeof(GEOMImpl_PointDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-
-const Handle(GEOMImpl_PointDriver) Handle(GEOMImpl_PointDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+bool GEOMImpl_PointDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_PointDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PointDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PointDriver)((Handle(GEOMImpl_PointDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPoint aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "POINT";
+
+  switch ( aType ) {
+  case POINT_XYZ:
+    AddParam( theParams, "X", aCI.GetX() );
+    AddParam( theParams, "Y", aCI.GetY() );
+    AddParam( theParams, "Z", aCI.GetZ() );
+    break;
+  case POINT_XYZ_REF:
+    AddParam( theParams, "Point", aCI.GetRef() );
+    AddParam( theParams, "Dx", aCI.GetX() );
+    AddParam( theParams, "Dy", aCI.GetY() );
+    AddParam( theParams, "Dz", aCI.GetZ() );
+    break;
+  case POINT_CURVE_PAR:
+    AddParam( theParams, "Edge", aCI.GetCurve() );
+    AddParam( theParams, "Parameter", aCI.GetParameter() );
+    break;
+  case POINT_CURVE_COORD:
+    AddParam( theParams, "X", aCI.GetX() );
+    AddParam( theParams, "Y", aCI.GetY() );
+    AddParam( theParams, "Z", aCI.GetZ() );
+    AddParam( theParams, "Edge", aCI.GetCurve() );
+    break;
+  case POINT_CURVE_LENGTH:
+    AddParam( theParams, "Edge", aCI.GetCurve() );
+    AddParam( theParams, "Start Point", aCI.GetRef(), "First Vertex" );
+    AddParam( theParams, "Length", aCI.GetLength() );
+    break;
+  case POINT_SURFACE_PAR:
+    AddParam( theParams, "Face", aCI.GetSurface() );
+    AddParam( theParams, "U-Parameter", aCI.GetParameter() );
+    AddParam( theParams, "V-Parameter", aCI.GetParameter2() );
+    break;
+  case POINT_SURFACE_COORD:
+    AddParam( theParams, "X", aCI.GetX() );
+    AddParam( theParams, "Y", aCI.GetY() );
+    AddParam( theParams, "Z", aCI.GetZ() );
+    AddParam( theParams, "Face", aCI.GetSurface() );
+    break;
+  case POINT_FACE_ANY:
+    AddParam( theParams, "Face", aCI.GetSurface() );
+    break;
+  case POINT_LINES_INTERSECTION:
+    AddParam( theParams, "Line 1", aCI.GetLine1() );
+    AddParam( theParams, "Line 2", aCI.GetLine2() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PointDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PointDriver,GEOM_BaseDriver);
index 132307c877fc7f110289f4956f20036d1dbfb9a8..e61a838528ed4dca056d7f0e8a6a4f90636cd18d 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PointDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PointDriver);
-
-class Handle(GEOMImpl_PointDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PointDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PointDriver)(const Handle(GEOMImpl_PointDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PointDriver)(const GEOMImpl_PointDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PointDriver)& operator=(const Handle(GEOMImpl_PointDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PointDriver)& operator=(const GEOMImpl_PointDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PointDriver* operator->() 
-     {
-      return (GEOMImpl_PointDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PointDriver* operator->() const 
-     {
-      return (GEOMImpl_PointDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PointDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PointDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_PointDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PointDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_PointDriver, GEOM_BaseDriver );
+
+class GEOMImpl_PointDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -148,13 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_PointDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PointDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PointDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PointDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+DEFINE_STANDARD_RTTI( GEOMImpl_PointDriver )
 };
 
 #endif
index c2c893879f8be12c86e8f06de6a181285ae01a0b..38bfefb4603b9603f20f48d17a8f2b8c837143db 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <Standard_Stream.hxx>
+#include "GEOMImpl_PolylineDriver.hxx"
 
-#include <GEOMImpl_PolylineDriver.hxx>
-#include <GEOMImpl_IPolyline.hxx>
-#include <GEOMImpl_Types.hxx>
-#include <GEOM_Function.hxx>
+#include "GEOMImpl_ICurveParametric.hxx"
+#include "GEOMImpl_IPolyline.hxx"
+#include "GEOMImpl_Types.hxx"
+#include "GEOM_Function.hxx"
 
-#include <TColgp_Array1OfPnt.hxx>
-#include <BRepBuilderAPI_MakeVertex.hxx>
 #include <BRepBuilderAPI_MakePolygon.hxx>
+#include <BRepBuilderAPI_MakeVertex.hxx>
 #include <BRep_Tool.hxx>
+#include <Precision.hxx>
+#include <TColgp_Array1OfPnt.hxx>
+#include <TopAbs.hxx>
+#include <TopExp.hxx>
 #include <TopoDS.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Vertex.hxx>
 #include <TopoDS_Wire.hxx>
-#include <TopAbs.hxx>
-#include <TopExp.hxx>
-
-#include <Precision.hxx>
 #include <gp_Pnt.hxx>
 
 //=======================================================================
@@ -82,9 +81,9 @@ Standard_Integer GEOMImpl_PolylineDriver::Execute(TFunction_Logbook& log) const
       Handle(TColStd_HArray1OfReal) aCoordsArray = aCI.GetCoordinates();
       int anArrayLength = aCoordsArray->Length();
       for (int i = 0, j = 1; i <= (anArrayLength-3); i += 3) {
-       gp_Pnt aPnt = gp_Pnt(aCoordsArray->Value(i+1), aCoordsArray->Value(i+2), aCoordsArray->Value(i+3));
-       points.SetValue(j,aPnt);
-       j++;
+        gp_Pnt aPnt = gp_Pnt(aCoordsArray->Value(i+1), aCoordsArray->Value(i+2), aCoordsArray->Value(i+3));
+        points.SetValue(j,aPnt);
+        j++;
       } 
     }
 
@@ -94,39 +93,39 @@ Standard_Integer GEOMImpl_PolylineDriver::Execute(TFunction_Logbook& log) const
     for (; ind <= aLen; ind++)
     {
       if(useCoords) {
-       aMakePoly.Add(BRepBuilderAPI_MakeVertex(points.Value(ind)));
+        aMakePoly.Add(BRepBuilderAPI_MakeVertex(points.Value(ind)));
       } else {
-       Handle(GEOM_Function) aRefPoint = aCI.GetPoint(ind);
-       TopoDS_Shape aShapePnt = aRefPoint->GetValue();
-       if (aShapePnt.ShapeType() != TopAbs_VERTEX) {
-         Standard_TypeMismatch::Raise
-           ("Polyline creation aborted : arguments are not a vertexes");
-         return 0;
-       }
-       if (aShapePnt.ShapeType() == TopAbs_VERTEX) {
-         aMakePoly.Add(TopoDS::Vertex(aShapePnt));
-         //if (!aMakePoly.Added()) return 0;
-       }
+        Handle(GEOM_Function) aRefPoint = aCI.GetPoint(ind);
+        TopoDS_Shape aShapePnt = aRefPoint->GetValue();
+        if (aShapePnt.ShapeType() != TopAbs_VERTEX) {
+          Standard_TypeMismatch::Raise
+            ("Polyline creation aborted : arguments are not a vertexes");
+          return 0;
+        }
+        if (aShapePnt.ShapeType() == TopAbs_VERTEX) {
+          aMakePoly.Add(TopoDS::Vertex(aShapePnt));
+          //if (!aMakePoly.Added()) return 0;
+        }
       }
     }
     // Compare first and last point coordinates and close polyline if it's the same.
     if ( aLen > 2 ) {
       TopoDS_Vertex aV1;
       if( useCoords ) {
-       aV1 = BRepBuilderAPI_MakeVertex(points.Value(1));
+        aV1 = BRepBuilderAPI_MakeVertex(points.Value(1));
       } else {
-       Handle(GEOM_Function) aFPoint = aCI.GetPoint(1);
-       TopoDS_Shape aFirstPnt = aFPoint->GetValue();
-       aV1 = TopoDS::Vertex(aFirstPnt);
+        Handle(GEOM_Function) aFPoint = aCI.GetPoint(1);
+        TopoDS_Shape aFirstPnt = aFPoint->GetValue();
+        aV1 = TopoDS::Vertex(aFirstPnt);
       }
       
       TopoDS_Vertex aV2;
       if( useCoords ) {
-       aV2 = BRepBuilderAPI_MakeVertex(points.Value(aLen));
+        aV2 = BRepBuilderAPI_MakeVertex(points.Value(aLen));
       } else {
-       Handle(GEOM_Function) aLPoint = aCI.GetPoint(aLen);
-       TopoDS_Shape aLastPnt = aLPoint->GetValue();
-       aV2 = TopoDS::Vertex(aLastPnt);
+        Handle(GEOM_Function) aLPoint = aCI.GetPoint(aLen);
+        TopoDS_Shape aLastPnt = aLPoint->GetValue();
+        aV2 = TopoDS::Vertex(aLastPnt);
       }
       
       if ( (!aV1.IsNull() && !aV2.IsNull() && aV1.IsSame(aV2)) ||
@@ -150,45 +149,69 @@ Standard_Integer GEOMImpl_PolylineDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_PolylineDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PolylineDriver_Type_()
+bool GEOMImpl_PolylineDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PolylineDriver",
-                                                         sizeof(GEOMImpl_PolylineDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
+  GEOMImpl_IPolyline        aCI( function );
+  GEOMImpl_ICurveParametric aIP( function );
+  Standard_Integer aType = function->GetType();
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_PolylineDriver) Handle(GEOMImpl_PolylineDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_PolylineDriver) _anOtherObject;
+  theOperationName = "CURVE";
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PolylineDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PolylineDriver)((Handle(GEOMImpl_PolylineDriver)&)AnObject);
-     }
+  switch ( aType ) {
+  case POLYLINE_POINTS:
+    AddParam( theParams, "Type", "Polyline");
+    if ( aIP.HasData() )
+    {
+      AddParam( theParams, "X(t) equation", aIP.GetExprX() );
+      AddParam( theParams, "Y(t) equation", aIP.GetExprY() );
+      AddParam( theParams, "Z(t) equation", aIP.GetExprZ() );
+      AddParam( theParams, "Min t", aIP.GetParamMin() );
+      AddParam( theParams, "Max t", aIP.GetParamMax() );
+      if ( aIP.GetParamNbStep() )
+        AddParam( theParams, "Number of steps", aIP.GetParamNbStep() );
+      else
+        AddParam( theParams, "t step", aIP.GetParamStep() );
+    }
+    else
+    {
+      GEOM_Param& pntParam = AddParam( theParams, "Points");
+      if ( aCI.GetConstructorType() == COORD_CONSTRUCTOR )
+      {
+        Handle(TColStd_HArray1OfReal) coords = aCI.GetCoordinates();
+        if ( coords->Length() > 3 )
+          pntParam << ( coords->Length() ) / 3 << " points: ";
+        for ( int i = coords->Lower(), nb = coords->Upper(); i <= nb; )
+          pntParam << "( " << coords->Value( i++ )
+                   << ", " << coords->Value( i++ )
+                   << ", " << coords->Value( i++ ) << " ) ";
+      }
+      else
+      {
+        if ( aCI.GetLength() > 1 )
+          pntParam << aCI.GetLength() << " points: ";
+        for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+          pntParam << aCI.GetPoint( i ) << " ";
+      }
+      AddParam( theParams, "Is closed", aCI.GetIsClosed() );
+    }
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PolylineDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PolylineDriver,GEOM_BaseDriver);
index b14bbc84d0ca500ac75ee5e0d892b5afb6605475..2577858eac36186c663acf3322f3ad2e99c137c2 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PolylineDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PolylineDriver);
-
-class Handle(GEOMImpl_PolylineDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PolylineDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PolylineDriver)(const Handle(GEOMImpl_PolylineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PolylineDriver)(const GEOMImpl_PolylineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PolylineDriver)& operator=(const Handle(GEOMImpl_PolylineDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PolylineDriver)& operator=(const GEOMImpl_PolylineDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PolylineDriver* operator->() 
-     {
-      return (GEOMImpl_PolylineDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PolylineDriver* operator->() const 
-     {
-      return (GEOMImpl_PolylineDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PolylineDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PolylineDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_PolylineDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PolylineDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_PolylineDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_PolylineDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_PolylineDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PolylineDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PolylineDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PolylineDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_PolylineDriver )
 };
 
 #endif
index 63ab02291e1ed4be658569e4e35be9888863f550..c33dd1c892dea74350546b1a3b62cb157d16d1a9 100644 (file)
@@ -219,45 +219,48 @@ Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_PositionDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PositionDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PositionDriver",
-                                                         sizeof(GEOMImpl_PositionDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PositionDriver) Handle(GEOMImpl_PositionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PositionDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_PositionDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PositionDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PositionDriver)((Handle(GEOMImpl_PositionDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPosition aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "MODIFY_LOCATION";
+
+  switch ( aType ) {
+  case POSITION_SHAPE:
+  case POSITION_SHAPE_COPY:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Start LCS", aCI.GetStartLCS() );
+    AddParam( theParams, "End LCS", aCI.GetEndLCS() );
+    break;
+  case POSITION_SHAPE_FROM_GLOBAL:
+  case POSITION_SHAPE_FROM_GLOBAL_COPY:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "End LCS", aCI.GetEndLCS() );
+    break;
+  case POSITION_ALONG_PATH:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Path", aCI.GetPath() );
+    AddParam( theParams, "Distance", aCI.GetDistance() );
+    AddParam( theParams, "Reverse Direction", aCI.GetReverse() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PositionDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PositionDriver,GEOM_BaseDriver);
index 0b774ed61856395a00d094494bd740a889847316..e8bc6553ff4953d2306c4f082af3c16c7f096c86 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PositionDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PositionDriver);
-
-class Handle(GEOMImpl_PositionDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PositionDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PositionDriver)(const Handle(GEOMImpl_PositionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PositionDriver)(const GEOMImpl_PositionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PositionDriver)& operator=(const Handle(GEOMImpl_PositionDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PositionDriver)& operator=(const GEOMImpl_PositionDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PositionDriver* operator->() 
-     {
-      return (GEOMImpl_PositionDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PositionDriver* operator->() const 
-     {
-      return (GEOMImpl_PositionDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_PositionDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_PositionDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_PositionDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PositionDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_PositionDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_PositionDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_PositionDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PositionDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PositionDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PositionDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_PositionDriver )
 };
 
 #endif
index ca12bbc66f23a225665da9e337479e1073aa5ad5..9055015b3e4cafe819182e5890ac630d986c98a2 100644 (file)
@@ -495,44 +495,63 @@ TopoDS_Shape GEOMImpl_PrismDriver::MakeDraftPrism ( const TopoDS_Shape& theInitS
     return aShape;
 }
                                                    
-
-//=======================================================================
-//function : GEOMImpl_PrismDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_PrismDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if (aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if (aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if (aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_PrismDriver",
-                                                         sizeof(GEOMImpl_PrismDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_PrismDriver) Handle(GEOMImpl_PrismDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_PrismDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_PrismDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_PrismDriver))) {
-       _anOtherObject = Handle(GEOMImpl_PrismDriver)((Handle(GEOMImpl_PrismDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IPrism aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "EXTRUSION";
+
+  switch ( aType ) {
+  case PRISM_BASE_VEC_H:
+  case PRISM_BASE_VEC_H_2WAYS:
+    AddParam( theParams, "Base", aCI.GetBase() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    AddParam( theParams, "Both Directions", aType == PRISM_BASE_VEC_H_2WAYS );
+    AddParam( theParams, "Scale base-opposite face", aCI.GetScale() );
+    break;
+  case PRISM_BASE_TWO_PNT:
+  case PRISM_BASE_TWO_PNT_2WAYS:
+    AddParam( theParams, "Base", aCI.GetBase() );
+    AddParam( theParams, "Point 1", aCI.GetFirstPoint() );
+    AddParam( theParams, "Point 2", aCI.GetLastPoint() );
+    AddParam( theParams, "Both Directions", aType == PRISM_BASE_VEC_H_2WAYS );
+    AddParam( theParams, "Scale base-opposite face", aCI.GetScale() );
+    break;
+  case PRISM_BASE_DXDYDZ:
+  case PRISM_BASE_DXDYDZ_2WAYS:
+    AddParam( theParams, "Base", aCI.GetBase() );
+    AddParam( theParams, "Dx", aCI.GetDX() );
+    AddParam( theParams, "Dy", aCI.GetDY() );
+    AddParam( theParams, "Dz", aCI.GetDZ() );
+    AddParam( theParams, "Both Directions", aType == PRISM_BASE_VEC_H_2WAYS );
+    AddParam( theParams, "Scale base-opposite face", aCI.GetScale() );
+    break;
+  case DRAFT_PRISM_FEATURE:
+    theOperationName = aCI.GetFuseFlag() ? "EXTRUDED_BOSS" : "EXTRUDED_CUT";
+    AddParam( theParams, "Initial shape", aCI.GetInitShape() );
+    AddParam( theParams, "Profile", aCI.GetBase() );
+    AddParam( theParams, "Height", aCI.GetH() );
+    AddParam( theParams, "Draft angle", aCI.GetDraftAngle() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_PrismDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_PrismDriver,GEOM_BaseDriver);
index c900fca3824edfca493ca1b5c452d0b26f8ed3eb..606836ec6ee37022ec451ac45ee33072103ddb15 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_PrismDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_PrismDriver);
-
-class Handle(GEOMImpl_PrismDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_PrismDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_PrismDriver)(const Handle(GEOMImpl_PrismDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_PrismDriver)(const GEOMImpl_PrismDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_PrismDriver)& operator=(const Handle(GEOMImpl_PrismDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_PrismDriver)& operator=(const GEOMImpl_PrismDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_PrismDriver* operator->() 
-     {
-      return (GEOMImpl_PrismDriver *)ControlAccess();
-     }
-
-    GEOMImpl_PrismDriver* operator->() const 
-     {
-      return (GEOMImpl_PrismDriver *)ControlAccess();
-     }
-
-    Standard_EXPORT ~Handle(GEOMImpl_PrismDriver)() {};
-    Standard_EXPORT static const Handle(GEOMImpl_PrismDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -126,24 +64,15 @@ class Handle(GEOMImpl_PrismDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_PrismDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
+
+DEFINE_STANDARD_HANDLE( GEOMImpl_PrismDriver, GEOM_BaseDriver );
+
+class GEOMImpl_PrismDriver : public GEOM_BaseDriver {
 
 public:
 
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
 
   Standard_EXPORT GEOMImpl_PrismDriver();
   Standard_EXPORT ~GEOMImpl_PrismDriver() {};
@@ -166,12 +95,14 @@ public:
                                                       bool                isProtrusion,
                                                       const TopoDS_Shape& theSupport);
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
   // Type management
 
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_PrismDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_PrismDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_PrismDriver) == AType || TFunction_Driver::IsKind(AType)); } 
+DEFINE_STANDARD_RTTI( GEOMImpl_PrismDriver )
+
 
 };
 
index 7fa97753a4e3425b4d1921d33759edbc9599c7b7..fcfd852c9e4be1b2999f43b21f6380a046432e16 100644 (file)
@@ -220,46 +220,35 @@ Standard_Integer GEOMImpl_ProjectionDriver::Execute(TFunction_Logbook& log) cons
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ProjectionDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ProjectionDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ProjectionDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
 
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ProjectionDriver",
-                                                         sizeof(GEOMImpl_ProjectionDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
+  GEOMImpl_IMirror aCI( function );
+  Standard_Integer aType = function->GetType();
 
-const Handle(GEOMImpl_ProjectionDriver) Handle(GEOMImpl_ProjectionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ProjectionDriver) _anOtherObject;
+  theOperationName = "PROJECTION";
 
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ProjectionDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ProjectionDriver)((Handle(GEOMImpl_ProjectionDriver)&)AnObject);
-     }
+  switch ( aType ) {
+  case PROJECTION_COPY:
+    AddParam( theParams, "Source object", aCI.GetOriginal() );
+    AddParam( theParams, "Target face", aCI.GetPlane() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ProjectionDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ProjectionDriver,GEOM_BaseDriver);
index 9ee1d9407e80fbdb4e77901a96d37473d00b2e02..34b4d8e9db3642987276f99f637bda7837ce6e2d 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ProjectionDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ProjectionDriver);
-
-class Handle(GEOMImpl_ProjectionDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ProjectionDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ProjectionDriver)(const Handle(GEOMImpl_ProjectionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ProjectionDriver)(const GEOMImpl_ProjectionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ProjectionDriver)& operator=(const Handle(GEOMImpl_ProjectionDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ProjectionDriver)& operator=(const GEOMImpl_ProjectionDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ProjectionDriver* operator->() 
-     {
-      return (GEOMImpl_ProjectionDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ProjectionDriver* operator->() const 
-     {
-      return (GEOMImpl_ProjectionDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ProjectionDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ProjectionDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ProjectionDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ProjectionDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ProjectionDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ProjectionDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ProjectionDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ProjectionDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ProjectionDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ProjectionDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ProjectionDriver )
 };
 
 #endif
index 8b3b25827f6394f115b9b5f46fa48a260f6d372b..abb7efbc3091c29a2e33495ec2f8dd77f69d58d0 100644 (file)
@@ -138,45 +138,38 @@ Standard_Integer GEOMImpl_RevolutionDriver::Execute(TFunction_Logbook& log) cons
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_RevolutionDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_RevolutionDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_RevolutionDriver",
-                                                         sizeof(GEOMImpl_RevolutionDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_RevolutionDriver) Handle(GEOMImpl_RevolutionDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_RevolutionDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_RevolutionDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_RevolutionDriver))) {
-       _anOtherObject = Handle(GEOMImpl_RevolutionDriver)((Handle(GEOMImpl_RevolutionDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IRevolution aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "REVOLUTION";
+
+  switch ( aType ) {
+  case REVOLUTION_BASE_AXIS_ANGLE:
+  case REVOLUTION_BASE_AXIS_ANGLE_2WAYS:
+    AddParam( theParams, "Object", aCI.GetBase() );
+    AddParam( theParams, "Axis", aCI.GetAxis() );
+    AddParam( theParams, "Angle", aCI.GetAngle() );
+    AddParam( theParams, "Both Directions", aType == REVOLUTION_BASE_AXIS_ANGLE_2WAYS );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_RevolutionDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_RevolutionDriver,GEOM_BaseDriver);
index 296d87e3e94d90936c414bbd5b8ff4de42ae780b..0496f85dc70c7e20ff6f6724786e84cecc6da153 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_RevolutionDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_RevolutionDriver);
-
-class Handle(GEOMImpl_RevolutionDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_RevolutionDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_RevolutionDriver)(const Handle(GEOMImpl_RevolutionDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_RevolutionDriver)(const GEOMImpl_RevolutionDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_RevolutionDriver)& operator=(const Handle(GEOMImpl_RevolutionDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_RevolutionDriver)& operator=(const GEOMImpl_RevolutionDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_RevolutionDriver* operator->() 
-     {
-      return (GEOMImpl_RevolutionDriver *)ControlAccess();
-     }
-
-    GEOMImpl_RevolutionDriver* operator->() const 
-     {
-      return (GEOMImpl_RevolutionDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_RevolutionDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_RevolutionDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_RevolutionDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_RevolutionDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_RevolutionDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_RevolutionDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_RevolutionDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_RevolutionDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_RevolutionDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_RevolutionDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_RevolutionDriver )
 };
 
 #endif
index fc6c7ebdaa5686ec68c61cd7391c45c0e891f910..4c4bcd18b9b4229f8011d46390339ddee16f7a10 100644 (file)
@@ -316,43 +316,66 @@ Standard_Integer GEOMImpl_RotateDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_RotateDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_RotateDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_RotateDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_RotateDriver",
-                                                         sizeof(GEOMImpl_RotateDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_RotateDriver) Handle(GEOMImpl_RotateDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_RotateDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_RotateDriver))) {
-       _anOtherObject = Handle(GEOMImpl_RotateDriver)((Handle(GEOMImpl_RotateDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IRotate aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case ROTATE:
+  case ROTATE_COPY:
+    theOperationName = "ROTATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Axis", aCI.GetAxis() );
+    AddParam( theParams, "Angle", aCI.GetAngle() );
+    break;
+  case ROTATE_THREE_POINTS:
+  case ROTATE_THREE_POINTS_COPY:
+    theOperationName = "ROTATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Central Point", aCI.GetCentPoint() );
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    break;
+  case ROTATE_1D:
+    theOperationName = "MUL_ROTATION";
+    AddParam( theParams, "Main Object", aCI.GetOriginal() );
+    AddParam( theParams, "Axis", aCI.GetAxis(), "DZ" );
+    AddParam( theParams, "Nb. Times", aCI.GetNbIter1() );
+    break;
+  case ROTATE_1D_STEP:
+    theOperationName = "MUL_ROTATION";
+    AddParam( theParams, "Main Object", aCI.GetOriginal() );
+    AddParam( theParams, "Axis", aCI.GetAxis(), "DZ" );
+    AddParam( theParams, "Angular step", aCI.GetAngle() );
+    AddParam( theParams, "Nb. Times", aCI.GetNbIter1() );
+    break;
+  case ROTATE_2D:
+    theOperationName = "MUL_ROTATION";
+    AddParam( theParams, "Main Object", aCI.GetOriginal() );
+    AddParam( theParams, "Axis", aCI.GetAxis(), "DZ" );
+    AddParam( theParams, "Angular step", aCI.GetAngle() );
+    AddParam( theParams, "Angular Nb. Times", aCI.GetNbIter1() );
+    AddParam( theParams, "Radial step", aCI.GetStep() );
+    AddParam( theParams, "Radial Nb. Times", aCI.GetNbIter2() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_RotateDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_RotateDriver,GEOM_BaseDriver);
index 38907c425ef6188dc15d0c1cd745866605e50127..a332544cb9fd14345cd7761ae9b21cf930c75604 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_RotateDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_RotateDriver);
-
-class Handle(GEOMImpl_RotateDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_RotateDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_RotateDriver)(const Handle(GEOMImpl_RotateDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_RotateDriver)(const GEOMImpl_RotateDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_RotateDriver)& operator=(const Handle(GEOMImpl_RotateDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_RotateDriver)& operator=(const GEOMImpl_RotateDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_RotateDriver* operator->() 
-     {
-      return (GEOMImpl_RotateDriver *)ControlAccess();
-     }
-
-    GEOMImpl_RotateDriver* operator->() const 
-     {
-      return (GEOMImpl_RotateDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_RotateDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_RotateDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_RotateDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_RotateDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_RotateDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_RotateDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_RotateDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_RotateDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_RotateDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_RotateDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_RotateDriver )
 };
 
 #endif
index 667d367673125a05fcd7882fbaea7fdaebbe8b49..af19b09b38609f1dda1107705cc9a1d5c35a7632 100644 (file)
@@ -196,45 +196,45 @@ Standard_Integer GEOMImpl_ScaleDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ScaleDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ScaleDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ScaleDriver",
-                                                         sizeof(GEOMImpl_ScaleDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_ScaleDriver) Handle(GEOMImpl_ScaleDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ScaleDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_ScaleDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ScaleDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ScaleDriver)((Handle(GEOMImpl_ScaleDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IScale aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "SCALE";
+
+  switch ( aType ) {
+  case SCALE_SHAPE:
+  case SCALE_SHAPE_COPY:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Central Point", aCI.GetPoint(), "origin" );
+    AddParam( theParams, "Scale Factor", aCI.GetFactor() );
+    break;
+  case SCALE_SHAPE_AXES:
+  case SCALE_SHAPE_AXES_COPY:
+    AddParam( theParams, "Object", aCI.GetShape() );
+    AddParam( theParams, "Central Point", aCI.GetPoint(), "origin" );
+    AddParam( theParams, "Scale Factor X", aCI.GetFactorX() );
+    AddParam( theParams, "Scale Factor Y", aCI.GetFactorY() );
+    AddParam( theParams, "Scale Factor Z", aCI.GetFactorZ() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ScaleDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ScaleDriver,GEOM_BaseDriver);
index 1fd8280d52e6ef5c662e958a27665639a7ed0a5c..cfdf114e6de21853434cbbbfc4f4ca29be2a6d0c 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ScaleDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ScaleDriver);
-
-class Handle(GEOMImpl_ScaleDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ScaleDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ScaleDriver)(const Handle(GEOMImpl_ScaleDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ScaleDriver)(const GEOMImpl_ScaleDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ScaleDriver)& operator=(const Handle(GEOMImpl_ScaleDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ScaleDriver)& operator=(const GEOMImpl_ScaleDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ScaleDriver* operator->() 
-     {
-      return (GEOMImpl_ScaleDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ScaleDriver* operator->() const 
-     {
-      return (GEOMImpl_ScaleDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ScaleDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ScaleDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_ScaleDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ScaleDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ScaleDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_ScaleDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ScaleDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ScaleDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ScaleDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ScaleDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ScaleDriver )
 };
 
 #endif
index 6dee4254b731a34d417514fa12d82e983fb3151b..e89a67fd8357d5f7ec57f358308427e31d0e21ca 100644 (file)
@@ -93,7 +93,7 @@
 //modified by NIZNHY-PKV Wed Dec 28 13:48:20 2011f
 //static
 //  void KeepEdgesOrder(const Handle(TopTools_HSequenceOfShape)& aEdges,
-//                   const Handle(TopTools_HSequenceOfShape)& aWires);
+//                    const Handle(TopTools_HSequenceOfShape)& aWires);
 //modified by NIZNHY-PKV Wed Dec 28 13:48:23 2011t
 
 //=======================================================================
@@ -974,48 +974,88 @@ TopoDS_Edge GEOMImpl_ShapeDriver::MakeEdgeFromWire(const TopoDS_Shape& aWire,
     return ResEdge;
 }
 
-//=======================================================================
-//function :  GEOMImpl_ShapeDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ShapeDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ShapeDriver",
-                                                         sizeof(GEOMImpl_ShapeDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_ShapeDriver) Handle(GEOMImpl_ShapeDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+bool GEOMImpl_ShapeDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_ShapeDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ShapeDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ShapeDriver)((Handle(GEOMImpl_ShapeDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IShapes aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case WIRE_EDGES:
+    theOperationName = "WIRE";
+    AddParam( theParams, "Wires/edges", aCI.GetShapes() );
+    AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+    break;
+  case FACE_WIRE:
+    theOperationName = "FACE";
+    AddParam( theParams, "Wire/edge", aCI.GetBase() );
+    AddParam( theParams, "Is planar wanted", aCI.GetIsPlanar() );
+    break;
+  case FACE_WIRES:
+    theOperationName = "FACE";
+    AddParam( theParams, "Wires/edges", aCI.GetShapes() );
+    AddParam( theParams, "Is planar wanted", aCI.GetIsPlanar() );
+    break;
+  case SHELL_FACES:
+    theOperationName = "SHELL";
+    AddParam( theParams, "Objects", aCI.GetShapes() );
+    break;
+  case SOLID_SHELL:
+  case SOLID_SHELLS:
+    theOperationName = "SOLID";
+    AddParam( theParams, "Objects", aCI.GetShapes() );
+    break;
+  case COMPOUND_SHAPES:
+    theOperationName = "COMPOUND";
+    AddParam( theParams, "Objects", aCI.GetShapes() );
+    break;
+  case EDGE_WIRE:
+    theOperationName = "EDGE";
+    AddParam( theParams, "Wire", aCI.GetBase() );
+    AddParam( theParams, "Linear Tolerance", aCI.GetTolerance() );
+    AddParam( theParams, "Angular Tolerance", aCI.GetAngularTolerance() );
+    break;
+  case EDGE_CURVE_LENGTH:
+    theOperationName = "EDGE";
+    {
+      GEOMImpl_IVector aCI( function );
+      AddParam( theParams, "Edge", aCI.GetPoint1() );
+      AddParam( theParams, "Start point", aCI.GetPoint2() );
+      AddParam( theParams, "Length", aCI.GetParameter() );
+    }
+    break;
+  case SHAPES_ON_SHAPE:
+  {
+    theOperationName = "GetShapesOnShapeAsCompound";
+    Handle(TColStd_HSequenceOfTransient) shapes = aCI.GetShapes();
+    if ( !shapes.IsNull() && shapes->Length() > 0 )
+      AddParam( theParams, "Check shape", shapes->Value(1) );
+    if ( !shapes.IsNull() && shapes->Length() > 1 )
+      AddParam( theParams, "Shape", shapes->Value(2) );
+    AddParam( theParams, "Shape type", TopAbs_ShapeEnum( aCI.GetSubShapeType() ));
+    AddParam( theParams, "State", TopAbs_State( aCI.GetTolerance() ));
+    break;
+  }
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
 
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ShapeDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ShapeDriver,GEOM_BaseDriver);
+
 //modified by NIZNHY-PKV Wed Dec 28 13:48:31 2011f
 #include <TopoDS_Iterator.hxx>
 #include <TopTools_HSequenceOfShape.hxx>
@@ -1031,7 +1071,7 @@ const Handle(GEOMImpl_ShapeDriver) Handle(GEOMImpl_ShapeDriver)::DownCast(const
 //=======================================================================
 /*
 void KeepEdgesOrder(const Handle(TopTools_HSequenceOfShape)& aEdges,
-                   const Handle(TopTools_HSequenceOfShape)& aWires)
+                    const Handle(TopTools_HSequenceOfShape)& aWires)
 {
   Standard_Integer aNbWires, aNbEdges;
   // 
@@ -1070,7 +1110,7 @@ void KeepEdgesOrder(const Handle(TopTools_HSequenceOfShape)& aEdges,
     for (j=1; j<=aNbEdges; ++j) {
       const TopoDS_Shape& aE=aEdges->Value(j);
       if (aMEx.Contains(aE)) {
-       aBB.Add(aWy, aE);
+        aBB.Add(aWy, aE);
       }
     }
     //
index 7c1fcd1deeecaa7e38d3863c918237613ec01aa1..650a169488caf4049c629f9c0e2ac7ebe739a422 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ShapeDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ShapeDriver);
-
-class Handle(GEOMImpl_ShapeDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ShapeDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ShapeDriver)(const Handle(GEOMImpl_ShapeDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ShapeDriver)(const GEOMImpl_ShapeDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ShapeDriver)& operator=(const Handle(GEOMImpl_ShapeDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ShapeDriver)& operator=(const GEOMImpl_ShapeDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ShapeDriver* operator->() 
-     {
-      return (GEOMImpl_ShapeDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ShapeDriver* operator->() const 
-     {
-      return (GEOMImpl_ShapeDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ShapeDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ShapeDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -127,24 +65,15 @@ class Handle(GEOMImpl_ShapeDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ShapeDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
+
+DEFINE_STANDARD_HANDLE( GEOMImpl_ShapeDriver, GEOM_BaseDriver );
+
+class GEOMImpl_ShapeDriver : public GEOM_BaseDriver {
 
 public:
 
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_ShapeDriver();
   Standard_EXPORT ~GEOMImpl_ShapeDriver() {};
@@ -161,12 +90,14 @@ public:
   Standard_EXPORT static TopoDS_Wire MakeWireFromEdges
                                      (const Handle(TColStd_HSequenceOfTransient)& theEdgesFuncs,
                                       const Standard_Real theTolerance);
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ShapeDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ShapeDriver) ; }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ShapeDriver) == AType || TFunction_Driver::IsKind(AType)); } 
+DEFINE_STANDARD_RTTI( GEOMImpl_ShapeDriver )
+
 
 };
 
index 7209552d514f887988b3e8fa133647a45fd07b67..750770800fb88416ff6d60901a94e25eaf595f3c 100644 (file)
@@ -131,45 +131,50 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_SketcherDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_SketcherDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_SketcherDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SketcherDriver",
-                                                         sizeof(GEOMImpl_SketcherDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_SketcherDriver) Handle(GEOMImpl_SketcherDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_SketcherDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SketcherDriver))) {
-       _anOtherObject = Handle(GEOMImpl_SketcherDriver)((Handle(GEOMImpl_SketcherDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ISketcher aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "SKETCH";
+
+  switch ( aType ) {
+  case SKETCHER_NINE_DOUBLS:
+    AddParam( theParams, "Command", aCI.GetCommand() );
+    AddParam( theParams, "Origin")
+      << aCI.GetWorkingPlane(1) << " "
+      << aCI.GetWorkingPlane(2) << " "
+      << aCI.GetWorkingPlane(3);
+    AddParam( theParams, "OZ")
+      << aCI.GetWorkingPlane(4) << " "
+      << aCI.GetWorkingPlane(5) << " "
+      << aCI.GetWorkingPlane(6);
+    AddParam( theParams, "OX")
+      << aCI.GetWorkingPlane(7) << " "
+      << aCI.GetWorkingPlane(8) << " "
+      << aCI.GetWorkingPlane(9);
+    break;
+  case SKETCHER_PLANE:
+    AddParam( theParams, "Command", aCI.GetCommand() );
+    AddParam( theParams, "Working plane", aCI.GetWorkingPlane(), "XOY" );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_SketcherDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_SketcherDriver,GEOM_BaseDriver);
index e824610eab8d09c0870d1691cec335153d1657a6..6df338cc83e22c55913ca2a88085a522200e5218 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_SketcherDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SketcherDriver);
-
-class Handle(GEOMImpl_SketcherDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_SketcherDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_SketcherDriver)(const Handle(GEOMImpl_SketcherDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_SketcherDriver)(const GEOMImpl_SketcherDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_SketcherDriver)& operator=(const Handle(GEOMImpl_SketcherDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_SketcherDriver)& operator=(const GEOMImpl_SketcherDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_SketcherDriver* operator->() 
-     {
-      return (GEOMImpl_SketcherDriver *)ControlAccess();
-     }
-
-    GEOMImpl_SketcherDriver* operator->() const 
-     {
-      return (GEOMImpl_SketcherDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_SketcherDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_SketcherDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_SketcherDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_SketcherDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_SketcherDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_SketcherDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_SketcherDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SketcherDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_SketcherDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SketcherDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_SketcherDriver )
 };
 
 #endif
index 02c4f5695a400c81a51cbb27969e2ee724ea5467..af1629504b2e7562c797645f75f217824b2e4b2f 100644 (file)
@@ -193,41 +193,38 @@ Standard_Integer GEOMImpl_SmoothingSurfaceDriver::Execute(TFunction_Logbook& log
   return 1;
 }
 
-//=======================================================================
-//function :  GEOMImpl_SmoothingSurfaceDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_SmoothingSurfaceDriver_Type_()
-{
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SmoothingSurfaceDriver",
-                                                         sizeof(GEOMImpl_SmoothingSurfaceDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_SmoothingSurfaceDriver) Handle(GEOMImpl_SmoothingSurfaceDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_SmoothingSurfaceDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_SmoothingSurfaceDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SmoothingSurfaceDriver))) {
-       _anOtherObject = Handle(GEOMImpl_SmoothingSurfaceDriver)((Handle(GEOMImpl_SmoothingSurfaceDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ISmoothingSurface aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "SMOOTHINGSURFACE";
+
+  switch ( aType ) {
+  case SMOOTHINGSURFACE_LPOINTS:
+    AddParam( theParams, "Points" );
+    if ( aCI.GetLength() > 1 )
+      theParams[1] << aCI.GetLength() << " points: ";
+    for ( int i = 1, nb = aCI.GetLength(); i <= nb; ++i )
+      theParams[0] << aCI.GetPoint( i ) << " ";
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_SmoothingSurfaceDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_SmoothingSurfaceDriver,GEOM_BaseDriver);
index 2d8a4d4aa8717d609effa1d535fcd2bbfd5e20b5..3559fcc4589fc4f9b2f94b6138e1a29803e47364 100644 (file)
 class Handle_Standard_Type;
 class GEOMImpl_SmoothingSurfaceDriver;
 
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SmoothingSurfaceDriver);
 
-class Handle(GEOMImpl_SmoothingSurfaceDriver) : public Handle(TFunction_Driver) {
-public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  Handle(GEOMImpl_SmoothingSurfaceDriver)():Handle(TFunction_Driver)() {} 
-  Handle(GEOMImpl_SmoothingSurfaceDriver)(const Handle(GEOMImpl_SmoothingSurfaceDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-  {}
 
-  Handle(GEOMImpl_SmoothingSurfaceDriver)(const GEOMImpl_SmoothingSurfaceDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-  {}
+#include "GEOM_BaseDriver.hxx"
 
-  Handle(GEOMImpl_SmoothingSurfaceDriver)& operator=(const Handle(GEOMImpl_SmoothingSurfaceDriver)& aHandle)
-  {
-    Assign(aHandle.Access());
-    return *this;
-  }
-  
-  Handle(GEOMImpl_SmoothingSurfaceDriver)& operator=(const GEOMImpl_SmoothingSurfaceDriver* anItem)
-  {
-    Assign((Standard_Transient *)anItem);
-    return *this;
-  }
-  
-  GEOMImpl_SmoothingSurfaceDriver* operator->() 
-  {
-    return (GEOMImpl_SmoothingSurfaceDriver *)ControlAccess();
-  }
-  
-  GEOMImpl_SmoothingSurfaceDriver* operator->() const 
-  {
-    return (GEOMImpl_SmoothingSurfaceDriver *)ControlAccess();
-  }
-  
-  Standard_EXPORT ~Handle(GEOMImpl_SmoothingSurfaceDriver)() {};
-  
-  Standard_EXPORT static const Handle(GEOMImpl_SmoothingSurfaceDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
+DEFINE_STANDARD_HANDLE( GEOMImpl_SmoothingSurfaceDriver, GEOM_BaseDriver );
 
-class GEOMImpl_SmoothingSurfaceDriver : public TFunction_Driver {
+class GEOMImpl_SmoothingSurfaceDriver : public GEOM_BaseDriver {
 public:
-  inline void* operator new(size_t,void* anAddress) 
-  {
-    return anAddress;
-  }
-  inline void* operator new(size_t size) 
-  { 
-    return Standard::Allocate(size); 
-  }
-  inline void  operator delete(void *anAddress) 
-  { 
-    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-  }
-  
-  // Methods PUBLIC
+ // Methods PUBLIC
   // 
   Standard_EXPORT GEOMImpl_SmoothingSurfaceDriver();
   Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const; 
@@ -115,17 +57,13 @@ public:
   Standard_EXPORT static const Standard_GUID& GetID();
   Standard_EXPORT ~GEOMImpl_SmoothingSurfaceDriver() {};
   
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
   // Type management
   //
-  Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SmoothingSurfaceDriver_Type_();
-  Standard_EXPORT const Handle(Standard_Type)& DynamicType() const
-  {
-    return STANDARD_TYPE(GEOMImpl_SmoothingSurfaceDriver);
-  }
-  Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const
-  {
-    return (STANDARD_TYPE(GEOMImpl_SmoothingSurfaceDriver) == AType || TFunction_Driver::IsKind(AType));
-  } 
+DEFINE_STANDARD_RTTI( GEOMImpl_SmoothingSurfaceDriver )
+
 private:
   TopoDS_Shape MakeSmoothingSurfaceUnClosed(Handle_TColgp_HArray1OfPnt myListOfPoints) const;
 };
index d00ba25ef36dcbcbc8af4bb7641ef22458cc8b0d..678ae0b3d0524aed397e4e83dd61af48f2c32d5b 100644 (file)
@@ -102,45 +102,38 @@ Standard_Integer GEOMImpl_SphereDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_SphereDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_SphereDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SphereDriver",
-                                                         sizeof(GEOMImpl_SphereDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_SphereDriver) Handle(GEOMImpl_SphereDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_SphereDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_SphereDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SphereDriver))) {
-       _anOtherObject = Handle(GEOMImpl_SphereDriver)((Handle(GEOMImpl_SphereDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ISphere aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "SPHERE";
+
+  switch ( aType ) {
+  case SPHERE_R:
+    AddParam( theParams, "Radius", aCI.GetR() );
+    break;
+  case SPHERE_PNT_R:
+    AddParam( theParams, "Center", aCI.GetPoint() );
+    AddParam( theParams, "Radius", aCI.GetR() );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_SphereDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_SphereDriver,GEOM_BaseDriver);
index d9e239d26a0b48fe8dc01efb021a5b6e145f753b..5c583e7ebfb3c72287d1ce88b774f11a9da5ab24 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_SphereDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SphereDriver);
-
-class Handle(GEOMImpl_SphereDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_SphereDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_SphereDriver)(const Handle(GEOMImpl_SphereDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_SphereDriver)(const GEOMImpl_SphereDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_SphereDriver)& operator=(const Handle(GEOMImpl_SphereDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_SphereDriver)& operator=(const GEOMImpl_SphereDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_SphereDriver* operator->() 
-     {
-      return (GEOMImpl_SphereDriver *)ControlAccess();
-     }
-
-    GEOMImpl_SphereDriver* operator->() const 
-     {
-      return (GEOMImpl_SphereDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_SphereDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_SphereDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_SphereDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_SphereDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_SphereDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_SphereDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_SphereDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SphereDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_SphereDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SphereDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_SphereDriver )
 };
 
 #endif
index af164fe7f473b6f24979f0fe35cc06677ede0cb7..137884356d0b82ba0cc4a72d839d18127cbe5bd9 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <GEOMImpl_SplineDriver.hxx>
+#include "GEOMImpl_SplineDriver.hxx"
 
-#include <GEOMImpl_ISpline.hxx>
-#include <GEOMImpl_Types.hxx>
+#include "GEOMImpl_ISpline.hxx"
+#include "GEOMImpl_Types.hxx"
+#include "GEOMImpl_ICurveParametric.hxx"
 
-#include <GEOM_Function.hxx>
-#include <GEOMUtils.hxx>
+#include "GEOM_Function.hxx"
+#include "GEOMUtils.hxx"
 
 #include <BRepBuilderAPI_MakeEdge.hxx>
 #include <BRepBuilderAPI_MakeVertex.hxx>
@@ -40,7 +41,6 @@
 #include <TopoDS_Vertex.hxx>
 
 #include <Geom_BezierCurve.hxx>
-//#include <GeomAPI_PointsToBSpline.hxx>
 #include <GeomAPI_Interpolate.hxx>
 
 #include <gp.hxx>
@@ -50,8 +50,6 @@
 #include <TColgp_Array1OfPnt.hxx>
 #include <TColgp_HArray1OfPnt.hxx>
 
-#include <Standard_Stream.hxx>
-
 #include <Standard_NullObject.hxx>
 
 //=======================================================================
@@ -112,9 +110,9 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
     if (useCoords) {
       int anArrayLength = aCoordsArray->Length();
       for (int i = 0, j = 1; i <= (anArrayLength-3); i += 3) {
-       gp_Pnt aPnt = gp_Pnt(aCoordsArray->Value(i+1), aCoordsArray->Value(i+2), aCoordsArray->Value(i+3));
-       points.SetValue(j, aPnt);
-       j++;
+        gp_Pnt aPnt = gp_Pnt(aCoordsArray->Value(i+1), aCoordsArray->Value(i+2), aCoordsArray->Value(i+3));
+        points.SetValue(j, aPnt);
+        j++;
       }
     }
 
@@ -123,22 +121,22 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
     if (aType == SPLINE_BEZIER && aCI.GetIsClosed()) {
       TopoDS_Vertex aV1;
       if (useCoords) {
-       aV1 = BRepBuilderAPI_MakeVertex(points.Value(1));
+        aV1 = BRepBuilderAPI_MakeVertex(points.Value(1));
       }
       else {
-       Handle(GEOM_Function) aFPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(1));
-       TopoDS_Shape aFirstPnt = aFPoint->GetValue();
-       aV1 = TopoDS::Vertex(aFirstPnt);
+        Handle(GEOM_Function) aFPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(1));
+        TopoDS_Shape aFirstPnt = aFPoint->GetValue();
+        aV1 = TopoDS::Vertex(aFirstPnt);
       }
 
       TopoDS_Vertex aV2;
       if (useCoords) {
-       aV2 = BRepBuilderAPI_MakeVertex(points.Value(aLen));
+        aV2 = BRepBuilderAPI_MakeVertex(points.Value(aLen));
       }
       else {
-       Handle(GEOM_Function) aLPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(aLen));
-       TopoDS_Shape aLastPnt = aLPoint->GetValue();
-       aV2 = TopoDS::Vertex(aLastPnt);
+        Handle(GEOM_Function) aLPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(aLen));
+        TopoDS_Shape aLastPnt = aLPoint->GetValue();
+        aV2 = TopoDS::Vertex(aLastPnt);
       }
 
       if (!aV1.IsNull() && !aV2.IsNull() && !aV1.IsSame(aV2)) {
@@ -154,7 +152,7 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
     for (ind = 1; ind <= aLen; ind++) {
       gp_Pnt aP;
       if (useCoords) {
-       aP = points.Value(ind);
+        aP = points.Value(ind);
         if (!isSeveral && ind > 1) {
           if (aP.Distance(aPrevP) > Precision::Confusion()) {
             isSeveral = Standard_True;
@@ -164,18 +162,18 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
         aPrevP = aP;
       }
       else {
-       Handle(GEOM_Function) aRefPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(ind));
-       TopoDS_Shape aShapePnt = aRefPoint->GetValue();
-       if (aShapePnt.ShapeType() == TopAbs_VERTEX) {
-         aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt));
-         if (!isSeveral && ind > 1) {
-           if (aP.Distance(aPrevP) > Precision::Confusion()) {
-             isSeveral = Standard_True;
-           }
-         }
-         CurvePoints.SetValue(ind, aP);
-         aPrevP = aP;
-       }
+        Handle(GEOM_Function) aRefPoint = Handle(GEOM_Function)::DownCast(aPoints->Value(ind));
+        TopoDS_Shape aShapePnt = aRefPoint->GetValue();
+        if (aShapePnt.ShapeType() == TopAbs_VERTEX) {
+          aP = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt));
+          if (!isSeveral && ind > 1) {
+            if (aP.Distance(aPrevP) > Precision::Confusion()) {
+              isSeveral = Standard_True;
+            }
+          }
+          CurvePoints.SetValue(ind, aP);
+          aPrevP = aP;
+        }
       }
     }
 
@@ -268,45 +266,72 @@ Standard_Integer GEOMImpl_SplineDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_SplineDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_SplineDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_SplineDriver",
-                                                         sizeof(GEOMImpl_SplineDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_SplineDriver) Handle(GEOMImpl_SplineDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+bool GEOMImpl_SplineDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_SplineDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SplineDriver))) {
-       _anOtherObject = Handle(GEOMImpl_SplineDriver)((Handle(GEOMImpl_SplineDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ISpline          aCI( function );
+  GEOMImpl_ICurveParametric aPI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "CURVE";
+
+  switch ( aType ) {
+  case SPLINE_BEZIER:
+  case SPLINE_INTERPOLATION:
+  case SPLINE_INTERPOL_TANGENTS:
+
+    AddParam( theParams, "Type", ( aType == SPLINE_BEZIER ? "Bezier" : "Interpolation"));
+
+    if ( aPI.HasData() )
+    {
+      AddParam( theParams, "X(t) equation", aPI.GetExprX() );
+      AddParam( theParams, "Y(t) equation", aPI.GetExprY() );
+      AddParam( theParams, "Z(t) equation", aPI.GetExprZ() );
+      AddParam( theParams, "Min t", aPI.GetParamMin() );
+      AddParam( theParams, "Max t", aPI.GetParamMax() );
+      if ( aPI.GetParamNbStep() )
+        AddParam( theParams, "Number of steps", aPI.GetParamNbStep() );
+      else
+        AddParam( theParams, "t step", aPI.GetParamStep() );
+    }
+    else
+    {
+      if ( aCI.GetConstructorType() == COORD_CONSTRUCTOR )
+      {
+        Handle(TColStd_HArray1OfReal) coords = aCI.GetCoordinates();
+        GEOM_Param& pntParam = AddParam( theParams, "Points");
+        pntParam << ( coords->Length() ) / 3 << " points: ";
+        for ( int i = coords->Lower(), nb = coords->Upper(); i <= nb; )
+          pntParam << "( " << coords->Value( i++ )
+                   << ", " << coords->Value( i++ )
+                   << ", " << coords->Value( i++ ) << " ) ";
+      }
+      else
+      {
+        AddParam( theParams, "Points", aCI.GetPoints() );
+      }
+      Handle(GEOM_Function) v1 = aCI.GetFirstVector();
+      Handle(GEOM_Function) v2 = aCI.GetLastVector();
+      if ( !v1.IsNull() ) AddParam( theParams, "First tangent vector", v1 );
+      if ( !v2.IsNull() ) AddParam( theParams, "Last tangent vector", v2 );
+    }
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_SplineDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_SplineDriver,GEOM_BaseDriver);
index 9413dcaaa2d2c70535c6a1b768f864e30f9c5c90..3212e18500e7d7a2faa4c5eb8e0f31936d6aef0a 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_SplineDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_SplineDriver);
-
-class Handle(GEOMImpl_SplineDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_SplineDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_SplineDriver)(const Handle(GEOMImpl_SplineDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_SplineDriver)(const GEOMImpl_SplineDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_SplineDriver)& operator=(const Handle(GEOMImpl_SplineDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_SplineDriver)& operator=(const GEOMImpl_SplineDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_SplineDriver* operator->() 
-     {
-      return (GEOMImpl_SplineDriver *)ControlAccess();
-     }
-
-    GEOMImpl_SplineDriver* operator->() const 
-     {
-      return (GEOMImpl_SplineDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_SplineDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_SplineDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_SplineDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_SplineDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_SplineDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_SplineDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_SplineDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_SplineDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_SplineDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_SplineDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_SplineDriver )
 };
 
 #endif
index 3a63ca30c141b0971346e20686a14d50276f0222..c9e3434427277c5e744eb7dbf07f150590875134 100644 (file)
@@ -154,45 +154,38 @@ Standard_Integer GEOMImpl_ThruSectionsDriver::Execute(TFunction_Logbook& log) co
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_ThruSectionsDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_ThruSectionsDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_ThruSectionsDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ThruSectionsDriver",
-                                                         sizeof(GEOMImpl_ThruSectionsDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_ThruSectionsDriver) Handle(GEOMImpl_ThruSectionsDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_ThruSectionsDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ThruSectionsDriver))) {
-       _anOtherObject = Handle(GEOMImpl_ThruSectionsDriver)((Handle(GEOMImpl_ThruSectionsDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IThruSections aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "MakeThruSections";
+
+  switch ( aType ) {
+  case THRUSECTIONS_RULED:
+  case THRUSECTIONS_SMOOTHED:
+    AddParam( theParams, "Sections", aCI.GetSections() );
+    AddParam( theParams, "Is solid", aCI.GetSolidMode() );
+    AddParam( theParams, "Precision", aCI.GetPrecision() );
+    AddParam( theParams, "Is ruled", aType == THRUSECTIONS_RULED );
+    break;
+  default:
+    return false;
   }
-
-  return _anOtherObject ;
+  
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ThruSectionsDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ThruSectionsDriver,GEOM_BaseDriver);
index d6dc91730ce4c019fe773052b5a5d1be0fada1e6..5477729afe1bd4fb056622f89497389bc7102df2 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_ThruSectionsDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_ThruSectionsDriver);
-
-class Handle(GEOMImpl_ThruSectionsDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_ThruSectionsDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_ThruSectionsDriver)(const Handle(GEOMImpl_ThruSectionsDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_ThruSectionsDriver)(const GEOMImpl_ThruSectionsDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_ThruSectionsDriver)& operator=(const Handle(GEOMImpl_ThruSectionsDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_ThruSectionsDriver)& operator=(const GEOMImpl_ThruSectionsDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_ThruSectionsDriver* operator->() 
-     {
-      return (GEOMImpl_ThruSectionsDriver *)ControlAccess();
-     }
-
-    GEOMImpl_ThruSectionsDriver* operator->() const 
-     {
-      return (GEOMImpl_ThruSectionsDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_ThruSectionsDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_ThruSectionsDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -126,22 +63,13 @@ class Handle(GEOMImpl_ThruSectionsDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_ThruSectionsDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_ThruSectionsDriver, GEOM_BaseDriver );
+
+class GEOMImpl_ThruSectionsDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -152,14 +80,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_ThruSectionsDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_ThruSectionsDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_ThruSectionsDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_ThruSectionsDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_ThruSectionsDriver )
 };
 
 #endif
index cf77d8d52f12b4c67175bc879299ab47ced5c63a..56df50c2d6b510badc61c0a61ddf89364106c5dd 100644 (file)
@@ -120,45 +120,41 @@ Standard_Integer GEOMImpl_TorusDriver::Execute(TFunction_Logbook& log) const
   return 1;    
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_TorusDriver_Type_
-//purpose  :
-//======================================================================= 
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_TorusDriver_Type_()
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_TorusDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); 
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_TorusDriver",
-                                                         sizeof(GEOMImpl_TorusDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//======================================================================= 
-const Handle(GEOMImpl_TorusDriver) Handle(GEOMImpl_TorusDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_TorusDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_TorusDriver))) {
-       _anOtherObject = Handle(GEOMImpl_TorusDriver)((Handle(GEOMImpl_TorusDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ITorus aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  theOperationName = "TORUS";
+
+  switch ( aType ) {
+  case TORUS_RR:
+    AddParam( theParams, "Radius 1", aCI.GetRMajor() );
+    AddParam( theParams, "Radius 2", aCI.GetRMinor() );
+    break;
+  case TORUS_PNT_VEC_RR:
+    AddParam( theParams, "Base Point", aCI.GetCenter() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Radius 1", aCI.GetRMajor() );
+    AddParam( theParams, "Radius 2", aCI.GetRMinor() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject ;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_TorusDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_TorusDriver,GEOM_BaseDriver);
index 40cf9f5b5f195b138298962497c65a50d232b481..a3469e1b2dc9358a87af8f9a08252d00510f9568 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_TorusDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_TorusDriver);
-
-class Handle(GEOMImpl_TorusDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_TorusDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_TorusDriver)(const Handle(GEOMImpl_TorusDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_TorusDriver)(const GEOMImpl_TorusDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_TorusDriver)& operator=(const Handle(GEOMImpl_TorusDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_TorusDriver)& operator=(const GEOMImpl_TorusDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_TorusDriver* operator->() 
-     {
-      return (GEOMImpl_TorusDriver *)ControlAccess();
-     }
-
-    GEOMImpl_TorusDriver* operator->() const 
-     {
-      return (GEOMImpl_TorusDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_TorusDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_TorusDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_TorusDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_TorusDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_TorusDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_TorusDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_TorusDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_TorusDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_TorusDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_TorusDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_TorusDriver )
 };
 
 #endif
index a76af890055c62d40ef6cc9687c74ee10cd14b22..69311116399b70c5e2682b16125c203c84eb368f 100644 (file)
@@ -277,44 +277,73 @@ Standard_Integer GEOMImpl_TranslateDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
-
-//=======================================================================
-//function :  GEOMImpl_TranslateDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_TranslateDriver_Type_()
-{
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_TranslateDriver",
-                                                         sizeof(GEOMImpl_TranslateDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_TranslateDriver) Handle(GEOMImpl_TranslateDriver)::DownCast(const Handle(Standard_Transient)& AnObject)
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
+
+bool GEOMImpl_TranslateDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-  Handle(GEOMImpl_TranslateDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_TranslateDriver))) {
-       _anOtherObject = Handle(GEOMImpl_TranslateDriver)((Handle(GEOMImpl_TranslateDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_ITranslate aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case TRANSLATE_TWO_POINTS:
+  case TRANSLATE_TWO_POINTS_COPY:
+    theOperationName = "TRANSLATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    break;
+  case TRANSLATE_VECTOR:
+  case TRANSLATE_VECTOR_COPY:
+    theOperationName = "TRANSLATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    break;
+  case TRANSLATE_VECTOR_DISTANCE:
+    theOperationName = "TRANSLATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Vector", aCI.GetVector() );
+    AddParam( theParams, "Distance", aCI.GetDistance() );
+    break;
+  case TRANSLATE_XYZ:
+  case TRANSLATE_XYZ_COPY:
+    theOperationName = "TRANSLATION";
+    AddParam( theParams, "Object", aCI.GetOriginal() );
+    AddParam( theParams, "Dx", aCI.GetDX() );
+    AddParam( theParams, "Dy", aCI.GetDY() );
+    AddParam( theParams, "Dz", aCI.GetDZ() );
+    break;
+  case TRANSLATE_1D:
+    theOperationName = "MUL_TRANSLATION";
+    AddParam( theParams, "Main Object", aCI.GetOriginal() );
+    AddParam( theParams, "Vector", aCI.GetVector(), "DX" );
+    AddParam( theParams, "Step", aCI.GetStep1() );
+    AddParam( theParams, "Nb. Times", aCI.GetNbIter1() );
+    break;
+  case TRANSLATE_2D:
+    theOperationName = "MUL_TRANSLATION";
+    AddParam( theParams, "Main Object", aCI.GetOriginal() );
+    AddParam( theParams, "Vector U", aCI.GetVector(), "DX" );
+    AddParam( theParams, "Vector V", aCI.GetVector2(), "DY" );
+    AddParam( theParams, "Step U", aCI.GetStep1() );
+    AddParam( theParams, "Nb. Times U", aCI.GetNbIter1() );
+    AddParam( theParams, "Step V", aCI.GetStep2() );
+    AddParam( theParams, "Nb. Times V", aCI.GetNbIter2() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_TranslateDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_TranslateDriver,GEOM_BaseDriver);
index eb8ca0efe8a31c8a81d53b309b015494e3496ee8..d9a45534ef7a74cf64a74dbb23ea1533a08dfa96 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_TranslateDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_TranslateDriver);
-
-class Handle(GEOMImpl_TranslateDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_TranslateDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_TranslateDriver)(const Handle(GEOMImpl_TranslateDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_TranslateDriver)(const GEOMImpl_TranslateDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_TranslateDriver)& operator=(const Handle(GEOMImpl_TranslateDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_TranslateDriver)& operator=(const GEOMImpl_TranslateDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_TranslateDriver* operator->() 
-     {
-      return (GEOMImpl_TranslateDriver *)ControlAccess();
-     }
-
-    GEOMImpl_TranslateDriver* operator->() const 
-     {
-      return (GEOMImpl_TranslateDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_TranslateDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_TranslateDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_TranslateDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_TranslateDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_TranslateDriver, GEOM_BaseDriver );
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+class GEOMImpl_TranslateDriver : public GEOM_BaseDriver {
+
+public:
 
  // Methods PUBLIC
  // 
@@ -148,14 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_TranslateDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_TranslateDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_TranslateDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_TranslateDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
-
+DEFINE_STANDARD_RTTI( GEOMImpl_TranslateDriver )
 };
 
 #endif
index f691fdfa391501a90963930afa39b0ff634f0852..23895d05df0cd1edc36025bd350c744d2635ea47 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <Standard_Stream.hxx>
+#include "GEOMImpl_VectorDriver.hxx"
 
-#include <GEOMImpl_VectorDriver.hxx>
-#include <GEOMImpl_IVector.hxx>
-#include <GEOMImpl_Types.hxx>
-#include <GEOM_Function.hxx>
+#include "GEOMImpl_IVector.hxx"
+#include "GEOMImpl_Types.hxx"
+#include "GEOM_Function.hxx"
+#include "GEOM_Object.hxx"
 
-#include <BRep_Tool.hxx>
 #include <BRepBuilderAPI_MakeEdge.hxx>
-
+#include <BRep_Tool.hxx>
+#include <Geom_Curve.hxx>
+#include <Precision.hxx>
+#include <TCollection_AsciiString.hxx>
 #include <TopAbs.hxx>
 #include <TopExp.hxx>
 #include <TopoDS.hxx>
 #include <TopoDS_Edge.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Vertex.hxx>
-
 #include <gp_Pnt.hxx>
-#include <Precision.hxx>
-#include <Geom_Curve.hxx>
 #include <gp_Vec.hxx>
-#include <TCollection_AsciiString.hxx>
+
 #include <Standard_ConstructionError.hxx>
 
 //=======================================================================
@@ -156,46 +155,55 @@ Standard_Integer GEOMImpl_VectorDriver::Execute(TFunction_Logbook& log) const
   return 1;
 }
 
+//================================================================================
+/*!
+ * \brief Returns a name of creation operation and names and values of creation parameters
+ */
+//================================================================================
 
-//=======================================================================
-//function :  GEOMImpl_VectorDriver_Type_
-//purpose  :
-//=======================================================================
-Standard_EXPORT Handle_Standard_Type& GEOMImpl_VectorDriver_Type_()
+bool GEOMImpl_VectorDriver::
+GetCreationInformation(std::string&             theOperationName,
+                       std::vector<GEOM_Param>& theParams)
 {
-
-  static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_VectorDriver",
-                                                         sizeof(GEOMImpl_VectorDriver),
-                                                         1,
-                                                         (Standard_Address)_Ancestors,
-                                                         (Standard_Address)NULL);
-
-  return _aType;
-}
-
-//=======================================================================
-//function : DownCast
-//purpose  :
-//=======================================================================
-const Handle(GEOMImpl_VectorDriver) Handle(GEOMImpl_VectorDriver)::DownCast
-       (const Handle(Standard_Transient)& AnObject)
-{
-  Handle(GEOMImpl_VectorDriver) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_VectorDriver))) {
-       _anOtherObject = Handle(GEOMImpl_VectorDriver)((Handle(GEOMImpl_VectorDriver)&)AnObject);
-     }
+  if (Label().IsNull()) return 0;
+  Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label());
+
+  GEOMImpl_IVector aCI( function );
+  Standard_Integer aType = function->GetType();
+
+  switch ( aType ) {
+  case VECTOR_DX_DY_DZ:
+    theOperationName = "VECTOR";
+    AddParam( theParams, "Dx", aCI.GetDX() );
+    AddParam( theParams, "Dy", aCI.GetDY() );
+    AddParam( theParams, "Dz", aCI.GetDZ() );
+    break;
+  case VECTOR_TWO_PNT: {
+    TDF_Label label = Label();
+    Handle(GEOM_Object) obj = GEOM_Object::GetObject( label );
+    if ( !obj.IsNull() && obj->GetType() == GEOM_EDGE )
+      theOperationName = "EDGE";
+    else
+      theOperationName = "VECTOR";
+    AddParam( theParams, "Point 1", aCI.GetPoint1() );
+    AddParam( theParams, "Point 2", aCI.GetPoint2() );
+    break;
+  }
+  case VECTOR_TANGENT_CURVE_PAR:
+    theOperationName = "MakeTangentOnCurve";
+    AddParam( theParams, "Curve", aCI.GetCurve() );
+    AddParam( theParams, "Parameter", aCI.GetParameter() );
+    break;
+  case VECTOR_REVERSE:
+    theOperationName = "CHANGE_ORIENTATION";
+    AddParam( theParams, "Vector", aCI.GetCurve() );
+    break;
+  default:
+    return false;
   }
 
-  return _anOtherObject;
+  return true;
 }
+
+IMPLEMENT_STANDARD_HANDLE (GEOMImpl_VectorDriver,GEOM_BaseDriver);
+IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_VectorDriver,GEOM_BaseDriver);
index cb3c535a4db49c3eaaf716c2f3f7b0b375d46fcf..c8bcc9dd4b24a8ad7599cee7ffdffd0b440446cc 100644 (file)
 #include <Standard_GUID.hxx>
 #endif 
 
-#ifndef _Handle_TFunction_Driver_HeaderFile
-#include <Handle_TFunction_Driver.hxx>
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(TFunction_Driver);
-class GEOMImpl_VectorDriver;
-
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_VectorDriver);
-
-class Handle(GEOMImpl_VectorDriver) : public Handle(TFunction_Driver) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-
-    Handle(GEOMImpl_VectorDriver)():Handle(TFunction_Driver)() {} 
-    Handle(GEOMImpl_VectorDriver)(const Handle(GEOMImpl_VectorDriver)& aHandle) : Handle(TFunction_Driver)(aHandle) 
-     {
-     }
-
-    Handle(GEOMImpl_VectorDriver)(const GEOMImpl_VectorDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem) 
-     {
-     }
-
-    Handle(GEOMImpl_VectorDriver)& operator=(const Handle(GEOMImpl_VectorDriver)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(GEOMImpl_VectorDriver)& operator=(const GEOMImpl_VectorDriver* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    GEOMImpl_VectorDriver* operator->() 
-     {
-      return (GEOMImpl_VectorDriver *)ControlAccess();
-     }
-
-    GEOMImpl_VectorDriver* operator->() const 
-     {
-      return (GEOMImpl_VectorDriver *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(GEOMImpl_VectorDriver)() {};
-   Standard_EXPORT static const Handle(GEOMImpl_VectorDriver) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-
 #ifndef _TFunction_Driver_HeaderFile
 #include <TFunction_Driver.hxx>
 #endif
@@ -122,22 +60,13 @@ class Handle(GEOMImpl_VectorDriver) : public Handle(TFunction_Driver) {
 class TColStd_SequenceOfExtendedString;
 
 
-class GEOMImpl_VectorDriver : public TFunction_Driver {
+#include "GEOM_BaseDriver.hxx"
 
-public:
+DEFINE_STANDARD_HANDLE( GEOMImpl_VectorDriver, GEOM_BaseDriver );
+
+class GEOMImpl_VectorDriver : public GEOM_BaseDriver {
 
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
+public:
 
  // Methods PUBLIC
  // 
@@ -148,13 +77,11 @@ Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { r
 Standard_EXPORT static const Standard_GUID& GetID();
 Standard_EXPORT ~GEOMImpl_VectorDriver() {};
 
+  Standard_EXPORT virtual
+  bool GetCreationInformation(std::string&             theOperationName,
+                              std::vector<GEOM_Param>& params);
 
- // Type management
- //
-Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_VectorDriver_Type_();
-Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_VectorDriver) ; }
-Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_VectorDriver) == AType || TFunction_Driver::IsKind(AType)); } 
-
+DEFINE_STANDARD_RTTI( GEOMImpl_VectorDriver )
 };
 
 #endif