From 342b0cece98090281f7c6a2fc0b99e246bad863f Mon Sep 17 00:00:00 2001 From: Speiger Date: Wed, 7 Dec 2022 06:27:47 +0100 Subject: [PATCH] Collection Module Works now. (Least Configurable for obvious Reasons) --- ModulSettings.json | 250 ++++++++++-------- .../src/builder/modules/AsyncModule.java | 2 +- .../src/builder/modules/CollectionModule.java | 30 ++- .../templates/collections/Collection.template | 9 + .../templates/collections/Iterable.template | 4 + .../templates/lists/ArrayList.template | 39 ++- .../templates/lists/CopyOnWriteList.template | 12 +- .../templates/lists/ImmutableList.template | 8 +- .../templates/utils/Lists.template | 22 +- 9 files changed, 245 insertions(+), 131 deletions(-) diff --git a/ModulSettings.json b/ModulSettings.json index bcffe153..9ea747b7 100644 --- a/ModulSettings.json +++ b/ModulSettings.json @@ -113,7 +113,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -121,7 +125,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -129,7 +133,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -156,7 +160,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -185,7 +189,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -214,7 +218,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -243,7 +247,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -272,7 +276,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -301,7 +305,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -330,7 +334,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -359,7 +363,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -388,7 +392,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -404,7 +408,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -412,7 +420,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -420,7 +428,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -431,7 +439,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -462,7 +470,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -491,7 +499,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -520,7 +528,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -549,7 +557,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -578,7 +586,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -607,7 +615,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -636,7 +644,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -665,7 +673,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -694,7 +702,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -710,7 +718,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -718,7 +730,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -726,7 +738,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -737,7 +749,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -768,7 +780,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -797,7 +809,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -826,7 +838,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -855,7 +867,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -884,7 +896,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -913,7 +925,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -942,7 +954,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -971,7 +983,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1000,7 +1012,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1016,7 +1028,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -1024,7 +1040,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -1032,7 +1048,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -1043,7 +1059,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -1074,7 +1090,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1103,7 +1119,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1132,7 +1148,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1161,7 +1177,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1190,7 +1206,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1219,7 +1235,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1248,7 +1264,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1277,7 +1293,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1306,7 +1322,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1322,7 +1338,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -1330,7 +1350,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -1338,7 +1358,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -1349,7 +1369,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -1380,7 +1400,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1409,7 +1429,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1438,7 +1458,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1467,7 +1487,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1496,7 +1516,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1525,7 +1545,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1554,7 +1574,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1583,7 +1603,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1612,7 +1632,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1628,7 +1648,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -1636,7 +1660,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -1644,7 +1668,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -1655,7 +1679,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -1686,7 +1710,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1715,7 +1739,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1744,7 +1768,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1773,7 +1797,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1802,7 +1826,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1831,7 +1855,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1860,7 +1884,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1889,7 +1913,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1918,7 +1942,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -1934,7 +1958,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -1942,7 +1970,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -1950,7 +1978,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -1961,7 +1989,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -1992,7 +2020,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2021,7 +2049,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2050,7 +2078,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2079,7 +2107,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2108,7 +2136,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2137,7 +2165,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2166,7 +2194,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2195,7 +2223,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2224,7 +2252,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2240,7 +2268,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -2248,7 +2280,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -2256,7 +2288,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -2267,7 +2299,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, @@ -2298,7 +2330,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2327,7 +2359,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2356,7 +2388,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2385,7 +2417,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2414,7 +2446,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2443,7 +2475,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2472,7 +2504,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2501,7 +2533,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2530,7 +2562,7 @@ "EnumMap": true, "HashMap": true, "ImmutableMap": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashMap": true, "LinkedEnumMap": true, "LinkedHashMap": true, @@ -2546,7 +2578,11 @@ } }, "Collection": { - "Enabled": true + "Enabled": true, + "IArray": true, + "Splititerators": true, + "Strategy": true, + "Streams": true }, "PriorityQueue": { "Enabled": true, @@ -2554,7 +2590,7 @@ "Dequeue": true, "FiFoQueue": true, "HeapQueue": true, - "Implementations": false, + "Implementations": true, "Wrappers": true }, "List": { @@ -2562,7 +2598,7 @@ "ArrayList": true, "CopyOnWriteList": true, "ImmutableList": true, - "Implementations": false, + "Implementations": true, "LinkedList": true, "Wrappers": true }, @@ -2573,7 +2609,7 @@ "CustomHashSet": true, "HashSet": true, "ImmutableSet": true, - "Implementations": false, + "Implementations": true, "LinkedCustomHashSet": true, "LinkedHashSet": true, "OrderedSet": true, diff --git a/src/builder/java/speiger/src/builder/modules/AsyncModule.java b/src/builder/java/speiger/src/builder/modules/AsyncModule.java index fd257751..75a0eb57 100644 --- a/src/builder/java/speiger/src/builder/modules/AsyncModule.java +++ b/src/builder/java/speiger/src/builder/modules/AsyncModule.java @@ -20,7 +20,7 @@ public class AsyncModule extends BaseModule @Override protected void loadBlockades() { if(!isModuleEnabled()) { - addBlockedFiles("AsyncBuilder"); + addBlockedFiles("AsyncBuilder", "Task"); } } @Override diff --git a/src/builder/java/speiger/src/builder/modules/CollectionModule.java b/src/builder/java/speiger/src/builder/modules/CollectionModule.java index a2c9afae..4987a423 100644 --- a/src/builder/java/speiger/src/builder/modules/CollectionModule.java +++ b/src/builder/java/speiger/src/builder/modules/CollectionModule.java @@ -1,5 +1,9 @@ package speiger.src.builder.modules; +import java.util.Arrays; +import java.util.Set; +import java.util.TreeSet; + import speiger.src.builder.ClassType; @SuppressWarnings("javadoc") @@ -12,12 +16,32 @@ public class CollectionModule extends BaseModule @Override protected void loadVariables() {} @Override - protected void loadFlags() {} - @Override public boolean areDependenciesLoaded(){ return isDependencyLoaded(JavaModule.INSTANCE); } + @Override - protected void loadBlockades() + public Set getModuleKeys(ClassType keyType, ClassType valueType) { + return new TreeSet<>(Arrays.asList("Streams", "Splititerators", "IArray", "Strategy")); + } + + @Override + protected void loadFlags() { + if(isModuleEnabled()) addKeyFlag("COLLECTION_MODULE"); + if(isModuleEnabled("Streams")) addKeyFlag("STREAM_FEATURE"); + if(isModuleEnabled("Splititerators")) addKeyFlag("SPLIT_ITERATOR_FEATURE"); + if(isModuleEnabled("IArray")) addKeyFlag("IARRAY_FEATURE"); + } + + @Override + protected void loadBlockades() { + if(!isModuleEnabled()) { + addBlockedFiles("Iterable", "Iterables", "Iterator", "Iterators", "BidirectionalIterator", "ListIterator"); + addBlockedFiles("Arrays", "Collection", "AbstractCollection", "Collections", "Stack"); + } + if(!isModuleEnabled("Splititerators")) addBlockedFiles("Splititerator", "Splititerators"); + if(!isModuleEnabled("IArray")) addBlockedFiles("IArray"); + if(!isModuleEnabled("Strategy")) addBlockedFiles("Strategy"); + if(keyType.isObject()) { addBlockedFiles("Stack"); addBlockedFiles("CollectionStreamTester"); diff --git a/src/builder/resources/speiger/assets/collections/templates/collections/Collection.template b/src/builder/resources/speiger/assets/collections/templates/collections/Collection.template index f3154cb9..85817e7d 100644 --- a/src/builder/resources/speiger/assets/collections/templates/collections/Collection.template +++ b/src/builder/resources/speiger/assets/collections/templates/collections/Collection.template @@ -5,16 +5,20 @@ import java.util.Collection; import java.util.Objects; import java.util.function.JAVA_PREDICATE; import java.util.function.Predicate; +#if SPLIT_ITERATOR_FEATURE && STREAM_FEATURE import java.util.stream.JAVA_STREAM; import java.util.stream.StreamSupport; #endif +#endif #if TYPE_OBJECT import java.util.function.Consumer; import speiger.src.collections.ints.functions.function.Int2ObjectFunction; #else import speiger.src.collections.PACKAGE.functions.CONSUMER; #endif +#if SPLIT_ITERATOR_FEATURE import speiger.src.collections.PACKAGE.utils.SPLIT_ITERATORS; +#endif import speiger.src.collections.PACKAGE.utils.COLLECTIONS; import speiger.src.collections.utils.ISizeProvider; import speiger.src.collections.utils.SanityChecks; @@ -291,6 +295,7 @@ public interface COLLECTION KEY_GENERIC_TYPE extends Collection, ITE */ public default COLLECTION KEY_GENERIC_TYPE unmodifiable() { return COLLECTIONS.unmodifiable(this); } +#if SPLIT_ITERATOR_FEATURE #if PRIMITIVES /** * Returns a Java-Type-Specific Stream to reduce boxing/unboxing. @@ -303,11 +308,15 @@ public interface COLLECTION KEY_GENERIC_TYPE extends Collection, ITE * @return a Stream of the closest java type */ default JAVA_STREAM parallelPrimitiveStream() { return StreamSupport.NEW_STREAM(SPLIT_ITERATORS.createJavaSplititerator(this, 0), true); } + #endif +#if STREAM_FEATURE /** * A Type Specific Type Splititerator to reduce boxing/unboxing * @return type specific splititerator */ @Override default SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createSplititerator(this, 0); } +#endif +#endif } \ No newline at end of file diff --git a/src/builder/resources/speiger/assets/collections/templates/collections/Iterable.template b/src/builder/resources/speiger/assets/collections/templates/collections/Iterable.template index fbfee5db..fecdeff3 100644 --- a/src/builder/resources/speiger/assets/collections/templates/collections/Iterable.template +++ b/src/builder/resources/speiger/assets/collections/templates/collections/Iterable.template @@ -49,7 +49,9 @@ import speiger.src.collections.PACKAGE.utils.ARRAYS; #if ASYNC_MODULE import speiger.src.collections.PACKAGE.utils.ASYNC_BUILDER; #endif +#if SPLIT_ITERATOR_FEATURE import speiger.src.collections.PACKAGE.utils.SPLIT_ITERATORS; +#endif import speiger.src.collections.PACKAGE.utils.ITERABLES; import speiger.src.collections.PACKAGE.utils.ITERATORS; #if !LINKED_HASH_SET_FEATURE && LINKED_CUSTOM_HASH_SET_FEATURE @@ -114,6 +116,7 @@ public interface ITERABLE KEY_GENERIC_TYPE extends Iterable iterator().forEachRemaining(input, action); } +#if SPLIT_ITERATOR_FEATURE /** * A Type Specific Type Splititerator to reduce boxing/unboxing * @return type specific splititerator @@ -121,6 +124,7 @@ public interface ITERABLE KEY_GENERIC_TYPE extends Iterable @Override default SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createUnknownSplititerator(iterator(), 0); } +#endif #if ASYNC_MODULE /** * Creates a Async Builder for moving work of the thread. diff --git a/src/builder/resources/speiger/assets/collections/templates/lists/ArrayList.template b/src/builder/resources/speiger/assets/collections/templates/lists/ArrayList.template index 1ec1b2b6..21b1cc67 100644 --- a/src/builder/resources/speiger/assets/collections/templates/lists/ArrayList.template +++ b/src/builder/resources/speiger/assets/collections/templates/lists/ArrayList.template @@ -8,7 +8,10 @@ import java.util.Collection; import java.util.Iterator; import java.util.Objects; #if TYPE_OBJECT +#if IARRAY_FEATURE || TYPE_OBJECT import java.util.function.Consumer; +#endif + import java.util.function.BiFunction; #endif import java.util.function.Predicate; @@ -38,33 +41,38 @@ import speiger.src.collections.utils.Stack; #else import speiger.src.collections.objects.utils.ObjectArrays; #endif -#if PRIMITIVES +#if PRIMITIVES && SPLIT_ITERATOR_FEATURE && STREAM_FEATURE import java.util.stream.JAVA_STREAM; import java.util.stream.StreamSupport; #endif +#if IARRAY_FEATURE import speiger.src.collections.PACKAGE.utils.IARRAY; +#endif +#if SPLIT_ITERATOR_FEATURE import speiger.src.collections.PACKAGE.collections.SPLIT_ITERATOR; import speiger.src.collections.PACKAGE.utils.SPLIT_ITERATORS; +#endif +#if !IARRAY_FEATURE +import speiger.src.collections.utils.IArray; +#endif import speiger.src.collections.utils.SanityChecks; -#if TYPE_OBJECT /** * A Type-Specific Array-based implementation of list that is written to reduce (un)boxing * - *

