Jypeli 10
The simple game programming library
StringList.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2using System.Collections.Generic;
3using System.IO;
4
5namespace Jypeli
6{
10 public class StringList : INotifyList<string>
11 {
12 List<string> strings = new List<string>();
13
15 public IEnumerator<string> GetEnumerator()
16 {
17 return strings.GetEnumerator();
18 }
19
20 /*
21 * Since IEnumerable<T> inherits from non-generic IEnumerable (which is pretty odd...),
22 * we have to provide this GetEnumerator() method as well.
23 */
24 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
25 {
26 return GetEnumerator();
27 }
28
34 public string this[int index]
35 {
36 get { return strings[index]; }
37 set { strings[index] = value; }
38 }
39
46 public static StringList operator +( StringList a, object b )
47 {
48 return new StringList( a ).Add( b );
49 }
50
57 public static StringList operator +( object a, StringList b )
58 {
59 return new StringList( a ).Add( b );
60 }
61
67 public static implicit operator List<String>( StringList list )
68 {
69 return list.strings;
70 }
71
77 public static implicit operator StringList( List<String> list )
78 {
79 return new StringList( list );
80 }
81
87 public static implicit operator String[]( StringList list )
88 {
89 return list.strings.ToArray();
90 }
91
97 public static implicit operator StringList( String[] array )
98 {
99 return new StringList( array );
100 }
101
105 public bool IsReadOnly { get { return false; } }
106
112 public int Length
113 {
114 get { return strings.Count; }
115 set
116 {
117 if ( value < strings.Count )
118 {
119 strings.RemoveRange( value, strings.Count - value );
120 }
121
122 else if ( value > strings.Count )
123 {
124 for ( int i = value; i < strings.Count; i++ )
125 strings.Add( "" );
126 }
127 }
128 }
129
135 public int Count { get { return Length; } /*set { Length = value; }*/ }
136
140 public event Action Changed;
141
142 private void OnChanged()
143 {
144 if ( Changed != null )
145 Changed();
146 }
147
151 public StringList()
152 {
153 }
154
159 public StringList( StringList source )
160 {
161 strings.AddRange( source.strings );
162 }
163
168 public StringList( List<string> source )
169 {
170 strings.AddRange( source );
171 }
172
177 public StringList( object source )
178 {
179 Add( source );
180 }
181
187 public StringList( params string[] source )
188 {
189 strings.AddRange( source );
190 }
191
192#if JYPELI
197 public static StringList FromAsset( string assetName )
198 {
199 return new StringList( Game.Instance.Content.Load<string[]>( assetName ) );
200 }
201#endif
202
207 internal StringList AssignFrom( Stream stream )
208 {
209 using ( StreamReader input = new StreamReader( stream ) )
210 {
211 string line;
212 while ( ( line = input.ReadLine() ) != null )
213 {
214 strings.Add( line );
215 }
216 }
217
218 OnChanged();
219 return this;
220 }
221
222#if !WINDOWS_STOREAPP
229 public static StringList FromFile( string path )
230 {
231 StringList result = new StringList();
232
233 using ( StreamReader input = File.OpenText( path ) )
234 {
235 string line;
236 while ( ( line = input.ReadLine() ) != null )
237 {
238 result.Add( line );
239 }
240 }
241
242 return result;
243 }
244#endif
245
251 public StringList Add( params string[] lines )
252 {
253 strings.AddRange( lines );
254 OnChanged();
255 return this;
256 }
257
263 public StringList Add( StringList list )
264 {
265 strings.AddRange( list.strings );
266 OnChanged();
267 return this;
268 }
269
275 public StringList Add( List<String> list )
276 {
277 strings.AddRange( list );
278 OnChanged();
279 return this;
280 }
281
287 public StringList Add( object obj )
288 {
289 if ( obj is StringList ) return this.Add( (StringList)obj );
290 if ( obj is ICollection<object> )
291 {
292 foreach ( object element in (ICollection<object>)obj )
293 {
294 this.Add( element );
295 }
296 }
297
298 return this.Add( obj.ToString() );
299 }
300
307 public StringList RemoveAll( params string[] lines )
308 {
309 for ( int i = 0; i < lines.Length; i++ )
310 {
311 while ( strings.Remove( lines[i] ) ) ;
312 }
313
314 OnChanged();
315 return this;
316 }
317
324 public StringList RemoveAll( List<string> list )
325 {
326 for ( int i = 0; i < list.Count; i++ )
327 {
328 while ( strings.Remove( list[i] ) ) ;
329 }
330
331 OnChanged();
332 return this;
333 }
334
342 {
343 return RemoveAll( list.strings );
344 }
345
352 public StringList RemoveFirst( params string[] lines )
353 {
354 for ( int i = 0; i < lines.Length; i++ )
355 {
356 strings.Remove( lines[i] );
357 }
358
359 OnChanged();
360 return this;
361 }
362
369 public StringList RemoveFirst( List<string> list )
370 {
371 for ( int i = 0; i < list.Count; i++ )
372 {
373 strings.Remove( list[i] );
374 }
375
376 OnChanged();
377 return this;
378 }
379
387 {
388 return RemoveFirst( list.strings );
389 }
390
397 public StringList RemoveLast( params string[] lines )
398 {
399 for ( int i = lines.Length - 1; i >= 0; i-- )
400 {
401 strings.Remove( lines[i] );
402 }
403
404 OnChanged();
405 return this;
406 }
407
414 public StringList RemoveLast( List<string> list )
415 {
416 for ( int i = list.Count - 1; i >= 0; i-- )
417 {
418 strings.Remove( list[i] );
419 }
420
421 OnChanged();
422 return this;
423 }
424
432 {
433 return RemoveLast( list.strings );
434 }
435
441 public bool Contains( string line )
442 {
443 for ( int i = 0; i < strings.Count; i++ )
444 {
445 if ( strings[i] == line ) return true;
446 }
447
448 return false;
449 }
450
457 public string FirstBeginningWith( string line )
458 {
459 for ( int i = 0; i < strings.Count; i++ )
460 {
461 if ( strings[i].Length < line.Length ) continue;
462 if ( strings[i].Substring( 0, line.Length ) == line ) return strings[i];
463 }
464
465 return null;
466 }
467
471 public void Clear()
472 {
473 strings.Clear();
474 OnChanged();
475 }
476 }
477}
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
Järjestetty lista merkkijonoja.
Definition: StringList.cs:11
StringList RemoveFirst(List< string > list)
Poistaa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:369
int Length
Listan pituus. Jos asetetaan pienemmäksi kuin nykyinen koko, ylimenevät rivit poistetaan....
Definition: StringList.cs:113
void Clear()
Tyhjentää listan.
Definition: StringList.cs:471
StringList AssignFrom(Stream stream)
Lukee merkkijonolistan tietovirrasta.
Definition: StringList.cs:207
IEnumerator< string > GetEnumerator()
Definition: StringList.cs:15
StringList RemoveLast(List< string > list)
Poistaa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:414
Action Changed
Tapahtuu kun listan sisältö muuttuu.
Definition: StringList.cs:140
string FirstBeginningWith(string line)
Palauttaa listasta ensimmäisen annetulla merkkijonolla alkavan merkkijonon.
Definition: StringList.cs:457
StringList RemoveFirst(params string[] lines)
Poistaa yhden tai useamman rivin. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:352
StringList(StringList source)
Luo uuden merkkijonolistan olemassaolevan kopiona.
Definition: StringList.cs:159
bool Contains(string line)
Tarkistaa, löytyykö rivi listasta.
Definition: StringList.cs:441
StringList RemoveLast(params string[] lines)
Poistaa yhden tai useamman rivin. Vain viimeinen ilmentymä poistetaan.
Definition: StringList.cs:397
int Count
Listan pituus. Jos asetetaan pienemmäksi kuin nykyinen koko, ylimenevät rivit poistetaan....
Definition: StringList.cs:135
StringList RemoveFirst(StringList list)
Poistaa toisessa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:386
StringList(params string[] source)
Luo uuden merkkijonolistan taulukosta tai parametrina annetuista merkkijonoista.
Definition: StringList.cs:187
StringList()
Luo uuden tyhjän merkkijonolistan.
Definition: StringList.cs:151
StringList Add(params string[] lines)
Lisää yhden tai useamman rivin merkkijonolistaan.
Definition: StringList.cs:251
static StringList FromFile(string path)
Lukee merkkijonolistan tiedostosta. Huom. toimii vain PC:llä, käytä mieluummin FromAsset-metodia j...
Definition: StringList.cs:229
StringList RemoveAll(params string[] lines)
Poistaa yhden tai useamman rivin. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:307
StringList(List< string > source)
Luo uuden merkkijonolistan olemassaolevan kopiona.
Definition: StringList.cs:168
StringList(object source)
Luo uuden merkkijonolistan oliosta.
Definition: StringList.cs:177
StringList RemoveLast(StringList list)
Poistaa toisessa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:431
bool IsReadOnly
Voiko listaa vain lukea, ei kirjoittaa.
Definition: StringList.cs:105
List< string > strings
Definition: StringList.cs:12
StringList Add(object obj)
Lisää olion merkkijonolistan perään.
Definition: StringList.cs:287
StringList RemoveAll(StringList list)
Poistaa toisessa listassa määritellyt rivit. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:341
StringList Add(StringList list)
Lisää toisen merkkijonolistan tämän perään.
Definition: StringList.cs:263
StringList Add(List< String > list)
Lisää toisen merkkijonolistan tämän perään.
Definition: StringList.cs:275
StringList RemoveAll(List< string > list)
Poistaa listassa määritellyt rivit. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:324
static StringList operator+(StringList a, object b)
Jatkaa listaa oliolla, joka voi olla toinen lista, toinen merkkijono jne.
Definition: StringList.cs:46
Lista, joka ilmoittaa muutoksistaan.
Definition: INotifyList.cs:11