# Raktárak ## Tárolók A nyílt architektúra lényeges része. A beolvasott forráskódok is ebbe a strtuktúrába töltödnek be, és kérdezhetőek le. Kulcs/érték alapon adatokat lehet tárolni bennük. Lehetnek nyílt (osztott) elérésűek. Célok: - adatot lehet megosztani különböző folyamatok között, - a transzformációhoz keresési információkat gyorstárazhatják, - csomagokat lehet importálni, akár dinamikus (igény szerinti) betöltéssel - a végrehajtáshoz szükséges futtatható kódot tárolhatják. ## Lekérdezés Lekérdezéseket szabadon lehet megvalósítani, de az egyszerűség kedvéért projektekhez és raktárakhoz egy pici DSL alapú bővítés készült. A `*query` definíciók automatikusan metódusokká transzformálódnak. Keresési feltételek bővíthetőek. Lekérdezés megvalósítás: ``` *class TestQuery { *method bool testIntegerButNot5 (Node value) { *if (value.@type != "Data::Int32") *return false; *return *cast(value) != 5; }; *query query1 (System::Repository repository) { *for a *where testIntegerButNot5(a) *return "0" + a.@string; }; }; ``` Lekérdezés használata: ``` *function test () { System::Respository repository; repository.storeItem("one", 1); repository.storeItem("two", 2); repository.storeItem("five", 5); repository.storeItem("six", "six"); Query::Result result := TestQuery().query1(repository); *foreach (Data::Int32 value: result.container) { System::stdout("Query result: %1\n"[value]); } }; ``` ## Csomag betöltés A raktár tartalmát előre elkészített csomagok betöltésével is bővíteni lehet. Jelenleg csak Modema/Lang nyelven megírt tartalom betöltésére van lehetőség.