Skip to content

Commit

Permalink
added unit and type info to dae and daelow
Browse files Browse the repository at this point in the history
tested package support in tornado


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@1572 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
x02lucpo committed Mar 16, 2005
1 parent 42f267d commit 8fe9f61
Show file tree
Hide file tree
Showing 11 changed files with 446 additions and 399 deletions.
78 changes: 39 additions & 39 deletions modeq/codegen.rml
Expand Up @@ -730,7 +730,7 @@ relation generate_return_decl: DAE.Element => (string, string) =
string_append(decl_str', expstr) => decl_str
---------------------------------------------------
generate_return_decl (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT,
typ, initopt, inst_dims,start,flow,class)) => (decl_str,id_str)
typ, initopt, inst_dims,start,flow,class,dae_var_attr)) => (decl_str,id_str)

(* not needed here, generate_return_decl is used to create the return struct
rule is_array id => is_a &
Expand Down Expand Up @@ -765,11 +765,11 @@ relation is_array : DAE.Element => bool =

rule Debug.fcall("isarrdb", DAE.dump2, DAE.DAE[el])
-----------------------------------
is_array (el as DAE.VAR(cr,vk,vd,ty,_,[],st,fl,cl)) => false
is_array (el as DAE.VAR(cr,vk,vd,ty,_,[],st,fl,cl,dae_var_attr)) => false

rule Debug.fcall("isarrdb", DAE.dump2, DAE.DAE[el])
-----------------------------------
is_array (el as DAE.VAR(cr,vk,vd,ty,_,_::_,st,fl,cl)) => true
is_array (el as DAE.VAR(cr,vk,vd,ty,_,_::_,st,fl,cl,dae_var_attr)) => true

rule Print.print_buf "#-- is_array failed\n" &
Print.print_buf "#-- Not a var?" &
Expand All @@ -784,13 +784,13 @@ relation is_array_or_string : DAE.Element => bool =
rule is_array var => true &
Print.print_error_buf "# array of strings is probably not supported yet\n"
------------------------------------------------------------------
is_array_or_string (var as DAE.VAR(cr,vk,vd,DAE.STRING,_,_,st,fl,cl)) => fail
is_array_or_string (var as DAE.VAR(cr,vk,vd,DAE.STRING,_,_,st,fl,cl,dae_var_attr)) => fail

rule is_array var => true
-------------------
is_array_or_string (var as DAE.VAR(cr,vk,vd,ty,_,_,st,fl,cl)) => true
is_array_or_string (var as DAE.VAR(cr,vk,vd,ty,_,_,st,fl,cl,dae_var_attr)) => true

axiom is_array_or_string (var as DAE.VAR(cr,vk,vd,DAE.STRING,_,_,st,fl,cl)) => true
axiom is_array_or_string (var as DAE.VAR(cr,vk,vd,DAE.STRING,_,_,st,fl,cl,dae_var_attr)) => true

rule Print.print_buf "# is_array_or_string failed\n" &
DAE.dump2 DAE.DAE([el])
Expand Down Expand Up @@ -1325,7 +1325,7 @@ relation generate_alloc_outvars : (DAE.Element list, string, string, int)
generate_alloc_outvars(r,rd,rv,tnr1) => (cfn2,tnr2) &
c_merge_fn(cfn1,cfn2) => cfn
----------------------------
generate_alloc_outvars ((var as DAE.VAR(cr,vk,vd,t,e,id,start,flow,class))::r,
generate_alloc_outvars ((var as DAE.VAR(cr,vk,vd,t,e,id,start,flow,class,dae_var_attr))::r,
rd,rv,tnr)
=> (cfn,tnr2)

Expand Down Expand Up @@ -1360,7 +1360,7 @@ relation generate_alloc_outvar : (DAE.Element,string,int) => (CFunction,int) =
Util.if (is_a,cfn',cfn1') => cfn
--------------------------------
generate_alloc_outvar(var as DAE.VAR(id, vk, vd, typ, e,
inst_dims,start,flow,class),
inst_dims,start,flow,class,dae_var_attr),
prefix,
tnr)
=> (cfn,tnr1)
Expand All @@ -1384,7 +1384,7 @@ relation generate_alloc_outvars_ext : (DAE.Element list, string,int, DAE.Externa
c_merge_fn(cfn1,cfn2) => cfn
----------------------------
generate_alloc_outvars_ext ((var as DAE.VAR(cr,vk,vd,t,e,
id,start,flow,class))::r,
id,start,flow,class,dae_var_attr))::r,
rv,tnr,extdecl)
=> (cfn,tnr2)

