// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _PTopLoc_Location_HeaderFile
#define _PTopLoc_Location_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>

#include <Handle_PTopLoc_ItemLocation.hxx>
#include <Standard_Storable.hxx>
#include <Handle_PTopLoc_Datum3D.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_PrimitiveTypes.hxx>
class PTopLoc_ItemLocation;
class Standard_NoSuchObject;
class PTopLoc_Datum3D;


Standard_EXPORT const Handle(Standard_Type)& STANDARD_TYPE(PTopLoc_Location);

//! A Storable  composed local coordinate system. Made
//! with local   coordinate systems raised   to  power
//! elevation.
//!
//! A Location is either :
//!
//! * The Identity.
//!
//! * The product  of a Datum3D raised  to a power and
//! an other Location called the next Location.
class PTopLoc_Location 
{

public:

  DEFINE_STANDARD_ALLOC

  
  //! Creates an Identity Location.
  Standard_EXPORT PTopLoc_Location();
  
  //! Creates a location being the product.
  //! N * D ^ P
  Standard_EXPORT PTopLoc_Location(const Handle(PTopLoc_Datum3D)& D, const Standard_Integer P, const PTopLoc_Location& N);
  
  //! True when the location is an identity.
  Standard_EXPORT   Standard_Boolean IsIdentity()  const;
  
  //! Returns the first Datum. An error is raised if the
  //! location is an identity.
  Standard_EXPORT   Handle(PTopLoc_Datum3D) Datum3D()  const;
  
  //! Returns the power elevation of the first datum. An
  //! error is raised if the location is an identity.
  Standard_EXPORT   Standard_Integer Power()  const;
  
  //! Returns next Location. An error is raised if the
  //! location is an identity.
  Standard_EXPORT   PTopLoc_Location Next()  const;
    Handle(PTopLoc_ItemLocation) _CSFDB_GetPTopLoc_LocationmyData() const { return myData; }
    void _CSFDB_SetPTopLoc_LocationmyData(const Handle(PTopLoc_ItemLocation)& p) { myData = p; }



protected:




private: 


  Handle(PTopLoc_ItemLocation) myData;


};







#endif // _PTopLoc_Location_HeaderFile
