~ubuntu-branches/ubuntu/wily/openmcdf/wily

« back to all changes in this revision

Viewing changes to help/sample structured storage eXplorer/OpenMcdf.xml

  • Committer: Package Import Robot
  • Author(s): Mathieu Malaterre
  • Date: 2013-04-08 11:02:15 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20130408110215-aleqo4zhjc3qgxnb
Tags: 1.5.4-1
* New upstream: 1.5.4
  - Use Hexbox for hexadecimal viewing

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0"?>
 
2
<doc>
 
3
    <assembly>
 
4
        <name>OpenMcdf</name>
 
5
    </assembly>
 
6
    <members>
 
7
        <member name="F:OpenMcdf.Header.OLE_CFS_SIGNATURE">
 
8
            <summary>
 
9
            Structured Storage signature
 
10
            </summary>
 
11
        </member>
 
12
        <member name="P:OpenMcdf.Header.FirstMiniFATSectorID">
 
13
            <summary>
 
14
            This integer field contains the starting sector number for the mini FAT
 
15
            </summary>
 
16
        </member>
 
17
        <member name="T:BinaryTrees.TraversalMethod">
 
18
            <summary>
 
19
            Provides the set of values by which a binary search tree can be enumerated.
 
20
            </summary>
 
21
        </member>
 
22
        <member name="T:OpenMcdf.Ver3SizeLimitReached">
 
23
            <summary>
 
24
            Action to implement when transaction support - sector
 
25
            has to be written to the underlying stream (see specs).
 
26
            </summary>
 
27
        </member>
 
28
        <member name="T:OpenMcdf.SectorCollection">
 
29
            <summary>
 
30
            Ad-hoc Heap Friendly sector collection to avoid using 
 
31
            large array that may create some problem to GC collection 
 
32
            (see http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/ )
 
33
            </summary>
 
34
        </member>
 
35
        <member name="T:OpenMcdf.CFItem">
 
36
             <summary>
 
37
             Abstract base class for Structured Storage entities.
 
38
             </summary>
 
39
             <example>
 
40
             <code>
 
41
             
 
42
             const String STORAGE_NAME = "report.xls";
 
43
             CompoundFile cf = new CompoundFile(STORAGE_NAME);
 
44
            
 
45
             FileStream output = new FileStream("LogEntries.txt", FileMode.Create);
 
46
             TextWriter tw = new StreamWriter(output);
 
47
            
 
48
             // CFItem represents both storage and stream items
 
49
             VisitedEntryAction va = delegate(CFItem item)
 
50
             {
 
51
                  tw.WriteLine(item.Name);
 
52
             };
 
53
            
 
54
             cf.RootStorage.VisitEntries(va, true);
 
55
            
 
56
             tw.Close();
 
57
             
 
58
             </code>
 
59
             </example>
 
60
        </member>
 
61
        <member name="P:OpenMcdf.CFItem.Name">
 
62
            <summary>
 
63
            Get entity name
 
64
            </summary>
 
65
        </member>
 
66
        <member name="P:OpenMcdf.CFItem.Size">
 
67
            <summary>
 
68
            Size in bytes of the item. It has a valid value 
 
69
            only if entity is a stream, otherwise it is setted to zero.
 
70
            </summary>
 
71
        </member>
 
72
        <member name="P:OpenMcdf.CFItem.IsStorage">
 
73
            <summary>
 
74
            Return true if item is Storage
 
75
            </summary>
 
76
            <remarks>
 
77
            This check doesn't use reflection or runtime type information
 
78
            and doesn't suffer related performance penalties.
 
79
            </remarks>
 
80
        </member>
 
81
        <member name="P:OpenMcdf.CFItem.IsStream">
 
82
            <summary>
 
83
            Return true if item is a Stream
 
84
            </summary>
 
85
            <remarks>
 
86
            This check doesn't use reflection or runtime type information
 
87
            and doesn't suffer related performance penalties.
 
88
            </remarks>
 
89
        </member>
 
90
        <member name="P:OpenMcdf.CFItem.IsRoot">
 
91
            <summary>
 
92
            Return true if item is the Root Storage
 
93
            </summary>
 
94
            <remarks>
 
95
            This check doesn't use reflection or runtime type information
 
96
            and doesn't suffer related performance penalties.
 
97
            </remarks>
 
98
        </member>
 
99
        <member name="P:OpenMcdf.CFItem.CreationDate">
 
100
            <summary>
 
101
            Get/Set the Creation Date of the current item
 
102
            </summary>
 
103
        </member>
 
104
        <member name="P:OpenMcdf.CFItem.ModifyDate">
 
105
            <summary>
 
106
            Get/Set the Modify Date of the current item
 
107
            </summary>
 
108
        </member>
 
109
        <member name="P:OpenMcdf.CFItem.CLSID">
 
110
            <summary>
 
111
            Get/Set Object class Guid for Root and Storage entries.
 
112
            </summary>
 
113
        </member>
 
114
        <member name="T:BinaryTrees.NodeList`1">
 
115
            <summary>
 
116
            Represents a collection of Node&lt;T&gt; instances.
 
117
            </summary>
 
118
            <typeparam name="T">The type of data held in the Node instances referenced by this class.</typeparam>
 
119
        </member>
 
120
        <member name="M:BinaryTrees.NodeList`1.FindByValue(`0)">
 
121
            <summary>
 
122
            Searches the NodeList for a Node containing a particular value.
 
123
            </summary>
 
124
            <param name="value">The value to search for.</param>
 
125
            <returns>The Node in the NodeList, if it exists; null otherwise.</returns>
 
126
        </member>
 
127
        <member name="T:BinaryTrees.BinarySearchTree`1">
 
128
            <summary>
 
129
            Represents a binary search tree.  A binary search tree is a binary tree whose nodes are arranged
 
130
            such that for any given node k, all nodes in k's left subtree have a value less than k, and all
 
131
            nodes in k's right subtree have a value greater than k.
 
132
            </summary>
 
133
            <typeparam name="T">The type of data stored in the binary tree nodes.</typeparam>
 
134
        </member>
 
135
        <member name="M:BinaryTrees.BinarySearchTree`1.Clear">
 
136
            <summary>
 
137
            Removes the contents of the BST
 
138
            </summary>
 
139
        </member>
 
140
        <member name="M:BinaryTrees.BinarySearchTree`1.CopyTo(`0[],System.Int32)">
 
141
            <summary>
 
142
            Copies the contents of the BST to an appropriately-sized array of type T, using the Inorder
 
143
            traversal method.
 
144
            </summary>
 
145
        </member>
 
146
        <member name="M:BinaryTrees.BinarySearchTree`1.CopyTo(`0[],System.Int32,BinaryTrees.TraversalMethod)">
 
147
            <summary>
 
148
            Copies the contents of the BST to an appropriately-sized array of type T, using a specified
 
149
            traversal method.
 
150
            </summary>
 
151
        </member>
 
152
        <member name="M:BinaryTrees.BinarySearchTree`1.Add(`0)">
 
153
            <summary>
 
154
            Adds a new value to the BST.
 
155
            </summary>
 
156
            <param name="data">The data to insert into the BST.</param>
 
157
            <remarks>Adding a value already in the BST has no effect; that is, the SkipList is not
 
158
            altered, the Add() method simply exits.</remarks>
 
159
        </member>
 
160
        <member name="M:BinaryTrees.BinarySearchTree`1.Contains(`0)">
 
161
            <summary>
 
162
            Returns a Boolean, indicating if a specified value is contained within the BST.
 
163
            </summary>
 
164
            <param name="data">The data to search for.</param>
 
165
            <returns>True if data is found in the BST; false otherwise.</returns>
 
166
        </member>
 
167
        <member name="M:BinaryTrees.BinarySearchTree`1.TryFind(`0,`0@)">
 
168
            <summary>
 
169
            Returns a Boolean, indicating if a specified value is contained within the BST.
 
170
            </summary>
 
171
            <param name="data">The data to search for.</param>
 
172
            <returns>True if data is found in the BST; false otherwise.</returns>
 
173
        </member>
 
174
        <member name="M:BinaryTrees.BinarySearchTree`1.Remove(`0)">
 
175
            <summary>
 
176
            Attempts to remove the specified data element from the BST.
 
177
            </summary>
 
