X-Git-Url: https://svn.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/7aa377f6b67020aa1dff235ebb100943375cac94..4c9486f4df577e7227a45855745cbd8350cf4097:/interpretor/types.ml

diff --git a/interpretor/types.ml b/interpretor/types.ml
index 3ad5f8a..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,17 +31,41 @@ 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;;
 
 
@@ -48,29 +73,53 @@ type symbol = Add
   	    | Sub
 	    | Mul
 	    | Div
+	    | Power
 	    | Pass
 	    | Stop
+	    | And
+	    | Or
+	    | Xor
 	    | Mem
 	    | Delay
 	    | Floor
+	    | Ceil
+	    | Rint
 	    | Int
+	    | Float
 	    | Sin
+	    | Asin
 	    | Cos
+	    | Acos
+	    | Tan
 	    | Atan
 	    | 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
 	    | Select2
 	    | Select3
-
+	    | Rdtable
+	    | Rwtable
 
 type faust_exp =
          Const of basic
@@ -82,9 +131,21 @@ 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
@@ -92,6 +153,10 @@ class type 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
@@ -99,21 +164,46 @@ 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
@@ -124,7 +214,8 @@ class type beam_type =
       method append : beam_type -> beam_type
       method matching : int -> beam_type
       method at : time -> value_type array
-      method output : int -> value_type array array
+      method output : int -> data
+      method frequency : rate_type array
     end;;
 
 
@@ -147,3 +238,11 @@ class type process_type =
       method delay : int
       method eval : beam_type -> beam_type
     end;;
+
+
+class type io_type = 
+    object
+      method set : string -> string -> unit
+      method read : string array -> beam_type
+      method write : rate_type array -> data -> string array
+    end;;