Portability | not portable |
---|---|

Stability | experimental |

Maintainer | Birte Wagner, Sebastian Philipp (sebastian@spawnhost.de) |

Safe Haskell | None |

Internal implementations. Use Data.RTree instead

- data RTree a
- empty :: RTree a
- singleton :: MBB -> a -> RTree a
- insert :: MBB -> a -> RTree a -> RTree a
- insertWith :: (a -> a -> a) -> MBB -> a -> RTree a -> RTree a
- delete :: MBB -> RTree a -> RTree a
- mapMaybe :: (a -> Maybe b) -> RTree a -> RTree b
- union :: RTree a -> RTree a -> RTree a
- unionWith :: (a -> a -> a) -> RTree a -> RTree a -> RTree a
- lookup :: MBB -> RTree a -> Maybe a
- lookupRange :: MBB -> RTree a -> [a]
- lookupRangeWithKey :: MBB -> RTree a -> [(MBB, a)]
- length :: RTree a -> Int
- null :: RTree a -> Bool
- keys :: RTree a -> [MBB]
- values :: RTree a -> [a]
- fromList :: [(MBB, a)] -> RTree a
- toList :: RTree a -> [(MBB, a)]
- foldWithMBB :: (MBB -> a -> b) -> (MBB -> [b] -> b) -> b -> RTree a -> b
- getMBB :: RTree a -> MBB
- pp :: Show a => RTree a -> IO ()
- isValid :: Show b => b -> RTree a -> Bool
- unionDistinct :: RTree a -> RTree a -> RTree a
- unionDistinctWith :: (a -> a -> a) -> RTree a -> RTree a -> RTree a
- getC1 :: RTree a -> RTree a
- getC2 :: RTree a -> RTree a
- getC3 :: RTree a -> RTree a
- getC4 :: RTree a -> RTree a

# Data Type

# Constructors

# Modification

insert :: MBB -> a -> RTree a -> RTree aSource

Inserts an element whith the given `MBB`

and a value in a tree. An existing value will be overwritten with the given one.

insert = insertWith const

insertWith :: (a -> a -> a) -> MBB -> a -> RTree a -> RTree aSource

Inserts an element whith the given `MBB`

and a value in a tree. The combining function will be used if the value already exists.

delete :: MBB -> RTree a -> RTree aSource

Delete a key and its value from the RTree. When the key is not a member of the tree, the original tree is returned.

## Merging

union :: RTree a -> RTree a -> RTree aSource

Unifies the first and the second tree into one.
If an `MBB`

is a key in both trees, the value from the left tree is chosen.

union = unionWith const

unionWith :: (a -> a -> a) -> RTree a -> RTree a -> RTree aSource

Unifies the first and the second tree into one. The combining function is used for elemets which exists in both trees.

# Searching and Properties

lookupRange :: MBB -> RTree a -> [a]Source

returns all values, which are located in the given bounding box.

lookupRangeWithKey :: MBB -> RTree a -> [(MBB, a)]Source

returns all keys and values, which are located in the given bounding box.

# Lists

toList :: RTree a -> [(MBB, a)]Source

creates a list of pairs out of a tree

toList t = zip (keys t) (values t)

# Internal and Testing

foldWithMBB :: (MBB -> a -> b) -> (MBB -> [b] -> b) -> b -> RTree a -> bSource

unionDistinct :: RTree a -> RTree a -> RTree aSource

Únifies left and right RTeee. Will create invalid trees, if the tree is not a leaf and contains MBBs which also exists in the left tree. Much faster than union, though.