File: erc.lcl

package info (click to toggle)
splint 3.1.2.dfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, wheezy
  • size: 12,908 kB
  • ctags: 15,816
  • sloc: ansic: 150,306; yacc: 3,463; sh: 3,426; makefile: 2,218; lex: 412
file content (97 lines) | stat: -rw-r--r-- 1,689 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
imports eref;

mutable type erc;
mutable type ercIter;

erc erc_create(void) 
{
  /* ensures fresh(result) /\ result' = { }; */
}

void erc_clear(erc c) 
{
  /* requires c^.activeIters = 0; */
  modifies c;
  /* ensures c' = { }; */
}

void erc_insert(erc c, eref er) 
{
  /* requires c^.activeIters = 0 /\ er \neq erefNIL; */
  modifies c;
  /* ensures c' = [insert(er, c^.val), 0]; */
}

bool erc_delete(erc c, eref er) 
{
  /* requires c^.activeIters = 0; */
  modifies c;
  /* ensures result = er \in c^.val
     /\ c' = [delete(er, c^.val), 0]; */
}

bool erc_member(eref er, erc c) 
{
  /* ensures result = er \in c^.val; */
}

eref erc_choose(erc c) 
{
  /* requires size(c^.val) \neq 0; */
  /* ensures result \in c^.val; */
}

int erc_size(erc c) 
{
  /* ensures result = size(c^.val); */
}

ercIter erc_iterStart(erc c) 
{
  modifies c;
  /* ensures fresh(result) /\ result' = [c^.val, c]
        /\ c' = startIter(c^);
  */
}

eref erc_yield(ercIter it) 
{
  modifies it; /* , it^.eObj */ 
  /* ensures if it^.toYield \neq { }
     then yielded(result, it^, it')
       /\ (it^.eObj)' = (it^.eObj)^
     else result = erefNIL /\ trashed(it)
       /\ (it^.eObj)' = endIter((it^.eObj)^);
 */
}

void erc_iterFinal(ercIter it) 
{
  modifies it; /* , it^.eObj; */
  /* ensures trashed(it)
     /\ (it^.eObj)' = endIter((it^.eObj)^);
  */
}

void erc_join(erc c1, erc c2) 
{
  /* requires c1^.activeIters = 0; */
  modifies c1;
  /* ensures c1' = [c1^.val \U c2^.val, 0]; */
}

char *erc_sprint(erc c) 
{
  /* ensures isSprint(result[]', c^) /\ fresh(result[]); */
}

void erc_final(erc c) 
{
  modifies c;
  /* ensures trashed(c); */
}

void erc_initMod(void) 
{
  ensures true;
}