Expand All @@ -1394,7 +1394,7 @@ relation generate_alloc_outvars_ext : (DAE.Element list, string,int, DAE.Externa
c_merge_fn(cfn1,cfn2) => cfn
----------------------------
generate_alloc_outvars_ext ((var as DAE.VAR(cr,vk,vd,t,e,
id,start,flow,class))::r,
id,start,flow,class,dae_var_attr))::r,
rv,tnr,extdecl)
=> (cfn,tnr2)

Expand Down Expand Up @@ -1427,7 +1427,7 @@ relation generate_alloc_outvar_f77 : (DAE.Element,string,int) => (CFunction,int)
Util.if (is_a,cfn',cfn1') => cfn
--------------------------------
generate_alloc_outvar_f77(var as DAE.VAR(id, vk, vd, typ, e,
inst_dims,start,flow,class),
inst_dims,start,flow,class,dae_var_attr),
prefix,
tnr)
=> (cfn,tnr1)
Expand Down Expand Up @@ -1868,7 +1868,7 @@ relation generate_var_init : (DAE.Element, int) => (CFunction, int) =
typ,
SOME(e),
_,
_,start,flow,class),tnr)
_,start,flow,class,dae_var_attr),tnr)
=> (cfn, tnr)

axiom generate_var_init (_, tnr) => (c_empty_function, tnr)
Expand All @@ -1886,13 +1886,13 @@ relation generate_var : (DAE.Element,int) => (CFunction,int) =
Exp.print_component_ref id &
Print.print_buf " = 0; /* Warning: without value, set to zero */\n"
-----------
generate_var(DAE.VAR(id, DAE.PARAM, vd, typ, NONE,_,class))
generate_var(DAE.VAR(id, DAE.PARAM, vd, typ, NONE,_,class,dae_var_attr))
*)

