{-- TerraHS - Interface between TerraLib and Haskell

    (c) Sergio Costa (INPE) - Setembro, 2005

	This program is free software; you can redistribute it 
    and/or modify it under the terms of the GNU General 
    Public License 2.1 as published by the Free Software Foundation

{--  --}

module TerraHS.Algebras.Spatial.GeoObjects
		-- * The @TeGeoObject@ type
		--TeGeoObject (..),
		-- * The @TeGeoObjects@ class
		GeoObjects (..), 

import Foreign.C.String

import TerraHS.Algebras.Spatial.Geometries
import TerraHS.Algebras.Spatial.Points
import TerraHS.Algebras.Spatial.Lines
import TerraHS.Algebras.Spatial.Polygons
import TerraHS.Algebras.Base.Ids
import TerraHS.Algebras.Base.Attribute

class (Num n,
		Points p n, 
		Lines l n,
		Polygons pg l n, 
		Geometries g pg l p n,
		Ids i,
		Values v,
		Attributes at v
		=> GeoObjects a i at v g pg l p n  | a -> i at v g pg l p n  where
	-- | Returns the object identification
	getId :: a -> i
	-- | Returns the attributes list from a geoobject
	getAttributes :: a -> [at]
	-- | Returns the geometries list from a geoobject
	getGeometries :: a -> [g]