DSPython  00.03.03 — 25 juin 2012
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
cnat32table.py
Aller à la documentation de ce fichier.
1 #!/usr/bin/env python
2 # -*- coding: latin-1 -*-
3 ##\package DSPython.cnat32table
4 # Tableau compact de naturels stockés sur n_1, n_2,
5 # \htmlonly…\endhtmlonly, n_k \htmlonly ≤\endhtmlonly 32 bits
6 # !!! Work in progress !!!
7 
8 ##\file
9 # Tableau compact de naturels stockés sur n_1, n_2,
10 # \htmlonly…\endhtmlonly, n_k \htmlonly ≤\endhtmlonly 32 bits
11 # !!! Work in progress !!!
12 
13 # (c) Olivier Pirson --- DragonSoft
14 # http://www.opimedia.be/DS/
15 # Débuté le 20 juillet 2006
16 ####################################
17 from __future__ import print_function
18 
19 ## Date du dernier changement pour ce module
20 VERSION = 'cnat32table --- 2010 March 16'
21 
22 import types
23 
24 import DSPython.cnat32array as cnat32array
25 
26 
27 
28 # ########
29 # Classe #
30 ##########
31 ## Tableau compact de naturels stocké sur n<sub>1</sub>, n<sub>2</sub>, ..., n<sub>k</sub> bits
33  """Tableau compact de naturels stocké sur n_1, n_2, ..., n_k bits
34  (séquence de Cnat32array)
35 
36  Pre: n_1, n_2, ..., n_k: 1 <= naturels <= 32"""
37 
38  ## Constucteur
39  def __init__(self, sizes, items=None):
40  """Renvoie un tableau compact de naturels
41  sur sizes[0], sizes[1], ... sizes[k] bits.
42  Si items == None alors renvoie un tableau vide
43 
44  Pre: sizes: séquence de 1 <= naturels <= 32
45  items: None
46 
47  O() = ..."""
48 
49  ## Nombre d'éléments contenu dans le tableau
50  self.len = 0
51 
52  ## Séquence de Cnat32array
53  self.l = [cnat32array.Cnat32array(s) for s in sizes]
54  if items != None:
55  raise NotImplementedError
56 
57 
58  ## Nombre d'éléments
59  def __len__(self):
60  """Renvoie le nombre d'éléments du tableau
61 
62  Result: naturel
63 
64  O() = 1"""
65  return self.len
66 
67 
68  ## Transforme en string
69  def __repr__(self):
70  """Si le tableau est vide alors renvoie 'Cnat32table()'
71  sinon renvoie 'Cnat32table(size, Cnat32array...)'
72 
73  Result: string quotée
74 
75  O() = ..."""
76  return ('Cnat32table()' if self.len == 0
77  else 'Cnat32table({0}, {1!r})'.format(self.size, [n for n in self.l]))
78 
79 
80 
81 # ######\cond MAINTEST
82 # Main #
83 ########
84 if __name__ == '__main__':
85  def main_test():
86  """Test du module"""
87  import sys
88 
89  import DSPython.debug as debug
90 
91  debug.test_begin(VERSION, __debug__)
92 
93  print('Cnat32table()...', end=''); sys.stdout.flush()
94  for k in range(1, 33):
95  t = Cnat32table(())
96  assert t.len == 0 == len(t) == 0, (t.len, len(t))
97  assert isinstance(t.l, list), type(t.l)
98  assert len(t.l) == 0, len(t.l)
99  assert repr(t) == 'Cnat32table()'
100 
101  t = Cnat32table((k,))
102  assert t.len == 0 == len(t) == 0, (t.len, len(t))
103  assert isinstance(t.l, list), type(t.l)
104  assert len(t.l) == 1, len(t.l)
105  assert len(t.l[0]) == 0, len(t.l[0])
106  assert repr(t) == 'Cnat32table()'
107  print('???', end='')
108  print('ok'); sys.stdout.flush()
109 
110  print('Cnat32table.__getitem__()...', end=''); sys.stdout.flush()
111  print('???', end='')
112  print('ok'); sys.stdout.flush()
113 
114 
115  print('Cnat32table.__len__()...', end=''); sys.stdout.flush()
116  print('???', end='')
117  print('ok'); sys.stdout.flush()
118 
119 
120  print('Cnat32table.__repr__()...', end=''); sys.stdout.flush()
121  print('???', end='')
122  print('ok'); sys.stdout.flush()
123 
124 
125  print('Cnat32table.__setitem__()...', end=''); sys.stdout.flush()
126  print('???', end='')
127  print('ok'); sys.stdout.flush()
128  debug.test_end()
129 
130  main_test()
131 ##\endcond MAINTEST