178
            <param name="data">The data to remove from the BST.</param>
 
179
            <returns>True if the element is found in the tree, and removed; false if the element is not
 
180
            found in the tree.</returns>
 
181
        </member>
 
182
        <member name="M:BinaryTrees.BinarySearchTree`1.GetEnumerator">
 
183
            <summary>
 
184
            Enumerates the BST's contents using inorder traversal.
 
185
            </summary>
 
186
            <returns>An enumerator that provides inorder access to the BST's elements.</returns>
 
187
        </member>
 
188
        <member name="M:BinaryTrees.BinarySearchTree`1.GetEnumerator(BinaryTrees.TraversalMethod)">
 
189
            <summary>
 
190
            Enumerates the BST's contents using a specified traversal method.
 
191
            </summary>
 
192
            <param name="TraversalMethod">The type of traversal to perform.</param>
 
193
            <returns>An enumerator that provides access to the BST's elements using a specified traversal technique.</returns>
 
194
        </member>
 
195
        <member name="P:BinaryTrees.BinarySearchTree`1.Preorder">
 
196
            <summary>
 
197
            Provides enumeration through the BST using preorder traversal.
 
198
            </summary>
 
199
        </member>
 
200
        <member name="P:BinaryTrees.BinarySearchTree`1.Inorder">
 
201
            <summary>
 
202
            Provides enumeration through the BST using inorder traversal.
 
203
            </summary>
 
204
        </member>
 
205
        <member name="P:BinaryTrees.BinarySearchTree`1.Postorder">
 
206
            <summary>
 
207
            Provides enumeration through the BST using postorder traversal.
 
208
            </summary>
 
209
        </member>
 
210
        <member name="P:BinaryTrees.BinarySearchTree`1.Count">
 
211
            <summary>
 
212
            Returns the number of elements in the BST.
 
213
            </summary>
 
214
        </member>
 
215
        <member name="T:OpenMcdf.CFSVersion">
 
216
            <summary>
 
217
            Binary File Format Version. Sector size  is 512 byte for version 3,
 
218
            4096 for version 4
 
219
            </summary>
 
220
        </member>
 
221
        <member name="F:OpenMcdf.CFSVersion.Ver_3">
 
222
            <summary>
 
223
            Compound file version 3 - The default and most common version available. Sector size 512 bytes, 2GB max file size.
 
224
            </summary>
 
225
        </member>
 
226
        <member name="F:OpenMcdf.CFSVersion.Ver_4">
 
227
            <summary>
 
228
            Compound file version 4 - Sector size is 4096 bytes. Using this version could bring some compatibility problem with existing applications.
 
229
            </summary>
 
230
        </member>
 
231
        <member name="T:OpenMcdf.UpdateMode">
 
232
            <summary>
 
233
            Update mode of the compound file.
 
234
            Default is ReadOnly.
 
235
            </summary>
 
236
        </member>
 
237
        <member name="F:OpenMcdf.UpdateMode.ReadOnly">
 
238
            <summary>
 
239
            ReadOnly update mode prevents overwriting
 
240
            of the opened file. 
 
241
            Data changes are allowed but they have to be 
 
242
            persisted on a different file when required.
 
243
            </summary>
 
244
        </member>
 
245
        <member name="F:OpenMcdf.UpdateMode.Update">
 
246
            <summary>
 
247
            Update mode allows subsequent data changing operations
 
248
            to be persisted directly on the opened file or stream
 
249
            using the <see cref="M:OpenMcdf.CompoundFile.Commit">Commit</see>
 
250
            method when required. Warning: this option may cause existing data loss if misused.
 
251
            </summary>
 
252
        </member>
 
253
        <member name="T:OpenMcdf.CompoundFile">
 
254
            <summary>
 
255
            Standard Microsoft&#169; Compound File implementation.
 
256
            It is also known as OLE/COM structured storage 
 
257
            and contains a hierarchy of storage and stream objects providing
 
258
            efficent storage of multiple kinds of documents in a single file.
 
259
            Version 3 and 4 of specifications are supported.
 
260
            </summary>
 
261
        </member>
 
262
        <member name="F:OpenMcdf.CompoundFile.HEADER_DIFAT_ENTRIES_COUNT">
 
263
            <summary>
 
264
            Number of DIFAT entries in the header
 
265
            </summary>
 
266
        </member>
 
267
        <member name="F:OpenMcdf.CompoundFile.SIZE_OF_SID">
 
268
            <summary>
 
269
            Sector ID Size (int)
 
270
            </summary>
 
271
        </member>
 
272
        <member name="F:OpenMcdf.CompoundFile.FLUSHING_QUEUE_SIZE">
 
273
            <summary>
 
274
            Initial capacity of the flushing queue used
 
275
            to optimize commit writing operations
 
276
            </summary>
 
277
        </member>
 
278
        <member name="F:OpenMcdf.CompoundFile.FLUSHING_BUFFER_MAX_SIZE">
 
279
            <summary>
 
280
            Maximum size of the flushing buffer used
 
281
            to optimize commit writing operations
 
282
            </summary>
 
283
        </member>
 
284
        <member name="M:OpenMcdf.CompoundFile.GetSectorSize">
 
285
            <summary>
 
286
            Returns the size of standard sectors switching on CFS version (3 or 4)
 
287
            </summary>
 
288
            <returns>Standard sector size</returns>
 
289
        </member>
 
290
        <member name="F:OpenMcdf.CompoundFile.DIFAT_SECTOR_FAT_ENTRIES_COUNT">
 
291
            <summary>
 
292
            Number of FAT entries in a DIFAT Sector
 
293
            </summary>
 
294
        </member>
 
295
        <member name="F:OpenMcdf.CompoundFile.FAT_SECTOR_ENTRIES_COUNT">
 
296
            <summary>
 
297
            Sectors ID entries in a FAT Sector
 
298
            </summary>
 
299
        </member>
 
300
        <member name="F:OpenMcdf.CompoundFile.sectorRecycle">
 
301
            <summary>
 
302
            Flag for sector recycling.
 
303
            </summary>
 
304
        </member>
 
305
        <member name="F:OpenMcdf.CompoundFile.eraseFreeSectors">
 
306
            <summary>
 
307
            Flag for unallocated sector zeroing out.
 
308
            </summary>
 
309
        </member>
 
310
        <member name="F:OpenMcdf.CompoundFile.header">
 
311
            <summary>
 
312
            CompoundFile header
 
313
            </summary>
 
314
        </member>
 
315
        <member name="F:OpenMcdf.CompoundFile.sourceStream">
 
316
            <summary>
 
317
            Compound underlying stream. Null when new CF has been created.
 
318
            </summary>
 
319
        </member>
 
320
        <member name="M:OpenMcdf.CompoundFile.#ctor">
 
321
             <summary>
 
322
             Create a blank, version 3 compound file.
 
323
             Sector recycle is turned off to achieve the best reading/writing 
 
324
             performance in most common scenarios.
 
325
             </summary>
 
326
             <example>
 
327
             <code>
 
328
             
 
329
                 byte[] b = new byte[10000];
 
330
                 for (int i = 0; i &lt; 10000; i++)
 
331
                 {
 
332
                     b[i % 120] = (byte)i;
 
333
                 }
 
334
            
 
335
                 CompoundFile cf = new CompoundFile();
 
336
                 CFStream myStream = cf.RootStorage.AddStream("MyStream");
 
337
            
 
338
                 Assert.IsNotNull(myStream);
 
339
                 myStream.SetData(b);
 
340
                 cf.Save("MyCompoundFile.cfs");
 
341
                 cf.Close();
 
342
                 
 
343
             </code>
 
344
             </example>
 
345
        </member>
 
346
        <member name="M:OpenMcdf.CompoundFile.#ctor(OpenMcdf.CFSVersion,System.Boolean,System.Boolean)">
 
347
             <summary>
 
348
             Create a new, blank, compound file.
 
349
             </summary>
 
350
             <param name="cfsVersion">Use a specific Compound File Version to set 512 or 4096 bytes sectors</param>
 
351
             <param name="sectorRecycle">If true, recycle unused sectors</param>
 
352
             <param name="eraseFreeSectors">If true, unallocated sectors will be overwritten with zeros</param>
 
353
             <example>
 
354
             <code>
 
355
             
 
356
                 byte[] b = new byte[10000];
 
