Completing Faustine by adding following primitives : float, power, &, |, xor, >=...
[Faustine.git] / interpretor / types.ml
index ba61990..68e550c 100644 (file)
@@ -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,90 @@ 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 expo : value_type
+    method sqrt : value_type
+    method ln : value_type
+    method log10 : 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 greater : value_type -> value_type
+    method less : value_type -> value_type
+    method gore : value_type -> value_type
+    method lore : value_type -> value_type
+    method equal : value_type -> value_type
+    method different : 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
+           | Log10
+           | Abs
+           | Fmod
            | Mod
+           | Remainder
            | Vectorize
            | Vconcat
            | Vpick
            | Serialize
-           | Larger
-           | Smaller
+           | Greater
+           | Less
+           | Gore
+           | Lore
+           | Equal
+           | Different
+           | Max
+           | Min
            | Prefix
-           | Selecttwo
-           | Selectthree
-
+           | Select2
+           | Select3
+           | Rdtable
+           | Rwtable
 
 type faust_exp =
          Const of basic
@@ -82,15 +126,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 +159,56 @@ 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 expo : signal_type
       method sqrt : signal_type
+      method ln : signal_type
+      method log10 : 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 greater : signal_type -> signal_type
+      method less : signal_type -> signal_type
+      method gore : signal_type -> signal_type
+      method lore : signal_type -> signal_type
+      method equal : signal_type -> signal_type
+      method different : 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 +216,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;;