Jypeli  9
The simple game programming library
StringList.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 
5 namespace Jypeli
6 {
10  public class StringList : INotifyList<string>
11  {
12  List<string> strings = new List<string>();
13 
14 
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
193  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
223  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 }
Jypeli.StringList.Count
int Count
Listan pituus. Jos asetetaan pienemmäksi kuin nykyinen koko, ylimenevät rivit poistetaan....
Definition: StringList.cs:135
Jypeli.StringList.Add
StringList Add(StringList list)
Lisää toisen merkkijonolistan tämän perään.
Definition: StringList.cs:263
Jypeli.StringList.StringList
StringList()
Luo uuden tyhjän merkkijonolistan.
Definition: StringList.cs:151
Jypeli.StringList.operator+
static StringList operator+(StringList a, object b)
Jatkaa listaa oliolla, joka voi olla toinen lista, toinen merkkijono jne.
Definition: StringList.cs:46
Jypeli.StringList.Add
StringList Add(object obj)
Lisää olion merkkijonolistan perään.
Definition: StringList.cs:287
Jypeli.StringList.StringList
StringList(List< string > source)
Luo uuden merkkijonolistan olemassaolevan kopiona.
Definition: StringList.cs:168
Jypeli.StringList.RemoveLast
StringList RemoveLast(params string[] lines)
Poistaa yhden tai useamman rivin. Vain viimeinen ilmentymä poistetaan.
Definition: StringList.cs:397
Jypeli
Definition: Automobile.cs:5
Jypeli.StringList.RemoveAll
StringList RemoveAll(params string[] lines)
Poistaa yhden tai useamman rivin. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:307
Jypeli.StringList.IsReadOnly
bool IsReadOnly
Voiko listaa vain lukea, ei kirjoittaa.
Definition: StringList.cs:105
Jypeli.INotifyList
Lista, joka ilmoittaa muutoksistaan.
Definition: INotifyList.cs:11
Jypeli.StringList.strings
List< string > strings
Definition: StringList.cs:12
Jypeli.StringList.FromFile
static StringList FromFile(string path)
Lukee merkkijonolistan tiedostosta. Huom. toimii vain PC:llä, käytä mieluummin FromAsset-metodia jos ...
Definition: StringList.cs:229
Jypeli.StringList
Järjestetty lista merkkijonoja.
Definition: StringList.cs:11
Jypeli.StringList.OnChanged
void OnChanged()
Definition: StringList.cs:142
Jypeli.StringList.AssignFrom
StringList AssignFrom(Stream stream)
Lukee merkkijonolistan tietovirrasta.
Definition: StringList.cs:207
Jypeli.StringList.RemoveAll
StringList RemoveAll(StringList list)
Poistaa toisessa listassa määritellyt rivit. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:341
Jypeli.StringList.GetEnumerator
IEnumerator< string > GetEnumerator()
Definition: StringList.cs:15
Jypeli.StringList.RemoveLast
StringList RemoveLast(StringList list)
Poistaa toisessa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:431
Jypeli.StringList.RemoveFirst
StringList RemoveFirst(params string[] lines)
Poistaa yhden tai useamman rivin. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:352
Jypeli.StringList.RemoveLast
StringList RemoveLast(List< string > list)
Poistaa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:414
Jypeli.StringList.FirstBeginningWith
string FirstBeginningWith(string line)
Palauttaa listasta ensimmäisen annetulla merkkijonolla alkavan merkkijonon.
Definition: StringList.cs:457
Jypeli.Game.Instance
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:90
Jypeli.StringList.Contains
bool Contains(string line)
Tarkistaa, löytyykö rivi listasta.
Definition: StringList.cs:441
Jypeli.StringList.RemoveAll
StringList RemoveAll(List< string > list)
Poistaa listassa määritellyt rivit. Kaikki rivin ilmentymät poistetaan.
Definition: StringList.cs:324
Jypeli.StringList.RemoveFirst
StringList RemoveFirst(StringList list)
Poistaa toisessa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:386
Jypeli.StringList.Add
StringList Add(List< String > list)
Lisää toisen merkkijonolistan tämän perään.
Definition: StringList.cs:275
Jypeli.StringList.StringList
StringList(object source)
Luo uuden merkkijonolistan oliosta.
Definition: StringList.cs:177
Jypeli.StringList.StringList
StringList(params string[] source)
Luo uuden merkkijonolistan taulukosta tai parametrina annetuista merkkijonoista.
Definition: StringList.cs:187
Jypeli.StringList.RemoveFirst
StringList RemoveFirst(List< string > list)
Poistaa listassa määritellyt rivit. Vain ensimmäinen ilmentymä poistetaan.
Definition: StringList.cs:369
Jypeli.StringList.Clear
void Clear()
Tyhjentää listan.
Definition: StringList.cs:471
Jypeli.StringList.StringList
StringList(StringList source)
Luo uuden merkkijonolistan olemassaolevan kopiona.
Definition: StringList.cs:159
Jypeli.StringList.Length
int Length
Listan pituus. Jos asetetaan pienemmäksi kuin nykyinen koko, ylimenevät rivit poistetaan....
Definition: StringList.cs:113
System
Definition: CFFauxAttributes.cs:29
Jypeli.StringList.Changed
Action Changed
Tapahtuu kun listan sisältö muuttuu.
Definition: StringList.cs:140
Jypeli.StringList.Add
StringList Add(params string[] lines)
Lisää yhden tai useamman rivin merkkijonolistaan.
Definition: StringList.cs:251
Jypeli.Game
Definition: Content.cs:46