357
                 for (int i = 0; i &lt; 10000; i++)
 
358
                 {
 
359
                     b[i % 120] = (byte)i;
 
360
                 }
 
361
            
 
362
                 CompoundFile cf = new CompoundFile(CFSVersion.Ver_4, true, true);
 
363
                 CFStream myStream = cf.RootStorage.AddStream("MyStream");
 
364
            
 
365
                 Assert.IsNotNull(myStream);
 
366
                 myStream.SetData(b);
 
367
                 cf.Save("MyCompoundFile.cfs");
 
368
                 cf.Close();
 
369
                 
 
370
             </code>
 
371
             </example>
 
372
             <remarks>
 
373
             Sector recycling reduces data writing performances but avoids space wasting in scenarios with frequently
 
374
             data manipulation of the same streams. The new compound file is open in Update mode.
 
375
             </remarks>
 
376
        </member>
 
377
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.String)">
 
378
             <summary>
 
379
             Load an existing compound file.
 
380
             </summary>
 
381
             <param name="fileName">Compound file to read from</param>
 
382
             <example>
 
383
             <code>
 
384
             //A xls file should have a Workbook stream
 
385
             String filename = "report.xls";
 
386
            
 
387
             CompoundFile cf = new CompoundFile(filename);
 
388
             CFStream foundStream = cf.RootStorage.GetStream("Workbook");
 
389
            
 
390
             byte[] temp = foundStream.GetData();
 
391
            
 
392
             Assert.IsNotNull(temp);
 
393
            
 
394
             cf.Close();
 
395
             </code>
 
396
             </example>
 
397
             <remarks>
 
398
             File will be open in read-only mode: it has to be saved
 
399
             with a different filename. A wrapping implementation has to be provided 
 
400
             in order to remove/substitute an existing file. Version will be
 
401
             automatically recognized from the file. Sector recycle is turned off
 
402
             to achieve the best reading/writing performance in most common scenarios.
 
403
             </remarks>
 
404
        </member>
 
405
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.String,OpenMcdf.UpdateMode,System.Boolean,System.Boolean)">
 
406
             <summary>
 
407
             Load an existing compound file.
 
408
             </summary>
 
409
             <param name="fileName">Compound file to read from</param>
 
410
             <param name="sectorRecycle">If true, recycle unused sectors</param>
 
411
             <param name="updateMode">Select the update mode of the underlying data file</param>
 
412
             <param name="eraseFreeSectors">If true, overwrite with zeros unallocated sectors</param>
 
413
             <example>
 
414
             <code>
 
415
             String srcFilename = "data_YOU_CAN_CHANGE.xls";
 
416
             
 
417
             CompoundFile cf = new CompoundFile(srcFilename, UpdateMode.Update, true, true);
 
418
            
 
419
             Random r = new Random();
 
420
            
 
421
             byte[] buffer = GetBuffer(r.Next(3, 4095), 0x0A);
 
422
            
 
423
             cf.RootStorage.AddStream("MyStream").SetData(buffer);
 
424
             
 
425
             //This will persist data to the underlying media.
 
426
             cf.Commit();
 
427
             cf.Close();
 
428
            
 
429
             </code>
 
430
             </example>
 
431
        </member>
 
432
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.String,OpenMcdf.UpdateMode,System.Boolean,System.Boolean,System.Boolean)">
 
433
             <summary>
 
434
             Load an existing compound file.
 
435
             </summary>
 
436
             <param name="fileName">Compound file to read from</param>
 
437
             <param name="sectorRecycle">If true, recycle unused sectors</param>
 
438
             <param name="updateMode">Select the update mode of the underlying data file</param>
 
439
             <param name="eraseFreeSectors">If true, overwrite with zeros unallocated sectors</param>
 
440
             <param name="noValidationException">If true, no <see cref="T:OpenMcdf.CFCorruptedFileException">CFCorruptedFileException</see>
 
441
              will be thrown even if corrupted file is loaded. Please note that this option is could pose a potential security threat</param>
 
442
             <example>
 
443
             <code>
 
444
             String srcFilename = "data_YOU_CAN_CHANGE.xls";
 
445
             
 
446
             CompoundFile cf = new CompoundFile(srcFilename, UpdateMode.Update, true, true, true);
 
447
            
 
448
             
 
449
             Random r = new Random();
 
450
            
 
451
             byte[] buffer = GetBuffer(r.Next(3, 4095), 0x0A);
 
452
            
 
453
             cf.RootStorage.AddStream("MyStream").SetData(buffer);
 
454
             
 
455
             //This will persist data to the underlying media.
 
456
             cf.Commit();
 
457
             cf.Close();
 
458
            
 
459
             </code>
 
460
             </example>
 
461
        </member>
 
462
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.IO.Stream,OpenMcdf.UpdateMode,System.Boolean,System.Boolean)">
 
463
             <summary>
 
464
             Load an existing compound file.
 
465
             </summary>
 
466
             <param name="stream">A stream containing a compound file to read</param>
 
467
             <param name="sectorRecycle">If true, recycle unused sectors</param>
 
468
             <param name="updateMode">Select the update mode of the underlying data file</param>
 
469
             <param name="eraseFreeSectors">If true, overwrite with zeros unallocated sectors</param>
 
470
             <example>
 
471
             <code>
 
472
             
 
473
             String filename = "reportREAD.xls";
 
474
               
 
475
             FileStream fs = new FileStream(filename, FileMode.Open);
 
476
             CompoundFile cf = new CompoundFile(fs, UpdateMode.ReadOnly, false, false);
 
477
             CFStream foundStream = cf.RootStorage.GetStream("Workbook");
 
478
            
 
479
             byte[] temp = foundStream.GetData();
 
480
            
 
481
             Assert.IsNotNull(temp);
 
482
            
 
483
             cf.Close();
 
484
            
 
485
             </code>
 
486
             </example>
 
487
             <exception cref="T:OpenMcdf.CFException">Raised when trying to open a non-seekable stream</exception>
 
488
             <exception cref="T:OpenMcdf.CFException">Raised stream is null</exception>
 
489
        </member>
 
490
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.IO.Stream,OpenMcdf.UpdateMode,System.Boolean,System.Boolean,System.Boolean)">
 
491
             <summary>
 
492
             Load an existing compound file.
 
493
             </summary>
 
494
             <param name="stream">A stream containing a compound file to read</param>
 
495
             <param name="sectorRecycle">If true, recycle unused sectors</param>
 
496
             <param name="updateMode">Select the update mode of the underlying data file</param>
 
497
             <param name="eraseFreeSectors">If true, overwrite with zeros unallocated sectors</param>
 
498
             <param name="noValidationException">If true, openMcdf will try to ignore invalid references or format in order to load a possibly corrupted file anyway </param>
 
499
             <remarks>The 'noValidationEcxception' parameter could possibly lead to security issues so it's recommanded to use it only on trusted sources</remarks>
 
500
             <example>
 
501
             <code>
 
502
             
 
503
             String filename = "reportREAD.xls";
 
504
               
 
505
             FileStream fs = new FileStream(filename, FileMode.Open);
 
506
             CompoundFile cf = new CompoundFile(fs, UpdateMode.ReadOnly, false, false, false, true);
 
507
             CFStream foundStream = cf.RootStorage.GetStream("Workbook");
 
508
            
 
509
             byte[] temp = foundStream.GetData(); //if 'reportRead.xls' is corrupted, openMcdf will try to lad it anyway [noValidationException set true]
 
510
            
 
511
             Assert.IsNotNull(temp);
 
512
            
 
513
             cf.Close();
 
514
            
 
515
             </code>
 
516
             </example>
 
517
             <exception cref="T:OpenMcdf.CFException">Raised when trying to open a non-seekable stream</exception>
 
518
             <exception cref="T:OpenMcdf.CFException">Raised stream is null</exception>
 
519
        </member>
 
520
        <member name="M:OpenMcdf.CompoundFile.#ctor(System.IO.Stream)">
 
521
             <summary>
 
522
             Load an existing compound file from a stream.
 
523
             </summary>
 
524
             <param name="stream">Streamed compound file</param>
 
525
             <example>
 
526
             <code>
 
527
             
 
528
             String filename = "reportREAD.xls";
 
