Key/value storage services

The main services is App::data_store, a DataStore holding any serializable Nit object.

Introduced classes

class DataStore

app :: DataStore

Simple data storage facility

Redefined classes

redef class App

app :: data_store $ App

App subclasses are cross-platform applications

All class definitions

redef class App

app :: data_store $ App

App subclasses are cross-platform applications
class DataStore

app $ DataStore

Simple data storage facility
package_diagram app::data_store data_store app::app_base app_base app::data_store->app::app_base serialization serialization app::data_store->serialization core core app::app_base->core poset poset serialization->poset meta meta serialization->meta json json serialization->json ...core ... ...core->core ...poset ... ...poset->poset ...meta ... ...meta->meta ...json ... ...json->json android::data_store data_store android::data_store->app::data_store app::ui_example ui_example app::ui_example->app::data_store ios::data_store data_store ios::data_store->app::data_store linux::data_store data_store linux::data_store->app::data_store android::ui ui android::ui->android::data_store android::ui... ... android::ui...->android::ui a_star-m a_star-m a_star-m->app::ui_example a_star-m->ios::data_store a_star-m... ... a_star-m...->a_star-m linux::ui ui linux::ui->linux::data_store linux::ui... ... linux::ui...->linux::ui

Ancestors

module abstract_collection

core :: abstract_collection

Abstract collection classes and services.
module abstract_text

core :: abstract_text

Abstract class for manipulation of sequences of characters
module array

core :: array

This module introduces the standard array structure.
module bitset

core :: bitset

Services to handle BitSet
module bytes

core :: bytes

Services for byte streams and arrays
module caching

serialization :: caching

Services for caching serialization engines
module circular_array

core :: circular_array

Efficient data structure to access both end of the sequence.
module codec_base

core :: codec_base

Base for codecs to use with streams
module codecs

core :: codecs

Group module for all codec-related manipulations
module collection

core :: collection

This module define several collection classes.
module core

core :: core

Standard classes and methods used by default by Nit programs and libraries.
module engine_tools

serialization :: engine_tools

Advanced services for serialization engines
module environ

core :: environ

Access to the environment variables of the process
module error

core :: error

Standard error-management infrastructure.
module exec

core :: exec

Invocation and management of operating system sub-processes.
module file

core :: file

File manipulations (create, read, write, etc.)
module fixed_ints

core :: fixed_ints

Basic integers of fixed-precision
module fixed_ints_text

core :: fixed_ints_text

Text services to complement fixed_ints
module flat

core :: flat

All the array-based text representations
module gc

core :: gc

Access to the Nit internal garbage collection mechanism
module hash_collection

core :: hash_collection

Introduce HashMap and HashSet.
module inspect

serialization :: inspect

Refine Serializable::inspect to show more useful information
module iso8859_1

core :: iso8859_1

Codec for ISO8859-1 I/O
module kernel

core :: kernel

Most basic classes and methods.
module list

core :: list

This module handle double linked lists
module math

core :: math

Mathematical operations
module meta

meta :: meta

Simple user-defined meta-level to manipulate types of instances as object.
module native

core :: native

Native structures for text and bytes
module numeric

core :: numeric

Advanced services for Numeric types
module protocol

core :: protocol

module queue

core :: queue

Queuing data structures and wrappers
module range

core :: range

Module for range of discrete objects.
module re

core :: re

Regular expression support for all services based on Pattern
module ropes

core :: ropes

Tree-based representation of a String.
module serialization_core

serialization :: serialization_core

Abstract services to serialize Nit objects to different formats
module sorter

core :: sorter

This module contains classes used to compare things and sorts arrays.
module stream

core :: stream

Input and output streams of characters
module text

core :: text

All the classes and methods related to the manipulation of text entities
module time

core :: time

Management of time and dates
module union_find

core :: union_find

union–find algorithm using an efficient disjoint-set data structure
module utf8

core :: utf8

Codec for UTF-8 I/O

Parents

module app_base

app :: app_base

Base of the app.nit framework, defines App
module serialization

serialization :: serialization

General serialization services

Children

module data_store

android :: data_store

Implements app::data_store using shared_preferences
module data_store

ios :: data_store

Implements app::data_store using NSUserDefaults
module data_store

linux :: data_store

app::data_store implementation on GNU/Linux
module ui_example

app :: ui_example

User interface example using app::ui

Descendants

module a_star-m

a_star-m

module http_request

android :: http_request

Android implementation of app:http_request
module ui

linux :: ui

Implementation of the app.nit UI module for GNU/Linux
module ui

android :: ui

Views and services to use the Android native user interface
module ui_test

android :: ui_test

Test for app.nit's UI services
# Key/value storage services
#
# The main services is `App::data_store`, a `DataStore` holding any
# serializable Nit object.
module data_store

import app_base
import serialization

# Platform variations
import linux::data_store is conditional(linux)
import android::data_store is conditional(android)
import ios::data_store is conditional(ios)

redef class App

	# Services to store and load data
	#
	# ~~~
	# import app::ui
	# import app::data_store
	#
	# class MyWindow
	#     super Window
	#
	#     var state = "Simple string or any serializable class"
	#
	#     redef fun on_save_state do app.data_store["state"] = state
	#
	#     redef fun on_restore_state
	#     do
	#         var state = app.data_store["state"]
	#         if state isa String then self.state = state
	#     end
	# end
	# ~~~
	var data_store = new DataStore is lazy
end

# Simple data storage facility
#
# Write values with `[]=` and read with `[]`.
# ~~~
# import linux::data_store # Needed for testing only
#
# class A
#     serialize
#
#     var b = true
#     var f = 1.234
# end
#
# var data_store = new DataStore
# data_store["one"] = 1
# data_store["str"] = "Some string"
# data_store["a"] = new A
#
# assert data_store["one"] == 1
# assert data_store["str"] == "Some string"
# assert data_store["a"].as(A).b
# assert data_store["a"].as(A).f == 1.234
# assert data_store["other"] == null
# ~~~
#
# Set to `null` to clear a value.
# ~~~
# data_store["one"] = null
# assert data_store["one"] == null
# ~~~
class DataStore

	# Get the object stored at `key`, or null if nothing is available
	fun [](key: String): nullable Object is abstract

	# Store `value` at `key`
	fun []=(key: String, value: nullable Serializable) is abstract
end
lib/app/data_store.nit:17,1--93,3