PageRenderTime 53ms CodeModel.GetById 16ms app.highlight 32ms RepoModel.GetById 1ms app.codeStats 0ms

/src/contrib/geom-5.1.2.7/inc/GEOMImpl_BlockDriver.hxx

http://pythonocc.googlecode.com/
C++ Header | 174 lines | 120 code | 29 blank | 25 comment | 4 complexity | ff9f3a87cb51f09eca3e10064cc0c6f5 MD5 | raw file
  1// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
  2// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
  3// 
  4// This library is free software; you can redistribute it and/or
  5// modify it under the terms of the GNU Lesser General Public
  6// License as published by the Free Software Foundation; either 
  7// version 2.1 of the License.
  8// 
  9// This library is distributed in the hope that it will be useful 
 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 12// Lesser General Public License for more details.
 13//
 14// You should have received a copy of the GNU Lesser General Public  
 15// License along with this library; if not, write to the Free Software 
 16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 17//
 18// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 19//
 20//  File   : GEOMImpl_BlockDriver.ixx
 21//  Module : GEOMImpl
 22
 23#ifndef _GEOMImpl_BlockDriver_HeaderFile
 24#define _GEOMImpl_BlockDriver_HeaderFile
 25
 26#ifndef _TColStd_SequenceOfExtendedString_HeaderFile
 27#include <TColStd_SequenceOfExtendedString.hxx>
 28#endif
 29#ifndef _Standard_TypeMismatch_HeaderFile
 30#include <Standard_TypeMismatch.hxx>
 31#endif
 32
 33#ifndef _Standard_HeaderFile
 34#include <Standard.hxx>
 35#endif
 36
 37#ifndef _Standard_Macro_HeaderFile
 38#include <Standard_Macro.hxx>
 39#endif
 40#ifndef _Standard_HeaderFile
 41#include <Standard.hxx>
 42#endif
 43#ifndef _Standard_GUID_HeaderFile
 44#include <Standard_GUID.hxx>
 45#endif
 46
 47#ifndef _Handle_TFunction_Driver_HeaderFile
 48#include <Handle_TFunction_Driver.hxx>
 49#endif
 50
 51class Standard_Transient;
 52class Handle_Standard_Type;
 53class Handle(TFunction_Driver);
 54class GEOMImpl_BlockDriver;
 55
 56Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BlockDriver);
 57
 58class Handle(GEOMImpl_BlockDriver) : public Handle(TFunction_Driver) {
 59  public:
 60    inline void* operator new(size_t,void* anAddress)
 61      {
 62        return anAddress;
 63      }
 64    inline void* operator new(size_t size)
 65      {
 66        return Standard::Allocate(size);
 67      }
 68    inline void  operator delete(void *anAddress)
 69      {
 70        if (anAddress) Standard::Free((Standard_Address&)anAddress);
 71      }
 72
 73    Handle(GEOMImpl_BlockDriver)():Handle(TFunction_Driver)() {}
 74    Handle(GEOMImpl_BlockDriver)(const Handle(GEOMImpl_BlockDriver)& aHandle) : Handle(TFunction_Driver)(aHandle)
 75     {
 76     }
 77
 78    Handle(GEOMImpl_BlockDriver)(const GEOMImpl_BlockDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem)
 79     {
 80     }
 81
 82    Handle(GEOMImpl_BlockDriver)& operator=(const Handle(GEOMImpl_BlockDriver)& aHandle)
 83     {
 84      Assign(aHandle.Access());
 85      return *this;
 86     }
 87
 88    Handle(GEOMImpl_BlockDriver)& operator=(const GEOMImpl_BlockDriver* anItem)
 89     {
 90      Assign((Standard_Transient *)anItem);
 91      return *this;
 92     }
 93
 94    GEOMImpl_BlockDriver* operator->()
 95     {
 96      return (GEOMImpl_BlockDriver *)ControlAccess();
 97     }
 98
 99    GEOMImpl_BlockDriver* operator->() const
100     {
101      return (GEOMImpl_BlockDriver *)ControlAccess();
102     }
103
104   Standard_EXPORT ~Handle(GEOMImpl_BlockDriver)() {};
105
106   Standard_EXPORT static const Handle(GEOMImpl_BlockDriver) DownCast(const Handle(Standard_Transient)& AnObject);
107};
108
109#ifndef _TFunction_Driver_HeaderFile
110#include <TFunction_Driver.hxx>
111#endif
112#ifndef _TFunction_Logbook_HeaderFile
113#include <TFunction_Logbook.hxx>
114#endif
115#ifndef _Standard_CString_HeaderFile
116#include <Standard_CString.hxx>
117#endif
118#include <TopoDS_Shape.hxx>
119
120class TColStd_SequenceOfExtendedString;
121
122
123class GEOMImpl_BlockDriver : public TFunction_Driver {
124
125public:
126
127    inline void* operator new(size_t,void* anAddress)
128      {
129        return anAddress;
130      }
131    inline void* operator new(size_t size)
132      {
133        return Standard::Allocate(size);
134      }
135    inline void  operator delete(void *anAddress)
136      {
137        if (anAddress) Standard::Free((Standard_Address&)anAddress);
138      }
139
140 // Methods PUBLIC
141 //
142Standard_EXPORT GEOMImpl_BlockDriver();
143Standard_EXPORT virtual  Standard_Integer Execute(TFunction_Logbook& log) const;
144Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {}
145Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; }
146Standard_EXPORT static const Standard_GUID& GetID();
147Standard_EXPORT ~GEOMImpl_BlockDriver() {};
148
149
150 // Type management
151 //
152Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BlockDriver_Type_();
153Standard_EXPORT const Handle(Standard_Type)& DynamicType() const  { return STANDARD_TYPE(GEOMImpl_BlockDriver) ; }
154Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BlockDriver) == AType || TFunction_Driver::IsKind(AType)); }
155
156private:
157    void MultiTransformate1D (const TopoDS_Shape&    theBlock,
158                              const TopoDS_Shape&    theFace1,
159                              const TopoDS_Shape&    theFace2,
160                              const Standard_Integer theNbIter,
161                              TopoDS_Shape&          theResult) const;
162
163    void MultiTransformate2D (const TopoDS_Shape&    theBlock,
164                              const TopoDS_Shape&    theFace1U,
165                              const TopoDS_Shape&    theFace2U,
166                              const Standard_Integer theNbIterU,
167                              const TopoDS_Shape&    theFace1V,
168                              const TopoDS_Shape&    theFace2V,
169                              const Standard_Integer theNbIterV,
170                              TopoDS_Shape&          theResult) const;
171
172};
173
174#endif