529
               
 
530
             FileStream fs = new FileStream(filename, FileMode.Open);
 
531
             CompoundFile cf = new CompoundFile(fs);
 
532
             CFStream foundStream = cf.RootStorage.GetStream("Workbook");
 
533
            
 
534
             byte[] temp = foundStream.GetData();
 
535
            
 
536
             Assert.IsNotNull(temp);
 
537
            
 
538
             cf.Close();
 
539
            
 
540
             </code>
 
541
             </example>
 
542
             <exception cref="T:OpenMcdf.CFException">Raised when trying to open a non-seekable stream</exception>
 
543
             <exception cref="T:OpenMcdf.CFException">Raised stream is null</exception>
 
544
        </member>
 
545
        <member name="M:OpenMcdf.CompoundFile.Commit">
 
546
            <summary>
 
547
            Commit data changes since the previously commit operation
 
548
            to the underlying supporting stream or file on the disk.
 
549
            </summary>
 
550
            <remarks>
 
551
            This method can be used
 
552
            only if the supporting stream has been opened in 
 
553
            <see cref="T:OpenMcdf.UpdateMode">Update mode</see>.
 
554
            </remarks>
 
555
        </member>
 
556
        <member name="M:OpenMcdf.CompoundFile.Commit(System.Boolean)">
 
557
            <summary>
 
558
            Commit data changes since the previously commit operation
 
559
            to the underlying supporting stream or file on the disk.
 
560
            </summary>
 
561
            <param name="releaseMemory">If true, release loaded sectors to limit memory usage but reduces following read operations performance</param>
 
562
            <remarks>
 
563
            This method can be used only if 
 
564
            the supporting stream has been opened in 
 
565
            <see cref="T:OpenMcdf.UpdateMode">Update mode</see>.
 
566
            </remarks>
 
567
        </member>
 
568
        <member name="M:OpenMcdf.CompoundFile.Load(System.IO.Stream)">
 
569
            <summary>
 
570
            Load compound file from an existing stream.
 
571
            </summary>
 
572
            <param name="stream">Stream to load compound file from</param>
 
573
        </member>
 
574
        <member name="M:OpenMcdf.CompoundFile.SetMiniSectorChain(System.Collections.Generic.List{OpenMcdf.Sector})">
 
575
            <summary>
 
576
            Allocate space, setup sectors id and refresh header
 
577
            for the new or updated mini sector chain.
 
578
            </summary>
 
579
            <param name="sectorChain">The new MINI sector chain</param>
 
580
        </member>
 
581
        <member name="M:OpenMcdf.CompoundFile.SetNormalSectorChain(System.Collections.Generic.List{OpenMcdf.Sector})">
 
582
            <summary>
 
583
            Allocate space, setup sectors id and refresh header
 
584
            for the new or updated sector chain.
 
585
            </summary>
 
586
            <param name="sectorChain">The new or updated generic sector chain</param>
 
587
        </member>
 
588
        <member name="M:OpenMcdf.CompoundFile.CheckForLockSector">
 
589
            <summary>
 
590
            Check for transaction lock sector addition and mark it in the FAT.
 
591
            </summary>
 
592
        </member>
 
593
        <member name="M:OpenMcdf.CompoundFile.SetFATSectorChain(System.Collections.Generic.List{OpenMcdf.Sector})">
 
594
            <summary>
 
595
            Allocate space, setup sectors id and refresh header
 
596
            for the new or updated FAT sector chain.
 
597
            </summary>
 
598
            <param name="sectorChain">The new or updated generic sector chain</param>
 
599
        </member>
 
600
        <member name="M:OpenMcdf.CompoundFile.SetDIFATSectorChain(System.Collections.Generic.List{OpenMcdf.Sector})">
 
601
            <summary>
 
602
            Setup the DIFAT sector chain
 
603
            </summary>
 
604
            <param name="FATsectorChain">A FAT sector chain</param>
 
605
        </member>
 
606
        <member name="M:OpenMcdf.CompoundFile.GetDifatSectorChain">
 
607
            <summary>
 
608
            Get the DIFAT Sector chain
 
609
            </summary>
 
610
            <returns>A list of DIFAT sectors</returns>
 
611
        </member>
 
612
        <member name="M:OpenMcdf.CompoundFile.GetFatSectorChain">
 
613
            <summary>
 
614
            Get the FAT sector chain
 
615
            </summary>
 
616
            <returns>List of FAT sectors</returns>
 
617
        </member>
 
618
        <member name="M:OpenMcdf.CompoundFile.GetNormalSectorChain(System.Int32)">
 
619
            <summary>
 
620
            Get a standard sector chain
 
621
            </summary>
 
622
            <param name="secID">First SecID of the required chain</param>
 
623
            <returns>A list of sectors</returns>
 
624
        </member>
 
625
        <member name="M:OpenMcdf.CompoundFile.GetMiniSectorChain(System.Int32)">
 
626
            <summary>
 
627
            Get a mini sector chain
 
628
            </summary>
 
629
            <param name="secID">First SecID of the required chain</param>
 
630
            <returns>A list of mini sectors (64 bytes)</returns>
 
631
        </member>
 
632
        <member name="M:OpenMcdf.CompoundFile.GetSectorChain(System.Int32,OpenMcdf.SectorType)">
 
633
            <summary>
 
634
            Get a sector chain from a compound file given the first sector ID
 
635
            and the required sector type.
 
636
            </summary>
 
637
            <param name="secID">First chain sector's id </param>
 
638
            <param name="chainType">Type of Sectors in the required chain (mini sectors, normal sectors or FAT)</param>
 
639
            <returns>A list of Sectors as the result of their concatenation</returns>
 
640
        </member>
 
641
        <member name="M:OpenMcdf.CompoundFile.ResetDirectoryEntry(System.Int32)">
 
642
            <summary>
 
643
            Reset a directory entry setting it to StgInvalid in the Directory.
 
644
            </summary>
 
645
            <param name="sid">Sid of the directory to invalidate</param>
 
646
        </member>
 
647
        <member name="M:OpenMcdf.CompoundFile.LoadDirectories">
 
648
            <summary>
 
649
            Load directory entries from compound file. Header and FAT MUST be already loaded.
 
650
            </summary>
 
651
        </member>
 
652
        <member name="M:OpenMcdf.CompoundFile.CommitDirectory">
 
653
            <summary>
 
654
             Commit directory entries change on the Current Source stream
 
655
            </summary>
 
656
        </member>
 
657
        <member name="M:OpenMcdf.CompoundFile.Save(System.String)">
 
658
            <summary>
 
659
            Saves the in-memory image of Compound File to a file.
 
660
            </summary>
 
661
            <param name="fileName">File name to write the compound file to</param>
 
662
            <exception cref="T:OpenMcdf.CFException">Raised if destination file is not seekable</exception>
 
663
        </member>
 
664
        <member name="M:OpenMcdf.CompoundFile.Save(System.IO.Stream)">
 
665
             <summary>
 
666
             Saves the in-memory image of Compound File to a stream.
 
667
             </summary>        
 
668
             <remarks>
 
669
             Destination Stream must be seekable.
 
670
             </remarks>
 
671
             <param name="stream">The stream to save compound File to</param>
 
672
             <exception cref="T:OpenMcdf.CFException">Raised if destination stream is not seekable</exception>
 
673
             <exception cref="T:OpenMcdf.CFDisposedException">Raised if Compound File Storage has been already disposed</exception>
 
674
             <example>
 
675
             <code>
 
676
                MemoryStream ms = new MemoryStream(size);
 
677
            
 
678
                CompoundFile cf = new CompoundFile();
 
679
                CFStorage st = cf.RootStorage.AddStorage("MyStorage");
 
680
                CFStream sm = st.AddStream("MyStream");
 
681
            
 
682
                byte[] b = new byte[]{0x00,0x01,0x02,0x03};
 
683
            
 
684
                sm.SetData(b);
 
685
                cf.Save(ms);
 
686
                cf.Close();
 
687
             </code>
 
688
             </example>
 
689
        </member>
 
690
        <member name="M:OpenMcdf.CompoundFile.FindFreeSectors(OpenMcdf.SectorType)">
 
691
            <summary>
 
692
            Scan FAT o miniFAT for free sectors to reuse.
 
693
            </summary>
 
694
            <param name="sType">Type of sector to look for</param>
 
