yumapro  23.10T-7
YumaPro SDK
Loading...
Searching...
No Matches
typ.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2021, YumaWorks, Inc., All Rights Reserved.
4 *
5 * Unless required by applicable law or agreed to in writing,
6 * software distributed under the License is distributed on an
7 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 * KIND, either express or implied. See the License for the
9 * specific language governing permissions and limitations
10 * under the License.
11 */
12#ifndef _H_typ
13#define _H_typ
14
15/* FILE: typ.h
16*********************************************************************
17* *
18* P U R P O S E *
19* *
20*********************************************************************/
21
28/*********************************************************************
29* *
30* C H A N G E H I S T O R Y *
31* *
32*********************************************************************
33
34date init comment
35----------------------------------------------------------------------
3622-oct-05 abb Begun
3713-oct-08 abb Moved pattern from typ_sval_t to ncx_pattern_t
38 to support N patterns per typdef
39*/
40
41// for XSD pattern: xmlRexexpPtr pattern
42#include <xmlstring.h>
43
44// for POSIX pattern; regex_t ocpattern
45#include <regex.h>
46
47#ifndef _H_ncxconst
48#include "ncxconst.h"
49#endif
50
51#ifndef _H_ncxtypes
52#include "ncxtypes.h"
53#endif
54
55#ifndef _H_status
56#include "status.h"
57#endif
58
59#ifndef _H_tk
60#include "tk.h"
61#endif
62
63#ifndef _H_xmlns
64#include "xmlns.h"
65#endif
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
71
72/* Heading only */
73
120/********************************************************************
121* *
122* C O N S T A N T S *
123* *
124*********************************************************************/
125
126/* decimal64 constants */
127#define TYP_DEC64_MIN_DIGITS 1
128#define TYP_DEC64_MAX_DIGITS 18
129
130/* typ_rangedef_t flags field */
131#define TYP_FL_LBINF bit0 /* lower bound = -INF */
132#define TYP_FL_LBINF2 bit1 /* lower bound = INF */
133#define TYP_FL_UBINF bit2 /* upper bound = INF */
134#define TYP_FL_UBINF2 bit3 /* upper bound = -INF */
135#define TYP_FL_LBMIN bit4 /* lower bound is set to 'min' */
136#define TYP_FL_LBMAX bit5 /* lower bound is set to 'max' */
137#define TYP_FL_UBMAX bit6 /* upper bound is set to 'max' */
138#define TYP_FL_UBMIN bit7 /* upper bound is set to 'min' */
139
140#define TYP_RANGE_FLAGS 0xff
141
142/* typ_enum_t flags field */
143#define TYP_FL_ESET bit0 /* value explicitly set */
144#define TYP_FL_ISBITS bit1 /* enum really used in bits */
145#define TYP_FL_SEEN bit2 /* used by yangdiff */
146
147/* typ_sval_t flags field */
148#define TYP_FL_USTRING bit0 /* value is ustring, not string */
149
150/* typ_simple_t flags field */
151#define TYP_FL_REPLACE bit0 /* Replace if set; extend if not */
152#define TYP_FL_CONSET bit1 /* constrained field set */
153
154/* typ_def_t flags */
155#define TYP_FL_RESOLVE_SKIPPED bit0
156#define TYP_FL_DEVIATE_SKIPPED bit1
157#define TYP_FL_FIND_SKIPPED bit2
158
159
160/* FL_RESOLVE_SKIPPED is se in yang_typ if a deviation cannot be
161 * resolved while in deviation mode; The type will be resolved
162 * later in the validation process
163 */
164#define TYP_IS_RESOLVE_SKIPPED(T) ((T)->flags & TYP_FL_RESOLVE_SKIPPED)
165
166#define TYP_SET_RESOLVE_SKIPPED(T) (T)->flags |= TYP_FL_RESOLVE_SKIPPED
167
168/* FL_DEVIATE_SKIPPED is set in yang_obj:resolve_deviation
169 * if the type is not known yet and deffered for later
170 */
171#define TYP_IS_DEVIATE_SKIPPED(T) ((T)->flags & TYP_FL_DEVIATE_SKIPPED)
172
173#define TYP_SET_DEVIATE_SKIPPED(T) (T)->flags |= TYP_FL_DEVIATE_SKIPPED
174
175/* FL_FIND_SKIPPED is set in yang_typ:consume_type
176 * if the type is not known yet and import deffered for later
177 */
178#define TYP_IS_FIND_SKIPPED(T) ((T)->flags & TYP_FL_FIND_SKIPPED)
179
180#define TYP_SET_FIND_SKIPPED(T) (T)->flags |= TYP_FL_FIND_SKIPPED
181
182
183/********************************************************************
184* *
185* T Y P E S *
186* *
187*********************************************************************/
188
189
191typedef enum typ_pmode_t_ {
197
198
202typedef struct typ_listval_t_ {
203 dlq_hdr_t qhdr;
204 dlq_hdr_t strQ;
207
208
246typedef struct typ_rangedef_t_ {
247 dlq_hdr_t qhdr;
248 xmlChar *rangestr;
252 xmlChar *lbstr;
253 xmlChar *ubstr;
255 uint8 flags;
257
258
262typedef struct typ_enum_t_ {
263 dlq_hdr_t qhdr;
266 xmlChar *name;
267
269 xmlChar *descr;
270
272 xmlChar *ref;
273
276
278 int32 val;
279
281 uint32 pos;
282
284 dlq_hdr_t appinfoQ;
285
287 dlq_hdr_t iffeatureQ;
288
290 uint8 flags;
291
294} typ_enum_t;
295
296
300typedef struct typ_sval_t_ {
301 dlq_hdr_t qhdr;
303 uint8 flags;
304} typ_sval_t;
305
306
308typedef struct typ_range_t_ {
309 xmlChar *rangestr;
310 dlq_hdr_t rangeQ;
315
316
321typedef struct typ_pattern_t_ {
322 dlq_hdr_t qhdr;
325 union p_ {
326 xmlRegexpPtr pattern;
327 regex_t ocpattern;
328 } p;
329
331 xmlChar *pat_str;
332
335
336 // YANG 1.1 allows pattern modifier invert-match;
337 boolean pat_inverted;
338
341
345
346
351typedef struct typ_idref_t {
352 dlq_hdr_t qhdr;
353 xmlChar *baseprefix;
354 xmlChar *basename;
356 const xmlChar *modname;
358
359
387typedef struct typ_simple_t_ {
389 struct typ_template_t_ *listtyp;
390 struct xpath_pcb_t_ *xleafref;
393 struct typ_def_t_ *xrefdef;
394
397
398 boolean constrained;
400 dlq_hdr_t idrefQ;
401 dlq_hdr_t valQ;
402 dlq_hdr_t metaQ;
403 dlq_hdr_t unionQ;
404 dlq_hdr_t patternQ;
406 uint32 maxbit;
407 int32 maxenum;
408 uint8 digits;
409 uint8 flags;
411
412
422typedef struct typ_named_t_ {
423 struct typ_template_t_ *typ;
424 struct typ_def_t_ *newtyp;
427
428
436typedef struct typ_ref_t_ {
437 struct typ_def_t_ *typdef;
438} typ_ref_t;
439
440
442typedef union typ_def_u_t_ {
448
449
458typedef struct typ_def_t_ {
464 xmlChar *prefix;
465 xmlChar *typenamestr;
466 const xmlChar *yang_name;
467 dlq_hdr_t appinfoQ;
470 uint32 linenum;
471 uint8 flags;
472 struct typ_userdef_t_ *userdef;
473} typ_def_t;
474
475
477typedef struct typ_template_t_ {
478 dlq_hdr_t qhdr;
481 xmlChar *name;
482
484 xmlChar *descr;
485
487 xmlChar *ref;
488
490 xmlChar *defval;
491
493 xmlChar *units;
494
497
499 boolean used;
500
503
506
510 dlq_hdr_t appinfoQ;
511
513 void *grp;
514
517
521
522
528typedef struct typ_unionnode_t_ {
529 dlq_hdr_t qhdr;
532 boolean seen;
534
535
544typedef boolean
545 (*typ_union_walker_fn_t) (const xmlChar *the_typename,
546 void *cookie);
547
548
549
558typedef boolean
560 void *cookie);
561
562
575typedef boolean
577 typ_def_t *the_typdef,
578 void *cookie);
579
580
584/********************************************************************
585* *
586* F U N C T I O N S *
587* *
588*********************************************************************/
589
609extern status_t
610 typ_load_basetypes (void);
611
612
620extern void
622
623
629extern typ_template_t *
630 typ_new_template (void);
631
632
642extern void
644
645
651extern typ_def_t *
652 typ_new_typdef (void);
653
654
667extern void
668 typ_init_typdef (typ_def_t *typdef);
669
670
680extern void
682 ncx_btype_t btyp);
683
684
694extern void
696
697
704extern void
705 typ_free_typdef (typ_def_t *typdef);
706
707
713extern void
714 typ_clean_typdef (typ_def_t *typdef);
715
716
723extern void
725 typ_template_t *imptyp);
726
727
736extern void
738
739
746extern const xmlChar *
747 typ_get_named_typename (const typ_def_t *typdef);
748
749
756extern const xmlChar *
758
759
766extern uint32
768
769
777extern status_t
779 ncx_btype_t btyp);
780
781
788extern typ_def_t *
790
791
798extern const typ_def_t *
799 typ_cget_new_named (const typ_def_t *typdef);
800
801
808extern void
810 ncx_btype_t btyp);
811
812
822extern typ_enum_t *
823 typ_new_enum (const xmlChar *name);
824
825
837extern typ_enum_t *
838 typ_new_enum2 (xmlChar *name);
839
840
848extern void
850
851
857extern typ_rangedef_t *
858 typ_new_rangedef (void);
859
860
867extern void
869 ncx_btype_t btyp);
870
871
884extern void
885 typ_normalize_rangeQ (dlq_hdr_t *rangeQ,
886 ncx_btype_t btyp);
887
888
897extern dlq_hdr_t *
898 typ_get_rangeQ (typ_def_t *typdef);
899
900
908extern dlq_hdr_t *
910
911
920extern const dlq_hdr_t *
921 typ_get_crangeQ (const typ_def_t *typdef);
922
923
931extern const dlq_hdr_t *
932 typ_get_crangeQ_con (const typ_def_t *typdef);
933
934
942extern typ_range_t *
944
945
953extern const typ_range_t *
954 typ_get_crange_con (const typ_def_t *typdef);
955
956
963extern const xmlChar *
964 typ_get_rangestr (const typ_def_t *typdef);
965
966
975extern const typ_rangedef_t *
976 typ_first_rangedef (const typ_def_t *typdef);
977
978
986extern const typ_rangedef_t *
987 typ_first_rangedef_con (const typ_def_t *typdef);
988
989
1005extern status_t
1006 typ_get_rangebounds_con (const typ_def_t *typdef,
1007 ncx_btype_t *btyp,
1008 const ncx_num_t **lb,
1009 const ncx_num_t **ub);
1010
1011
1018extern ncx_strrest_t
1019 typ_get_strrest (const typ_def_t *typdef);
1020
1021
1028extern void
1029 typ_set_strrest (typ_def_t *typdef,
1030 ncx_strrest_t strrest);
1031
1032
1041extern typ_sval_t *
1042 typ_new_sval (const xmlChar *str,
1043 ncx_btype_t btyp);
1044
1045
1052extern void
1054
1055
1062extern typ_listval_t *
1063 typ_new_listval (void);
1064
1065
1072extern void
1074
1075
1085extern ncx_btype_t
1087
1088
1098extern ncx_btype_t
1099 typ_get_basetype (const typ_def_t *typdef);
1100
1101
1112extern ncx_btype_t
1113 typ_get_basetype2 (typ_def_t *typdef);
1114
1115
1122extern const xmlChar *
1123 typ_get_name (const typ_def_t *typdef);
1124
1125
1132extern const xmlChar *
1134
1135
1142extern const xmlChar *
1144
1145
1153extern ncx_tclass_t
1154 typ_get_base_class (const typ_def_t *typdef);
1155
1156
1163extern typ_template_t *
1165
1166
1173extern typ_def_t *
1175
1176
1188extern typ_def_t *
1190
1191
1198extern const typ_template_t *
1200
1201
1211extern const typ_def_t *
1212 typ_get_cparent_typdef (const typ_def_t *typdef);
1213
1214
1225extern typ_def_t *
1227
1228
1240extern typ_def_t *
1242
1243
1253extern typ_def_t *
1255
1256
1267extern const typ_def_t *
1268 typ_get_cuserdef_typdef (const typ_def_t *typdef);
1269
1270
1278extern const typ_def_t *
1279 typ_get_cbase_typdef (const typ_def_t *typdef);
1280
1281
1301extern typ_def_t *
1303 ncx_squal_t squal);
1304
1305
1320extern const typ_def_t *
1321 typ_get_cqual_typdef (const typ_def_t *typdef,
1322 ncx_squal_t squal);
1323
1324
1333extern const ncx_appinfo_t *
1334 typ_find_appinfo (const typ_def_t *typdef,
1335 const xmlChar *prefix,
1336 const xmlChar *name);
1337
1338
1347extern const ncx_appinfo_t *
1348 typ_find_appinfo_con (const typ_def_t *typdef,
1349 const xmlChar *prefix,
1350 const xmlChar *name);
1351
1352
1360extern boolean
1361 typ_is_xpath_string (const typ_def_t *typdef);
1362
1363
1371extern boolean
1372 typ_is_qname_string (const typ_def_t *typdef);
1373
1374
1383extern boolean
1385
1386
1394extern const xmlChar *
1395 typ_get_defval (const typ_template_t *typ);
1396
1397
1405extern const xmlChar *
1406 typ_get_default (const typ_def_t *typdef);
1407
1408
1415extern ncx_iqual_t
1416 typ_get_iqualval (const typ_template_t *typ);
1417
1418
1425extern ncx_iqual_t
1426 typ_get_iqualval_def (const typ_def_t *typdef);
1427
1428
1435extern const xmlChar *
1436 typ_get_units (const typ_template_t *typ);
1437
1438
1449extern const xmlChar *
1450 typ_get_units_from_typdef (const typ_def_t *typdef);
1451
1452
1459extern boolean
1461
1462
1469extern boolean
1471
1472
1479extern boolean
1481
1482
1489extern boolean
1491
1492
1500extern typ_enum_t *
1501 typ_first_enumdef (typ_def_t *typdef);
1502
1503
1510extern typ_enum_t *
1511 typ_next_enumdef (typ_enum_t *enumdef);
1512
1513
1521extern typ_enum_t *
1523 uint32 num);
1524
1525
1532extern typ_enum_t *
1533 typ_first_enumdef2 (typ_def_t *typdef);
1534
1535
1543extern const typ_enum_t *
1544 typ_first_con_enumdef (const typ_def_t *typdef);
1545
1546
1554extern typ_enum_t *
1555 typ_find_enumdef (dlq_hdr_t *ebQ,
1556 const xmlChar *name);
1557
1558
1565extern uint32
1566 typ_enumdef_count (const typ_def_t *typdef);
1567
1568
1576extern boolean
1578 const xmlChar *valstr);
1579
1580
1587extern typ_def_t *
1589
1590
1598extern typ_enum_t *
1599 typ_get_enumdef (typ_def_t *typdef,
1600 const xmlChar *valstr);
1601
1602
1609extern const typ_sval_t *
1610 typ_first_strdef (const typ_def_t *typdef);
1611
1612
1619extern uint32
1620 typ_get_maxrows (const typ_def_t *typdef);
1621
1622
1632extern ncx_access_t
1633 typ_get_maxaccess (const typ_def_t *typdef);
1634
1635
1645extern ncx_data_class_t
1646 typ_get_dataclass (const typ_def_t *typdef);
1647
1648
1655extern ncx_merge_t
1656 typ_get_mergetype (const typ_def_t *typdef);
1657
1658
1665extern xmlns_id_t
1666 typ_get_nsid (const typ_template_t *typ);
1667
1668
1678extern typ_template_t *
1679 typ_get_listtyp (typ_def_t *typdef);
1680
1681
1691extern const typ_template_t *
1692 typ_get_clisttyp (const typ_def_t *typdef);
1693
1694
1701extern typ_unionnode_t *
1703
1704
1710extern void
1712
1713
1720extern typ_def_t *
1722
1723
1730extern typ_unionnode_t *
1732
1733
1741extern const typ_unionnode_t *
1742 typ_first_con_unionnode (const typ_def_t *typdef);
1743
1744
1752extern boolean
1754
1755
1763extern boolean
1765
1766
1774extern boolean
1775 typ_is_enum (ncx_btype_t btyp);
1776
1777
1785extern typ_pattern_t *
1786 typ_new_pattern (const xmlChar *pat_str,
1787 boolean ocmode);
1788
1789
1797extern void
1799
1800
1808extern status_t
1810
1811
1818extern typ_pattern_t *
1820
1821
1828extern typ_pattern_t *
1830
1831
1839extern const typ_pattern_t *
1840 typ_get_first_cpattern (const typ_def_t *typdef);
1841
1842
1850extern const typ_pattern_t *
1851 typ_get_next_cpattern (const typ_pattern_t *curpat);
1852
1853
1860extern uint32
1861 typ_get_pattern_count (const typ_def_t *typdef);
1862
1863
1870extern ncx_errinfo_t *
1872
1873
1879extern void
1880 typ_clean_typeQ (dlq_hdr_t *que);
1881
1882
1890extern boolean
1892 ncx_btype_t btyp);
1893
1894
1901extern boolean
1903
1904
1912extern boolean
1914 ncx_btype_t btyp);
1915
1916
1926extern boolean
1927 typ_ok (const typ_def_t *typdef);
1928
1929
1936extern boolean
1938
1939
1946extern const xmlChar *
1947 typ_get_leafref_path (const typ_def_t *typdef);
1948
1949
1956extern const void *
1957 typ_get_leafref_path_addr (const typ_def_t *typdef);
1958
1959
1966extern struct xpath_pcb_t_ *
1968
1969
1978
1979
1985extern void
1987
1988
1996extern boolean
1997 typ_get_constrained (const typ_def_t *typdef);
1998
1999
2006extern boolean
2007 typ_get_constrained_set (const typ_def_t *typdef);
2008
2009
2019extern void
2021 typ_def_t *target);
2022
2023
2033extern typ_def_t *
2035
2036
2046extern boolean
2047 typ_has_subclauses (const typ_def_t *typdef);
2048
2049
2056extern typ_idref_t *
2058
2059
2067extern typ_idref_t *
2069 typ_idref_t *curdef);
2070
2071
2079extern const typ_idref_t *
2081
2082
2090extern const typ_idref_t *
2091 typ_get_next_cidref (const typ_def_t *typdef,
2092 const typ_idref_t *curdef);
2093
2103extern uint8
2104 typ_get_fraction_digits (const typ_def_t *typdef);
2105
2106
2114extern status_t
2116 uint8 digits);
2117
2118
2125extern uint32
2127
2128
2135extern uint32
2136 typ_get_typdef_linenum (const typ_def_t *typdef);
2137
2138
2146extern void
2148 typ_union_walker_fn_t walkerfn,
2149 void *cookie);
2150
2151
2159extern void
2161 typ_union_walker2_fn_t walkerfn,
2162 void *cookie);
2163
2164
2172extern void
2174 typ_union_walker3_fn_t walkerfn,
2175 void *cookie);
2176
2177
2184extern const xmlChar *
2185 typ_get_yang_typename (const typ_def_t *typdef);
2186
2187
2198extern boolean
2200
2201
2207extern typ_idref_t *
2208 typ_new_idref (void);
2209
2210
2216extern void
2217 typ_free_idref (typ_idref_t *idref);
2218
2219
2223#ifdef __cplusplus
2224} /* end extern 'C' */
2225#endif
2226
2227#endif /* _H_typ */
status_t
global error return code
Definition: status_enum.h:210
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
ncx_leafref_class_t
Classification for the types of leafref path statements wrt/ how they can be cached.
Definition: ncxtypes.h:1567
ncx_status_t
enumeration for different YANG data-def status values
Definition: ncxtypes.h:583
ncx_yang_version_t
enumeration for different YANG language versions
Definition: ncxtypes.h:1009
ncx_tclass_t
Enumeration of the basic value type classifications.
Definition: ncxtypes.h:407
xmlChar * ncx_str_t
string alias for data types:
Definition: ncxtypes.h:802
ncx_iqual_t
The instance qualifier types are borrowed from ABNF and RelaxNG.
Definition: ncxtypes.h:460
ncx_strrest_t
Enumeration of string restriction types.
Definition: ncxtypes.h:488
ncx_btype_t
enumeration of the built-in NCX types These types cannot be overridden and cannot be imported
Definition: ncxtypes.h:213
ncx_access_t
NCX Access Control 'max-access' enumeration values Note that access control is applied to the session...
Definition: ncxtypes.h:182
ncx_data_class_t
NCX Persistence Control.
Definition: ncxtypes.h:203
ncx_merge_t
The merge type for the NETCONF merge operation.
Definition: ncxtypes.h:469
ncx_squal_t
typdef search qualifier list (internal compiler modes)
Definition: ncxtypes.h:478
const dlq_hdr_t * typ_get_crangeQ_con(const typ_def_t *typdef)
Return the rangeQ for the given typdef Do not follow typdef chains.
Definition: typ.c:1179
void typ_free_template(typ_template_t *typ)
Scrub the memory in a typ_template_t by freeing all the sub-fields and then freeing the entire struct...
Definition: typ.c:309
const typ_def_t * typ_get_cuserdef_typdef(const typ_def_t *typdef)
Get the base typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2316
uint32 typ_get_maxrows(const typ_def_t *typdef)
Get the maxrows value if it exists or zero if not.
Definition: typ.c:3609
void typ_free_rangedef(typ_rangedef_t *rv, ncx_btype_t btyp)
Free a typ_rangedef_t struct (range-stmt)
Definition: typ.c:900
const typ_def_t * typ_get_cparent_typdef(const typ_def_t *typdef)
Get the next typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2149
ncx_btype_t typ_get_range_type(ncx_btype_t btyp)
Get the correct typ_rangedef_t data type for the indicated base type.
Definition: typ.c:1723
typ_def_t * typ_get_unionnode_ptr(typ_unionnode_t *un)
Get the proper typdef pointer from a unionnode.
Definition: typ.c:3956
const typ_rangedef_t * typ_first_rangedef_con(const typ_def_t *typdef)
Return the lower bound range definition struct Constrain search to this typdef.
Definition: typ.c:1378
boolean typ_is_xpath_string(const typ_def_t *typdef)
Find the ncx:xpath extension within the specified typdef chain.
Definition: typ.c:2691
ncx_access_t typ_get_maxaccess(const typ_def_t *typdef)
Find the max-access value for the specified typdef.
Definition: typ.c:3647
const typ_def_t * typ_get_cbase_typdef(const typ_def_t *typdef)
Get the base typ_def_t in a chain – for NCX_CL_NAMED chained typed Also NCX_CL_REF pointer typdefs.
Definition: typ.c:2361
boolean typ_ok_for_metadata(ncx_btype_t btyp)
Check if the base type is okay to use in an XML attribute.
Definition: typ.c:4559
typ_def_t * typ_get_correct_enumdef(typ_def_t *typdef)
Get the typ_enum_t to use.
Definition: typ.c:3474
boolean typ_is_number(ncx_btype_t btyp)
Check if the base type is numeric.
Definition: typ.c:4069
ncx_strrest_t typ_get_strrest(const typ_def_t *typdef)
Get the string restrinvtion type set for this typdef.
Definition: typ.c:1520
const xmlChar * typ_get_named_type_modname(const typ_def_t *typdef)
Get the module name of the named typ.
Definition: typ.c:602
ncx_btype_t typ_get_basetype(const typ_def_t *typdef)
Get the final base type of the specified typ_def_t.
Definition: typ.c:1769
ncx_data_class_t typ_get_dataclass(const typ_def_t *typdef)
Find the data-class value for the specified typdef.
Definition: typ.c:3691
const typ_idref_t * typ_get_first_cidref(typ_def_t *typdef)
Get the idref field if this is an NCX_BT_IDREF typdef Const version.
Definition: typ.c:5205
typ_def_t * typ_get_next_typdef(typ_def_t *typdef)
Get the next typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2188
uint32 typ_get_typ_linenum(const typ_template_t *typ)
Get the line number for the typ_template_t.
Definition: typ.c:5337
typ_idref_t * typ_get_next_idref(typ_def_t *typdef, typ_idref_t *curdef)
Get the next idref field if this is an NCX_BT_IDREF typdef.
Definition: typ.c:5179
void typ_free_sval(typ_sval_t *sv)
Free a typ_sval_t struct free a string descriptor.
Definition: typ.c:1644
ncx_iqual_t typ_get_iqualval_def(const typ_def_t *typdef)
Find the instance qualifier value enum for the specified type template.
Definition: typ.c:2937
void typ_clean_typeQ(dlq_hdr_t *que)
Clean a queue of typ_template_t structs.
Definition: typ.c:4483
typ_enum_t * typ_find_enumdef(dlq_hdr_t *ebQ, const xmlChar *name)
Get the specified enum def struct.
Definition: typ.c:3378
void typ_unload_basetypes(void)
Unload and destroy the typ_template_t structs for the base types unload the typ_template_t structs fo...
Definition: typ.c:252
struct xpath_pcb_t_ * typ_get_leafref_pcb(typ_def_t *typdef)
Get the XPath parser control block for the leafref data type returns xpath_pcb_t but cannot import du...
Definition: typ.c:4801
boolean typ_ok_for_union(ncx_yang_version_t langver, ncx_btype_t btyp)
Check if the base type is okay to use in an union decl.
Definition: typ.c:4577
ncx_btype_t typ_get_basetype2(typ_def_t *typdef)
Get the final base type of the specified typ_def_t.
Definition: typ.c:1822
dlq_hdr_t * typ_get_rangeQ_con(typ_def_t *typdef)
Return the rangeQ for the given typdef Do not follow typdef chains.
Definition: typ.c:1092
const typ_idref_t * typ_get_next_cidref(const typ_def_t *typdef, const typ_idref_t *curdef)
Get the next idref field if this is an NCX_BT_IDREF typdef.
Definition: typ.c:5240
boolean typ_is_xsd_simple(ncx_btype_t btyp)
Check if this is a simple data type in XSD encoding.
Definition: typ.c:3167
ncx_merge_t typ_get_mergetype(const typ_def_t *typdef)
Get the merge type for a specified type def.
Definition: typ.c:3732
status_t typ_load_basetypes(void)
Create typ_template_t structs for the base types.
Definition: typ.c:196
typ_idref_t * typ_new_idref(void)
Malloc a new idref.
Definition: typ.c:5660
void typ_free_enum(typ_enum_t *en)
Free a typ_enum_t struct.
Definition: typ.c:850
const typ_def_t * typ_cget_new_named(const typ_def_t *typdef)
Access the new typdef inside a typ_named_t struct inside a typ_def_t.
Definition: typ.c:731
void typ_get_union_typdefs(typ_def_t *typdef, typ_union_walker3_fn_t walkerfn, void *cookie)
Walk the union type nodes to get the member typedefs
Definition: typ.c:5516
const xmlChar * typ_get_named_typename(const typ_def_t *typdef)
Get the type name of the named typ.
Definition: typ.c:576
const xmlChar * typ_get_rangestr(const typ_def_t *typdef)
Return the range string for the given typdef chain.
Definition: typ.c:1304
typ_enum_t * typ_new_enum(const xmlChar *name)
Alloc and Init a typ_enum_t struct.
Definition: typ.c:782
typ_range_t * typ_get_range_con(typ_def_t *typdef)
Return the range struct for the given typdef Do not follow typdef chains.
Definition: typ.c:1221
boolean typ_has_subclauses(const typ_def_t *typdef)
Check if the specified typdef has any sub-clauses.
Definition: typ.c:5062
const xmlChar * typ_get_yang_typename(const typ_def_t *typdef)
Get the YANG type name for this typdef if there is one.
Definition: typ.c:5583
const dlq_hdr_t * typ_get_crangeQ(const typ_def_t *typdef)
Return the rangeQ for the given typdef.
Definition: typ.c:1134
typ_idref_t * typ_get_first_idref(typ_def_t *typdef)
Get the first idref field if this is an NCX_BT_IDREF typdef.
Definition: typ.c:5141
void typ_free_pattern(typ_pattern_t *pat)
Free a pattern struct.
Definition: typ.c:4194
const typ_def_t * typ_get_cqual_typdef(const typ_def_t *typdef, ncx_squal_t squal)
Get the final typ_def_t of the specified typ_def_t based on the qualifier.
Definition: typ.c:2510
typ_sval_t * typ_new_sval(const xmlChar *str, ncx_btype_t btyp)
Alloc and Init a typ_sval_t struct malloc and init a string descriptor.
Definition: typ.c:1605
boolean typ_ok_for_xsdlist(ncx_btype_t btyp)
Check if the base type is okay to use in an ncx:xsdlist typedef.
Definition: typ.c:4680
const ncx_appinfo_t * typ_find_appinfo_con(const typ_def_t *typdef, const xmlChar *prefix, const xmlChar *name)
Find the specified appinfo name, constrained to the current typdef.
Definition: typ.c:2662
typ_enum_t * typ_next_enumdef(typ_enum_t *enumdef)
Get the next enum def struct.
Definition: typ.c:3251
const typ_pattern_t * typ_get_first_cpattern(const typ_def_t *typdef)
Get the first pattern struct for a typdef Const version.
Definition: typ.c:4347
uint32 typ_get_named_type_linenum(const typ_def_t *typdef)
Get the line number of the type template of the named type.
Definition: typ.c:634
typ_pattern_t * typ_new_pattern(const xmlChar *pat_str, boolean ocmode)
Malloc and init a pattern struct.
Definition: typ.c:4156
typ_listval_t * typ_new_listval(void)
Alloc and Init a typ_listval_t struct malloc and init a list descriptor.
Definition: typ.c:1669
typ_enum_t * typ_get_enumdef(typ_def_t *typdef, const xmlChar *valstr)
Get the typ_enum_t.
Definition: typ.c:3521
boolean typ_is_enum(ncx_btype_t btyp)
Check if the base type is an enumeration.
Definition: typ.c:4132
uint32 typ_get_pattern_count(const typ_def_t *typdef)
Get the number of pattern structs in a typdef.
Definition: typ.c:4417
const ncx_appinfo_t * typ_find_appinfo(const typ_def_t *typdef, const xmlChar *prefix, const xmlChar *name)
Find the specified appinfo variable by its prefix and name.
Definition: typ.c:2609
typ_enum_t * typ_first_enumdef(typ_def_t *typdef)
Get the first enum def struct looks past named typedefs to base typedef.
Definition: typ.c:3223
void typ_normalize_rangeQ(dlq_hdr_t *rangeQ, ncx_btype_t btyp)
Start with a valid rangedef chain.
Definition: typ.c:941
const typ_template_t * typ_get_parent_type(const typ_template_t *typ)
Get the next typ_template_t in a chain – for NCX_CL_NAMED only.
Definition: typ.c:2113
boolean typ_has_children(ncx_btype_t btyp)
Check if this is a data type that uses the val.v.childQ.
Definition: typ.c:3061
typ_enum_t * typ_first_enumdef2(typ_def_t *typdef)
Get the first enum def struct.
Definition: typ.c:3311
const xmlChar * typ_get_defval(const typ_template_t *typ)
Find the default value string for the specified type template get default from template.
Definition: typ.c:2849
typ_unionnode_t * typ_first_unionnode(typ_def_t *typdef)
Get the first union node in the queue for a given typdef.
Definition: typ.c:3986
void typ_init_simple(typ_def_t *tdef, ncx_btype_t btyp)
Init a typ_simple_t struct inside a typ_def_t.
Definition: typ.c:403
status_t typ_set_new_named(typ_def_t *typdef, ncx_btype_t btyp)
Create a new typdef inside a typ_named_t struct inside a typ_def_t.
Definition: typ.c:662
void typ_unset_named_typdef(typ_def_t *typdef)
UnSet the typ link in a named typedef (used by YANG parser)
Definition: typ.c:555
void typ_free_unionnode(typ_unionnode_t *un)
Free a typ_unionnode_t struct.
Definition: typ.c:3929
const typ_unionnode_t * typ_first_con_unionnode(const typ_def_t *typdef)
Get the first union node in the queue for a given typdef constrained.
Definition: typ.c:4027
ncx_leafref_class_t typ_get_leafref_class(typ_def_t *typdef)
Get the leafref class for the leafref type.
Definition: typ.c:4834
status_t typ_set_fraction_digits(typ_def_t *typdef, uint8 digits)
Set the fraction-digits field from the typdef chain.
Definition: typ.c:5303
void typ_init_named(typ_def_t *tdef)
Init a typ_named_t struct inside a typ_def_t.
Definition: typ.c:446
boolean typ_is_schema_instance_string(const typ_def_t *typdef)
Find the ncx:schema-instance extension within the specified typdef chain.
Definition: typ.c:2794
boolean typ_get_constrained(const typ_def_t *typdef)
Get the constrained true/false field for the data type leafref or instance-identifier constrained fla...
Definition: typ.c:4892
const typ_pattern_t * typ_get_next_cpattern(const typ_pattern_t *curpat)
Get the next pattern struct for a typdef Const version.
Definition: typ.c:4393
const xmlChar * typ_get_basetype_name(const typ_template_t *typ)
Get the name of the final base type of the specified typ_template_t.
Definition: typ.c:1918
const typ_enum_t * typ_first_con_enumdef(const typ_def_t *typdef)
Get the first enum def struct constrained to this typdef.
Definition: typ.c:3340
typ_template_t * typ_new_template(void)
Malloc and initialize the fields in a typ_template_t.
Definition: typ.c:280
uint32 typ_enumdef_count(const typ_def_t *typdef)
Get the number of typ_enum_t Q entries.
Definition: typ.c:3411
const xmlChar * typ_get_name(const typ_def_t *typdef)
Get the name for the specified typdef.
Definition: typ.c:1876
const typ_range_t * typ_get_crange_con(const typ_def_t *typdef)
Return the range struct for the given typdef Do not follow typdef chains.
Definition: typ.c:1263
boolean typ_get_constrained_set(const typ_def_t *typdef)
Return TRUE if the require-instance stmt is set.
Definition: typ.c:4936
ncx_iqual_t typ_get_iqualval(const typ_template_t *typ)
Find the instance qualifier value enum for the specified type template.
Definition: typ.c:2915
void typ_set_strrest(typ_def_t *typdef, ncx_strrest_t strrest)
Set the string restrinvtion type set for this typdef.
Definition: typ.c:1564
boolean typ_ok_for_inline_index(ncx_yang_version_t langver, ncx_btype_t btyp)
Check if the base type is okay to use in an inline index decl.
Definition: typ.c:4508
typ_def_t * typ_get_userdef_typdef(typ_def_t *typdef)
Get the base typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2270
void typ_set_leafref_class_key(typ_def_t *typdef)
Change the leafref class for the type to NCX_LEAFREF_CLASS_KEY.
Definition: typ.c:4865
ncx_errinfo_t * typ_get_range_errinfo(typ_def_t *typdef)
Get the range errinfo for a typdef.
Definition: typ.c:4453
typ_def_t * typ_get_base_typdef(typ_def_t *typdef)
Get the base typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2232
typ_enum_t * typ_get_enumdef_n(typ_def_t *typdef, uint32 num)
Get the enum defs defined based on enum order.
Definition: typ.c:3275
dlq_hdr_t * typ_get_rangeQ(typ_def_t *typdef)
Return the rangeQ for the given typdef.
Definition: typ.c:1048
const void * typ_get_leafref_path_addr(const typ_def_t *typdef)
Get the address of the path argument for the leafref data type.
Definition: typ.c:4765
ncx_tclass_t typ_get_base_class(const typ_def_t *typdef)
Follow any typdef links and get the class of the base typdef for the specified typedef.
Definition: typ.c:1977
typ_unionnode_t * typ_new_unionnode(typ_template_t *typ)
Alloc and Init a typ_unionnode_t struct.
Definition: typ.c:3904
void typ_clean_typdef(typ_def_t *typdef)
Clean a typ_def_t struct, but do not delete it.
Definition: typ.c:486
const typ_rangedef_t * typ_first_rangedef(const typ_def_t *typdef)
Return the lower bound range definition struct.
Definition: typ.c:1348
boolean typ_enumdef_conditional(typ_def_t *typdef, const xmlChar *valstr)
Check if the specified enumdef value is conditional on if-feature.
Definition: typ.c:3438
const xmlChar * typ_get_parenttype_name(const typ_template_t *typ)
Get the final base type of the specified typ_def_t.
Definition: typ.c:1948
void typ_free_typdef(typ_def_t *typdef)
Scrub the memory in a typ_def_t by freeing all Then free the typdef itself.
Definition: typ.c:465
void typ_set_named_typdef(typ_def_t *typdef, typ_template_t *imptyp)
Set the fields in a named typedef (used by YANG parser)
Definition: typ.c:530
boolean typ_is_simple(ncx_btype_t btyp)
Check if this is a simple data type.
Definition: typ.c:3112
void typ_set_xref_typdef(typ_def_t *typdef, typ_def_t *target)
Set the target typdef for a leafref or instance-identifier NCX_BT_LEAFREF or NCX_BT_INSTANCE_ID.
Definition: typ.c:4979
void typ_init_typdef(typ_def_t *typdef)
init a pre-allocated typdef (done first)
Definition: typ.c:379
uint32 typ_get_typdef_linenum(const typ_def_t *typdef)
Get the line number for the typ_def_t.
Definition: typ.c:5360
status_t typ_compile_pattern(typ_pattern_t *pat)
Compile a pattern as into a regex_t struct.
Definition: typ.c:4238
boolean typ_ok(const typ_def_t *typdef)
Check if the typdef chain has any errors.
Definition: typ.c:4635
typ_pattern_t * typ_get_next_pattern(typ_pattern_t *curpat)
Get the next pattern struct for a typdef.
Definition: typ.c:4323
typ_def_t * typ_new_typdef(void)
Malloc and initialize the fields in a typ_def_t.
Definition: typ.c:352
boolean typ_is_string(ncx_btype_t btyp)
Check if the base type is a simple string (not list)
Definition: typ.c:4103
typ_template_t * typ_get_listtyp(typ_def_t *typdef)
Return the typ_template for the list type, if the supplied.
Definition: typ.c:3811
typ_rangedef_t * typ_new_rangedef(void)
Alloc and Init a typ_rangedef_t struct (range-stmt)
Definition: typ.c:877
uint8 typ_get_fraction_digits(const typ_def_t *typdef)
Get the fraction-digits field from the typdef chain typdef must be an NCX_BT_DECIMAL64 or 0 will be r...
Definition: typ.c:5268
boolean typ_has_index(ncx_btype_t btyp)
Check if this is a data type that has an index.
Definition: typ.c:3089
void typ_get_union_basetypes(typ_def_t *typdef, typ_union_walker2_fn_t walkerfn, void *cookie)
Walk the union type nodes to print the base type names.
Definition: typ.c:5451
void typ_set_simple_typdef(typ_template_t *typ, ncx_btype_t btyp)
Set the fields in a simple typedef (used by YANG parser)
Definition: typ.c:756
boolean typ_union_needs_xpath_check(typ_def_t *checkdef)
Walk the union type nodes to check if there are any unconstrained leafref or instance-identifier node...
Definition: typ.c:5608
typ_def_t * typ_get_qual_typdef(typ_def_t *typdef, ncx_squal_t squal)
Get the final typ_def_t of the specified typ_def_t based on the qualifier.
Definition: typ.c:2408
status_t typ_get_rangebounds_con(const typ_def_t *typdef, ncx_btype_t *btyp, const ncx_num_t **lb, const ncx_num_t **ub)
Return the lower and upper bound range number.
Definition: typ.c:1431
typ_def_t * typ_get_xref_typdef(typ_def_t *typdef)
Get the xrefdef target typdef from a leafref or instance-identifier.
Definition: typ.c:5017
const typ_sval_t * typ_first_strdef(const typ_def_t *typdef)
Get the first string def struct.
Definition: typ.c:3554
const typ_template_t * typ_get_clisttyp(const typ_def_t *typdef)
Return the typ_template for the list type, if the supplied.
Definition: typ.c:3859
typ_template_t * typ_get_basetype_typ(ncx_btype_t btyp)
Get the default typ_template_t for the specified base type.
Definition: typ.c:2018
const xmlChar * typ_get_default(const typ_def_t *typdef)
Check if this typdef has a default value defined get default from typdef.
Definition: typ.c:2883
typ_def_t * typ_get_parent_typdef(typ_def_t *typdef)
Get the next typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2074
const xmlChar * typ_get_units(const typ_template_t *typ)
Find the units string for the specified type template.
Definition: typ.c:2988
boolean typ_is_qname_string(const typ_def_t *typdef)
Find the ncx:qname extension within the specified typdef chain.
Definition: typ.c:2749
void typ_free_listval(typ_listval_t *lv)
Free a typ_listval_t struct free a list descriptor.
Definition: typ.c:1694
typ_enum_t * typ_new_enum2(xmlChar *name)
Alloc and Init a typ_enum_t struct.
Definition: typ.c:821
typ_def_t * typ_get_new_named(typ_def_t *typdef)
Access the new typdef inside a typ_named_t struct inside a typ_def_t.
Definition: typ.c:705
void typ_free_idref(typ_idref_t *idref)
Clean and freec an idref.
Definition: typ.c:5681
void typ_get_union_types(typ_def_t *typdef, typ_union_walker_fn_t walkerfn, void *cookie)
Walk the union type nodes to print the names.
Definition: typ.c:5381
typ_pattern_t * typ_get_first_pattern(typ_def_t *typdef)
Get the first pattern struct for a typdef.
Definition: typ.c:4278
typ_def_t * typ_get_basetype_typdef(ncx_btype_t btyp)
Get the default typdef for the specified base type.
Definition: typ.c:2044
xmlns_id_t typ_get_nsid(const typ_template_t *typ)
Return the namespace ID.
Definition: typ.c:3786
const xmlChar * typ_get_units_from_typdef(const typ_def_t *typdef)
Find the units string for the specified typdef template.
Definition: typ.c:3018
const xmlChar * typ_get_leafref_path(const typ_def_t *typdef)
Get the path argument for the leafref data type.
Definition: typ.c:4729
boolean(* typ_union_walker3_fn_t)(ncx_btype_t the_btype, typ_def_t *the_typdef, void *cookie)
CBOR parse union base type walker function.
Definition: typ.h:576
boolean(* typ_union_walker_fn_t)(const xmlChar *the_typename, void *cookie)
union typename walker function
Definition: typ.h:545
boolean(* typ_union_walker2_fn_t)(ncx_btype_t the_btype, void *cookie)
complex union base type walker function
Definition: typ.h:559
typ_pmode_t
type parser used in 3 separate modes
Definition: typ.h:191
@ TYP_PM_INDEX
index clause parse mode
Definition: typ.h:194
@ TYP_PM_NONE
not set
Definition: typ.h:192
@ TYP_PM_NORMAL
normal parse mode
Definition: typ.h:193
@ TYP_PM_MDATA
metadata clause parse mode
Definition: typ.h:195
Contains NCX constants.
YANG module data structures Many internal representations of YANG module constructs.
Global error messages for status code enumerations.
YANG extension usage entry A nested external statement will produce a tree of ncx_appinfo_t.
Definition: ncxtypes.h:883
YANG error info statement struct used to override default error handling in the server.
Definition: ncxtypes.h:1362
struct to remember error info tkc->cur_err will be checked before tkc->cur for error information
Definition: ncxtypes.h:873
YANG identity entry.
Definition: ncxtypes.h:1100
Discriminated union for all data typedefs.
Definition: typ.h:458
ncx_error_t tkerr
file and line info for compiler
Definition: typ.h:468
dlq_hdr_t appinfoQ
Q of ncx_appinfo_t.
Definition: typ.h:467
ncx_iqual_t iqual
instance qualifier (pre-YANG)
Definition: typ.h:460
ncx_data_class_t dataclass
data class (pre-YANG)
Definition: typ.h:462
typ_def_u_t def
union of type definition structs
Definition: typ.h:469
ncx_merge_t mergetype
merge type (pre-YANG
Definition: typ.h:463
xmlChar * typenamestr
typename used in type field
Definition: typ.h:465
xmlChar * prefix
pfix used in type field
Definition: typ.h:464
uint32 linenum
line number (internal use)
Definition: typ.h:470
ncx_access_t maxaccess
max-access
Definition: typ.h:461
uint8 flags
processing flags
Definition: typ.h:471
ncx_tclass_t tclass
type class
Definition: typ.h:459
const xmlChar * yang_name
name used in YANG typedef
Definition: typ.h:466
struct typ_userdef_t_ * userdef
user type def hooks
Definition: typ.h:472
one ENUM typdef value – stored in simple.valQ Used for NCX_BT_ENUM and NCX_BT_BITS data type
Definition: typ.h:262
dlq_hdr_t appinfoQ
any extensions found in the enum-stmt (not used by server)
Definition: typ.h:284
dlq_hdr_t iffeatureQ
YANG 1.1 or 1.0 if-feature statements.
Definition: typ.h:287
xmlChar * name
enum name
Definition: typ.h:266
int32 val
YANG value-stmt or implied value – used if NCX_BT_ENUM.
Definition: typ.h:278
ncx_status_t status
status-stmt (cannot be obsolete in the server
Definition: typ.h:275
xmlChar * ref
enum reference-stmt (not saved in server)
Definition: typ.h:272
dlq_hdr_t qhdr
queue header
Definition: typ.h:263
uint32 pos
YANG position-stmt or implied position – used if NCX_BT_BITS.
Definition: typ.h:281
xmlChar * descr
enum description-stmt (not saved in server)
Definition: typ.h:269
uint8 feature_flags
YANG 1.1 processing flags.
Definition: typ.h:293
uint8 flags
internal processing flags
Definition: typ.h:290
YANG identityref struct the value is an identity-stmt QName that has a base-stmt that resolves to the...
Definition: typ.h:351
xmlChar * basename
identity base name
Definition: typ.h:354
dlq_hdr_t qhdr
queue header
Definition: typ.h:352
xmlChar * baseprefix
identity base prefix
Definition: typ.h:353
ncx_identity_t * base
back-ptr to base (if found )
Definition: typ.h:355
const xmlChar * modname
back-ptr to the main mod name
Definition: typ.h:356
one list member stored in simple.queue of instance-qualified strings
Definition: typ.h:202
dlq_hdr_t strQ
Q of typ_sval_t.
Definition: typ.h:204
ncx_iqual_t iqual
instance qualifier for this listval
Definition: typ.h:205
dlq_hdr_t qhdr
queue header
Definition: typ.h:203
NCX_CL_NAMED.
Definition: typ.h:422
struct typ_template_t_ * typ
derived-from type
Definition: typ.h:423
struct typ_def_t_ * newtyp
opt.
Definition: typ.h:424
ncx_btype_t final_type
used for named types
Definition: typ.h:425
YANG pattern struct : N per typedef and also across N typdefs in a chain: all are ANDed together like...
Definition: typ.h:321
ncx_errinfo_t pat_errinfo
error override data for this pattern
Definition: typ.h:334
xmlChar * pat_str
pattern string
Definition: typ.h:331
boolean ocpattern_mode
YANG vs.
Definition: typ.h:340
dlq_hdr_t qhdr
queue header
Definition: typ.h:322
boolean ocpattern_set
make sure not to access ocpattern until set
Definition: typ.h:343
one YANG range description
Definition: typ.h:308
ncx_error_t tkerr
file and line info for compiler
Definition: typ.h:313
dlq_hdr_t rangeQ
Q of typ_rangedef_t.
Definition: typ.h:310
ncx_errinfo_t range_errinfo
error override data for this range
Definition: typ.h:311
xmlChar * rangestr
range string used in module
Definition: typ.h:309
ncx_status_t res
parser status
Definition: typ.h:312
one member of a range definition – stored in simple.rangeQ
Definition: typ.h:246
ncx_error_t tkerr
file and line infor for compiler
Definition: typ.h:254
ncx_num_t ub
upper bound
Definition: typ.h:250
xmlChar * ubstr
saved if range deferred
Definition: typ.h:253
ncx_num_t lb
lower bound
Definition: typ.h:249
dlq_hdr_t qhdr
queue header
Definition: typ.h:247
ncx_btype_t btyp
base type
Definition: typ.h:251
xmlChar * lbstr
saved if range deferred
Definition: typ.h:252
xmlChar * rangestr
saved in YANG only
Definition: typ.h:248
uint8 flags
internal processing flags
Definition: typ.h:255
NCX_CL_REF.
Definition: typ.h:436
struct typ_def_t_ * typdef
fwd pointer
Definition: typ.h:437
NCX_CL_SIMPLE.
Definition: typ.h:387
ncx_leafref_class_t leafref_class
if this is a leafref then it is classified for optimization
Definition: typ.h:396
struct typ_template_t_ * listtyp
template for NCX_BT_SLIST
Definition: typ.h:389
dlq_hdr_t idrefQ
for NCX_BT_IDREF only
Definition: typ.h:400
dlq_hdr_t unionQ
Q of typ_unionnode_t for NCX_BT_UNION.
Definition: typ.h:403
typ_range_t range
for all num types and string length
Definition: typ.h:399
uint32 maxbit
max bit position in valQ
Definition: typ.h:406
uint8 digits
fraction-digits for decimal64
Definition: typ.h:408
dlq_hdr_t patternQ
Q of ncx_pattern_t for NCX_BT_STRING.
Definition: typ.h:404
ncx_btype_t btyp
NCX base type.
Definition: typ.h:388
ncx_strrest_t strrest
string/type restriction type in valQ
Definition: typ.h:405
boolean constrained
set when require-instance=TRUE
Definition: typ.h:398
struct typ_def_t_ * xrefdef
pointer to resolved typedef for NCX_BT_LEAFREF/NCX_BT_INSTANCE_ID
Definition: typ.h:393
dlq_hdr_t metaQ
Q of obj_template_t structs.
Definition: typ.h:402
int32 maxenum
max enum value in valQ
Definition: typ.h:407
uint8 flags
TYP_FL_REPLACE, TYP_FL_CONSET used.
Definition: typ.h:409
struct xpath_pcb_t_ * xleafref
saved for NCX_BT_LEAFREF only
Definition: typ.h:390
dlq_hdr_t valQ
bit, enum, string, list vals/patterns
Definition: typ.h:401
one STRING typdef value, pattern value
Definition: typ.h:300
dlq_hdr_t qhdr
queue header
Definition: typ.h:301
ncx_str_t val
value string used in the pattern
Definition: typ.h:302
uint8 flags
internal processing flags
Definition: typ.h:303
One YANG 'typedef' definition – top-level type template.
Definition: typ.h:477
ncx_error_t tkerr
file and line info for compiler
Definition: typ.h:519
dlq_hdr_t appinfoQ
any external statements within the typedef several extensions supported in the server for this codepo...
Definition: typ.h:510
xmlChar * name
typedef name
Definition: typ.h:481
ncx_status_t status
status-stmt
Definition: typ.h:502
xmlChar * ref
typedef reference-stmt (not saved in server)
Definition: typ.h:487
dlq_hdr_t qhdr
queue header
Definition: typ.h:478
typ_def_t typdef
each typedef has one type-stmt within it
Definition: typ.h:505
status_t res
compiler parse status
Definition: typ.h:516
xmlChar * descr
typedef description-stmt (not saved in server)
Definition: typ.h:484
boolean used
flag used by compiler for not used warning
Definition: typ.h:499
xmlChar * units
type units-stmt
Definition: typ.h:493
xmlChar * defval
type default-stmt
Definition: typ.h:490
void * grp
const back-ptr to direct grp parent
Definition: typ.h:513
xmlns_id_t nsid
namespace ID for the typedef
Definition: typ.h:496
One YANG union node One of the 2 pointers (typ or typdef will be NULL If a named type is used,...
Definition: typ.h:528
dlq_hdr_t qhdr
queue header
Definition: typ.h:529
typ_def_t * typdef
malloced for unnamed inline type
Definition: typ.h:531
typ_template_t * typ
not malloced, just back-ptr
Definition: typ.h:530
boolean seen
needed for yangdiff
Definition: typ.h:532
NCX Syntax Token Handler.
union of all the basic number types if float not supported, then it is stored as an int64
Definition: ncxtypes.h:780
Union of all the typdef variants.
Definition: typ.h:442
ncx_btype_t base
base type used
Definition: typ.h:443
typ_ref_t ref
internal type reference
Definition: typ.h:446
typ_named_t named
named type
Definition: typ.h:445
typ_simple_t simple
simple type inline
Definition: typ.h:444
union contains either a YANG pattern or an OC pattern
Definition: typ.h:325
regex_t ocpattern
openconfig patterm (POSIX)
Definition: typ.h:327
xmlRegexpPtr pattern
YANG pattern (XSD)
Definition: typ.h:326
XML namespace support.