Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Extensions.cs
Go to the documentation of this file.
2
3namespace System.Xml.Linq;
4
5public static class Extensions
6{
8 {
9 if (source == null)
10 {
11 throw new ArgumentNullException("source");
12 }
13 return GetAttributes(source, null);
14 }
15
17 {
18 if (source == null)
19 {
20 throw new ArgumentNullException("source");
21 }
22 if (!(name != null))
23 {
25 }
26 return GetAttributes(source, name);
27 }
28
30 {
31 if (source == null)
32 {
33 throw new ArgumentNullException("source");
34 }
35 return GetAncestors(source, null, self: false);
36 }
37
39 {
40 if (source == null)
41 {
42 throw new ArgumentNullException("source");
43 }
44 if (!(name != null))
45 {
47 }
48 return GetAncestors(source, name, self: false);
49 }
50
52 {
53 if (source == null)
54 {
55 throw new ArgumentNullException("source");
56 }
57 return GetAncestors(source, null, self: true);
58 }
59
61 {
62 if (source == null)
63 {
64 throw new ArgumentNullException("source");
65 }
66 if (!(name != null))
67 {
69 }
70 return GetAncestors(source, name, self: true);
71 }
72
74 {
75 if (source == null)
76 {
77 throw new ArgumentNullException("source");
78 }
79 return NodesIterator(source);
80 }
81
83 {
84 foreach (T root in source)
85 {
86 if (root == null)
87 {
88 continue;
89 }
90 XNode i = root.LastNode;
91 if (i != null)
92 {
93 do
94 {
95 i = i.next;
96 yield return i;
97 }
98 while (i.parent == root && i != root.content);
99 }
100 }
101 }
102
104 {
105 if (source == null)
106 {
107 throw new ArgumentNullException("source");
108 }
109 return GetDescendantNodes(source, self: false);
110 }
111
113 {
114 if (source == null)
115 {
116 throw new ArgumentNullException("source");
117 }
118 return GetDescendants(source, null, self: false);
119 }
120
122 {
123 if (source == null)
124 {
125 throw new ArgumentNullException("source");
126 }
127 if (!(name != null))
128 {
129 return XElement.EmptySequence;
130 }
131 return GetDescendants(source, name, self: false);
132 }
133
135 {
136 if (source == null)
137 {
138 throw new ArgumentNullException("source");
139 }
140 return GetDescendantNodes(source, self: true);
141 }
142
144 {
145 if (source == null)
146 {
147 throw new ArgumentNullException("source");
148 }
149 return GetDescendants(source, null, self: true);
150 }
151
153 {
154 if (source == null)
155 {
156 throw new ArgumentNullException("source");
157 }
158 if (!(name != null))
159 {
160 return XElement.EmptySequence;
161 }
162 return GetDescendants(source, name, self: true);
163 }
164
166 {
167 if (source == null)
168 {
169 throw new ArgumentNullException("source");
170 }
171 return GetElements(source, null);
172 }
173
175 {
176 if (source == null)
177 {
178 throw new ArgumentNullException("source");
179 }
180 if (!(name != null))
181 {
182 return XElement.EmptySequence;
183 }
184 return GetElements(source, name);
185 }
186
188 {
189 if (source == null)
190 {
191 throw new ArgumentNullException("source");
192 }
194 }
195
197 {
198 int count;
200 if (count > 0)
201 {
203 int i = 0;
204 while (i != count)
205 {
206 yield return items[i];
207 int num = i + 1;
208 i = num;
209 }
210 }
211 }
212
213 public static void Remove(this IEnumerable<XAttribute?> source)
214 {
215 if (source == null)
216 {
217 throw new ArgumentNullException("source");
218 }
219 int length;
221 for (int i = 0; i < length; i++)
222 {
223 array[i]?.Remove();
224 }
225 }
226
227 public static void Remove<T>(this IEnumerable<T?> source) where T : XNode
228 {
229 if (source == null)
230 {
231 throw new ArgumentNullException("source");
232 }
233 int length;
235 for (int i = 0; i < length; i++)
236 {
237 array[i]?.Remove();
238 }
239 }
240
242 {
243 foreach (XElement e in source)
244 {
245 if (e == null)
246 {
247 continue;
248 }
250 if (a == null)
251 {
252 continue;
253 }
254 do
255 {
256 a = a.next;
257 if (name == null || a.name == name)
258 {
259 yield return a;
260 }
261 }
262 while (a.parent == e && a != e.lastAttr);
263 }
264 }
265
267 {
268 foreach (T item in source)
269 {
270 if (item == null)
271 {
272 continue;
273 }
274 for (XElement e = (self ? ((XNode)item) : ((XNode)item.parent)) as XElement; e != null; e = e.parent as XElement)
275 {
276 if (name == null || e.name == name)
277 {
278 yield return e;
279 }
280 }
281 }
282 }
283
285 {
286 foreach (T root in source)
287 {
288 if (root == null)
289 {
290 continue;
291 }
292 if (self)
293 {
294 yield return root;
295 }
296 XNode i = root;
297 while (true)
298 {
300 if (i is XContainer xContainer && (firstNode = xContainer.FirstNode) != null)
301 {
302 i = firstNode;
303 }
304 else
305 {
306 while (i != null && i != root && i == i.parent.content)
307 {
308 i = i.parent;
309 }
310 if (i == null || i == root)
311 {
312 break;
313 }
314 i = i.next;
315 }
316 yield return i;
317 }
318 }
319 }
320
322 {
323 foreach (T root in source)
324 {
325 if (root == null)
326 {
327 continue;
328 }
329 if (self)
330 {
331 XElement xElement = (XElement)(object)root;
332 if (name == null || xElement.name == name)
333 {
334 yield return xElement;
335 }
336 }
337 XNode i = root;
338 XContainer xContainer = root;
339 while (true)
340 {
341 if (xContainer != null && xContainer.content is XNode)
342 {
343 i = ((XNode)xContainer.content).next;
344 }
345 else
346 {
347 while (i != null && i != root && i == i.parent.content)
348 {
349 i = i.parent;
350 }
351 if (i == null || i == root)
352 {
353 break;
354 }
355 i = i.next;
356 }
357 XElement e = i as XElement;
358 if (e != null && (name == null || e.name == name))
359 {
360 yield return e;
361 }
362 xContainer = e;
363 }
364 }
365 }
366
368 {
369 foreach (T root in source)
370 {
371 if (root == null)
372 {
373 continue;
374 }
376 if (i == null)
377 {
378 continue;
379 }
380 do
381 {
382 i = i.next;
383 if (i is XElement xElement && (name == null || xElement.name == name))
384 {
385 yield return xElement;
386 }
387 }
388 while (i.parent == root && i != root.content);
389 }
390 }
391}
static void Sort(Array array)
Definition Array.cs:2329
static IEnumerable< XNode > Nodes< T >(this IEnumerable< T?> source)
Definition Extensions.cs:73
static void Remove(this IEnumerable< XAttribute?> source)
static IEnumerable< XNode > NodesIterator< T >(IEnumerable< T > source)
Definition Extensions.cs:82
static IEnumerable< XElement > DescendantsAndSelf(this IEnumerable< XElement?> source, XName? name)
static IEnumerable< XElement > GetElements< T >(IEnumerable< T > source, XName name)
static IEnumerable< XNode > DescendantNodesAndSelf(this IEnumerable< XElement?> source)
static IEnumerable< XElement > DescendantsAndSelf(this IEnumerable< XElement?> source)
static IEnumerable< XElement > AncestorsAndSelf(this IEnumerable< XElement?> source, XName? name)
Definition Extensions.cs:60
static IEnumerable< XElement > Elements< T >(this IEnumerable< T?> source)
static IEnumerable< XElement > AncestorsAndSelf(this IEnumerable< XElement?> source)
Definition Extensions.cs:51
static IEnumerable< XNode > GetDescendantNodes< T >(IEnumerable< T > source, bool self)
static IEnumerable< T > DocumentOrderIterator< T >(IEnumerable< T > source)
static IEnumerable< XElement > Descendants< T >(this IEnumerable< T?> source)
static IEnumerable< XNode > DescendantNodes< T >(this IEnumerable< T?> source)
static IEnumerable< XElement > GetDescendants< T >(IEnumerable< T > source, XName name, bool self)
static IEnumerable< XAttribute > Attributes(this IEnumerable< XElement?> source)
Definition Extensions.cs:7
static IEnumerable< XElement > Ancestors< T >(this IEnumerable< T?> source)
Definition Extensions.cs:29
static void Remove< T >(this IEnumerable< T?> source)
static IEnumerable< XElement > GetAncestors< T >(IEnumerable< T > source, XName name, bool self)
static IEnumerable< XAttribute > Attributes(this IEnumerable< XElement?> source, XName? name)
Definition Extensions.cs:16
static IEnumerable< T > InDocumentOrder< T >(this IEnumerable< T > source)
static IEnumerable< XAttribute > GetAttributes(IEnumerable< XElement > source, XName name)
static IEnumerable< XAttribute > EmptySequence
Definition XAttribute.cs:18
static IEnumerable< XElement > EmptySequence
Definition XElement.cs:29
static XNodeDocumentOrderComparer DocumentOrderComparer
Definition XNode.cs:50