695
            <returns>A stack of available sectors or minisectors already allocated</returns>
 
696
        </member>
 
697
        <!-- Badly formed XML comment ignored for member "M:OpenMcdf.CompoundFile.AppendData(OpenMcdf.CFItem,System.Byte[])" -->
 
698
        <member name="M:OpenMcdf.CompoundFile.CheckFileLength">
 
699
            <summary>
 
700
            Check file size limit ( 2GB for version 3 )
 
701
            </summary>
 
702
        </member>
 
703
        <member name="M:OpenMcdf.CompoundFile.Close">
 
704
             <summary>
 
705
             Close the Compound File object <see cref="T:OpenMcdf.CompoundFile">CompoundFile</see> and
 
706
             free all associated resources (e.g. open file handle and allocated memory).
 
707
             <remarks>
 
708
             When the <see cref="T:OpenMcdf.CompoundFile.Close()">Close</see> method is called,
 
709
             all the associated stream and storage objects are invalidated:
 
710
             any operation invoked on them will produce a <see cref="T:OpenMcdf.CFDisposedException">CFDisposedException</see>.
 
711
             </remarks>
 
712
             </summary>
 
713
             <example>
 
714
             <code>
 
715
                const String FILENAME = "CompoundFile.cfs";
 
716
                CompoundFile cf = new CompoundFile(FILENAME);
 
717
            
 
718
                CFStorage st = cf.RootStorage.GetStorage("MyStorage");
 
719
                cf.Close();
 
720
            
 
721
                try
 
722
                {
 
723
                    byte[] temp = st.GetStream("MyStream").GetData();
 
724
                    
 
725
                    // The following line will fail because back-end object has been closed
 
726
                    Assert.Fail("Stream without media");
 
727
                }
 
728
                catch (Exception ex)
 
729
                {
 
730
                    Assert.IsTrue(ex is CFDisposedException);
 
731
                }
 
732
             </code>
 
733
             </example>
 
734
        </member>
 
735
        <member name="M:OpenMcdf.CompoundFile.Dispose(System.Boolean)">
 
736
            <summary>
 
737
            When called from user code, release all resources, otherwise, in the case runtime called it,
 
738
            only unmanagd resources are released.
 
739
            </summary>
 
740
            <param name="disposing">If true, method has been called from User code, if false it's been called from .net runtime</param>
 
741
        </member>
 
742
        <member name="M:OpenMcdf.CompoundFile.GetAllNamedEntries(System.String)">
 
743
            <summary>
 
744
            Get a list of all entries with a given name contained in the document.
 
745
            </summary>
 
746
            <param name="entryName">Name of entries to retrive</param>
 
747
            <returns>A list of name-matching entries</returns>
 
748
            <remarks>This function is aimed to speed up entity lookup in 
 
749
            flat-structure files (only one or little more known entries)
 
750
            without the performance penalty related to entities hierarchy constraints.
 
751
            There is no implied hierarchy in the returned list.
 
752
            </remarks>
 
753
        </member>
 
754
        <member name="M:OpenMcdf.CompoundFile.ShrinkCompoundFile(System.IO.Stream)">
 
755
             <summary>
 
756
             Compress free space by removing unallocated sectors from compound file
 
757
             effectively reducing stream or file size.
 
758
             </summary>
 
759
             <remarks>
 
760
             Current implementation supports compression only for ver. 3 compound files.
 
761
             </remarks>
 
762
             <example>
 
763
             <code>
 
764
             
 
765
              //This code has been extracted from unit test
 
766
              
 
767
                String FILENAME = "MultipleStorage3.cfs";
 
768
            
 
769
                FileInfo srcFile = new FileInfo(FILENAME);
 
770
            
 
771
                File.Copy(FILENAME, "MultipleStorage_Deleted_Compress.cfs", true);
 
772
            
 
773
                CompoundFile cf = new CompoundFile("MultipleStorage_Deleted_Compress.cfs", UpdateMode.Update, true, true);
 
774
            
 
775
                CFStorage st = cf.RootStorage.GetStorage("MyStorage");
 
776
                st = st.GetStorage("AnotherStorage");
 
777
                
 
778
                Assert.IsNotNull(st);
 
779
                st.Delete("Another2Stream"); //17Kb
 
780
                cf.Commit();
 
781
                cf.Close();
 
782
            
 
783
                CompoundFile.ShrinkCompoundFile("MultipleStorage_Deleted_Compress.cfs");
 
784
            
 
785
                FileInfo dstFile = new FileInfo("MultipleStorage_Deleted_Compress.cfs");
 
786
            
 
787
                Assert.IsTrue(srcFile.Length > dstFile.Length);
 
788
            
 
789
             </code>
 
790
             </example>
 
791
        </member>
 
792
        <member name="M:OpenMcdf.CompoundFile.ShrinkCompoundFile(System.String)">
 
793
             <summary>
 
794
             Remove unallocated sectors from compound file in order to reduce its size.
 
795
             </summary>
 
796
             <remarks>
 
797
             Current implementation supports compression only for ver. 3 compound files.
 
798
             </remarks>
 
799
             <example>
 
800
             <code>
 
801
             
 
802
              //This code has been extracted from unit test
 
803
              
 
804
                String FILENAME = "MultipleStorage3.cfs";
 
805
            
 
806
                FileInfo srcFile = new FileInfo(FILENAME);
 
807
            
 
808
                File.Copy(FILENAME, "MultipleStorage_Deleted_Compress.cfs", true);
 
809
            
 
810
                CompoundFile cf = new CompoundFile("MultipleStorage_Deleted_Compress.cfs", UpdateMode.Update, true, true);
 
811
            
 
812
                CFStorage st = cf.RootStorage.GetStorage("MyStorage");
 
813
                st = st.GetStorage("AnotherStorage");
 
814
                
 
815
                Assert.IsNotNull(st);
 
816
                st.Delete("Another2Stream"); //17Kb
 
817
                cf.Commit();
 
818
                cf.Close();
 
819
            
 
820
                CompoundFile.ShrinkCompoundFile("MultipleStorage_Deleted_Compress.cfs");
 
821
            
 
822
                FileInfo dstFile = new FileInfo("MultipleStorage_Deleted_Compress.cfs");
 
823
            
 
824
                Assert.IsTrue(srcFile.Length > dstFile.Length);
 
825
            
 
826
             </code>
 
827
             </example>
 
828
        </member>
 
829
        <member name="M:OpenMcdf.CompoundFile.DoCompression(OpenMcdf.CFStorage,OpenMcdf.CFStorage)">
 
830
            <summary>
 
831
            Recursively clones valid structures, avoiding to copy free sectors.
 
832
            </summary>
 
833
            <param name="currSrcStorage">Current source storage to clone</param>
 
834
            <param name="currDstStorage">Current cloned destination storage</param>
 
835
        </member>
 
836
        <member name="P:OpenMcdf.CompoundFile.HasSourceStream">
 
837
            <summary>
 
838
            Return true if this compound file has been 
 
839
            loaded from an existing file or stream
 
840
            </summary>
 
841
        </member>
 
842
        <member name="P:OpenMcdf.CompoundFile.RootStorage">
 
843
             <summary>
 
844
             The entry point object that represents the 
 
845
             root of the structures tree to get or set storage or
 
846
             stream data.
 
847
             </summary>
 
848
             <example>
 
849
             <code>
 
850
             
 
851
                //Create a compound file
 
852
                string FILENAME = "MyFileName.cfs";
 
853
                CompoundFile ncf = new CompoundFile();
 
854
            
 
855
                CFStorage l1 = ncf.RootStorage.AddStorage("Storage Level 1");
 
856
            
 
857
                l1.AddStream("l1ns1");
 
858
                l1.AddStream("l1ns2");
 
859
                l1.AddStream("l1ns3");
 
860
                CFStorage l2 = l1.AddStorage("Storage Level 2");
 
861
                l2.AddStream("l2ns1");
 
862
                l2.AddStream("l2ns2");
 
863
            
 
864
                ncf.Save(FILENAME);
 
865
                ncf.Close();
 
866
             </code>
 
867
             </example>
 
868
        </member>
 
869
        <member name="T:OpenMcdf.CFStream">
 
870
            <summary>
 
871
            OLE structured storage <see cref="T:OpenMcdf.CFStream">stream</see> Object
 
872
            It is contained inside a Storage object in a file-directory
 
873
            relationship and indexed by its name.
 
874
            </summary>
 
875
        </member>
 
876
        <member name="M:OpenMcdf.CFStream.SetData(System.Byte[])">
 
877
            <summary>
 
878
            Set the data associated with the stream object.
 
879
            </summary>
 
880
            <example>
 
881
            <code>
 
882
               byte[] b = new byte[]{0x0,0x1,0x2,0x3};
 
883
               CompoundFile cf = new CompoundFile();
 
884
               CFStream myStream = cf.RootStorage.AddStream("MyStream");
 
885
               myStream.SetData(b);
 
886
            </code>
 
887
            </example>
 
888
            <param name="data">Data bytes to write to this stream</param>
 
889
        </member>
 
890
        <member name="M:OpenMcdf.CFStream.AppendData(System.Byte[])">
 
891
            <summary>
 
892
            Append the provided data to stream data.
 
893
            </summary>
 
894
            <example>
 
895
            <code>
 
896
               byte[] b = new byte[]{0x0,0x1,0x2,0x3};
 
897
               byte[] b2 = new byte[]{0x4,0x5,0x6,0x7};
 
898
               CompoundFile cf = new CompoundFile();
 
899
               CFStream myStream = cf.RootStorage.AddStream("MyStream");
 
900
               myStream.SetData(b); // here we could also have invoked .AppendData
 
901
               myStream.AppendData(b2);
 
902
               cf.Save("MyLargeStreamsFile.cfs);
 
903
               cf.Close();
 
904
            </code>
 
905
            </example>
 
906
            <param name="data">Data bytes to append to this stream</param>
 
907
            <remarks>
 
908
            This method allows user to create stream with more than 2GB of data, 
 
909
            appending data to the end of existing ones.
 
910
            Large streams (>2GB) are only supported by CFS version 4.
 
911
            Append data can also be invoked on streams with no data in order
 
912
            to simplify its use inside loops.
 
913
            </remarks>
 
914
        </member>
 
915
        <member name="M:OpenMcdf.CFStream.GetData">
 
916
            <summary>
 
917
            Get the data associated with the stream object.
 
918
            </summary>
 
919
            <example>
 
920
            <code>
 
921
                CompoundFile cf2 = new CompoundFile("AFileName.cfs");
 
922
                CFStream st = cf2.RootStorage.GetStream("MyStream");
 
923
                byte[] buffer = st.GetData();
 
924
            </code>
 
925
            </example>
 
926
            <returns>Array of byte containing stream data</returns>
 
927
            <exception cref="T:OpenMcdf.CFDisposedException">
 
928
            Raised when the owner compound file has been closed.
 
929
            </exception>
 
930
        </member>
 
931
        <member name="M:OpenMcdf.CFStream.GetData(System.Int64,System.Int32@)">
 
932
            <summary>
 
933
            Get <paramref name="count"/> bytes associated with the stream object, starting from
 
934
            a provided <paramref name="offset"/>. When method returns, count will contain the
 
935
            effective count of bytes read.
 
936
            </summary>
 
937
            <example>
 
938
            <code>
 
939
            CompoundFile cf = new CompoundFile("AFileName.cfs");
 
940
            CFStream st = cf.RootStorage.GetStream("MyStream");
 
941
            int count = 8;
 
942
            // The stream is supposed to have a length greater than offset + count
 
943
            byte[] data = st.GetData(20, ref count);  
 
944
            cf.Close();
 
945
            </code>
 
946
            </example>
 
947
            <returns>Array of byte containing stream data</returns>
 
948
            <exception cref="T:OpenMcdf.CFDisposedException">
 
949
            Raised when the owner compound file has been closed.
 
950
            </exception>
 
951
        </member>
 
952
        <member name="M:OpenMcdf.CFStream.CopyFrom(System.IO.Stream)">
 
953
            <summary>
 
954
            Copy data from an existing stream.
 
955
            </summary>
 
956
            <param name="input">A stream to read from</param>
 
957
            <remarks>
 
958
            Input stream is NOT closed after method invocation.
 
959
            </remarks>
 
960
        </member>
 
961
        <member name="T:OpenMcdf.VisitedEntryAction">
 
962
             <summary>
 
963
             Action to apply to  visited items in the OLE structured storage
 
964
             </summary>
 
965
             <param name="item">Currently visited <see cref="T:OpenMcdf.CFItem">item</see></param>
 
966
             <example>
 
967
             <code>
 
968
             
 
969
             //We assume that xls file should be a valid OLE compound file
 
970
             const String STORAGE_NAME = "report.xls";
 
971
             CompoundFile cf = new CompoundFile(STORAGE_NAME);
 
972
            
 
973
             FileStream output = new FileStream("LogEntries.txt", FileMode.Create);
 
974
             TextWriter tw = new StreamWriter(output);
 
975
            
 
976
             VisitedEntryAction va = delegate(CFItem item)
 
977
             {
 
978
                 tw.WriteLine(item.Name);
 
979
             };
 
980
            
 
981
             cf.RootStorage.VisitEntries(va, true);
 
982
            
 
983
             tw.Close();
 
984
            
 
985
             </code>
 
986
             </example>
 
987
        </member>
 
988
        <member name="T:OpenMcdf.CFStorage">
 
989
            <summary>
 
990
            Storage entity that acts like a logic container for streams
 
991
            or substorages in a compound file.
 
992
            </summary>
 
993
        </member>
 
994
        <member name="M:OpenMcdf.CFStorage.#ctor(OpenMcdf.CompoundFile)">
 
995
            <summary>
 
996
            Create a new CFStorage
 
997
            </summary>
 
998
            <param name="compFile">The Storage Owner - CompoundFile</param>
 
999
        </member>
 
1000
        <member name="M:OpenMcdf.CFStorage.#ctor(OpenMcdf.CompoundFile,OpenMcdf.IDirectoryEntry)">
 
1001
            <summary>
 
1002
            Create a CFStorage using an existing directory (previously loaded).
 
1003
            </summary>
 
1004
            <param name="compFile">The Storage Owner - CompoundFile</param>
 
1005
            <param name="dirEntry">An existing Directory Entry</param>
 
1006
        </member>
 
1007
        <member name="M:OpenMcdf.CFStorage.AddStream(System.String)">
 
1008
             <summary>
 
1009
             Create a new child stream inside the current <see cref="T:OpenMcdf.CFStorage">storage</see>
 
1010
             </summary>
 
1011
             <param name="streamName">The new stream name</param>
 
1012
             <returns>The new <see cref="T:OpenMcdf.CFStream">stream</see> reference</returns>
 
1013
             <exception cref="T:OpenMcdf.CFDuplicatedItemException">Raised when adding an item with the same name of an existing one</exception>
 
1014
             <exception cref="T:OpenMcdf.CFDisposedException">Raised when adding a stream to a closed compound file</exception>
 
1015
             <exception cref="T:OpenMcdf.CFException">Raised when adding a stream with null or empty name</exception>
 
1016
             <example>
 
1017
             <code>
 
1018
             
 
1019
              String filename = "A_NEW_COMPOUND_FILE_YOU_CAN_WRITE_TO.cfs";
 
1020
            
 
1021
              CompoundFile cf = new CompoundFile();
 
1022
            
 
1023
              CFStorage st = cf.RootStorage.AddStorage("MyStorage");
 
1024
              CFStream sm = st.AddStream("MyStream");
 
1025
              byte[] b = Helpers.GetBuffer(220, 0x0A);
 
1026
              sm.SetData(b);
 
1027
            
 
1028
              cf.Save(filename);
 
1029
              
 
1030
             </code>
 
1031
             </example>
 
1032
        </member>
 
1033
        <member name="M:OpenMcdf.CFStorage.GetStream(System.String)">
 
1034
             <summary>
 
1035
             Get a named <see cref="T:OpenMcdf.CFStream">stream</see> contained in the current storage if existing.
 
1036
             </summary>
 
1037
             <param name="streamName">Name of the stream to look for</param>
 
1038
             <returns>A stream reference if existing</returns>
 
1039
             <exception cref="T:OpenMcdf.CFDisposedException">Raised if trying to delete item from a closed compound file</exception>
 
1040
             <exception cref="T:OpenMcdf.CFItemNotFound">Raised if item to delete is not found</exception>
 
1041
             <example>
 
1042
             <code>
 
1043
             String filename = "report.xls";
 
1044
            
 
1045
             CompoundFile cf = new CompoundFile(filename);
 
1046
             CFStream foundStream = cf.RootStorage.GetStream("Workbook");
 
1047
            
 
1048
             byte[] temp = foundStream.GetData();
 
1049
            
 
1050
             Assert.IsNotNull(temp);
 
1051
            
 
1052
             cf.Close();
 
1053
             </code>
 
1054
             </example>
 
1055
        </member>
 
1056
        <member name="M:OpenMcdf.CFStorage.GetStorage(System.String)">
 
1057
             <summary>
 
1058
             Get a named storage contained in the current one if existing.
 
1059
             </summary>
 
1060
             <param name="storageName">Name of the storage to look for</param>
 
1061
             <returns>A storage reference if existing.</returns>
 
1062
             <exception cref="T:OpenMcdf.CFDisposedException">Raised if trying to delete item from a closed compound file</exception>
 
1063
             <exception cref="T:OpenMcdf.CFItemNotFound">Raised if item to delete is not found</exception>
 
1064
             <example>
 
1065
             <code>
 
1066
             
 
1067
             String FILENAME = "MultipleStorage2.cfs";
 
1068
             CompoundFile cf = new CompoundFile(FILENAME, UpdateMode.ReadOnly, false, false);
 
1069
            
 
1070
             CFStorage st = cf.RootStorage.GetStorage("MyStorage");
 
1071
            
 
1072
             Assert.IsNotNull(st);
 
1073
             cf.Close();
 
1074
             </code>
 
1075
             </example>
 
1076
        </member>
 
1077
        <member name="M:OpenMcdf.CFStorage.AddStorage(System.String)">
 
1078
             <summary>
 
1079
             Create new child storage directory inside the current storage.
 
1080
             </summary>
 
1081
             <param name="storageName">The new storage name</param>
 
1082
             <returns>Reference to the new <see cref="T:OpenMcdf.CFStorage">storage</see></returns>
 
1083
             <exception cref="T:OpenMcdf.CFDuplicatedItemException">Raised when adding an item with the same name of an existing one</exception>
 
1084
             <exception cref="T:OpenMcdf.CFDisposedException">Raised when adding a storage to a closed compound file</exception>
 
1085
             <exception cref="T:OpenMcdf.CFException">Raised when adding a storage with null or empty name</exception>
 
1086
             <example>
 
1087
             <code>
 
1088
             
 
1089
              String filename = "A_NEW_COMPOUND_FILE_YOU_CAN_WRITE_TO.cfs";
 
1090
            
 
1091
              CompoundFile cf = new CompoundFile();
 
1092
            
 
1093
              CFStorage st = cf.RootStorage.AddStorage("MyStorage");
 
1094
              CFStream sm = st.AddStream("MyStream");
 
1095
              byte[] b = Helpers.GetBuffer(220, 0x0A);
 
1096
              sm.SetData(b);
 
1097
            
 
1098
              cf.Save(filename);
 
1099
              
 
1100
             </code>
 
1101
             </example>
 
1102
        </member>
 
1103
        <member name="M:OpenMcdf.CFStorage.VisitEntries(OpenMcdf.VisitedEntryAction,System.Boolean)">
 
1104
             <summary>
 
1105
             Visit all entities contained in the storage applying a user provided action
 
1106
             </summary>
 
1107
             <exception cref="T:OpenMcdf.CFDisposedException">Raised when visiting items of a closed compound file</exception>
 
1108
             <param name="action">User <see cref="T:OpenMcdf.VisitedEntryAction">action</see> to apply to visited entities</param>
 
1109
             <param name="recursive"> Visiting recursion level. True means substorages are visited recursively, false indicates that only the direct children of this storage are visited</param>
 
1110
             <example>
 
1111
             <code>
 
1112
             const String STORAGE_NAME = "report.xls";
 
1113
             CompoundFile cf = new CompoundFile(STORAGE_NAME);
 
1114
            
 
1115
             FileStream output = new FileStream("LogEntries.txt", FileMode.Create);
 
1116
             TextWriter tw = new StreamWriter(output);
 
1117
            
 
1118
             VisitedEntryAction va = delegate(CFItem item)
 
1119
             {
 
1120
                 tw.WriteLine(item.Name);
 
1121
             };
 
1122
            
 
1123
             cf.RootStorage.VisitEntries(va, true);
 
1124
            
 
1125
             tw.Close();
 
1126
             </code>
 
1127
             </example>
 
1128
        </member>
 
1129
        <member name="M:OpenMcdf.CFStorage.Delete(System.String)">
 
1130
            <summary>
 
1131
            Remove an entry from the current storage and compound file.
 
1132
            </summary>
 
1133
            <param name="entryName">The name of the entry in the current storage to delete</param>
 
1134
            <example>
 
1135
            <code>
 
1136
            cf = new CompoundFile("A_FILE_YOU_CAN_CHANGE.cfs", UpdateMode.Update, true, false);
 
1137
            cf.RootStorage.Delete("AStream"); // AStream item is assumed to exist.
 
1138
            cf.Commit(true);
 
1139
            cf.Close();
 
1140
            </code>
 
1141
            </example>
 
1142
            <exception cref="T:OpenMcdf.CFDisposedException">Raised if trying to delete item from a closed compound file</exception>
 
1143
            <exception cref="T:OpenMcdf.CFItemNotFound">Raised if item to delete is not found</exception>
 
1144
            <exception cref="T:OpenMcdf.CFException">Raised if trying to delete root storage</exception>
 
1145
        </member>
 
1146
        <member name="M:OpenMcdf.DirectoryEntry.fnv_hash(System.Byte[])">
 
1147
            <summary>
 
1148
            FNV hash, short for Fowler/Noll/Vo
 
1149
            </summary>
 
1150
            <param name="buffer"></param>
 
1151
            <returns>(not warranted) unique hash for byte array</returns>
 
1152
        </member>
 
1153
        <member name="T:BinaryTrees.BinaryTreeNode`1">
 
1154
            <summary>
 
1155
            The BinaryTreeNode class represents a node in a binary tree, or a binary search tree.
 
1156
            It has precisely two neighbors, which can be accessed via the Left and Right properties.
 
1157
            </summary>
 
1158
            <typeparam name="T">The type of data stored in the binary tree node.</typeparam>
 
1159
        </member>
 
1160
        <member name="T:BinaryTrees.Node`1">
 
1161
            <summary>
 
1162
            The Node&lt;T&gt; class represents the base concept of a Node for a tree or graph.  It contains
 
1163
            a data item of type T, and a list of neighbors.
 
1164
            </summary>
 
1165
            <typeparam name="T">The type of data contained in the Node.</typeparam>
 
1166
            <remarks>None of the classes in the SkmDataStructures2 namespace use the Node class directly;
 
1167
            they all derive from this class, adding necessary functionality specific to each data structure.</remarks>
 
1168
        </member>
 
1169
        <member name="M:OpenMcdf.Sector.Dispose(System.Boolean)">
 
1170
            <summary>
 
1171
            When called from user code, release all resources, otherwise, in the case runtime called it,
 
1172
            only unmanagd resources are released.
 
1173
            </summary>
 
1174
            <param name="disposing">If true, method has been called from User code, if false it's been called from .net runtime</param>
 
1175
        </member>
 
1176
        <member name="T:RBTree.RedBlack">
 
1177
            <summary>
 
1178
            A red-black tree must satisfy these properties:
 
1179
            
 
1180
            1. The root is black. 
 
1181
            2. All leaves are black. 
 
1182
            3. Red nodes can only have black children. 
 
1183
            4. All paths from a node to its leaves contain the same number of black nodes.
 
1184
            </summary>
 
1185
        </member>
 
1186
        <member name="M:RBTree.RedBlack.Add(System.IComparable,System.Object)">
 
1187
            <summary>
 
1188
             Add
 
1189
             args: ByVal key As IComparable, ByVal data As Object
 
1190
             key is object that implements IComparable interface
 
1191
             performance tip: change to use use int type (such as the hashcode)
 
1192
            </summary>
 
1193
        </member>
 
1194
        <member name="M:RBTree.RedBlack.RestoreAfterInsert(RBTree.RedBlackNode)">
 
1195
            <summary>
 
1196
             RestoreAfterInsert
 
1197
             Additions to red-black trees usually destroy the red-black 
 
1198
             properties. Examine the tree and restore. Rotations are normally 
 
1199
             required to restore it
 
1200
            </summary>
 
1201
        </member>
 
1202
        <member name="M:RBTree.RedBlack.RotateLeft(RBTree.RedBlackNode)">
 
1203
            <summary>
 
1204
             RotateLeft
 
1205
             Rebalance the tree by rotating the nodes to the left
 
1206
            </summary>
 
1207
        </member>
 
1208
        <member name="M:RBTree.RedBlack.RotateRight(RBTree.RedBlackNode)">
 
1209
            <summary>
 
1210
             RotateRight
 
1211
             Rebalance the tree by rotating the nodes to the right
 
1212
            </summary>
 
1213
        </member>
 
1214
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetData(System.IComparable)" -->
 
1215
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetMinKey" -->
 
1216
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetMaxKey" -->
 
1217
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetMinValue" -->
 
1218
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetMaxValue" -->
 
1219
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetEnumerator" -->
 
1220
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Keys" -->
 
1221
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Values" -->
 
1222
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Elements" -->
 
1223
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.IsEmpty" -->
 
1224
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Remove(System.IComparable)" -->
 
1225
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Delete(RBTree.RedBlackNode)" -->
 
1226
        <member name="M:RBTree.RedBlack.RestoreAfterDelete(RBTree.RedBlackNode)">
 
1227
            <summary>
 
1228
             RestoreAfterDelete
 
1229
             Deletions from red-black trees may destroy the red-black 
 
1230
             properties. Examine the tree and restore. Rotations are normally 
 
1231
             required to restore it
 
1232
            </summary>
 
1233
        </member>
 
1234
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.RemoveMin" -->
 
1235
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.RemoveMax" -->
 
1236
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Clear" -->
 
1237
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Size" -->
 
1238
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.Equals(System.Object)" -->
 
1239
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.GetHashCode" -->
 
1240
        <!-- Badly formed XML comment ignored for member "M:RBTree.RedBlack.ToString" -->
 
1241
        <member name="T:OpenMcdf.CFMock">
 
1242
            <summary>
 
1243
            Used as internal template object for binary tree searches.
 
1244
            </summary>
 
1245
        </member>
 
1246
        <member name="T:RBTree.RedBlackNode">
 
1247
            <summary>
 
1248
             The RedBlackNode class encapsulates a node in the tree
 
1249
            </summary>
 
1250
        </member>
 
1251
        <member name="P:RBTree.RedBlackNode.Key">
 
1252
            <summary>
 
1253
            Key
 
1254
            </summary>
 
1255
        </member>
 
1256
        <member name="P:RBTree.RedBlackNode.Data">
 
1257
            <summary>
 
1258
            Data
 
1259
            </summary>
 
1260
        </member>
 
1261
        <member name="P:RBTree.RedBlackNode.Color">
 
1262
            <summary>
 
1263
            Color
 
1264
            </summary>
 
1265
        </member>
 
1266
        <member name="P:RBTree.RedBlackNode.Left">
 
1267
            <summary>
 
1268
            Left
 
1269
            </summary>
 
1270
        </member>
 
1271
        <member name="P:RBTree.RedBlackNode.Right">
 
1272
            <summary>
 
1273
             Right
 
1274
            </summary>
 
1275
        </member>
 
1276
        <member name="T:OpenMcdf.CFException">
 
1277
            <summary>
 
1278
            OpenMCDF base exception.
 
1279
            </summary>
 
1280
        </member>
 
1281
        <member name="T:OpenMcdf.CFDisposedException">
 
1282
            <summary>
 
1283
            Raised when a data setter/getter method is invoked
 
1284
            on a stream or storage object after the disposal of the owner
 
1285
            compound file object.
 
1286
            </summary>
 
1287
        </member>
 
1288
        <member name="T:OpenMcdf.CFFileFormatException">
 
1289
            <summary>
 
1290
            Raised when opening a file with invalid header
 
1291
            or not supported COM/OLE Structured storage version.
 
1292
            </summary>
 
1293
        </member>
 
1294
        <member name="T:OpenMcdf.CFItemNotFound">
 
1295
            <summary>
 
1296
            Raised when a named stream or a storage object
 
1297
            are not found in a parent storage.
 
1298
            </summary>
 
1299
        </member>
 
1300
        <member name="T:OpenMcdf.CFInvalidOperation">
 
1301
            <summary>
 
1302
            Raised when a method call is invalid for the current object state
 
1303
            </summary>
 
1304
        </member>
 
1305
        <member name="T:OpenMcdf.CFDuplicatedItemException">
 
1306
            <summary>
 
1307
            Raised when trying to add a duplicated CFItem
 
1308
            </summary>
 
1309
            <remarks>
 
1310
            Items are compared by name as indicated by specs.
 
1311
            Two items with the same name CANNOT be added within 
 
1312
            the same storage or sub-storage. 
 
1313
            </remarks>
 
1314
        </member>
 
1315
        <member name="T:OpenMcdf.CFCorruptedFileException">
 
1316
            <summary>
 
1317
            Raised when trying to load a Compound File with invalid, corrupted or mismatched fields (4.1 - specifications) 
 
1318
            </summary>
 
1319
            <remarks>
 
1320
            This exception is NOT raised when Compound file has been opened with NO_VALIDATION_EXCEPTION option.
 
1321
            </remarks>
 
1322
        </member>
 
1323
        <member name="T:BinaryTrees.BinaryTree`1">
 
1324
            <summary>
 
1325
            Represents a binary tree.  This class provides access to the Root of the tree.  The developer
 
1326
            must manually create the binary tree by adding descendents to the root.
 
1327
            </summary>
 
1328
            <typeparam name="T">The type of data stored in the binary tree's nodes.</typeparam>
 
1329
        </member>
 
1330
        <member name="M:BinaryTrees.BinaryTree`1.Clear">
 
1331
            <summary>
 
1332
            Clears out the contents of the binary tree.
 
1333
            </summary>
 
1334
        </member>
 
1335
        <member name="T:OpenMcdf.StreamView">
 
1336
            <summary>
 
1337
            Stream decorator for a Sector or miniSector chain
 
1338
            </summary>
 
1339
        </member>
 
1340
        <member name="T:RBTree.RedBlackEnumerator">
 
1341
            <summary>
 
1342
             The RedBlackEnumerator class returns the keys or data objects of the treap in
 
1343
             sorted order. 
 
1344
            </summary>
 
1345
        </member>
 
1346
        <member name="M:RBTree.RedBlackEnumerator.#ctor(RBTree.RedBlackNode,System.Boolean,System.Boolean)">
 
1347
            <summary>
 
1348
             Determine order, walk the tree and push the nodes onto the stack
 
1349
            </summary>
 
1350
        </member>
 
1351
        <member name="M:RBTree.RedBlackEnumerator.HasMoreElements">
 
1352
            <summary>
 
1353
             HasMoreElements
 
1354
            </summary>
 
1355
        </member>
 
1356
        <member name="M:RBTree.RedBlackEnumerator.NextElement">
 
1357
            <summary>
 
1358
             NextElement
 
1359
            </summary>
 
1360
        </member>
 
1361
        <member name="M:RBTree.RedBlackEnumerator.MoveNext">
 
1362
            <summary>
 
1363
             MoveNext
 
1364
             For .NET compatibility
 
1365
            </summary>
 
1366
        </member>
 
1367
        <member name="P:RBTree.RedBlackEnumerator.Key">
 
1368
            <summary>
 
1369
            Key
 
1370
            </summary>
 
1371
        </member>
 
1372
        <member name="P:RBTree.RedBlackEnumerator.Value">
 
1373
            <summary>
 
1374
            Data
 
1375
            </summary>
 
1376
        </member>
 
1377
        <member name="T:RBTree.RedBlackException">
 
1378
            <summary>
 
1379
             The RedBlackException class distinguishes read black tree exceptions from .NET
 
1380
             exceptions. 
 
1381
            </summary>
 
1382
        </member>
 
1383
    </members>
 
1384
</doc>