#ifndef _Storage_Schema_HeaderFile_
#include <Storage_Schema.hxx>
#endif
#ifndef _Storage_BaseDriver_HeaderFile_
#include <Storage_BaseDriver.hxx>
#endif
#ifndef _Storage_CallBack_HeaderFile_
#include <Storage_CallBack.hxx>
#endif
#ifndef _Storage_Macros_HeaderFile_
#include <Storage_Macros.hxx>
#endif
class Handle_ObjMgt_ExternShareable;
class Handle_ObjMgt_ExternRef;
class Handle_ObjMgt_PSeqOfExtRef;
class Handle_ObjMgt_SeqNodeOfPSeqOfExtRef;
class Handle_PTopLoc_Datum3D;
class Handle_PTopLoc_ItemLocation;
class PTopLoc_Location;
class Handle_PColgp_HArray1OfCirc2d;
class PColgp_FieldOfHArray1OfCirc2d;
class Handle_PColgp_HArray1OfDir2d;
class PColgp_FieldOfHArray1OfDir2d;
class Handle_PColgp_HArray1OfLin2d;
class PColgp_FieldOfHArray1OfLin2d;
class Handle_PColgp_HArray1OfPnt2d;
class PColgp_FieldOfHArray1OfPnt2d;
class Handle_PColgp_HArray1OfVec2d;
class PColgp_FieldOfHArray1OfVec2d;
class Handle_PColgp_HArray1OfXY;
class PColgp_FieldOfHArray1OfXY;
class Handle_PColgp_HArray1OfDir;
class PColgp_FieldOfHArray1OfDir;
class Handle_PColgp_HArray1OfPnt;
class PColgp_FieldOfHArray1OfPnt;
class Handle_PColgp_HArray1OfVec;
class PColgp_FieldOfHArray1OfVec;
class Handle_PColgp_HArray1OfXYZ;
class PColgp_FieldOfHArray1OfXYZ;
class Handle_PColgp_HArray2OfCirc2d;
class PColgp_FieldOfHArray2OfCirc2d;
class Handle_PColgp_HArray2OfDir2d;
class PColgp_FieldOfHArray2OfDir2d;
class Handle_PColgp_HArray2OfLin2d;
class PColgp_FieldOfHArray2OfLin2d;
class Handle_PColgp_HArray2OfPnt2d;
class PColgp_FieldOfHArray2OfPnt2d;
class Handle_PColgp_HArray2OfVec2d;
class PColgp_FieldOfHArray2OfVec2d;
class Handle_PColgp_HArray2OfXY;
class PColgp_FieldOfHArray2OfXY;
class Handle_PColgp_HArray2OfDir;
class PColgp_FieldOfHArray2OfDir;
class Handle_PColgp_HArray2OfPnt;
class PColgp_FieldOfHArray2OfPnt;
class Handle_PColgp_HArray2OfVec;
class PColgp_FieldOfHArray2OfVec;
class Handle_PColgp_HArray2OfXYZ;
class PColgp_FieldOfHArray2OfXYZ;
class Handle_PColgp_HSequenceOfDir;
class Handle_PColgp_SeqNodeOfHSequenceOfDir;
class Handle_PColgp_HSequenceOfPnt;
class Handle_PColgp_SeqNodeOfHSequenceOfPnt;
class Handle_PColgp_HSequenceOfVec;
class Handle_PColgp_SeqNodeOfHSequenceOfVec;
class Handle_PColgp_HSequenceOfXYZ;
class Handle_PColgp_SeqNodeOfHSequenceOfXYZ;
class Handle_PGeom2d_Transformation;
class Handle_PGeom2d_Geometry;
class Handle_PGeom2d_Point;
class Handle_PGeom2d_CartesianPoint;
class Handle_PGeom2d_Vector;
class Handle_PGeom2d_Direction;
class Handle_PGeom2d_VectorWithMagnitude;
class Handle_PGeom2d_AxisPlacement;
class Handle_PGeom2d_Curve;
class Handle_PGeom2d_Line;
class Handle_PGeom2d_Conic;
class Handle_PGeom2d_Circle;
class Handle_PGeom2d_Ellipse;
class Handle_PGeom2d_Hyperbola;
class Handle_PGeom2d_Parabola;
class Handle_PGeom2d_BoundedCurve;
class Handle_PGeom2d_BezierCurve;
class Handle_PGeom2d_BSplineCurve;
class Handle_PGeom2d_TrimmedCurve;
class Handle_PGeom2d_OffsetCurve;
class Handle_PGeom_Transformation;
class Handle_PGeom_Geometry;
class Handle_PGeom_Point;
class Handle_PGeom_CartesianPoint;
class Handle_PGeom_Vector;
class Handle_PGeom_Direction;
class Handle_PGeom_VectorWithMagnitude;
class Handle_PGeom_AxisPlacement;
class Handle_PGeom_Axis1Placement;
class Handle_PGeom_Axis2Placement;
class Handle_PGeom_Curve;
class Handle_PGeom_Line;
class Handle_PGeom_Conic;
class Handle_PGeom_Circle;
class Handle_PGeom_Ellipse;
class Handle_PGeom_Hyperbola;
class Handle_PGeom_Parabola;
class Handle_PGeom_BoundedCurve;
class Handle_PGeom_BezierCurve;
class Handle_PGeom_BSplineCurve;
class Handle_PGeom_TrimmedCurve;
class Handle_PGeom_OffsetCurve;
class Handle_PGeom_Surface;
class Handle_PGeom_ElementarySurface;
class Handle_PGeom_Plane;
class Handle_PGeom_ConicalSurface;
class Handle_PGeom_CylindricalSurface;
class Handle_PGeom_SphericalSurface;
class Handle_PGeom_ToroidalSurface;
class Handle_PGeom_SweptSurface;
class Handle_PGeom_SurfaceOfLinearExtrusion;
class Handle_PGeom_SurfaceOfRevolution;
class Handle_PGeom_BoundedSurface;
class Handle_PGeom_BezierSurface;
class Handle_PGeom_BSplineSurface;
class Handle_PGeom_RectangularTrimmedSurface;
class Handle_PGeom_OffsetSurface;
class Handle_PColPGeom_HArray1OfCurve;
class PColPGeom_FieldOfHArray1OfCurve;
class Handle_PColPGeom_HArray1OfBoundedCurve;
class PColPGeom_FieldOfHArray1OfBoundedCurve;
class Handle_PColPGeom_HArray1OfBezierCurve;
class PColPGeom_FieldOfHArray1OfBezierCurve;
class Handle_PColPGeom_HArray1OfBSplineCurve;
class PColPGeom_FieldOfHArray1OfBSplineCurve;
class Handle_PColPGeom_HArray1OfSurface;
class PColPGeom_FieldOfHArray1OfSurface;
class Handle_PColPGeom_HArray1OfBoundedSurface;
class PColPGeom_FieldOfHArray1OfBoundedSurface;
class Handle_PColPGeom_HArray2OfSurface;
class PColPGeom_FieldOfHArray2OfSurface;
class Handle_PColPGeom_HArray2OfBoundedSurface;
class PColPGeom_FieldOfHArray2OfBoundedSurface;
class Handle_PColPGeom_HArray2OfBezierSurface;
class PColPGeom_FieldOfHArray2OfBezierSurface;
class Handle_PColPGeom_HArray2OfBSplineSurface;
class PColPGeom_FieldOfHArray2OfBSplineSurface;
class Handle_PColPGeom2d_HArray1OfCurve;
class PColPGeom2d_FieldOfHArray1OfCurve;
class Handle_PColPGeom2d_HArray1OfBoundedCurve;
class PColPGeom2d_FieldOfHArray1OfBoundedCurve;
class Handle_PColPGeom2d_HArray1OfBezierCurve;
class PColPGeom2d_FieldOfHArray1OfBezierCurve;
class Handle_PColPGeom2d_HArray1OfBSplineCurve;
class PColPGeom2d_FieldOfHArray1OfBSplineCurve;
class PPoly_Triangle;
class Handle_PPoly_Triangulation;
class Handle_PPoly_Polygon3D;
class Handle_PPoly_Polygon2D;
class Handle_PPoly_PolygonOnTriangulation;
class Handle_PPoly_HArray1OfTriangle;
class PPoly_FieldOfHArray1OfTriangle;
class Handle_PTopoDS_HShape;
class Handle_PTopoDS_TShape;
class Handle_PTopoDS_TVertex;
class Handle_PTopoDS_Vertex;
class Handle_PTopoDS_TEdge;
class Handle_PTopoDS_Edge;
class Handle_PTopoDS_TWire;
class Handle_PTopoDS_Wire;
class Handle_PTopoDS_TFace;
class Handle_PTopoDS_Face;
class Handle_PTopoDS_TShell;
class Handle_PTopoDS_Shell;
class Handle_PTopoDS_TSolid;
class Handle_PTopoDS_Solid;
class Handle_PTopoDS_TCompSolid;
class Handle_PTopoDS_CompSolid;
class Handle_PTopoDS_TCompound;
class Handle_PTopoDS_Compound;
class Handle_PTopoDS_HArray1OfHShape;
class PTopoDS_FieldOfHArray1OfHShape;
class PTopoDS_Shape1;
class Handle_PTopoDS_TShape1;
class Handle_PTopoDS_TVertex1;
class Handle_PTopoDS_TEdge1;
class Handle_PTopoDS_TWire1;
class Handle_PTopoDS_TFace1;
class Handle_PTopoDS_TShell1;
class Handle_PTopoDS_TSolid1;
class Handle_PTopoDS_TCompSolid1;
class Handle_PTopoDS_TCompound1;
class Handle_PTopoDS_HArray1OfShape1;
class PTopoDS_FieldOfHArray1OfShape1;
class Handle_PBRep_CurveRepresentation;
class Handle_PBRep_GCurve;
class Handle_PBRep_Curve3D;
class Handle_PBRep_CurveOnSurface;
class Handle_PBRep_CurveOnClosedSurface;
class Handle_PBRep_Polygon3D;
class Handle_PBRep_PolygonOnTriangulation;
class Handle_PBRep_PolygonOnClosedTriangulation;
class Handle_PBRep_PolygonOnSurface;
class Handle_PBRep_PolygonOnClosedSurface;
class Handle_PBRep_CurveOn2Surfaces;
class Handle_PBRep_PointRepresentation;
class Handle_PBRep_PointOnCurve;
class Handle_PBRep_PointsOnSurface;
class Handle_PBRep_PointOnCurveOnSurface;
class Handle_PBRep_PointOnSurface;
class Handle_PBRep_TFace;
class Handle_PBRep_TEdge;
class Handle_PBRep_TVertex;
class Handle_PBRep_TFace1;
class Handle_PBRep_TEdge1;
class Handle_PBRep_TVertex1;
class Handle_PCDMShape_Document;
class Handle_Standard_Persistent;
class Standard_Storable;
class Handle_PCollection_HAsciiString;
class Handle_PMMgt_PManaged;
class gp_Trsf;
class gp_Circ2d;
class gp_Dir2d;
class gp_Lin2d;
class gp_Pnt2d;
class gp_Vec2d;
class gp_XY;
class gp_Dir;
class gp_Pnt;
class gp_Vec;
class gp_XYZ;
class gp_Trsf2d;
class gp_Ax2d;
class gp_Ax22d;
class Handle_PColStd_HArray1OfReal;
class Handle_PColStd_HArray1OfInteger;
class gp_Ax1;
class gp_Ax2;
class gp_Ax3;
class Handle_PColStd_HArray2OfReal;
class Handle_PCDM_Document;
class DBC_VArrayOfCharacter;
class Handle_PCollection_HExtendedString;
class gp_Mat;
class gp_Mat2d;
class PColStd_FieldOfHArray1OfReal;
class PColStd_FieldOfHArray1OfInteger;
class PColStd_FieldOfHArray2OfReal;
class DBC_VArrayOfExtCharacter;
// File generated by Schema (Schema)
//
//                     Copyright (C) 1991 - 2000 by  
//                      Matra Datavision SA.  All rights reserved.
//  
//                     Copyright (C) 2001 - 2004 by
//                     Open CASCADE SA.  All rights reserved.
// 
// This file is part of the Open CASCADE Technology software.
//
// This software may be distributed and/or modified under the terms and
// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
// and appearing in the file LICENSE included in the packaging of this file.
//  
// This software is distributed on an "AS IS" basis, without warranty of any
// kind, and Open CASCADE SA hereby disclaims all such warranties,
// including without limitation, any warranties of merchantability, fitness
// for a particular purpose or non-infringement. Please see the License for
// the specific terms and conditions governing rights and limitations under the
// License.

