(**
Module: Symbol
Description: Symbols' information in faust.
@author WANG Haisheng
Created: 05/08/2013 Modified: 05/08/2013
*)
open Types;;
exception Symbol_error of string;;
(* MACRO *)
let delay_memory_length = 100000;;
let rdtable_memory_length = 100000;;
let vectorize_memory_length = 1000;;
let dimension_of_symbol : symbol -> int * int =
fun (s : symbol) ->
match s with
|Add -> (2, 1)
|Sub -> (2, 1)
|Mul -> (2, 1)
|Div -> (2, 1)
|Pass -> (1, 1)
|Stop -> (1, 0)
|Mem -> (1, 1)
|Delay -> (2, 1)
|Floor -> (1, 1)
|Int -> (1, 1)
|Sin -> (1, 1)
|Cos -> (1, 1)
|Atan -> (1, 1)
|Atan2 -> (2, 1)
|Sqrt -> (1, 1)
|Rdtable -> (3, 1)
|Mod -> (2, 1)
|Vectorize -> (2, 1)
|Vconcat -> (2, 1)
|Vpick -> (2, 1)
|Serialize -> (1, 1)
|Larger -> (2, 1)
|Smaller -> (2, 1)
|Max -> (2, 1)
|Min -> (2, 1)
|Prefix -> (2, 1)
|Select2 -> (3, 1)
|Select3 -> (4, 1);;
let delay_of_symbol : symbol -> int =
fun (s : symbol) ->
match s with
|Add -> 0
|Sub -> 0
|Mul -> 0
|Div -> 0
|Pass -> 0
|Stop -> 0
|Mem -> 1
|Delay -> delay_memory_length
|Floor -> 0
|Int -> 0
|Sin -> 0
|Cos -> 0
|Atan -> 0
|Atan2 -> 0
|Sqrt -> 0
|Rdtable -> rdtable_memory_length
|Mod -> 0
|Larger -> 0
|Smaller -> 0
|Max -> 0
|Min -> 0
|Vectorize -> vectorize_memory_length
|Vconcat -> 0
|Vpick -> 0
|Serialize -> 0
|Prefix -> 1
|Select2 -> 0
|Select3 -> 0;;
let string_of_symbol : symbol -> string =
fun (s : symbol) ->
match s with
|Add -> "Add"
|Sub -> "Sub"
|Mul -> "Mul"
|Div -> "Div"
|Pass -> "Pass"
|Stop -> "Stop"
|Mem -> "Mem"
|Delay -> "Delay"
|Floor -> "Floor"
|Int -> "Int"
|Sin -> "Sin"
|Cos -> "Cos"
|Atan -> "Atan"
|Atan2 -> "Atan2"
|Sqrt -> "Sqrt"
|Rdtable -> "Rdtable"
|Mod -> "Mod"
|Larger -> "Larger"
|Smaller -> "Smaller"
|Max -> "Max"
|Min -> "Min"
|Vectorize -> "Vectorize"
|Vconcat -> "Vconcat"
|Vpick -> "Vpick"
|Serialize -> "Serialize"
|Prefix -> "Prefix"
|Select2 -> "Select2"
|Select3 -> "Select3";;