hsc3-db-0.11: sclang/UGenDB.sc
UGenDB {
*haskellCode {
var uu_a = UGen.allSubClassesOf.sort({|a, b| a.name < b.name});
var ignoring = ['BasicOpUGen','BinaryOpUGen','MulAdd','OutputProxy','PackFFT','Poll','UnaryOpUGen','UnpackFFT','LocalBuf','SendReply','SendPeakRMS'];
var uu = uu_a.reject({|u| ignoring.includes(u.name.asSymbol)});
var r = List.new;
r.add(Date.getDate.format("-- AUTOGENERATED: %Y-%m-%d-%Hh%M"));
r.add("module Sound.SC3.UGen.DB.Data where");
r.add("import Sound.SC3.UGen.Rate");
r.add("data I = I {input_name :: String,input_default :: Double} deriving (Eq,Show)");
r.add("data U = U {ugen_name :: String,ugen_operating_rates :: [Rate],ugen_default_rate :: Rate,ugen_inputs :: [I],ugen_outputs :: Integer} deriving (Eq,Show)");
r.add("inf :: Double");
r.add("inf = 10 ** 8");
r.add("rcomplex :: Double");
r.add("rcomplex = 3");
r.add("ugenDB :: [U]");
r.add("ugenDB = [" ++ uu[0].ugenDBHaskell);
uu.drop(1).collect({|e|
("processing " ++ e.name.asSymbol).postln;
r.add(" ," ++ e.ugenDBHaskell);
});
r.add(" ]");
r.add("-- Local Variables:");
r.add("-- truncate-lines:t");
r.add("-- End:");
^r;
}
*haskellWrite {
arg nm = "Data.hs";
var fd = File.new(nm,"w");
var r = this.haskellCode;
r.do{|s| fd.putString(s++"\n")};
fd.close;
}
}