(*
rule is_first_in_array id => false
-----------------------------
generate_var(DAE.VAR(id,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
generate_var(DAE.VAR(id,_,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
*)

rule is_array var => is_a &
Expand All @@ -1914,7 +1914,7 @@ relation generate_var : (DAE.Element,int) => (CFunction,int) =
c_add_inits(cfn',[alloc_str]) => cfn'' &
Util.if (is_a,cfn'',cfn') => cfn
----------------------------------------------------
generate_var(var as DAE.VAR(id, vk, vd, typ, NONE,inst_dims,start,flow,class),tnr) => (cfn,tnr1)
generate_var(var as DAE.VAR(id, vk, vd, typ, NONE,inst_dims,start,flow,class,dae_var_attr),tnr) => (cfn,tnr1)

rule is_array var => is_a &
dae_type_str (typ,is_a) => typ_str &
Expand All @@ -1938,7 +1938,7 @@ relation generate_var : (DAE.Element,int) => (CFunction,int) =
Print.print_buf "# default value not implemented yet: " &
Exp.print_exp e & Print.print_buf "\n"
-----------
generate_var(var as DAE.VAR(id, vk, vd, typ, SOME(e),inst_dims,start,flow,class),tnr)
generate_var(var as DAE.VAR(id, vk, vd, typ, SOME(e),inst_dims,start,flow,class,dae_var_attr),tnr)
=> (cfn,tnr1)


Expand All @@ -1954,7 +1954,7 @@ relation generate_var : (DAE.Element,int) => (CFunction,int) =
Exp.print_exp e & Print.print_buf "\n"
-----------
generate_var(var as DAE.VAR(id, vk, vd, typ, SOME(e),
inst_dims,start,flow,class),tnr)
inst_dims,start,flow,class,dae_var_attr),tnr)
=> (cfn'',tnr1)

rule Print.print_buf "# generate_var failed\n " &
Expand All @@ -1968,7 +1968,7 @@ relation generate_var_decl : (DAE.Element,int) => (CFunction,int) =
(*
rule is_first_in_array id => false
-----------------------------
generate_var_decl(DAE.VAR(id,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
generate_var_decl(DAE.VAR(id,_,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
*)


Expand All @@ -1986,12 +1986,12 @@ relation generate_var_decl : (DAE.Element,int) => (CFunction,int) =
c_add_variables(c_empty_function,[decl_str]) => cfn
----------------------------------------------------
generate_var_decl(var as DAE.VAR(id, vk, vd, typ, NONE,
inst_dims,start,flow,class),tnr)
inst_dims,start,flow,class,dae_var_attr),tnr)
=> (cfn,tnr)

rule generate_var_decl(DAE.VAR(id, vk, vd, typ, NONE, inst_dims, start, flow,class), tnr) => (cfn,tnr1)
rule generate_var_decl(DAE.VAR(id, vk, vd, typ, NONE, inst_dims, start, flow,class,dae_var_attr), tnr) => (cfn,tnr1)
--------------------------------------------------------------------------------------------
generate_var_decl(var as DAE.VAR(id, vk, vd, typ, SOME(e), inst_dims,start,flow,class),tnr)
generate_var_decl(var as DAE.VAR(id, vk, vd, typ, SOME(e), inst_dims,start,flow,class,dae_var_attr),tnr)
=> (cfn,tnr1)


Expand All @@ -2007,12 +2007,12 @@ relation generate_var_init : (DAE.Element,int,string) => (CFunction,int) =
(*
rule is_first_in_array id => false
-----------------------------
generate_var_init(DAE.VAR(id,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
generate_var_init(DAE.VAR(id,_,_,_,_,_,_,_,_,_),tnr) => (c_empty_function,tnr)
*)


axiom generate_var_init(var as DAE.VAR(id, vk, vd, typ, NONE,
inst_dims,start,flow,class),tnr,pre)
inst_dims,start,flow,class,dae_var_attr),tnr,pre)
=> (c_empty_function, tnr)

rule is_array var => is_a &
Expand All @@ -2026,7 +2026,7 @@ relation generate_var_init : (DAE.Element,int,string) => (CFunction,int) =
generate_algorithm_statement (assign,tnr) => (cfn,tnr1)
-------------------------------------------------------
generate_var_init(var as DAE.VAR(id, vk, vd, typ, SOME(e),
inst_dims,start,flow,class),tnr,pre)
inst_dims,start,flow,class,dae_var_attr),tnr,pre)
=> (cfn,tnr1)


Expand All @@ -2052,7 +2052,7 @@ relation is_var_q : DAE.Element => () =
rule generate_var_q(vk) &
generate_var_q2(vd)
---------------------
is_var_q DAE.VAR(id,vk,vd,_,_,_,_,_,_)
is_var_q DAE.VAR(id,vk,vd,_,_,_,_,_,_,_)

end
relation generate_var_q : DAE.VarKind => () =
Expand Down Expand Up @@ -2093,7 +2093,7 @@ relation generate_result_var : (DAE.Element,string,int) => (CFunction,int) =
=>stmt &
c_add_cleanups(c_empty_function,[stmt]) => cfn
-----------
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_),
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_,_),
varname,
tnr)
=> (cfn,tnr)
Expand All @@ -2107,14 +2107,14 @@ relation generate_result_var : (DAE.Element,string,int) => (CFunction,int) =
=> stmt &
c_add_cleanups(c_empty_function,[stmt]) => cfn
-----------
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_),
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_,_),
varname,
tnr)
=> (cfn,tnr)

