packages feed

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;
	}
}