#ifndef _ShapeSchema_HeaderFile
#define _ShapeSchema_HeaderFile

#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif
#ifndef _Storage_Macros_HeaderFile
#include <Storage_Macros.hxx>
#endif
#ifndef _Storage_stCONSTclCOM_HeaderFile
#include <Storage_stCONSTclCOM.hxx>
#endif
#ifndef _Handle_Storage_Schema_HeaderFile
#include <Handle_Storage_Schema.hxx>
#endif

class Handle_Standard_Type;
Standard_EXPORT Handle_Standard_Type& ShapeSchema_Type_();
class Standard_Transient;
class Handle(Storage_Schema);

class ShapeSchema;

class Handle(ShapeSchema) : public Handle(Storage_Schema) {
  public:
    Handle(ShapeSchema)():Handle(Storage_Schema)() {} 
    Handle(ShapeSchema)(const Handle(ShapeSchema)& aHandle) : Handle(Storage_Schema)(aHandle) 
     {
     }

    Handle(ShapeSchema)(const ShapeSchema* anItem) : Handle(Storage_Schema)((Storage_Schema *)anItem) 
     {
     }

    Handle(ShapeSchema)& operator=(const Handle(ShapeSchema)& aHandle)
     {
      Assign(aHandle.Access());
      return *this;
     }

