1 /*  START OF:       mbuild_Tlist_dcls_.incl.pl1               *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
 2 
 3 
 4 /****^  HISTORY COMMENTS:
 5   1) change(2019-08-17,GDixon), approve(2019-10-23,MCR10069),
 6      audit(2020-01-20,Swenson), install(2020-01-20,MR12.6g-0035):
 7      mbuild subsystem threaded-list software and declarations.  See: MTB-1003
 8                                                    END HISTORY COMMENTS */
 9 
10 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *   */
11 /*                                                                                                */
12 /* NOTES on Threaded Lists:                                                                       */
13 /*   The structures declared below are connected in two cardinality types:                        */
14 /*    - one-to-one:                   COMPILE.sourceP  <---->  SEG(source).compileP               */
15 /*    - one-to-many:    SEG(source_archive).inArch_Tb  <--->>  SEG(source).inArch_Td              */
16 /*                                                                                                */
17 /*   mbuild uses threaded lists (Tlists) to do one-to-many connections between related            */
18 /*   structures.                                                                                  */
19 /*     - A Tlist_base structure anchors the head/tail of a list.                                  */
20 /*     - A Tlist_data structure threads between adjacent structures of the list, or               */
21 /*       between a structure and the list head or tail anchor points.                             */
22 /*                                                                                                */
23 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *   */
24 
25   dcl 1 Tlist_base aligned based,                           /* Structure anchoring the threaded list of items.        */
26       2 headP ptr,                                          /* pointer to first item in the list.                     */
27       2 tailP ptr,                                          /* pointer to last item in the list.                      */
28       2 holderP ptr;                                        /* pointer to structure holding this Tlist_base.          */
29 
30   dcl 1 Tlist_data aligned based,                           /* Structure contained in items threaded together.        */
31       2 prevP ptr,                                          /* pointer to prev element on the list.                   */
32       2 nextP ptr,                                          /* pointer to next element on the list.                   */
33       2 itemP ptr,                                          /* pointer to structure holding this substructure.        */
34       2 baseP ptr;                                          /* pointer to list base (head/tail pointers).             */
35 
36   dcl 1 Tlist_initial_base aligned int static options(constant),
37       2 (headP, tailP, holderP) ptr init(null());           /* Initial value for a Tlist_base item.                   */
38 
39   dcl 1 Tlist_initial_data aligned int static options(constant),
40       2 (prevP, nextP, itemP, baseP) ptr init(null());      /* Initial value for a Tlist_data item.                   */
41 
42 /*  END OF:         mbuild_Tlist_dcls_.incl.pl1               *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */