~ubuntu-branches/ubuntu/natty/pytables/natty-updates

« back to all changes in this revision

Viewing changes to doc/html/x4133.html

  • Committer: Bazaar Package Importer
  • Author(s): Alexandre Fayolle
  • Date: 2006-06-28 10:45:03 UTC
  • mfrom: (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: james.westby@ubuntu.com-20060628104503-cc251q5o5j3e2k10
  * Fixed call to pyversions in debian/rules which failed on recent versions 
    of pyversions
  * Fixed clean rule in debian/rules which left the stamp files behind
  * Acknowledge NMU
  * Added Alexandre Fayolle to uploaders

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 
2
<HTML
 
3
><HEAD
 
4
><TITLE
 
5
>The VLArray class</TITLE
 
6
><META
 
7
NAME="GENERATOR"
 
8
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 
9
REL="HOME"
 
10
TITLE="PyTables User's Guide"
 
11
HREF="index.html"><LINK
 
12
REL="UP"
 
13
TITLE="Library Reference"
 
14
HREF="c1381.html"><LINK
 
15
REL="PREVIOUS"
 
16
TITLE="The EArray class"
 
17
HREF="x4072.html"><LINK
 
18
REL="NEXT"
 
19
TITLE="The UnImplemented class"
 
20
HREF="x4290.html"></HEAD
 
21
><BODY
 
22
CLASS="sect1"
 
23
BGCOLOR="#FFFFFF"
 
24
TEXT="#000000"
 
25
LINK="#0000FF"
 
26
VLINK="#840084"
 
27
ALINK="#0000FF"
 
28
><DIV
 
29
CLASS="NAVHEADER"
 
30
><TABLE
 
31
SUMMARY="Header navigation table"
 
32
WIDTH="100%"
 
33
BORDER="0"
 
34
CELLPADDING="0"
 
35
CELLSPACING="0"
 
36
><TR
 
37
><TH
 
38
COLSPAN="3"
 
39
ALIGN="center"
 
40
><SPAN
 
41
CLASS="markup"
 
42
>PyTables</SPAN
 
43
> User's Guide: Hierarchical datasets in Python - Release 1.3.2</TH
 
44
></TR
 
45
><TR
 
46
><TD
 
47
WIDTH="10%"
 
48
ALIGN="left"
 
49
VALIGN="bottom"
 
50
><A
 
51
HREF="x4072.html"
 
52
ACCESSKEY="P"
 
53
>Prev</A
 
54
></TD
 
55
><TD
 
56
WIDTH="80%"
 
57
ALIGN="center"
 
58
VALIGN="bottom"
 
59
>Chapter 4. Library Reference</TD
 
60
><TD
 
61
WIDTH="10%"
 
62
ALIGN="right"
 
63
VALIGN="bottom"
 
64
><A
 
65
HREF="x4290.html"
 
66
ACCESSKEY="N"
 
67
>Next</A
 
68
></TD
 
69
></TR
 
70
></TABLE
 
71
><HR
 
72
ALIGN="LEFT"
 
73
WIDTH="100%"></DIV
 
74
><DIV
 
75
CLASS="sect1"
 
76
><H1
 
77
CLASS="sect1"
 
78
><A
 
79
NAME="section4.13"
 
80
>4.13. The <SPAN
 
81
CLASS="markup"
 
82
>VLArray</SPAN
 
83
> class</A
 
84
></H1
 
85
><A
 
86
NAME="VLArrayClassDescr"
 
87
></A
 
88
><P
 
89
>Instances of this class represents array objects in the
 
90
            object tree with the property that their rows can have a
 
91
            <SPAN
 
92
CLASS="emphasis"
 
93
><I
 
94
CLASS="emphasis"
 
95
>variable</I
 
96
></SPAN
 
97
> number of
 
98
            (homogeneous) elements (called <SPAN
 
99
CLASS="emphasis"
 
100
><I
 
101
CLASS="emphasis"
 
102
>atomic</I
 
103
></SPAN
 
104
> objects, or
 
105
            just <SPAN
 
106
CLASS="emphasis"
 
107
><I
 
108
CLASS="emphasis"
 
109
>atoms</I
 
110
></SPAN
 
111
>). Variable length arrays (or
 
112
            <SPAN
 
113
CLASS="emphasis"
 
114
><I
 
115
CLASS="emphasis"
 
116
>VLA's</I
 
117
></SPAN
 
118
> for short), similarly to <SAMP
 
119
CLASS="computeroutput"
 
120
>Table</SAMP
 
121
>
 
122
            instances, can have only one dimension, and likewise
 
123
            <SAMP
 
124
CLASS="computeroutput"
 
125
>Table</SAMP
 
126
>, the compound elements (the
 
127
            <SPAN
 
128
CLASS="emphasis"
 
129
><I
 
130
CLASS="emphasis"
 
131
>atoms</I
 
132
></SPAN
 
133
>) of the rows of <SAMP
 
134
CLASS="computeroutput"
 
135
>VLArrays</SAMP
 
136
> can be
 
137
            fully multidimensional objects.
 
138
          </P
 
139
><P
 
140
><SAMP
 
141
CLASS="computeroutput"
 
142
>VLArray</SAMP
 
143
> provides methods to read/write data
 
144
            from/to variable length array objects residents on disk.
 
145
            Also, note that this object inherits all the public
 
146
            attributes and methods that <SAMP
 
147
CLASS="computeroutput"
 
148
>Leaf</SAMP
 
149
> already has.
 
150
          </P
 
151
><DIV
 
152
CLASS="sect2"
 
153
><H2
 
154
CLASS="sect2"
 
155
><A
 
156
NAME="subsection4.13.1"
 
157
>4.13.1. <SPAN
 
158
CLASS="markup"
 
159
>VLArray</SPAN
 
160
> instance
 
161
              variables</A
 
162
></H2
 
163
><DIV
 
164
CLASS="glosslist"
 
165
><DL
 
166
><DT
 
167
><B
 
168
>atom</B
 
169
></DT
 
170
><DD
 
171
><P
 
172
>&#13;          An <SAMP
 
173
CLASS="computeroutput"
 
174
>Atom</SAMP
 
175
> (see <A
 
176
HREF="x4389.html#AtomClassDescr"
 
177
>4.16.3</A
 
178
>)
 
179
                instance representing the shape, type and flavor
 
180
                of the atomic objects to be saved.
 
181
              </P
 
182
></DD
 
183
><DT
 
184
><B
 
185
>nrow</B
 
186
></DT
 
187
><DD
 
188
><P
 
189
>On iterators, this is the index of
 
190
                the current row.
 
191
              </P
 
192
></DD
 
193
><DT
 
194
><B
 
195
>nrows</B
 
196
></DT
 
197
><DD
 
198
><P
 
199
>The total number of rows.
 
200
              </P
 
201
></DD
 
202
></DL
 
203
></DIV
 
204
></DIV
 
205
><DIV
 
206
CLASS="sect2"
 
207
><H2
 
208
CLASS="sect2"
 
209
><A
 
210
NAME="subsection4.13.2"
 
211
>4.13.2. <SPAN
 
212
CLASS="markup"
 
213
>VLArray</SPAN
 
214
> methods</A
 
215
></H2
 
216
><DIV
 
217
CLASS="sect3"
 
218
><H3
 
219
CLASS="sect3"
 
220
><A
 
221
NAME="subsubsection4.13.2.1"
 
222
>4.13.2.1. getEnum()</A
 
223
></H3
 
224
><A
 
225
NAME="VLArray.getEnum"
 
226
></A
 
227
><P
 
228
>Get the enumerated type associated with this array.
 
229
              </P
 
230
><P
 
231
>If this array is of an enumerated type, the
 
232
                corresponding <SAMP
 
233
CLASS="computeroutput"
 
234
>Enum</SAMP
 
235
> instance (see <A
 
236
HREF="x4983.html#EnumClassDescr"
 
237
>4.17.4</A
 
238
>) is returned.  If it is
 
239
                not of an enumerated type, a <SAMP
 
240
CLASS="computeroutput"
 
241
>TypeError</SAMP
 
242
> is
 
243
                raised.
 
244
              </P
 
245
></DIV
 
246
><DIV
 
247
CLASS="sect3"
 
248
><H3
 
249
CLASS="sect3"
 
250
><A
 
251
NAME="subsubsection4.13.2.2"
 
252
>4.13.2.2. append(sequence, *objects)</A
 
253
></H3
 
254
><A
 
255
NAME="VLArray.append"
 
256
></A
 
257
><P
 
258
>Append objects in the <SAMP
 
259
CLASS="computeroutput"
 
260
>sequence</SAMP
 
261
> to the array.</P
 
262
><P
 
263
>This method appends the objects in the <SAMP
 
264
CLASS="computeroutput"
 
265
>sequence</SAMP
 
266
>
 
267
                to a <SPAN
 
268
CLASS="emphasis"
 
269
><I
 
270
CLASS="emphasis"
 
271
>single row</I
 
272
></SPAN
 
273
> in this array.
 
274
                The type of individual objects must be compliant with
 
275
                the type of atoms in the array.
 
276
                In the case of variable length strings, the very string to append
 
277
                is the <SAMP
 
278
CLASS="computeroutput"
 
279
>sequence</SAMP
 
280
>.
 
281
              </P
 
282
><P
 
283
>Example of use (code available in
 
284
                <SAMP
 
285
CLASS="computeroutput"
 
286
>examples/vlarray1.py</SAMP
 
287
>):
 
288
              </P
 
289
><PRE
 
290
CLASS="screen"
 
291
>&#13;
 
292
import tables
 
293
from numpy import *   # or, from numarray import *
 
294
 
 
295
# Create a VLArray:
 
296
fileh = tables.openFile("vlarray1.h5", mode = "w")
 
297
vlarray = fileh.createVLArray(fileh.root, 'vlarray1',
 
298
tables.Int32Atom(flavor="numpy"),
 
299
                 "ragged array of ints", Filters(complevel=1))
 
300
# Append some (variable length) rows:
 
301
vlarray.append(array([5, 6]))
 
302
vlarray.append(array([5, 6, 7]))
 
303
vlarray.append([5, 6, 9, 8])
 
304
 
 
305
# Now, read it through an iterator:
 
306
for x in vlarray:
 
307
    print vlarray.name+"["+str(vlarray.nrow)+"]--&#62;", x
 
308
 
 
309
# Close the file
 
310
fileh.close()
 
311
 
 
312
              </PRE
 
313
><P
 
314
>The output of the previous program looks like this:</P
 
315
><PRE
 
316
CLASS="screen"
 
317
>&#13;vlarray1[0]--&#62; [5 6]
 
318
vlarray1[1]--&#62; [5 6 7]
 
319
vlarray1[2]--&#62; [5 6 9 8]
 
320
              </PRE
 
321
><P
 
322
>The <SAMP
 
323
CLASS="computeroutput"
 
324
>objects</SAMP
 
325
> argument is only retained
 
326
                for backwards compatibility; please do <SPAN
 
327
CLASS="emphasis"
 
328
><I
 
329
CLASS="emphasis"
 
330
>not</I
 
331
></SPAN
 
332
>
 
333
                use it.
 
334
              </P
 
335
></DIV
 
336
><DIV
 
337
CLASS="sect3"
 
338
><H3
 
339
CLASS="sect3"
 
340
><A
 
341
NAME="subsubsection4.13.2.3"
 
342
>4.13.2.3. iterrows(start=None,
 
343
                stop=None, step=1)</A
 
344
></H3
 
345
><A
 
346
NAME="iterrowsVLArrayDescr"
 
347
></A
 
348
><P
 
349
>Returns an iterator yielding one row per iteration. If
 
350
                a range is supplied (i.e. some of the <SPAN
 
351
CLASS="emphasis"
 
352
><I
 
353
CLASS="emphasis"
 
354
>start</I
 
355
></SPAN
 
356
>,
 
357
                <SPAN
 
358
CLASS="emphasis"
 
359
><I
 
360
CLASS="emphasis"
 
361
>stop</I
 
362
></SPAN
 
363
> or <SPAN
 
364
CLASS="emphasis"
 
365
><I
 
366
CLASS="emphasis"
 
367
>step</I
 
368
></SPAN
 
369
> parameters are passed),
 
370
                only the appropriate rows are returned. Else, all the
 
371
                rows are returned. See also the <SAMP
 
372
CLASS="computeroutput"
 
373
>__iter__()</SAMP
 
374
>
 
375
                special methods in <A
 
376
HREF="x4133.html#VLArraySpecialMethods"
 
377
>section�4.13.3</A
 
378
> for a
 
379
                shorter way to call this iterator.
 
380
              </P
 
381
><P
 
382
>The meaning of the <SPAN
 
383
CLASS="emphasis"
 
384
><I
 
385
CLASS="emphasis"
 
386
>start</I
 
387
></SPAN
 
388
>, <SPAN
 
389
CLASS="emphasis"
 
390
><I
 
391
CLASS="emphasis"
 
392
>stop</I
 
393
></SPAN
 
394
> and
 
395
                <SPAN
 
396
CLASS="emphasis"
 
397
><I
 
398
CLASS="emphasis"
 
399
>step</I
 
400
></SPAN
 
401
> parameters is the same as in the
 
402
                <SAMP
 
403
CLASS="computeroutput"
 
404
>range()</SAMP
 
405
> python function, except that
 
406
                negative values of <SAMP
 
407
CLASS="computeroutput"
 
408
>step</SAMP
 
409
> are not
 
410
                allowed. Moreover, if only <SAMP
 
411
CLASS="computeroutput"
 
412
>start</SAMP
 
413
> is
 
414
                specified, then <SAMP
 
415
CLASS="computeroutput"
 
416
>stop</SAMP
 
417
> will be set to
 
418
                <SAMP
 
419
CLASS="computeroutput"
 
420
>start+1</SAMP
 
421
>. If you do not specify neither
 
422
                <SPAN
 
423
CLASS="emphasis"
 
424
><I
 
425
CLASS="emphasis"
 
426
>start</I
 
427
></SPAN
 
428
> nor <SPAN
 
429
CLASS="emphasis"
 
430
><I
 
431
CLASS="emphasis"
 
432
>stop</I
 
433
></SPAN
 
434
>, then all the rows in
 
435
                the object are selected.
 
436
              </P
 
437
><P
 
438
>Example of use:</P
 
439
><PRE
 
440
CLASS="screen"
 
441
>&#13;          for row in vlarray.iterrows(step=4):
 
442
                print vlarray.name+"["+str(vlarray.nrow)+"]--&#62;", row
 
443
              </PRE
 
444
></DIV
 
445
><DIV
 
446
CLASS="sect3"
 
447
><H3
 
448
CLASS="sect3"
 
449
><A
 
450
NAME="subsubsection4.13.2.4"
 
451
>4.13.2.4. read(start=None, stop=None,
 
452
                step=1)</A
 
453
></H3
 
454
><A
 
455
NAME="readVLArrayDescr"
 
456
></A
 
457
><P
 
458
>Returns the actual data in <SAMP
 
459
CLASS="computeroutput"
 
460
>VLArray</SAMP
 
461
>. As the
 
462
                lengths of the different rows are variable, the returned
 
463
                value is a python list, with as many entries as
 
464
                specified rows in the range parameters.
 
465
              </P
 
466
><P
 
467
>The meaning of the <SPAN
 
468
CLASS="emphasis"
 
469
><I
 
470
CLASS="emphasis"
 
471
>start</I
 
472
></SPAN
 
473
>, <SPAN
 
474
CLASS="emphasis"
 
475
><I
 
476
CLASS="emphasis"
 
477
>stop</I
 
478
></SPAN
 
479
> and
 
480
                <SPAN
 
481
CLASS="emphasis"
 
482
><I
 
483
CLASS="emphasis"
 
484
>step</I
 
485
></SPAN
 
486
> parameters is the same as in the
 
487
                <SAMP
 
488
CLASS="computeroutput"
 
489
>range()</SAMP
 
490
> python function, except that
 
491
                negative values of <SAMP
 
492
CLASS="computeroutput"
 
493
>step</SAMP
 
494
> are not
 
495
                allowed. Moreover, if only <SAMP
 
496
CLASS="computeroutput"
 
497
>start</SAMP
 
498
> is
 
499
                specified, then <SAMP
 
500
CLASS="computeroutput"
 
501
>stop</SAMP
 
502
> will be set to
 
503
                <SAMP
 
504
CLASS="computeroutput"
 
505
>start+1</SAMP
 
506
>. If you do not specify neither
 
507
                <SPAN
 
508
CLASS="emphasis"
 
509
><I
 
510
CLASS="emphasis"
 
511
>start</I
 
512
></SPAN
 
513
> nor <SPAN
 
514
CLASS="emphasis"
 
515
><I
 
516
CLASS="emphasis"
 
517
>stop</I
 
518
></SPAN
 
519
>, then all the rows in
 
520
                the object are selected.
 
521
              </P
 
522
></DIV
 
523
></DIV
 
524
><DIV
 
525
CLASS="sect2"
 
526
><H2
 
527
CLASS="sect2"
 
528
><A
 
529
NAME="subsection4.13.3"
 
530
>4.13.3. <SPAN
 
531
CLASS="markup"
 
532
>VLArray</SPAN
 
533
> special
 
534
              methods</A
 
535
></H2
 
536
><A
 
537
NAME="VLArraySpecialMethods"
 
538
></A
 
539
><P
 
540
>Following are described the methods that automatically
 
541
              trigger actions when a <SAMP
 
542
CLASS="computeroutput"
 
543
>VLArray</SAMP
 
544
> instance is
 
545
              accessed in a special way (e.g., <SAMP
 
546
CLASS="computeroutput"
 
547
>vlarray[2:5]</SAMP
 
548
>
 
549
              will be equivalent to a call to
 
550
              <SAMP
 
551
CLASS="computeroutput"
 
552
>vlarray.__getitem__(slice(2,5,None)</SAMP
 
553
>).
 
554
            </P
 
555
><DIV
 
556
CLASS="sect3"
 
557
><H3
 
558
CLASS="sect3"
 
559
><A
 
560
NAME="subsubsection4.13.3.1"
 
561
>4.13.3.1. __iter__()</A
 
562
></H3
 
563
><A
 
564
NAME="VLArray.__iter__"
 
565
></A
 
566
><P
 
567
>It returns the same iterator than
 
568
                <SAMP
 
569
CLASS="computeroutput"
 
570
>VLArray.iterrows(0,0,1)</SAMP
 
571
>. However, this does
 
572
                not accept parameters.</P
 
573
><P
 
574
>Example of use:</P
 
575
><PRE
 
576
CLASS="screen"
 
577
>&#13;          result = [ row for row in vlarray ]
 
578
              </PRE
 
579
><P
 
580
>Which is equivalent to:</P
 
581
><PRE
 
582
CLASS="screen"
 
583
>&#13;          result = [ row for row in vlarray.iterrows() ]
 
584
              </PRE
 
585
></DIV
 
586
><DIV
 
587
CLASS="sect3"
 
588
><H3
 
589
CLASS="sect3"
 
590
><A
 
591
NAME="subsubsection4.13.3.2"
 
592
>4.13.3.2. __getitem__(key)</A
 
593
></H3
 
594
><A
 
595
NAME="VLArray.__getitem__"
 
596
></A
 
597
><P
 
598
>It returns the slice of rows determined by
 
599
                <SAMP
 
600
CLASS="computeroutput"
 
601
>key</SAMP
 
602
>, which can be an integer index or an
 
603
                extended slice. The returned value is a list of objects
 
604
                of type <SAMP
 
605
CLASS="computeroutput"
 
606
>array.atom.type</SAMP
 
607
>.
 
608
              </P
 
609
><P
 
610
>Example of use:</P
 
611
><PRE
 
612
CLASS="screen"
 
613
>&#13;          list1 = vlarray[4]
 
614
                list2 = vlarray[4:1000:2]
 
615
              </PRE
 
616
></DIV
 
617
><DIV
 
618
CLASS="sect3"
 
619
><H3
 
620
CLASS="sect3"
 
621
><A
 
622
NAME="subsubsection4.13.3.3"
 
623
>4.13.3.3. __setitem__(keys, value)</A
 
624
></H3
 
625
><A
 
626
NAME="VLArray.__setitem__"
 
627
></A
 
628
><P
 
629
>Updates a vlarray row described by <SAMP
 
630
CLASS="computeroutput"
 
631
>keys</SAMP
 
632
> by
 
633
                setting it to <SAMP
 
634
CLASS="computeroutput"
 
635
>value</SAMP
 
636
>. Depending on the value
 
637
                of <SAMP
 
638
CLASS="computeroutput"
 
639
>keys</SAMP
 
640
>, the action taken is different:
 
641
              </P
 
642
><DIV
 
643
CLASS="glosslist"
 
644
><DL
 
645
><DT
 
646
><B
 
647
><SAMP
 
648
CLASS="computeroutput"
 
649
>keys</SAMP
 
650
> is an integer:</B
 
651
></DT
 
652
><DD
 
653
><P
 
654
>It
 
655
                  refers to the number of row to be modified. The
 
656
                  <SAMP
 
657
CLASS="computeroutput"
 
658
>value</SAMP
 
659
> object must be type and shape
 
660
                  compatible with the object that exists in the vlarray
 
661
                  row.</P
 
662
></DD
 
663
><DT
 
664
><B
 
665
><SAMP
 
666
CLASS="computeroutput"
 
667
>keys</SAMP
 
668
> is a tuple:</B
 
669
></DT
 
670
><DD
 
671
><P
 
672
>The
 
673
                  first element refers to the row to be modified, and
 
674
                  the second element to the range (so, it can be an
 
675
                  integer or an slice) of the row that will be
 
676
                  updated. As above, the <SAMP
 
677
CLASS="computeroutput"
 
678
>value</SAMP
 
679
> object must
 
680
                  be type and shape compatible with the object specified
 
681
                  in the vlarray row <SPAN
 
682
CLASS="emphasis"
 
683
><I
 
684
CLASS="emphasis"
 
685
>and</I
 
686
></SPAN
 
687
> range.</P
 
688
></DD
 
689
></DL
 
690
></DIV
 
691
><P
 
692
><SPAN
 
693
CLASS="emphasis"
 
694
><I
 
695
CLASS="emphasis"
 
696
>Note:</I
 
697
></SPAN
 
698
> When updating
 
699
                <SAMP
 
700
CLASS="computeroutput"
 
701
>VLStrings</SAMP
 
702
> (codification UTF-8) or
 
703
                <SAMP
 
704
CLASS="computeroutput"
 
705
>Objects</SAMP
 
706
> atoms, there is a problem: one can
 
707
                only update values with <SPAN
 
708
CLASS="emphasis"
 
709
><I
 
710
CLASS="emphasis"
 
711
>exactly</I
 
712
></SPAN
 
713
> the same bytes
 
714
                than in the original row. With UTF-8 encoding this is
 
715
                problematic because, for instance, '<SAMP
 
716
CLASS="computeroutput"
 
717
>c</SAMP
 
718
>'
 
719
                takes 1 byte, but '<SAMP
 
720
CLASS="computeroutput"
 
721
>�</SAMP
 
722
>' takes two. The same
 
723
                applies when using <SAMP
 
724
CLASS="computeroutput"
 
725
>Objects</SAMP
 
726
> atoms, because
 
727
                when cPickle applies to a class instance (for example),
 
728
                it does not guarantee to return the same number of bytes
 
729
                than over other instance, even of the same class than
 
730
                the former. These facts effectively limit the number of
 
731
                objects than can be updated in <SAMP
 
732
CLASS="computeroutput"
 
733
>VLArray</SAMP
 
734
>s.
 
735
              </P
 
736
><P
 
737
>Example of use:</P
 
738
><PRE
 
739
CLASS="screen"
 
740
>&#13;          vlarray[0] = vlarray[0]*2+3
 
741
                vlarray[99,3:] = arange(96)*2+3
 
742
                # Negative values for start and stop (but not step) are supported
 
743
                vlarray[99,-99:-89:2] = vlarray[5]*2+3
 
744
              </PRE
 
745
></DIV
 
746
></DIV
 
747
></DIV
 
748
><DIV
 
749
CLASS="NAVFOOTER"
 
750
><HR
 
751
ALIGN="LEFT"
 
752
WIDTH="100%"><TABLE
 
753
SUMMARY="Footer navigation table"
 
754
WIDTH="100%"
 
755
BORDER="0"
 
756
CELLPADDING="0"
 
757
CELLSPACING="0"
 
758
><TR
 
759
><TD
 
760
WIDTH="33%"
 
761
ALIGN="left"
 
762
VALIGN="top"
 
763
><A
 
764
HREF="x4072.html"
 
765
ACCESSKEY="P"
 
766
>Prev</A
 
767
></TD
 
768
><TD
 
769
WIDTH="34%"
 
770
ALIGN="center"
 
771
VALIGN="top"
 
772
><A
 
773
HREF="index.html"
 
774
ACCESSKEY="H"
 
775
>Home</A
 
776
></TD
 
777
><TD
 
778
WIDTH="33%"
 
779
ALIGN="right"
 
780
VALIGN="top"
 
781
><A
 
782
HREF="x4290.html"
 
783
ACCESSKEY="N"
 
784
>Next</A
 
785
></TD
 
786
></TR
 
787
><TR
 
788
><TD
 
789
WIDTH="33%"
 
790
ALIGN="left"
 
791
VALIGN="top"
 
792
>The <SPAN
 
793
CLASS="markup"
 
794
>EArray</SPAN
 
795
> class</TD
 
796
><TD
 
797
WIDTH="34%"
 
798
ALIGN="center"
 
799
VALIGN="top"
 
800
><A
 
801
HREF="c1381.html"
 
802
ACCESSKEY="U"
 
803
>Up</A
 
804
></TD
 
805
><TD
 
806
WIDTH="33%"
 
807
ALIGN="right"
 
808
VALIGN="top"
 
809
>The <SPAN
 
810
CLASS="markup"
 
811
>UnImplemented</SPAN
 
812
> class</TD
 
813
></TR
 
814
></TABLE
 
815
></DIV
 
816
></BODY
 
817
></HTML
 
818
>
 
 
b'\\ No newline at end of file'