morton-page
v0.1.0
Published
Morton order index for multidimensional pages
Downloads
27
Readme
morton-page
A data structure for maintaining a list of pages keyed by Morton order (also known as z-order or interleaving).
Example
//Create a 2D page store having a capacity of (1<<4) == 16
var pageStore = require("morton-page")(2, 4)
//Add a page
pageStore.add({key: [10, 10], value: "foo"})
//Retrieve a page
var x = pageStore.get(10, 10)
console.log(x)
//Remove the page
pageStore.remove(10, 10)
//Try pulling the page out (returns null now)
console.log(pageStore.get(10, 10))
Install
npm install morton-page
API
var createPageStore = require("morton-page")
Constructor
var store = createPageStore(dimension, log_size[, shift])
Creates a z-order page store.
dimension
is the dimension of the pageslog_size
is the log base 2 of the number of buckets in the storeshift
is the number of bits to shift each page by before indexing
Returns An instance of a MortonPageStore
class specialized for the given input parameters.
Methods
store.add(page)
Adds a page to the store
page
is an object with a field calledkey
which is an array of coordinates representing the identifier of the page in the store.
store.get(i0, i1, ...)
Retrieves the page with the given key from the page store
i0, i1, ...
is the name of the page
Returns The page with the key i0, i1, ...
if it is in the store, or null
otherwise.
store.remove(i0, i1, ...)
Removes the page with the given key from the store.
i0, i1, ...
is the key of the page
FAQ
Why use this instead of an object?
Basically it is faster and does not require creating any string objects. All of the methods in this class require 0 allocations and thus will not trigger garbage collection events.
Credits
(c) 2013 Mikola Lysenko. MIT License