InutitionTC  0.30
errorMessages.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (C) 2016 by University of Warsaw *
3  * *
4  * This file is part of IntuitionTC. *
5  * *
6  ****************************************************************************/
12 #ifndef _ERRORMESSAGES_H
13 #define _ERRORMESSAGES_H 1
14 #include <stdlib.h>
15 
16 #define BUFFER_LEN 4096
17 extern char errorBuffer[BUFFER_LEN];
18 //@ logic size_t L_BUFFER_LEN = (size_t)4096;
19 extern int errorNum;
20 
21 
22 //@ logic size_t ENV_MSG_UNDECLARED_TVAR = (size_t)0;
23 #define ENV_MSG_UNDECLARED_TVAR 0
24 //@ logic size_t ENV_MSG_OBJECT_VAR = (size_t)1;
25 #define ENV_MSG_OBJECT_VAR 1
26 //@ logic size_t ENV_MSG_UNDECLARED_MVAR = (size_t)2;
27 #define ENV_MSG_UNDECLARED_MVAR 2
28 //@ logic size_t ENV_MSG_TVAR = (size_t)3;
29 #define ENV_MSG_TVAR 3
30 //@ logic size_t ENV_MSG_TNAME_DEFINED = (size_t)4;
31 #define ENV_MSG_TNAME_DEFINED 4
32 //@ logic size_t ENV_MSG_ONAME_DEFINED = (size_t)5;
33 #define ENV_MSG_ONAME_DEFINED 5
34 //@ logic size_t ENV_MSG_WRONG_ACTUAL_KIND = (size_t)6;
35 #define ENV_MSG_WRONG_ACTUAL_KIND 6
36 //@ logic size_t ENV_MSG_EXPECTED_PRODUCT_KIND = (size_t)7;
37 #define ENV_MSG_EXPECTED_PRODUCT_KIND 7
38 //@ logic size_t ENV_MSG_WRONG_ACTUAL_TYPE = (size_t)8;
39 #define ENV_MSG_WRONG_ACTUAL_TYPE 8
40 //@ logic size_t ENV_MSG_IN_INFERTERM = (size_t)9;
41 #define ENV_MSG_IN_INFERTERM 9
42 //@ logic size_t ENV_MSG_NOT_FUNCTION_TYPE = (size_t)10;
43 #define ENV_MSG_NOT_FUNCTION_TYPE 10
44 //@ logic size_t ENV_MSG_WITNESS_FOR_NONEXISTENTIAL = (size_t)11;
45 #define ENV_MSG_WITNESS_FOR_NONEXISTENTIAL 11
46 //@ logic size_t ENV_MSG_IN = (size_t)12;
47 #define ENV_MSG_IN 12
48 //@ logic size_t ENV_MSG_IN_INFERTERM_CHECK = (size_t)13;
49 #define ENV_MSG_IN_INFERTERM_CHECK 13
50 //@ logic size_t ENV_MSG_TUPLE_NOT_AND = (size_t)14;
51 #define ENV_MSG_TUPLE_NOT_AND 14
52 //@ logic size_t ENV_MSG_IS_NOT_PAIR = (size_t)15;
53 #define ENV_MSG_IS_NOT_PAIR 15
54 //@ logic size_t ENV_MSG_IN_CASE = (size_t)16;
55 #define ENV_MSG_IN_CASE 16
56 //@ logic size_t ENV_MSG_UNHANDLED_TERM = (size_t)17;
57 #define ENV_MSG_UNHANDLED_TERM 17
58 //@ logic size_t ENV_MSG_PRINT_BUFFER_OVERFLOW = (size_t)18;
59 #define ENV_MSG_PRINT_BUFFER_OVERFLOW 18
60 //@ logic size_t ENV_MSG_UNHANDLED_TYPE = (size_t)19;
61 #define ENV_MSG_UNHANDLED_TYPE 19
62 //@ logic size_t ENV_MSG_NO_KIND_FOR_TYPE = (size_t)20;
63 #define ENV_MSG_NO_KIND_FOR_TYPE 20
64 //@ logic size_t ENV_MSG_IMPOSSIBLE_COPY_ENV = (size_t)21;
65 #define ENV_MSG_IMPOSSIBLE_COPY_ENV 21
66 //@ logic size_t ENV_MSG_CANNOT_INSERT_VARIABLE = (size_t)22;
67 #define ENV_MSG_CANNOT_INSERT_VARIABLE 22
68 
69 
70 //@ logic size_t ENV_MSG_MAX = (size_t)ENV_MSG_NO_KIND_FOR_TYPE;
71 #define ENV_MSG_MAX ENV_MSG_CANNOT_INSERT_VARIABLE
72 
73 extern char * messages[];
74 
75 /*@ axiomatic messages {
76  @
77  @
78  @ axiom valid_messages:
79  @ \forall size_t i; 0 <= i <= ENV_MSG_MAX ==>
80  @ valid_string(messages[i]);
81  @ }
82  @*/
83 
84 /*@ predicate errorBufferValid(integer a) = valid_string((char*)errorBuffer) &&
85  @ 0 <= errorNum < 2147483647 &&
86  @ strlen((char*)errorBuffer) < L_BUFFER_LEN;
87  @*/
88 
89 
90 /*@
91  @ requires valid_string(a);
92  @ requires errorBufferValid(0) && errorNum < 2147483646;
93  @ assigns errorBuffer[0..4095], errorNum;
94  @ ensures errorBufferValid(0) && errorNum == \old(errorNum)+1;
95  @*/
96 void reportError(char *a);
97 
98 #endif