33 internal readonly
string Name;
34 private readonly List<JarItem> Items =
new List<JarItem>();
40 internal Jar(
string name)
48 newJar.Items.AddRange(Items);
52 internal void Add(
string name,
byte[] data, FileInfo fileInfo =
null)
54 Items.Add(
new JarItem(name, data, fileInfo));
57 private readonly
struct JarItem
59 internal readonly
string name;
60 internal readonly
byte[] data;
61 internal readonly FileInfo path;
63 internal JarItem(
string name,
byte[] data, FileInfo path)
74 private readonly
int Index;
76 internal Item(
Jar jar,
int index)
84 get {
return Jar.Items[Index].name; }
87 internal byte[] GetData()
89 return Jar.Items[Index].data;
92 internal FileInfo Path
94 get {
return Jar.Items[Index].path; }
97 internal void Remove()
99 Jar.Items[Index] =
new JarItem();
102 internal void MarkAsStub()
104 Jar.Items[Index] =
new JarItem(
Jar.Items[Index].name,
null,
null);
109 get {
return Jar.Items[Index].data ==
null; }
113 internal struct JarEnumerator
115 private readonly
Jar jar;
118 internal JarEnumerator(
Jar jar)
126 get {
return new Item(jar, index); }
129 public bool MoveNext()
131 if (index + 1 < jar.Items.Count)
142 return new JarEnumerator(
this);