rule is_array var => true
-----------
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_),
generate_result_var (var as DAE.VAR(id, DAE.VARIABLE, DAE.OUTPUT, typ, _,_,_,_,_,_),
varname,
tnr)
=> (c_empty_function,tnr)
Expand Down Expand Up @@ -3520,11 +3520,11 @@ relation generate_extcall_copydecls_f77 : (DAE.Element list, int) => (CFunction,

axiom generate_extcall_copydecls_f77 ([], tnr) => (c_empty_function, tnr)

rule let DAE.VAR(cref, vk, vd, ty, value, dims,start,_,_) = var &
rule let DAE.VAR(cref, vk, vd, ty, value, dims,start,_,_,_) = var &
is_array var => true &
var_name_external_cref cref => cref' &
list_reverse dims => dims' &
let extvar = DAE.VAR(cref', vk, vd, ty, value, dims',NONE,DAE.NON_FLOW,[]) &
let extvar = DAE.VAR(cref', vk, vd, ty, value, dims',NONE,DAE.NON_FLOW,[],NONE) &
generate_var_decl (extvar, tnr) => (fn, tnr') &
generate_extcall_copydecls_f77 (rest, tnr') => (restfn, tnr''') &
c_merge_fn (fn, restfn) => resfn
Expand Down Expand Up @@ -4222,7 +4222,7 @@ relation invar_names : DAE.Element list => string list =
rule comp_ref_cstr id => (cref_str,_) &
invar_names r => r'
----------
invar_names DAE.VAR(id,vk,DAE.INPUT,t,_,_,_,_,_)::r => cref_str::r'
invar_names DAE.VAR(id,vk,DAE.INPUT,t,_,_,_,_,_,_)::r => cref_str::r'

rule invar_names r => cfn
-------
Expand All @@ -4232,8 +4232,8 @@ end

relation is_input_or_output_var : DAE.Element => () =

axiom is_input_or_output_var DAE.VAR(_,_,DAE.INPUT,_,_,_,_,_,_)
axiom is_input_or_output_var DAE.VAR(_,_,DAE.OUTPUT,_,_,_,_,_,_)
axiom is_input_or_output_var DAE.VAR(_,_,DAE.INPUT,_,_,_,_,_,_,_)
axiom is_input_or_output_var DAE.VAR(_,_,DAE.OUTPUT,_,_,_,_,_,_,_)

end

Expand Down Expand Up @@ -4294,13 +4294,13 @@ relation var_arg_names_external : DAE.Element list => string list =
rule var_name_external id => cref_str &
var_arg_names_external r => r'
----------------------------
var_arg_names_external DAE.VAR(id,vk,DAE.INPUT,t,_,_,_,_,_)::r => cref_str::r'
var_arg_names_external DAE.VAR(id,vk,DAE.INPUT,t,_,_,_,_,_,_)::r => cref_str::r'

rule var_name_external id => cref_str &
string_append("&", cref_str) => cref_str2 &
var_arg_names_external r => r'
----------------------------
var_arg_names_external DAE.VAR(id,vk,DAE.OUTPUT,t,_,_,_,_,_)::r => cref_str2::r'
var_arg_names_external DAE.VAR(id,vk,DAE.OUTPUT,t,_,_,_,_,_,_)::r => cref_str2::r'

rule var_arg_names_external r => cfn
-----------------------------
Expand All @@ -4323,7 +4323,7 @@ relation generate_read : DAE.Element list => CFunction =
generate_read r => cfn2 &
c_merge_fn(cfn1,cfn2) => cfn
----------
generate_read DAE.VAR(id,vk,DAE.INPUT,t,_,[],_,_,_)::r => cfn
generate_read DAE.VAR(id,vk,DAE.INPUT,t,_,[],_,_,_,_)::r => cfn

rule comp_ref_cstr id => (cref_str,_) &
dae_type_str(t, true) => type_string &
Expand All @@ -4334,7 +4334,7 @@ relation generate_read : DAE.Element list => CFunction =
generate_read r => cfn2 &
c_merge_fn(cfn1,cfn2) => cfn
----------
generate_read DAE.VAR(id,vk,DAE.INPUT,t,_,_::_,_,_,_)::r => cfn
generate_read DAE.VAR(id,vk,DAE.INPUT,t,_,_::_,_,_,_,_)::r => cfn


rule generate_read r => cfn
Expand All @@ -4359,7 +4359,7 @@ relation generate_write : DAE.Element list => CFunction =
generate_write r => cfn2 &
c_merge_fn(cfn1,cfn2) => cfn
----------
generate_write DAE.VAR(id,vk,DAE.OUTPUT,t,_,[],_,_,_)::r => cfn
generate_write DAE.VAR(id,vk,DAE.OUTPUT,t,_,[],_,_,_,_)::r => cfn

rule comp_ref_cstr id => (cref_str,_) &
dae_type_str(t, true) => type_string &
Expand All @@ -4370,7 +4370,7 @@ relation generate_write : DAE.Element list => CFunction =
generate_write r => cfn2 &
c_merge_fn(cfn1,cfn2) => cfn
----------
generate_write DAE.VAR(id,vk,DAE.OUTPUT,t,_,_::_,_,_,_)::r => cfn
generate_write DAE.VAR(id,vk,DAE.OUTPUT,t,_,_::_,_,_,_,_)::r => cfn


rule generate_write r => cfn
Expand Down

0 comments on commit 8fe9f61

Please sign in to comment.