let make_sid_variable session_id role_id =
let sid_var_string_id =
Globals.string_id#register_name
"SID"
role_id
in
let sid_const_string_id =
string_id#register_name
(string_of_int session_id)
role_id
in
let sid_var_type =
type_table#register_type
sid_var_string_id
(Base(Nat))
in
if sid_var_type <> (Types.Base Types.Nat) then
Semantic_check.add_sem_error
(18,"pre-defined variable SID has to be of type nat","","","","");
let sid_const_type =
type_table#register_type
sid_const_string_id
(Base(Nat))
in
if sid_const_type <> (Types.Base Types.Nat) then
Semantic_check.add_sem_error
(18,"pre-defined constant "^(string_of_int session_id)^" has to be of type nat","","","","");
let sid_var_id =
Globals.global_var_id#get_id_of
session_id
sid_var_string_id
in
let sid_var_mmap_id =
Globals.memory_map#map_new_var
sid_var_id
in
Globals.value_table#set_value
sid_var_mmap_id
(If_const(sid_const_string_id));
sid_var_id