1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
<HTML>
<BODY BGCOLOR=white>
<PRE>
<!-- Manpage converted by man2html 3.0.1 -->
NAME
lAddElemStr, lDelElemStr, lGetElemStr - list operations
lAddSubStr, lDelSubStr, lGetSubStr - sub-list operations
SYNOPSIS
#include "cull.h"
lListElem* lAddElemStr(
lList** lpp,
int nm,
char *s,
lDescr *dp
);
int lDelElemStr(
lList** lpp,
int nm,
char *s
);
lListElem *lGetElemStr(
lList* lp,
int nm,
char *s
);
lListElem* lAddSubStr(
lListElem* ep,
int nm,
char *s,
B
int snm,
lDescr *dp
);
int lDelSubStr(
lListElem* ep,
int nm,
char *s,
int snm
);
lListElem *lGetSubStr(
lListElem* ep,
int nm,
char *s,
int snm
);
lListElem *lDiffListStr(
int nm,
lList** lpp1,
lList** lpp1,
);
DESCRIPTION
lListElem *lAddElemStr(lpp, nm, s, dp)
Appends an element to the list *lpp. The new element
gets the type dp (using <B><A HREF="../htmlman3/lCreateElem.html">lCreateElem(3)</A></B>). Field nm of
the new elements gets the value s (using <I>lSet-</I>
<B><A HREF="../htmlman3/String.html">String(3)</A></B>). No test are made to ensure uniqueness of
elements in the list. If *lpp is NULL a new list head
gets created (using <B><A HREF="../htmlman3/lCreateList.html">lCreateList(3)</A></B>). lAddElemStr()
fails if the given list or descriptor has no field nm.
int lDelElemStr(lpp, nm, s)
Removes one element containing s at field nm in the
list *lpp. <I>lGetElemStr</I> is used to find the element. It
gets unchained and freed. If no more elements are in
the list after unchaining the list head gets freed and
NULL is written to *lpp. <I>lDelElemStr</I> fails if the
given list has no field nm.
lListElem *lGetElemStr(lp, nm, s)
Searches the first element containing s at field nm in
the list lp. <B><A HREF="../htmlman3/strcmp.html">strcmp(3)</A></B> s used to perform the compare.
<I>lGetElemStr</I> returns the element.
lListElem *lAddSubStr(ep, nm, s, snm, dp)
Uses <I>lAddElemStr</I> to append an element to the sub-list
field snm of the element ep.
int lDelSubStr(ep, nm, s, snm)
Uses <I>lDelElemStr</I> to remove an element from the sub-list
field snm of the element ep.
lListElem *lGetSubStr(ep, nm, s, snm)
Uses <I>lGetElemStr</I> to find an element in the sub-list
field snm of the element ep.
int lDiffListStr(nm, lpp1, lpp2)
<I>lDiffListStr</I> removes and frees elements in <I>both</I> lists
with the same string key in field nm.
EXAMPLES
The first example shows the usage of list functions:
=======================================================================
#include "cull.h"
f()
{
lList *lp = NULL;
lListElem *ep;
/* add a queue element where QU_qname is "balin.q" to the list lp */
if (!(ep=lAddElemStr(&lp, QU_qname, "balin.q", QU_Type))) {
/* ... */
}
lSetString(ep, QU_qhostname, "balin.mydomain");
/* get the element of lp where QU_qname is "balin.q" */
if (!(ep=lGetElemStr(lp, QU_qname, "balin.q"))) {
/* ... */
}
/* remove the element of lp where QU_qname is "balin.q" */
if (!lDelElemStr(&lp, QU_qname, "balin.q")) {
/* ... */
}
/* here lp will be NULL again */
return;
}
=======================================================================
The second example shows the usage of sub-list functions:
=======================================================================
#include "cull.h"
g(queue)
lListElem *queue;
{
lListElem *ep;
/* add an owner element with OW_name "bill" to the */
/* sub-list QU_ownerlist of the element ep */
ep = lAddSubStr(ep, OW_name, "bill", QU_ownerlist, OW_Type);
if ( !ep ) {
/* ... */
}
lSetString(ep, OW_permissions, "everything");
/* get the element in the sub-list QU_ownerlist of */
/* the element ep where OW_name is "bill" */
if (!(ep=lGetSubStr(ep, OW_name, "bill", QU_ownerlist))) {
/* ... */
}
printf("Owner: %s0, lGetString(ep, OW_name));
/* remove the element in the sub-list of element ep */
/* where OW_name is "bill" */
if (!lDelSubStr(ep, OW_name, "bill", QU_ownerlist)) {
/* ... */
}
return;
}
=======================================================================
RETURN VALUES
<I>lAddElemStr</I> and <I>lAddSubStr</I> return a pointer to the added
list element or NULL on error. <I>lDelElemStr</I> and <I>lDelSubStr</I>
return 1 on success and 0 on error. <I>lGetElemStr</I> and <I>lGet-</I>
<I>SubStr</I> return a pointer to the found list element or NULL on
error. <I>lDiffListStr</I> returns 0 on success and -1 on error.
SEE ALSO
<B><A HREF="../htmlman1/sge_intro.html">sge_intro(1)</A></B>, <B><A HREF="../htmlman3/list_intro.html">list_intro(3)</A></B>, <B><A HREF="../htmlman3/lSetString.html">lSetString(3)</A></B>, <B><A HREF="../htmlman3/lGetString.html">lGetString(3)</A></B>,
<B><A HREF="../htmlman3/lAppendElem.html">lAppendElem(3)</A></B>, <B><A HREF="../htmlman3/lDechainElem.html">lDechainElem(3)</A></B>, <B><A HREF="../htmlman3/lCreateElem.html">lCreateElem(3)</A></B>, <I>lCreateL-</I>
<B><A HREF="../htmlman3/ist.html">ist(3)</A></B>.
COPYRIGHT
See <B><A HREF="../htmlman1/sge_intro.html">sge_intro(1)</A></B> for a full statement of rights and permis-
sions.
</PRE>
<HR>
<ADDRESS>
Man(1) output converted with
<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
</ADDRESS>
</BODY>
</HTML>
|