From: Stéphane L. <le...@gr...> - 2012-02-23 21:30:15
|
Hi All, We are thinking in cleaning the architecture UI definition files. Right now the base UI class is the following; class UI { public: UI() { } virtual ~UI() { } // -- widget's layouts virtual void openFrameBox(const char* label) = 0; virtual void openTabBox(const char* label) = 0; virtual void openHorizontalBox(const char* label) = 0; virtual void openVerticalBox(const char* label) = 0; virtual void closeBox() = 0; // -- active widgets virtual void addButton(const char* label, float* zone) = 0; virtual void addToggleButton(const char* label, float* zone) = 0; virtual void addCheckButton(const char* label, float* zone) = 0; virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0; virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0; virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step) = 0; // -- passive widgets virtual void addNumDisplay(const char* label, float* zone, int precision) = 0; virtual void addTextDisplay(const char* label, float* zone, const char* names[], float min, float max) = 0; virtual void addHorizontalBargraph(const char* label, float* zone, float min, float max) = 0; virtual void addVerticalBargraph(const char* label, float* zone, float min, float max) = 0; // -- metadata declarations virtual void declare(float* , const char* , const char* ) {} }; 1) It appears that the following methods are considered "obsolete" and should be better removed: virtual void openFrameBox(const char* label) = 0; virtual void addToggleButton(const char* label, float* zone) = 0; virtual void addNumDisplay(const char* label, float* zone, int precision) = 0; virtual void addTextDisplay(const char* label, float* zone, const char* names[], float min, float max) = 0; 2) The second issue is the type of control parameters that are currently "hard-coded" as "float". The Faust generated code uses the "FAUSTFLOAT" to describe the type of values communicated with the architecture file. But if FAUSTFLOAT is externally defined as "double", the produced code will not compile because types defined in UI files and FAUSTFLOAT won't mach. So we suggest tow things: 1) Correct the UI.h interface definition by removing obsolete methods. This will require to adapt all architectures files, and will possibly break code (for instance the LLVM code generator that expect a C like method table with a precise order). This will possible need to adaptation of the Pure <===> LLVM link. 2) Correct the UI.h files (and all derived GUI.h OSCUI.h...etc..) to use FAUSTFLOAT instead of "float". We could like to get comments or suggestions or plan to proceed (in order to avoid breaking too much code...) Thanks. Stephane |