001package Torello.JSON;
002
003
004// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
005// These are the User-Provided Lambda's / Functional-Interfaces
006// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
007
008import java.util.function.IntConsumer;
009import Torello.Java.Function.TriIntCons;
010import java.util.function.ToIntFunction;
011
012import Torello.Java.Function.ShortConsumer;
013import Torello.Java.Function.IntIntShortCons;
014import Torello.Java.Function.ToShortFunction;
015
016import Torello.Java.Function.ByteConsumer;
017import Torello.Java.Function.IntIntByteCons;
018import Torello.Java.Function.ToByteFunction;
019
020import java.util.function.LongConsumer;
021import Torello.Java.Function.IntIntLongCons;
022import java.util.function.ToLongFunction;
023
024import Torello.Java.Function.FloatConsumer;
025import Torello.Java.Function.IntIntFloatCons;
026import Torello.Java.Function.ToFloatFunction;
027
028import java.util.function.DoubleConsumer;
029import Torello.Java.Function.IntIntDoubleCons;
030import java.util.function.ToDoubleFunction;
031
032import Torello.Java.Function.BoolConsumer;
033import Torello.Java.Function.IntIntBoolCons;
034import java.util.function.Predicate;
035
036
037// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
038// The Rest of the imports
039// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
040
041import Torello.JavaDoc.Annotations.StaticFunctional;
042import Torello.JavaDoc.Annotations.LinkJavaSource;
043import Torello.JavaDoc.Annotations.JDHeaderBackgroundImg;
044
045import Torello.JavaDoc.Annotations.IntoHTMLTable;
046import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.GreenDither;
047import static Torello.JavaDoc.Annotations.IntoHTMLTable.Background.BlueDither;
048
049import Torello.JSON.JFlag;
050
051import javax.json.Json;
052import javax.json.JsonString;
053import javax.json.JsonArray;
054import javax.json.JsonValue;
055
056import java.util.Objects;
057
058import static javax.json.JsonValue.TRUE;
059import static javax.json.JsonValue.FALSE;
060
061import static Torello.JSON.JFlag.NOT_ALLOWED_RET_NULL_MASKS;
062import static Torello.JSON.BASIC_TYPES.PRIMITIVE;
063
064
065/**
066 * Generate a Pre-Configured {@link SettingsRec} instance which can handle Java-Primitives.
067 * 
068 * <EMBED CLASS=globalDefs DATA-A_AN=A>
069 * <EMBED CLASS='external-html' DATA-FILE-ID=ALL_CLASSES_NOTE>
070 * <EMBED CLASS='external-html' DATA-FILE-ID=RJA_PRIM_CONS_REC>
071 * <EMBED CLASS='external-html' DATA-FILE-ID=LOOP_OPTIMIZED_NOTE>
072 * <EMBED CLASS='external-html' DATA-FILE-ID=RJ_PT_PRIM_CONS_REC>
073 * 
074 * @see Json
075 * @see JsonArray
076 */
077@StaticFunctional
078@JDHeaderBackgroundImg(EmbedTagFileID="RJA_JDHBI_PRIM_CONS_REC")
079public class RJArrPrimConsumerRec
080{
081    private RJArrPrimConsumerRec() { }
082
083    /**
084     * <EMBED CLASS=defs DATA-A_AN=An DATA-METH_NAME=numeric DATA-PRIM_TYPE=int DATA-DEFVAL="-1">
085     * <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
086     */
087    @IntoHTMLTable(
088        background=GreenDither, 
089        title="Create a SettingsRec Instance for a Primitive-Integer Consumer"
090    )
091    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
092    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
093    public static SettingsRec<Integer, Void> intArr(
094            final int                   defaultValue,
095            final int                   FLAGS,
096            final ToIntFunction<String> optionalUserParser
097        )
098    {
099        return new SETTINGS_REC_BUILDER<Integer, Void>(
100                defaultValue,
101                FLAGS,
102                (optionalUserParser == null) ? null : optionalUserParser::applyAsInt,
103                BASIC_TYPES.PRIMITIVE_INTEGER()
104            )
105            .updateableConsumer(true);
106    }
107
108    /**
109     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=short DATA-DEFVAL="-1">
110     * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
111     */
112    @IntoHTMLTable(
113        background=BlueDither,
114        title="Create a SettingsRec Instance for a Primitive Short-Integer Consumer"
115    )
116    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
117    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
118    public static SettingsRec<Short, Void> shortArr(
119            final short                     defaultValue,
120            final int                       FLAGS,
121            final ToShortFunction<String>   optionalUserParser
122        )
123    {
124        return new SETTINGS_REC_BUILDER<Short, Void>(
125                defaultValue,
126                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
127                (optionalUserParser == null) ? null : optionalUserParser::applyAsShort,
128                BASIC_TYPES.PRIMITIVE_SHORT()
129            )
130            .updateableConsumer(true);
131    }
132
133    /**
134     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=byte DATA-DEFVAL="-1">
135     * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
136     */
137    @IntoHTMLTable(
138        background=GreenDither,
139        title="Create a SettingsRec Instance for a Primitive-Byte Consumer"
140    )
141    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
142    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
143    public static SettingsRec<Byte, Void> byteArr(
144            final byte                      defaultValue,
145            final int                       FLAGS,
146            final ToByteFunction<String>    optionalUserParser
147        )
148    {
149        return new SETTINGS_REC_BUILDER<Byte, Void>(
150                defaultValue,
151                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
152                (optionalUserParser == null) ? null : optionalUserParser::applyAsByte,
153                BASIC_TYPES.PRIMITIVE_BYTE()
154            )
155            .updateableConsumer(true);
156    }
157
158    /**
159     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=long DATA-DEFVAL="-1">
160     * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
161     */
162    @IntoHTMLTable(
163        background=BlueDither,
164        title="Create a SettingsRec Instance for a Primitive Long-Integer Consumer"
165    )
166    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
167    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
168    public static SettingsRec<Long, Void> longArr(
169            final long                      defaultValue,
170            final int                       FLAGS,
171            final ToLongFunction<String>    optionalUserParser
172        )
173    {
174        return new SETTINGS_REC_BUILDER<Long, Void>(
175                defaultValue,
176                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
177                (optionalUserParser == null) ? null : optionalUserParser::applyAsLong,
178                BASIC_TYPES.PRIMITIVE_LONG()
179            )
180            .updateableConsumer(true);
181    }
182
183    /**
184     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=double DATA-DEFVAL="-1.0">
185     * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
186     */
187    @IntoHTMLTable(
188        background=GreenDither,
189        title="Create a SettingsRec Instance for a Primitive-Double Consumer"
190    )
191    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
192    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
193    public static SettingsRec<Double, Void> doubleArr(
194            final double                    defaultValue,
195            final int                       FLAGS,
196            final ToDoubleFunction<String>  optionalUserParser
197        )
198    {
199        return new SETTINGS_REC_BUILDER<Double, Void>(
200                defaultValue,
201                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
202                (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble,
203                BASIC_TYPES.PRIMITIVE_DOUBLE()
204            )
205            .updateableConsumer(true);
206    }
207
208    /**
209     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=float DATA-DEFVAL="-1.0f">
210     * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
211     */
212    @IntoHTMLTable(
213        background=BlueDither, 
214        title="Create a SettingsRec Instance for a Primitive-Float Consumer"
215    )
216    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
217    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
218    public static SettingsRec<Float, Void> floatArr(
219            final float                     defaultValue,
220            final int                       FLAGS,
221            final ToFloatFunction<String>   optionalUserParser
222        )
223    {
224        return new SETTINGS_REC_BUILDER<Float, Void>(
225                defaultValue,
226                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
227                (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat,
228                BASIC_TYPES.PRIMITIVE_FLOAT()
229            )
230            .updateableConsumer(true);
231    }
232
233    /**
234     * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-PRIM_TYPE=boolean DATA-DEFVAL=false>
235     * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC1>
236     */
237    @IntoHTMLTable(
238        background=GreenDither,
239        title="Create a SettingsRec Instance for a Primitive-Boolean Consumer"
240    )
241    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
242    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
243    public static SettingsRec<Boolean, Void> booleanArr(
244            final boolean           defaultValue,
245            final int               FLAGS,
246            final Predicate<String> optionalUserParser
247        )
248    {
249        return new SETTINGS_REC_BUILDER<Boolean, Void>(
250                defaultValue,
251                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
252                (optionalUserParser == null) ? null : optionalUserParser::test,
253                BASIC_TYPES.PRIMITIVE_BOOLEAN()
254            )
255            .updateableConsumer(true);
256    }
257
258
259
260
261    // ********************************************************************************************
262    // ********************************************************************************************
263    // IntInt (w/ Array-Indices) Primitive-Consumer Variant
264    // ********************************************************************************************
265    // ********************************************************************************************
266
267
268
269
270    /**
271     * <EMBED CLASS=defs DATA-A_AN=An DATA-METH_NAME=numeric DATA-PRIM_TYPE=int DATA-DEFVAL="-1">
272     * <EMBED CLASS='external-html' DATA-TYPE=Integer DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
273     */
274    @IntoHTMLTable(
275        background=BlueDither,
276        title="Create a SettingsRec Instance for a Consumer of Primitive-Integers, " +
277            "w/ Array-Indices"
278    )
279    @LinkJavaSource(handle="BASIC_TYPES", name="INTEGER")
280    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
281    public static SettingsRec<Integer, Void> intArr2(
282            final int                   defaultValue,
283            final int                   FLAGS,
284            final ToIntFunction<String> optionalUserParser
285        )
286    {
287        return new SETTINGS_REC_BUILDER<Integer, Void>(
288                defaultValue,
289                FLAGS,
290                (optionalUserParser == null) ? null : optionalUserParser::applyAsInt,
291                BASIC_TYPES.PRIMITIVE_INTEGER()
292            )
293            .updateableConsumer(false);
294    }
295
296    /**
297     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=short DATA-DEFVAL="-1">
298     * <EMBED CLASS='external-html' DATA-TYPE=Short DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
299     */
300    @IntoHTMLTable(
301        background=GreenDither,
302        title="Create a SettingsRec Instance for a Consumer of Primitive Short-Integers, " +
303            "w/ Array-Indices"
304    )
305    @LinkJavaSource(handle="BASIC_TYPES", name="SHORT")
306    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
307    public static SettingsRec<Short, Void> shortArr2(
308            final short                     defaultValue,
309            final int                       FLAGS,
310            final ToShortFunction<String>   optionalUserParser
311        )
312    {
313        return new SETTINGS_REC_BUILDER<Short, Void>(
314                defaultValue,
315                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
316                (optionalUserParser == null) ? null : optionalUserParser::applyAsShort,
317                BASIC_TYPES.PRIMITIVE_SHORT()
318            )
319            .updateableConsumer(false);
320    }
321
322    /**
323     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=byte DATA-DEFVAL="-1">
324     * <EMBED CLASS='external-html' DATA-TYPE=Byte DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
325     */
326    @IntoHTMLTable(
327        background=BlueDither,
328        title="Create a SettingsRec Instance for a Consumer of Primitive-Bytes, " +
329            "w/ Array-Indices"
330    )
331    @LinkJavaSource(handle="BASIC_TYPES", name="BYTE")
332    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
333    public static SettingsRec<Byte, Void> byteArr2(
334            final byte                      defaultValue,
335            final int                       FLAGS,
336            final ToByteFunction<String>    optionalUserParser
337        )
338    {
339        return new SETTINGS_REC_BUILDER<Byte, Void>(
340                defaultValue,
341                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
342                (optionalUserParser == null) ? null : optionalUserParser::applyAsByte,
343                BASIC_TYPES.PRIMITIVE_BYTE()
344            )
345            .updateableConsumer(false);
346    }
347
348    /**
349     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=long DATA-DEFVAL="-1">
350     * <EMBED CLASS='external-html' DATA-TYPE=Long DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
351     */
352    @IntoHTMLTable(
353        background=GreenDither,
354        title="Create a SettingsRec Instance for a Consumer of Primitive Long-Integers, " +
355            "w/ Array-Indices"
356    )
357    @LinkJavaSource(handle="BASIC_TYPES", name="LONG")
358    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
359    public static SettingsRec<Long, Void> longArr2(
360            final long                      defaultValue,
361            final int                       FLAGS,
362            final ToLongFunction<String>    optionalUserParser
363        )
364    {
365        return new SETTINGS_REC_BUILDER<Long, Void>(
366                defaultValue,
367                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
368                (optionalUserParser == null) ? null : optionalUserParser::applyAsLong,
369                BASIC_TYPES.PRIMITIVE_LONG()
370            )
371            .updateableConsumer(false);
372    }
373
374    /**
375     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=double DATA-DEFVAL="-1.0">
376     * <EMBED CLASS='external-html' DATA-TYPE=Double DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
377     */
378    @IntoHTMLTable(
379        background=BlueDither,
380        title="Create a SettingsRec Instance for a Consumer of Primitive-Doubles, " +
381            "w/ Array-Indices"
382    )
383    @LinkJavaSource(handle="BASIC_TYPES", name="DOUBLE")
384    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
385    public static SettingsRec<Double, Void> doubleArr2(
386            final double                    defaultValue,
387            final int                       FLAGS,
388            final ToDoubleFunction<String>  optionalUserParser
389        )
390    {
391        return new SETTINGS_REC_BUILDER<Double, Void>(
392                defaultValue,
393                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
394                (optionalUserParser == null) ? null : optionalUserParser::applyAsDouble,
395                BASIC_TYPES.PRIMITIVE_DOUBLE()
396            )
397            .updateableConsumer(false);
398    }
399
400    /**
401     * <EMBED CLASS=defs DATA-METH_NAME=numeric DATA-PRIM_TYPE=float DATA-DEFVAL="-1.0f">
402     * <EMBED CLASS='external-html' DATA-TYPE=Float DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
403     */
404    @IntoHTMLTable(
405        background=GreenDither,
406        title="Create a SettingsRec Instance for a Consumer of Primitive-Floats, " +
407            "w/ Array-Indices"
408    )
409    @LinkJavaSource(handle="BASIC_TYPES", name="FLOAT")
410    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
411    public static SettingsRec<Float, Void> floatArr2(
412            final float                     defaultValue,
413            final int                       FLAGS,
414            final ToFloatFunction<String>   optionalUserParser
415        )
416    {
417        return new SETTINGS_REC_BUILDER<Float, Void>(
418                defaultValue,
419                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
420                (optionalUserParser == null) ? null : optionalUserParser::applyAsFloat,
421                BASIC_TYPES.PRIMITIVE_FLOAT()
422            )
423            .updateableConsumer(false);
424    }
425
426    /**
427     * <EMBED CLASS=defs DATA-METH_NAME=boolean DATA-PRIM_TYPE=boolean DATA-DEFVAL=false>
428     * <EMBED CLASS='external-html' DATA-TYPE=Boolean DATA-FILE-ID=RJ_ARR_PRIM_CONS_REC2>
429     */
430    @IntoHTMLTable(
431        background=BlueDither,
432        title="Create a SettingsRec Instance for a Consumer of Primitive-Booleans, " +
433            "w/ Array-Indices"
434    )
435    @LinkJavaSource(handle="BASIC_TYPES", name="BOOLEAN")
436    @LinkJavaSource(handle="SETTINGS_REC_BUILDER")
437    public static SettingsRec<Boolean, Void> booleanArr2(
438            final boolean               defaultValue,
439            final int                   FLAGS,
440            final Predicate<String>     optionalUserParser
441        )
442    {
443        return new SETTINGS_REC_BUILDER<Boolean, Void>(
444                defaultValue,
445                FLAGS & NOT_ALLOWED_RET_NULL_MASKS,
446                (optionalUserParser == null) ? null : optionalUserParser::test,
447                BASIC_TYPES.PRIMITIVE_BOOLEAN()
448            )
449            .updateableConsumer(false);
450    }
451
452
453}