theSq3Lite 10.0 NHI1 - theKernel - theLink - theConfig - theSq3Lite - theCompiler - theBrain - theGuard - theLib - theATL
c - tcl - atl - cs - py - rb - jv - cc
Loading...
Searching...
No Matches
Sq3ValueC_rb.c
Go to the documentation of this file.
1
12/* LABEL-START */
13#define META_FILE_NAME "Sq3ValueC_rb.c"
14
16
17#define OT_CLASS NS(Sq3ValueC)
18#define OT_CLASS_NAME "Sq3ValueC"
19
20#define OT_LNG2META(O) Sq3Val(VAL2MNG(O))
21
23
24// new Class type object
25static MK_TYP Sq3ValueCTT = NULL;
27
28// GS marker in "Data_Wrap_Struct"
29static void NS(sMark) (MK_PTR);
30
31// ruby datatype of the wrapped struct
32static rb_data_type_t NS(Sq3ValueC_T) = {
33 "Sq3ValueC",
34 {
35 NS(sMark),
36 MK(AtomDeleteSoft),
37 0, /* dsize */
38 0, /* reserved[1] */
39 },
40 NULL, /* parent */
41 NULL, /* data */
42 RUBY_TYPED_FREE_IMMEDIATELY
43};
44
45// >>THIS<< is a Phase-1-CONSTRUCTOR: a constructor which create the SELF object
46// A Phase-2-CONSTRUCTOR is a constructor which configure an already existing object
47// DO: create a new SELF and link this SELF with the MQ-Object "mng"
48// clazz is the toplevel "subclass" or "Sq3ValueC"
49mk_inline OT_OBJ_T NS(LNG_CONSTR) (OT_CLS_T clazz, MK_MNG mng, int objc, VALUE* objv) {
50 return MK(AtomObjCrt)(clazz,&NS(Sq3ValueC_T),mng,objc,objv);
51}
52// MQ: ObjNew feature: called to return a new or an already existing RUBY-SELF-Object
53// -> moved to: msgque_rb.h
54// OT_OBJ_T NS(Sq3ValueC_ObjNew) (MK_VAL hdl) {
55// return MK(AtomObjNew) (Sq3ValueC_X2obj(hdl));
56// }
57// MQ: ObjNew feature: selfCreate will be called from "ObjNew->MkSelfNew" if MkObj need a SELF pointer
58static MK_PTR NS(Sq3ValueC_selfCreate) (MK_RT_ARGS MK_OBJ obj, MK_PTR envP) {
59 OT_OBJ_T self = NS(LNG_CONSTR) (OT_CLASS, obj, 0, NULL);
60 return VAL2PTR(self);
61}
62// MQ: called on instance-destruction for a "selfCreate" instance → goal: destroy the SELF
63static void NS(Sq3ValueC_selfDelete) (MK_RT_ARGS MK_PTR ptr, MK_PTR envP) {
65}
66// MQ: called to destroy link from SELF to META
67static void NS(Sq3ValueC_selfUnlink) (MK_RT_ARGS MK_PTR ptr, MK_PTR envP) {
68 OT_OBJ_T self = PTR2VAL(ptr);
69 RDATA(self)->data = NULL;
70}
71// initialize the RUBY and MO class specific object
72#define S_INIT NS(sInit)(MK_RT_CALL_ONLY)
73static void NS(sInit)(MK_RT_ARGS_ONLY) {
74
75 // add "selfCreate" and "selfDelete" feature to the MQ-Sq3ValueC-Type
76 Sq3ValueCTT->selfCreate = NS(Sq3ValueC_selfCreate);
77 Sq3ValueCTT->selfDelete = NS(Sq3ValueC_selfDelete);
78 Sq3ValueCTT->selfUnlink = NS(Sq3ValueC_selfUnlink);
79
80 // create the RUBY class
81 OT_CLASS = rb_define_class_under(OT_PKG, "Sq3ValueC", MK_BASE_CLASS);
82 rb_undef_alloc_func(OT_CLASS);
83
84 /* define the "NULL" object */
85 VALUE nullO = TypedData_Wrap_Struct (OT_CLASS, &NS(Sq3ValueC_T), MK_NULL);
86 NS(Sq3ValueC_MK_NULL) = nullO;
88}
89
90#define OT_SETUP_hdl OT_SETUP_hdl_tmpl(Sq3ValueC);
91#define OT_SETUP_hdl__null_allow OT_SETUP_hdl_tmpl__null_allow(Sq3ValueC);
92#define OT_SETUP_hdl_constr AllRtSetup_NULL; \
93 OT_OBJ_T clazz = self; \
94 Sq3ValueC_type hdl = (Sq3ValueC_type) &MkERROR;
95#define OT_SETUP_hdl_destr OT_SETUP_hdl_tmpl__null_allow(Sq3ValueC);
96#define OT_SETUP_hdl_static AllRtSetup_NULL; \
97 __attribute__((unused)) MK_TYP hdl = Sq3ValueC##_TT;
98#define OT_SETUP_hdl_static_constr OT_SETUP_hdl_static
99
100#if !defined(SetupRtFromObj_X)
101 #define SetupRtFromObj_X(hdl) AllRtSetup_X(hdl)
102 #define SetupRtFromObj_XN(hdl) AllRtSetup_XN(hdl)
103#endif
104
105/* LABEL-END */
106
107// BEGIN-DOC - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
108
109// doc-key: Sq3ValueC,Sq3Value,sc_,func
110#define GetNull_doc "Sq3ValueC Sq3ValueC.GetNull()"
111#define HandleResolve_doc "Sq3ValueC Sq3ValueC.HandleResolve(netHdl:MK_HDL)"
112#define Instances_doc "Sq3ValueC Sq3ValueC.Instances()"
113
114// doc-key: Sq3ValueC,Sq3Value,oCx,func
115#define Dup_doc "Sq3ValueC sq3val.Dup() (const)"
116
117// doc-key: Sq3ValueC,Sq3Value,oc_,func
118#define BUF_doc "MkBufferC val.BUF() (const)"
119#define Blob_doc "MkBufferC sq3val.Blob() (const)"
120#define Next_doc "Sq3ValueC val.Next()"
121#define Prev_doc "Sq3ValueC val.Prev()"
122
123// doc-key: Sq3ValueC,Sq3Value,oco,func
124#define VtabInFirst_doc "Sq3ValueC pVal.VtabInFirst()"
125#define VtabInNext_doc "Sq3ValueC pVal.VtabInNext()"
126
127// doc-key: Sq3ValueC,Sq3Value,om_,func
128#define BinaryR_doc "binary sq3val.BinaryR() (const)"
129#define Bytes_doc "Sq3TextE sq3val.Bytes() (const)"
130#define Double_doc "double sq3val.Double() (const)"
131#define Encoding_doc "Sq3TextE sq3val.Encoding() (const)"
132#define FromBind_doc "bool sq3val.FromBind() (const)"
133// skip class-overload: HandleGet → MkObjectHandleGet
134#define Int_doc "int32 sq3val.Int() (const)"
135#define Int64_doc "int64 sq3val.Int64() (const)"
136// skip class-overload: Log → MkObjectLog
137#define NoChange_doc "bool sq3val.NoChange() (const)"
138#define NumericType_doc "Sq3TypeE sq3val.NumericType() (const)"
139#define StringR_doc "string sq3val.StringR() (const)"
140#define SubType_doc "int32 sq3val.SubType() (const)"
141#define Text_doc "string sq3val.Text() (const)"
142#define Type_doc "Sq3TypeE sq3val.Type() (const)"
143
144// END-DOC - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
145
146/*****************************************************************************/
147/* */
148/* O B J E C T */
149/* */
150/*****************************************************************************/
151
152// BEGIN-Sq3ValueC - created by 'rb_MqC.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
153
157
158// doc-key: Sq3ValueC,Sq3ValueC-Class-Export,sc_
159
161static OT_ProcRet NS(Sq3ValueC_HandleResolve) (OtClass_ARGS) {
164 MK_HDL netHdl = 0;
167 SQ3_VAL retVal = Sq3ValueHandleResolve (netHdl);
168 OT_retObj_SET_VAL(retVal);
169 end: MK_UNUSED /* LONG JUMP on error */
171}
172
173// doc-key: Sq3ValueC,Sq3ValueC-Class-Export,om_
174
175// skip on class-overload: Sq3ValueHandleGet → MkObjectHandleGet
177static OT_ProcRet NS(Sq3ValueC_HandleGet) (Sq3ValueC_ARGS) {OT_ERROR_LNG_RETURN;}
178
180// Sq3ValueC_Class_RB_API
181
185
186// doc-key: Sq3ValueC,Sq3ValueC-Class-Introspection,oc_
187
189static OT_ProcRet NS(Sq3ValueC_Next) (Sq3ValueC_ARGS) {
193 SQ3_VAL retVal = Sq3ValueNext (hdl);
194 OT_retObj_SET_VAL(retVal);
195 end: MK_UNUSED /* LONG JUMP on error */
197}
198
200static OT_ProcRet NS(Sq3ValueC_Prev) (Sq3ValueC_ARGS) {
204 SQ3_VAL retVal = Sq3ValuePrev (hdl);
205 OT_retObj_SET_VAL(retVal);
206 end: MK_UNUSED /* LONG JUMP on error */
208}
209
210// doc-key: Sq3ValueC,Sq3ValueC-Class-Introspection,sc_
211
213static OT_ProcRet NS(Sq3ValueC_Instances) (OtClass_ARGS) {
217 SQ3_VAL retVal = Sq3ValueInstances ();
218 OT_retObj_SET_VAL(retVal);
219 end: MK_UNUSED /* LONG JUMP on error */
221}
222
224// Sq3ValueC_Class_RB_API
225
229
230// doc-key: Sq3ValueC,Sq3ValueC-Class-Misc,sc_
231
233static OT_ProcRet NS(Sq3ValueC_GetNull) (OtClass_ARGS) {
237 SQ3_VAL retVal = Sq3ValueGetNull ();
238 OT_retObj_SET_VAL(retVal);
239 end: MK_UNUSED /* LONG JUMP on error */
241}
242
244// Sq3ValueC_Class_RB_API
245
249
250// doc-key: Sq3ValueC,Sq3ValueC-Info,om_
251
253static OT_ProcRet NS(Sq3ValueC_Bytes) (Sq3ValueC_ARGS) {
258 end: MK_UNUSED /* LONG JUMP on error */
260}
261
263static OT_ProcRet NS(Sq3ValueC_Encoding) (Sq3ValueC_ARGS) {
268 end: MK_UNUSED /* LONG JUMP on error */
270}
271
273static OT_ProcRet NS(Sq3ValueC_FromBind) (Sq3ValueC_ARGS) {
278 end: MK_UNUSED /* LONG JUMP on error */
280}
281
282// skip on class-overload: Sq3ValueLog → MkObjectLog
285
287static OT_ProcRet NS(Sq3ValueC_NoChange) (Sq3ValueC_ARGS) {
292 end: MK_UNUSED /* LONG JUMP on error */
294}
295
297static OT_ProcRet NS(Sq3ValueC_NumericType) (Sq3ValueC_ARGS) {
302 end: MK_UNUSED /* LONG JUMP on error */
304}
305
307static OT_ProcRet NS(Sq3ValueC_SubType) (Sq3ValueC_ARGS) {
312 end: MK_UNUSED /* LONG JUMP on error */
314}
315
317static OT_ProcRet NS(Sq3ValueC_Type) (Sq3ValueC_ARGS) {
322 end: MK_UNUSED /* LONG JUMP on error */
324}
325
327// Sq3ValueC_Info_RB_API
328
332
333// doc-key: Sq3ValueC,Sq3ValueC-TOR,oCx
334
336static OT_ProcRet NS(Sq3ValueC_Dup) (Sq3ValueC_ARGS) {
340 SQ3_VAL retVal = Sq3ValueDup (hdl);
341 if (retVal == NULL) {
342 OT_ERROR_CONSTRUCTOR(Sq3ValueC);
343 }
344 OT_retObj_SET_VAL(retVal);
345 end: MK_UNUSED /* LONG JUMP on error */
347}
348
350// Sq3ValueC_TOR_RB_API
351
355
356// doc-key: Sq3ValueC,Sq3ValueC-Types,oc_
357
359static OT_ProcRet NS(Sq3ValueC_BUF) (Sq3ValueC_ARGS) {
363 MK_BUF retVal = Sq3ValueBUF (hdl);
364 OT_retObj_SET_BUF(retVal);
365 end: MK_UNUSED /* LONG JUMP on error */
367}
368
370static OT_ProcRet NS(Sq3ValueC_Blob) (Sq3ValueC_ARGS) {
374 MK_BUF retVal = Sq3ValueBlob (hdl);
375 OT_retObj_SET_BUF(retVal);
376 end: MK_UNUSED /* LONG JUMP on error */
378}
379
380// doc-key: Sq3ValueC,Sq3ValueC-Types,om_
381
383static OT_ProcRet NS(Sq3ValueC_BinaryR) (Sq3ValueC_ARGS) {
387 MkBinaryR retVal = Sq3ValueBinaryR (hdl);
389 end: MK_UNUSED /* LONG JUMP on error */
391}
392
394static OT_ProcRet NS(Sq3ValueC_Double) (Sq3ValueC_ARGS) {
399 end: MK_UNUSED /* LONG JUMP on error */
401}
402
404static OT_ProcRet NS(Sq3ValueC_Int) (Sq3ValueC_ARGS) {
409 end: MK_UNUSED /* LONG JUMP on error */
411}
412
414static OT_ProcRet NS(Sq3ValueC_Int64) (Sq3ValueC_ARGS) {
419 end: MK_UNUSED /* LONG JUMP on error */
421}
422
424static OT_ProcRet NS(Sq3ValueC_StringR) (Sq3ValueC_ARGS) {
428 MkStringR retVal = Sq3ValueStringR (hdl);
430 end: MK_UNUSED /* LONG JUMP on error */
432}
433
435static OT_ProcRet NS(Sq3ValueC_Text) (Sq3ValueC_ARGS) {
440 end: MK_UNUSED /* LONG JUMP on error */
442}
443
445// Sq3ValueC_Types_RB_API
446
450
451// doc-key: Sq3ValueC,Sq3ValueC-Vtab,oco
452
454static OT_ProcRet NS(Sq3ValueC_VtabInFirst) (Sq3ValueC_ARGS) {
458 SQ3_VAL ppOut;
459 MkErrorC_Check(hdl,Sq3ValueVtabInFirst (hdl, &ppOut));
460 OT_retObj_SET_VAL(ppOut);
461 end: MK_UNUSED /* LONG JUMP on error */
463}
464
466static OT_ProcRet NS(Sq3ValueC_VtabInNext) (Sq3ValueC_ARGS) {
470 SQ3_VAL ppOut;
471 MkErrorC_Check(hdl,Sq3ValueVtabInNext (hdl, &ppOut));
472 OT_retObj_SET_VAL(ppOut);
473 end: MK_UNUSED /* LONG JUMP on error */
475}
476
478// Sq3ValueC_Vtab_RB_API
479
480// END-Sq3ValueC - created by 'rb_MqC.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
481
482/*****************************************************************************/
483/* */
484/* public */
485/* */
486/*****************************************************************************/
487
488void NS(sMark) (MK_PTR ptr) {
489}
490
491void NS(Sq3ValueC_Init) (MK_RT_ARGS_ONLY) {
492
493 // init type
495 S_INIT;
496
497 // BEGIN-CLASS - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
498
499 // doc-key: Sq3ValueC,Sq3Value,sc_
500 OT_METH_O ( Sq3ValueC, GetNull, Sq3ValueC_GetNull )
501 OT_METH_S ( Sq3ValueC, GetNull, Sq3ValueC_GetNull )
502 OT_METH_O ( Sq3ValueC, HandleResolve, Sq3ValueC_HandleResolve )
503 OT_METH_S ( Sq3ValueC, HandleResolve, Sq3ValueC_HandleResolve )
504 OT_METH_O ( Sq3ValueC, Instances, Sq3ValueC_Instances )
505 OT_METH_S ( Sq3ValueC, Instances, Sq3ValueC_Instances )
506
507 // END-CLASS - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
508
509 // BEGIN-OBJ - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
510
511 // doc-key: Sq3ValueC,Sq3Value,oCx
512 OT_METH_O ( Sq3ValueC, Dup, Sq3ValueC_Dup )
513
514 // doc-key: Sq3ValueC,Sq3Value,oc_
515 OT_METH_O ( Sq3ValueC, BUF, Sq3ValueC_BUF )
516 OT_METH_O ( Sq3ValueC, Blob, Sq3ValueC_Blob )
517 OT_METH_O ( Sq3ValueC, Next, Sq3ValueC_Next )
518 OT_METH_O ( Sq3ValueC, Prev, Sq3ValueC_Prev )
519
520 // doc-key: Sq3ValueC,Sq3Value,oco
521 OT_METH_O ( Sq3ValueC, VtabInFirst, Sq3ValueC_VtabInFirst )
522 OT_METH_O ( Sq3ValueC, VtabInNext, Sq3ValueC_VtabInNext )
523
524 // doc-key: Sq3ValueC,Sq3Value,om_
525 OT_METH_O ( Sq3ValueC, BinaryR, Sq3ValueC_BinaryR )
526 OT_METH_O ( Sq3ValueC, Bytes, Sq3ValueC_Bytes )
527 OT_METH_O ( Sq3ValueC, Double, Sq3ValueC_Double )
528 OT_METH_O ( Sq3ValueC, Encoding, Sq3ValueC_Encoding )
529 OT_METH_O ( Sq3ValueC, FromBind, Sq3ValueC_FromBind )
530 // skip class-overload: Sq3ValueHandleGet → HandleGet, Sq3ValueC_HandleGet
531 OT_METH_O ( Sq3ValueC, Int, Sq3ValueC_Int )
532 OT_METH_O ( Sq3ValueC, Int64, Sq3ValueC_Int64 )
533 // skip class-overload: Sq3ValueLog → Log, Sq3ValueC_Log
534 OT_METH_O ( Sq3ValueC, NoChange, Sq3ValueC_NoChange )
535 OT_METH_O ( Sq3ValueC, NumericType, Sq3ValueC_NumericType )
536 OT_METH_O ( Sq3ValueC, StringR, Sq3ValueC_StringR )
537 OT_METH_O ( Sq3ValueC, SubType, Sq3ValueC_SubType )
538 OT_METH_O ( Sq3ValueC, Text, Sq3ValueC_Text )
539 OT_METH_O ( Sq3ValueC, Type, Sq3ValueC_Type )
540
541 // END-OBJ - created by 'rb_MqS.tcl -i NHI1_HOME/theSq3Lite/c/gen/c_sq3lite.meta' - DO NOT change
542
543}
#define MK(n)
#define OT_retObj_SET_BOL(nat)
#define OT_SETUP_NOARG(d)
#define OT_SETUP_ONEARG(d)
#define OT_ERROR_LNG_RETURN
#define PTR2VAL(nat)
#define OT_METH_S(c, s, f)
#define MK_BASE_CLASS
#define OT_CLS_T
#define OT_retObj_SET_BUF(nat)
#define OT_retObj_SET_DBL(nat)
#define OT_retObj_SET_I64(nat)
#define OT_CHECK_REQUIRED(val)
#define OT_retObj_SET_I32(nat)
#define OT_METH_O(c, s, f)
#define INCR_REF(valP)
#define OT_OBJ_T
#define OT_GET__ME_REF_MkBinaryR(b)
#define OT_retObj_RETURN
#define OT_OBJECT_DELETE_HARD(obj)
#define OT_retObj_SET_STR(nat)
#define OT_ERROR_CONSTRUCTOR(clazz)
#define OT_retObj_SET(val)
#define VAL2PTR(val)
#define OT_CHECK_NOARGS
#define MkErrorC_Check(mng, PROC)
#define OT_ProcRet
#define OT_GET__ME_REF_MkStringR(b)
#define OtClass_ARGS
LibSq3Lite_private_rb.h - 17 Apr 2025 - aotto1968.
#define SQ3(n)
#define Sq3ValueC_MK_NULL
#define OT_PKG
#define NS(n)
#define OT_retObj_SET_VAL(nat)
#define OT_NEW_Sq3_enum_OBJ(typ, i)
#define Sq3ValueC_ARGS
#define Instances_doc
#define Int64_doc
#define BinaryR_doc
#define Blob_doc
#define OT_SETUP_hdl
#define Int_doc
#define Text_doc
#define Dup_doc
#define NumericType_doc
#define GetNull_doc
#define Next_doc
#define HandleResolve_doc
#define VtabInFirst_doc
#define Prev_doc
static MK_TYP Sq3ValueCTT
#define OT_CLASS
#define OT_SETUP_hdl_static
#define Type_doc
#define BUF_doc
#define StringR_doc
#define SubType_doc
#define FromBind_doc
#define S_INIT
#define VtabInNext_doc
#define Double_doc
#define NoChange_doc
#define Bytes_doc
#define Encoding_doc
#define mk_inline
#define MK_UNUSED
#define MK_NULL
#define MK_DEPRECATED
MK_PTRB * MK_PTR
MK_PTRB * MK_MNG
int32_t MK_HDL
#define MK_RT_ARGS
#define MK_RT_ARGS_ONLY
static SQ3_VAL Sq3ValueGetNull(void)
Null-Slot - return a Sq3ValueC typed NULL instance …
#define Sq3ValueInstances()
#define Sq3ValueHandleResolve(...)
static SQ3_VAL Sq3ValueNext(SQ3_VAL const val)
get next instance from linked-list of Sq3ValueS type
static SQ3_VAL Sq3ValuePrev(SQ3_VAL const val)
get previous instance from linked-list of Sq3ValueS type
__thread MK_TYP Sq3ValueC_TT
class as MkTypeDefS-class-type …
#define Sq3ValueC_T
class as MkTypeDefS-class-type (cast from Sq3ValueC_TT into MkTypeS) …
static enum Sq3TextE Sq3ValueEncoding(SQ3_VALN sq3val)
Report the internal text encoding state of an sqlite3_value object …
static enum Sq3TypeE Sq3ValueType(SQ3_VALN sq3val)
Obtaining SQL Values …
static enum Sq3TextE Sq3ValueBytes(SQ3_VALN sq3val)
Obtaining SQL Values …
static MK_I32 Sq3ValueSubType(SQ3_VALN sq3val)
Finding The Subtype Of SQL Values …
static MK_BOOL Sq3ValueFromBind(SQ3_VALN sq3val)
Obtaining SQL Values …
static MK_BOOL Sq3ValueNoChange(SQ3_VALN sq3val)
Obtaining SQL Values …
static enum Sq3TypeE Sq3ValueNumericType(SQ3_VALN sq3val)
Obtaining SQL Values …
static SQ3_VAL Sq3ValueDup(SQ3_VALN sq3val)
Copy And Free SQL Values …
static MkStringR Sq3ValueStringR(SQ3_VALN sq3val)
Obtaining SQL Values …
#define Sq3ValueBUF(...)
static MkBinaryR Sq3ValueBinaryR(SQ3_VALN sq3val)
Obtaining SQL Values …
#define Sq3ValueBlob(...)
static MK_I64 Sq3ValueInt64(SQ3_VALN sq3val)
Obtaining SQL Values …
static MK_STRN Sq3ValueText(SQ3_VALN sq3val)
Obtaining SQL Values …
static MK_DBL Sq3ValueDouble(SQ3_VALN sq3val)
Obtaining SQL Values …
static MK_I32 Sq3ValueInt(SQ3_VALN sq3val)
Obtaining SQL Values …
static enum MkErrorE Sq3ValueVtabInNext(SQ3_VAL pVal, SQ3_VAL *ppOut)
Find all elements on the right-hand side of an IN constraint …
static enum MkErrorE Sq3ValueVtabInFirst(SQ3_VAL pVal, SQ3_VAL *ppOut)
Find all elements on the right-hand side of an IN constraint …
#define OT_CHECK_NIH(val)
MkSelfUnlinkF selfUnlink
MkSelfDeleteF selfDelete
MkSelfCreateF selfCreate
Struct to represent the data of the Sq3ValueC …