X-Git-Url: https://scm.cri.mines-paristech.fr/git/Faustine.git/blobdiff_plain/440ca0ba93966e89b68dc54207c461afc0d56264..992d59159547267e1491fcd1c5123765b4c452b8:/interpretor/types.ml diff --git a/interpretor/types.ml b/interpretor/types.ml index ba61990..dd82e7c 100644 --- a/interpretor/types.ml +++ b/interpretor/types.ml @@ -22,6 +22,7 @@ class type value_type = method to_int : int method to_float : float method to_float_array : float array + method of_float_array : float array -> value_type method to_string : string method normalize : unit method add : value_type -> value_type @@ -30,47 +31,95 @@ class type value_type = method mul : value_type -> value_type method recip : value_type method div : value_type -> value_type + method power : value_type -> value_type + method _and : value_type -> value_type + method _or : value_type -> value_type + method _xor : value_type -> value_type method zero : value_type method floor : value_type + method ceil : value_type + method rint : value_type method int : value_type + method float : value_type method sin : value_type + method asin : value_type method cos : value_type + method acos : value_type + method tan : value_type method atan : value_type - method sqrt : value_type method atan2 : value_type -> value_type + method exp : value_type + method sqrt : value_type + method ln : value_type + method lg : value_type + method abs : value_type + method fmod : value_type -> value_type method _mod : value_type -> value_type - method larger : value_type -> value_type - method smaller : value_type -> value_type + method remainder : value_type -> value_type + method gt : value_type -> value_type + method lt : value_type -> value_type + method geq : value_type -> value_type + method leq : value_type -> value_type + method eq : value_type -> value_type + method neq : value_type -> value_type + method shl : value_type -> value_type + method shr : value_type -> value_type + method max : value_type -> value_type + method min : value_type -> value_type end;; type symbol = Add - | Sup + | Sub | Mul | Div + | Power | Pass | Stop + | And + | Or + | Xor | Mem | Delay | Floor + | Ceil + | Rint | Int + | Float | Sin + | Asin | Cos + | Acos + | Tan | Atan - | Atantwo + | Atan2 + | Exp | Sqrt - | Rdtable + | Ln + | Lg + | Abs + | Fmod | Mod + | Remainder | Vectorize | Vconcat | Vpick | Serialize - | Larger - | Smaller + | Gt + | Lt + | Geq + | Leq + | Eq + | Neq + | Shl + | Shr + | Max + | Min | Prefix - | Selecttwo - | Selectthree - + | Select2 + | Select3 + | Rdtable + | Rwtable type faust_exp = Const of basic @@ -82,15 +131,32 @@ type faust_exp = | Merge of faust_exp * faust_exp +class type rate_type = + object + method to_int : int + method to_float : float + method to_string : string + method num : int + method denom : int + method equal : rate_type -> bool + method mul : int -> rate_type + method div : int -> rate_type + end + class type signal_type = object - method frequency : int + method frequency : rate_type method at : time -> value_type + method add_memory : int -> unit method add : signal_type -> signal_type method neg : signal_type method sub : signal_type -> signal_type method mul : signal_type -> signal_type method div : signal_type -> signal_type + method power : signal_type -> signal_type + method _and : signal_type -> signal_type + method _or : signal_type -> signal_type + method _xor : signal_type -> signal_type method delay : signal_type -> signal_type method mem : signal_type method vectorize : signal_type -> signal_type @@ -98,30 +164,58 @@ class type signal_type = method vconcat : signal_type -> signal_type method vpick : signal_type -> signal_type method floor : signal_type + method ceil : signal_type + method rint : signal_type method int : signal_type + method float : signal_type method sin : signal_type + method asin : signal_type method cos : signal_type + method acos : signal_type + method tan : signal_type method atan : signal_type method atan2 : signal_type -> signal_type + method exp : signal_type method sqrt : signal_type + method ln : signal_type + method lg : signal_type + method abs : signal_type + method fmod : signal_type -> signal_type method _mod : signal_type -> signal_type - method larger : signal_type -> signal_type - method smaller : signal_type -> signal_type + method remainder : signal_type -> signal_type + method gt : signal_type -> signal_type + method lt : signal_type -> signal_type + method geq : signal_type -> signal_type + method leq : signal_type -> signal_type + method eq : signal_type -> signal_type + method neq : signal_type -> signal_type + method shl : signal_type -> signal_type + method shr : signal_type -> signal_type + method max : signal_type -> signal_type + method min : signal_type -> signal_type method rdtable : signal_type -> signal_type -> signal_type + method rwtable : signal_type -> signal_type -> + signal_type -> signal_type -> signal_type method select2 : signal_type -> signal_type -> signal_type method select3 : signal_type -> signal_type -> signal_type -> signal_type method prefix : signal_type -> signal_type end;; +type matrix = float array array;; + +type data = float array array array;; class type beam_type = object - method length : int - method sub : start: int -> length: int -> beam_type + method get : signal_type array + method width : int + method sub : int -> int -> beam_type + method cut : int -> beam_type * beam_type method append : beam_type -> beam_type - method matching : size: int -> beam_type - method time : time -> basic list - method output : length: int -> (int list) * (float array list) + method matching : int -> beam_type + method at : time -> value_type array + method output : int -> data + method frequency : rate_type array end;; @@ -129,14 +223,26 @@ class type dimension_type = object method input : int method output : int + method par : dimension_type -> dimension_type + method seq : dimension_type -> dimension_type + method split : dimension_type -> dimension_type + method merge : dimension_type -> dimension_type + method _rec : dimension_type -> dimension_type end;; -class type expression_type = +class type process_type = + object + method exp : faust_exp + method dim : dimension_type + method delay : int + method eval : beam_type -> beam_type + end;; + + +class type io_type = object - method get_exp : faust_exp - method get_dim : dimension_type - method get_delay : int - method to_string : string - method evaluate : beam_type -> beam_type + method set : string -> string -> unit + method read : string array -> beam_type + method write : rate_type array -> data -> string array end;;