This implementation is optimized to improve how data is processed with interfaces like {@link IARRAY}, {@link Stack} +#if IARRAY_FEATURE + *

This implementation is optimized to improve how data is processed with interfaces like {@link IARRAY}, {@link STACK} +#else + *

This implementation is optimized to improve how data is processed with interfaces like {@link IArray}, {@link STACK} +#endif * and with optimized functions that use type-specific implementations for primitives and optimized logic for bulkactions. - * + * * @Type(T) */ -public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IARRAY, Stack +#if IARRAY_FEATURE +public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IARRAY KEY_GENERIC_TYPE, STACK KEY_GENERIC_TYPE #else -/** - * A Type-Specific Array-based implementation of list that is written to reduce (un)boxing - * - *

This implementation is optimized to improve how data is processed with interfaces like {@link IARRAY}, {@link STACK} - * and with optimized functions that use type-specific implementations for primitives and optimized logic for bulkactions. - */ -public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IARRAY, STACK +public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IArray, STACK KEY_GENERIC_TYPE #endif { static final int DEFAULT_ARRAY_SIZE = 10; @@ -587,6 +595,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE return data[(size() - 1) - index]; } +#if IARRAY_FEATURE /** * Provides the Underlying Array in the Implementation * @return underlying Array @@ -606,6 +615,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE return data.getClass() != Object[].class; } +#endif #endif /** * A Type Specific foreach function that reduces (un)boxing @@ -1159,8 +1169,8 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } - -#if PRIMITIVES +#if SPLIT_ITERATOR_FEATURE +#if PRIMITIVES && STREAM_FEATURE /** * Returns a Java-Type-Specific Stream to reduce boxing/unboxing. * @return a Stream of the closest java type @@ -1177,4 +1187,5 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE */ @Override public SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createArraySplititerator(data, size, 16464); } +#endif } \ No newline at end of file diff --git a/src/builder/resources/speiger/assets/collections/templates/lists/CopyOnWriteList.template b/src/builder/resources/speiger/assets/collections/templates/lists/CopyOnWriteList.template index 0e49659f..346e56a2 100644 --- a/src/builder/resources/speiger/assets/collections/templates/lists/CopyOnWriteList.template +++ b/src/builder/resources/speiger/assets/collections/templates/lists/CopyOnWriteList.template @@ -41,12 +41,14 @@ import speiger.src.collections.utils.Stack; #else import speiger.src.collections.objects.utils.ObjectArrays; #endif -#if PRIMITIVES +#if PRIMITIVES && STREAM_FEATURE && SPLIT_ITERATOR_FEATURE import java.util.stream.JAVA_STREAM; import java.util.stream.StreamSupport; #endif +#if SPLIT_ITERATOR_FEATURE import speiger.src.collections.PACKAGE.collections.SPLIT_ITERATOR; import speiger.src.collections.PACKAGE.utils.SPLIT_ITERATORS; +#endif import speiger.src.collections.utils.ITrimmable; import speiger.src.collections.utils.SanityChecks; @@ -1408,8 +1410,9 @@ public class COPY_ON_WRITE_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENER if (index < 0 || index > data.length) throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + data.length); } - -#if PRIMITIVES + +#if SPLIT_ITERATOR_FEATURE +#if PRIMITIVES && STREAM_FEATURE /** * Returns a Java-Type-Specific Stream to reduce boxing/unboxing. * @return a Stream of the closest java type @@ -1427,6 +1430,7 @@ public class COPY_ON_WRITE_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENER @Override public SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createArraySplititerator(data, data.length, 16464); } +#endif static final class COWIterator KEY_GENERIC_TYPE implements LIST_ITERATOR KEY_GENERIC_TYPE { KEY_TYPE[] data; @@ -2080,9 +2084,11 @@ public class COPY_ON_WRITE_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENER } } +#if SPLIT_ITERATOR_FEATURE @Override public SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createSplititerator(this, 16464); } +#endif @Override public LIST_ITERATOR KEY_GENERIC_TYPE listIterator(int index) { if(index < 0 || index > size()) throw new IndexOutOfBoundsException(); diff --git a/src/builder/resources/speiger/assets/collections/templates/lists/ImmutableList.template b/src/builder/resources/speiger/assets/collections/templates/lists/ImmutableList.template index 6476bafd..e3496dd8 100644 --- a/src/builder/resources/speiger/assets/collections/templates/lists/ImmutableList.template +++ b/src/builder/resources/speiger/assets/collections/templates/lists/ImmutableList.template @@ -29,12 +29,14 @@ import speiger.src.collections.PACKAGE.functions.function.PREDICATE; import speiger.src.collections.PACKAGE.functions.function.UNARY_OPERATOR; import speiger.src.collections.objects.utils.ObjectArrays; import speiger.src.collections.PACKAGE.utils.ITERATORS; -#if PRIMITIVES +#if PRIMITIVES && SPLIT_ITERATOR_FEATURE && STREAM_FEATURE import java.util.stream.JAVA_STREAM; import java.util.stream.StreamSupport; #endif +#if SPLIT_ITERATOR_FEATURE import speiger.src.collections.PACKAGE.collections.SPLIT_ITERATOR; import speiger.src.collections.PACKAGE.utils.SPLIT_ITERATORS; +#endif import speiger.src.collections.utils.SanityChecks; #if TYPE_OBJECT @@ -487,7 +489,8 @@ public class IMMUTABLE_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_T throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + data.length); } -#if PRIMITIVES +#if SPLIT_ITERATOR_FEATURE +#if PRIMITIVES && STREAM_FEATURE /** * Returns a Java-Type-Specific Stream to reduce boxing/unboxing. * @return a Stream of the closest java type @@ -505,6 +508,7 @@ public class IMMUTABLE_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_T @Override public SPLIT_ITERATOR KEY_GENERIC_TYPE spliterator() { return SPLIT_ITERATORS.createArraySplititerator(data, data.length, 16464); } +#endif private class LIST_ITER implements LIST_ITERATOR KEY_GENERIC_TYPE { int index; diff --git a/src/builder/resources/speiger/assets/collections/templates/utils/Lists.template b/src/builder/resources/speiger/assets/collections/templates/utils/Lists.template index 2663a000..19f2d53b 100644 --- a/src/builder/resources/speiger/assets/collections/templates/utils/Lists.template +++ b/src/builder/resources/speiger/assets/collections/templates/utils/Lists.template @@ -2,10 +2,14 @@ package speiger.src.collections.PACKAGE.utils; import java.util.Collection; import java.util.List; +#if IARRAY_FEATURE import java.util.Objects; +#endif import java.util.Random; import java.util.RandomAccess; +#if IARRAY_FEATURE || TYPE_OBJECT import java.util.function.Consumer; +#endif #if PRIMITIVES import java.nio.JAVA_BUFFER; #endif @@ -17,7 +21,9 @@ import speiger.src.collections.PACKAGE.functions.CONSUMER; import speiger.src.collections.PACKAGE.lists.ABSTRACT_LIST; import speiger.src.collections.PACKAGE.lists.LIST; import speiger.src.collections.PACKAGE.lists.LIST_ITERATOR; +#if IARRAY_FEATURE import speiger.src.collections.PACKAGE.utils.ARRAYS; +#endif import speiger.src.collections.utils.SanityChecks; /** @@ -60,7 +66,11 @@ public class LISTS * @return a synchronized list wrapper. If the list is implementing RandomAccess or IARRAY that is also transferred. If the List already a synchronized wrapper then it just returns itself. */ public static GENERIC_KEY_BRACES LIST KEY_GENERIC_TYPE synchronize(LIST KEY_GENERIC_TYPE l) { +#if IARRAY_FEATURE return l instanceof SynchronizedList ? l : (l instanceof IARRAY ? new SynchronizedArrayListBRACES(l) : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l) : new SynchronizedListBRACES(l))); +#else + return l instanceof SynchronizedList ? l : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l) : new SynchronizedListBRACES(l)); +#endif } /** @@ -71,7 +81,11 @@ public class LISTS * @return a synchronized list wrapper. If the list is implementing RandomAccess or IARRAY that is also transferred. If the List already a synchronized wrapper then it just returns itself. */ public static GENERIC_KEY_BRACES LIST KEY_GENERIC_TYPE synchronize(LIST KEY_GENERIC_TYPE l, Object mutex) { +#if IARRAY_FEATURE return l instanceof SynchronizedList ? l : (l instanceof IARRAY ? new SynchronizedArrayListBRACES(l, mutex) : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l, mutex) : new SynchronizedListBRACES(l, mutex))); +#else + return l instanceof SynchronizedList ? l : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l, mutex) : new SynchronizedListBRACES(l, mutex)); +#endif } /** @@ -92,6 +106,7 @@ public class LISTS */ public static GENERIC_KEY_BRACES LIST KEY_GENERIC_TYPE reverse(LIST KEY_GENERIC_TYPE list) { int size = list.size(); +#if IARRAY_FEATURE if(list instanceof IARRAY) { IARRAY KEY_GENERIC_TYPE array = (IARRAY KEY_GENERIC_TYPE)list; #if TYPE_OBJECT @@ -106,6 +121,7 @@ public class LISTS return list; #endif } +#endif if(list instanceof RandomAccess) { for (int i = 0, mid = size >> 1, j = size - 1; i < mid; i++, j--) { KEY_TYPE t = list.GET_KEY(i); @@ -143,6 +159,7 @@ public class LISTS */ public static GENERIC_KEY_BRACES LIST KEY_GENERIC_TYPE shuffle(LIST KEY_GENERIC_TYPE list, Random random) { int size = list.size(); +#if IARRAY_FEATURE if(list instanceof IARRAY) { IARRAY KEY_GENERIC_TYPE array = (IARRAY KEY_GENERIC_TYPE)list; #if TYPE_OBJECT @@ -164,7 +181,8 @@ public class LISTS #endif return list; } - for(int i = list.size(); i-- != 0;) { +#endif + for(int i = size; i-- != 0;) { int p = random.nextInt(i + 1); KEY_TYPE t = list.GET_KEY(i); list.set(i, list.GET_KEY(p)); @@ -231,6 +249,7 @@ public class LISTS public SingletonList KEY_GENERIC_TYPE copy() { return new SingletonListBRACES(element); } } +#if IARRAY_FEATURE private static class SynchronizedArrayList KEY_GENERIC_TYPE extends SynchronizedList KEY_GENERIC_TYPE implements IARRAY KEY_GENERIC_TYPE { IARRAY KEY_GENERIC_TYPE l; @@ -271,6 +290,7 @@ public class LISTS } } +#endif private static class SynchronizedRandomAccessList KEY_GENERIC_TYPE extends SynchronizedList KEY_GENERIC_TYPE implements RandomAccess { SynchronizedRandomAccessList(LIST KEY_GENERIC_TYPE l) {