MPS 2022.3 Help

Custom Containers

Custom containers is a simple way to provide own implementation of standard container types, thus allowing for easy extensibility of the collections language.

Example: weakHashMap

Provided the following declaration is reachable from the model currently being edited...

custom containers WeakCollections { public container weakHashMap<K, V> specifies map<K, V> { runtime type: WeakHashMap<K, V> factory: <no factory> } public container weakHashSet<E> specifies set<E> { runtime type: WeakSet<E> factory: <no factory> } }

... one can use the weak version of hashmap thusly:

map<Object, int> myMap= new weakHashMap<Object, int>;

Custom Containers Declaration

A root node of concept CustomContainers may have one or more declarations.

[public|protected|private] container containerName<TypeVar, ...> specifies container_type<TypeVar, ...> { runtime type: Classifier<TypeVar, ...> factory: expression of type Classifier<> (optional) }

declaration part

allowed contents

containerName

any valid identifier

container_type

one of the existing container types of the collections language

runtime type

Java classifier which represent implementation of the container

factory

(optional) container creation expression;

the classifier's default constructor used if undefined

Last modified: 02 September 2021