    Handle(ShapeSchema)& operator=(const ShapeSchema* anItem)
     {
      Assign((Standard_Transient *)anItem);
      return *this;
     }

    ShapeSchema* operator->() 
     {
      return (ShapeSchema *)ControlAccess();
     }

    ShapeSchema* operator->() const 
     {
      return (ShapeSchema *)ControlAccess();
     }

   ~Handle(ShapeSchema)(){};

   static const Handle(ShapeSchema) DownCast(const Handle(Storage_Schema)& AnObject) 
   {
     Handle(ShapeSchema) _anOtherObject;

     if (!AnObject.IsNull()) {
        if (AnObject->IsKind(STANDARD_TYPE(ShapeSchema))) {
          _anOtherObject = Handle(ShapeSchema)((Handle(ShapeSchema)&)AnObject);
        }
     }

     return _anOtherObject ;
   }
};

#ifndef _Storage_CallBack_HeaderFile_
#include <Storage_CallBack.hxx>
#endif
#ifndef _Storage_BaseDriver_HeaderFile_
#include <Storage_BaseDriver.hxx>
#endif

class ShapeSchema : public Storage_Schema {
public:

  Storage_DECLARE_SCHEMA_METHODS(ShapeSchema)

  Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const 
  { 
    return (STANDARD_TYPE(ShapeSchema) == AType || Storage_Schema::IsKind(AType)); 
  }

  const Handle(Standard_Type)& DynamicType() const 
  { 
    return STANDARD_TYPE(ShapeSchema) ; 
  }
};

#endif
