FAUST compiler  0.9.9.6b8
Public Member Functions | Private Member Functions | Private Attributes
Description Class Reference

#include <description.hh>

List of all members.

Public Member Functions

 Description ()
Descriptionname (const string &s)
Descriptionauthor (const string &s)
Descriptioncopyright (const string &s)
Descriptionlicense (const string &s)
Descriptionversion (const string &s)
Descriptioninputs (int n)
Descriptionoutputs (int n)
void ui (Tree t)
void print (int n, ostream &fout)

Private Member Functions

void addGroup (int level, Tree t)
int addWidget (Tree label, Tree varname, Tree sig)
void tab (int n, ostream &fout)
void addActiveLine (const string &l)
void addPassiveLine (const string &l)
void addLayoutLine (int n, const string &l)

Private Attributes

string fName
string fAuthor
string fCopyright
string fLicense
string fVersion
int fInputs
int fOutputs
int fWidgetID
int fActiveWidgetCount
int fPassiveWidgetCount
list< string > fActiveLines
list< string > fPassiveLines
list< string > fLayoutLines
list< int > fLayoutTabs

Detailed Description

Definition at line 23 of file description.hh.


Constructor & Destructor Documentation

Definition at line 44 of file description.hh.

                 :  /*fName("Unknow"), 
                    fAuthor("Unknow"), 
                    fCopyright("Unknow"),
                    fLicense("Unknow"), 
                    fVersion("Unknow"),*/
                    
                    fInputs(0),
                    fOutputs(0),
                    fWidgetID(0),
                    fActiveWidgetCount(0),
                    fPassiveWidgetCount(0)
                    {}

Member Function Documentation

void Description::addActiveLine ( const string &  l) [inline, private]

Definition at line 75 of file description.hh.

Referenced by addWidget().

{ fActiveLines.push_back(l);}

Here is the caller graph for this function:

void Description::addGroup ( int  level,
Tree  t 
) [private]

Definition at line 205 of file description.cpp.

References addLayoutLine(), addWidget(), hd(), isNil(), isUiFolder(), isUiWidget(), left(), right(), subst(), T(), tl(), tree2int(), tree2str(), and xmlize().

Referenced by ui().

{
    Tree    label, elements, varname, sig;
    const char* groupnames[] = {"vgroup", "hgroup", "tgroup"};

    if (isUiFolder(t, label, elements)) {

        const int       orient = tree2int(left(label));
        const char *    str = tree2str(right(label));

        addLayoutLine(level, subst("<group type=\"$0\">", groupnames[orient]));
        addLayoutLine(level+1, subst("<label>$0</label>", xmlize(str)));
        while (!isNil(elements)) {
            addGroup(level+1, right(hd(elements)));
            elements = tl(elements);
        }
        addLayoutLine(level, "</group>");

    } else if (isUiWidget(t, label, varname, sig)) {

        int w = addWidget(label, varname, sig);
        addLayoutLine(level, subst("<widgetref id=\"$0\" />", T(w)));

    } else {

        fprintf(stderr, "error in user interface generation 2\n");
        exit(1);

    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void Description::addLayoutLine ( int  n,
const string &  l 
) [inline, private]

Definition at line 77 of file description.hh.

Referenced by addGroup().

{ fLayoutTabs.push_back(n); fLayoutLines.push_back(l);}

Here is the caller graph for this function:

void Description::addPassiveLine ( const string &  l) [inline, private]

Definition at line 76 of file description.hh.

Referenced by addWidget().

{ fPassiveLines.push_back(l);}

Here is the caller graph for this function:

int Description::addWidget ( Tree  label,
Tree  varname,
Tree  sig 
) [private]

Definition at line 242 of file description.cpp.

References addActiveLine(), addPassiveLine(), fActiveWidgetCount, fPassiveWidgetCount, fWidgetID, isSigButton(), isSigCheckbox(), isSigHBargraph(), isSigHSlider(), isSigNumEntry(), isSigVBargraph(), isSigVSlider(), subst(), T(), tree2double(), tree2str(), and xmlize().

Referenced by addGroup().

{
    Tree path, c, x, y, z;

    // add an active widget description

    if ( isSigButton(sig, path) )                   {

        fWidgetID++;
        fActiveWidgetCount++;
        addActiveLine(subst("<widget type=\"button\" id=\"$0\">", T(fWidgetID)));
            addActiveLine(subst("\t<label>$0</label>", xmlize(tree2str(label))));
            addActiveLine(subst("\t<varname>$0</varname>", tree2str(varname)));
        addActiveLine("</widget>");

    } else if ( isSigCheckbox(sig, path) )          {

        fWidgetID++;
        fActiveWidgetCount++;
        addActiveLine(subst("<widget type=\"checkbox\" id=\"$0\">", T(fWidgetID)));
            addActiveLine(subst("\t<label>$0</label>", xmlize(tree2str(label))));
            addActiveLine(subst("\t<varname>$0</varname>", tree2str(varname)));
        addActiveLine("</widget>");

    } else if ( isSigVSlider(sig, path,c,x,y,z) )   {

        fWidgetID++;
        fActiveWidgetCount++;
        addActiveLine(subst("<widget type=\"vslider\" id=\"$0\">", T(fWidgetID)));
            addActiveLine(subst("\t<label>$0</label>",      xmlize(tree2str(label))));
            addActiveLine(subst("\t<varname>$0</varname>",  tree2str(varname)));
            addActiveLine(subst("\t<init>$0</init>",        T(tree2double(c))));
            addActiveLine(subst("\t<min>$0</min>",          T(tree2double(x))));
            addActiveLine(subst("\t<max>$0</max>",          T(tree2double(y))));
            addActiveLine(subst("\t<step>$0</step>",        T(tree2double(z))));
        addActiveLine("</widget>");

    } else if ( isSigHSlider(sig, path,c,x,y,z) )   {

        fWidgetID++;
        fActiveWidgetCount++;
        addActiveLine(subst("<widget type=\"hslider\" id=\"$0\">", T(fWidgetID)));
            addActiveLine(subst("\t<label>$0</label>",      xmlize(tree2str(label))));
            addActiveLine(subst("\t<varname>$0</varname>",  tree2str(varname)));
            addActiveLine(subst("\t<init>$0</init>",        T(tree2double(c))));
            addActiveLine(subst("\t<min>$0</min>",          T(tree2double(x))));
            addActiveLine(subst("\t<max>$0</max>",          T(tree2double(y))));
            addActiveLine(subst("\t<step>$0</step>",        T(tree2double(z))));
        addActiveLine("</widget>");

    } else if ( isSigNumEntry(sig, path,c,x,y,z) )  {

        fWidgetID++;
        fActiveWidgetCount++;
        addActiveLine(subst("<widget type=\"nentry\" id=\"$0\">", T(fWidgetID)));
            addActiveLine(subst("\t<label>$0</label>",      xmlize(tree2str(label))));
            addActiveLine(subst("\t<varname>$0</varname>",  tree2str(varname)));
            addActiveLine(subst("\t<init>$0</init>",        T(tree2double(c))));
            addActiveLine(subst("\t<min>$0</min>",          T(tree2double(x))));
            addActiveLine(subst("\t<max>$0</max>",          T(tree2double(y))));
            addActiveLine(subst("\t<step>$0</step>",        T(tree2double(z))));
        addActiveLine("</widget>");


    // add a passive widget description

    } else if ( isSigVBargraph(sig,path,x,y,z) )    {

        fWidgetID++;
        fPassiveWidgetCount++;
        addPassiveLine(subst("<widget type=\"vbargraph\" id=\"$0\">", T(fWidgetID)));
            addPassiveLine(subst("\t<label>$0</label>",     xmlize(tree2str(label))));
            addPassiveLine(subst("\t<varname>$0</varname>", tree2str(varname)));
            addPassiveLine(subst("\t<min>$0</min>",         T(tree2double(x))));
            addPassiveLine(subst("\t<max>$0</max>",         T(tree2double(y))));
        addPassiveLine("</widget>");

    } else if ( isSigHBargraph(sig,path,x,y,z) )    {

        fWidgetID++;
        fPassiveWidgetCount++;
        addPassiveLine(subst("<widget type=\"hbargraph\" id=\"$0\">", T(fWidgetID)));
            addPassiveLine(subst("\t<label>$0</label>",     xmlize(tree2str(label))));
            addPassiveLine(subst("\t<varname>$0</varname>", tree2str(varname)));
            addPassiveLine(subst("\t<min>$0</min>",         T(tree2double(x))));
            addPassiveLine(subst("\t<max>$0</max>",         T(tree2double(y))));
        addPassiveLine("</widget>");

    } else {
        fprintf(stderr, "Error describing widget : unrecognized expression\n");
        exit(1);
    }

    return fWidgetID;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Description* Description::author ( const string &  s) [inline]

Definition at line 58 of file description.hh.

Referenced by main().

{ fAuthor = s;  return this; }

Here is the caller graph for this function:

Description* Description::copyright ( const string &  s) [inline]

Definition at line 59 of file description.hh.

Referenced by main().

{ fCopyright = s; return this; }

Here is the caller graph for this function:

Description* Description::inputs ( int  n) [inline]

Definition at line 63 of file description.hh.

Referenced by main().

{ fInputs = n;  return this; }

Here is the caller graph for this function:

Description* Description::license ( const string &  s) [inline]

Definition at line 60 of file description.hh.

Referenced by main().

{ fLicense = s; return this; }

Here is the caller graph for this function:

Description* Description::name ( const string &  s) [inline]

Definition at line 57 of file description.hh.

Referenced by main().

{ fName = s;    return this; }

Here is the caller graph for this function:

Description* Description::outputs ( int  n) [inline]

Definition at line 64 of file description.hh.

Referenced by main().

{ fOutputs = n; return this; }

Here is the caller graph for this function:

void Description::print ( int  n,
ostream &  fout 
)

Definition at line 146 of file description.cpp.

References fActiveLines, fActiveWidgetCount, fAuthor, fCopyright, fInputs, fLayoutLines, fLayoutTabs, fLicense, fName, fOutputs, fPassiveLines, fPassiveWidgetCount, fVersion, tab(), and xmlize().

Referenced by main().

{
    list<string>::iterator  s;
    list<int>::iterator     t;

    tab(n,fout); fout << "<faust>";

        tab(n+1,fout);  fout << "<name>"        << xmlize(fName)        << "</name>";
        tab(n+1,fout);  fout << "<author>"      << xmlize(fAuthor)      << "</author>";
        tab(n+1,fout);  fout << "<copyright>"   << xmlize(fCopyright)   << "</copyright>";
        tab(n+1,fout);  fout << "<license>"     << xmlize(fLicense)     << "</license>";
        tab(n+1,fout);  fout << "<version>"     << xmlize(fVersion)     << "</version>";
        tab(n+1,fout);  fout << "<inputs>"      << fInputs              << "</inputs>";
        tab(n+1,fout);  fout << "<outputs>"     << fOutputs             << "</outputs>";

        tab(n+1,fout);  fout << "<ui>";

            // active widget list
            tab(n+2,fout);  fout << "<activewidgets>";
                tab(n+3,fout);  fout << "<count>" << fActiveWidgetCount << "</count>";
                for (s = fActiveLines.begin(); s != fActiveLines.end(); s++) {
                    tab(n+3, fout); fout << *s;
                }
            tab(n+2,fout);  fout << "</activewidgets>";

            tab(n+2,fout);

            // passive widget list
            tab(n+2,fout);  fout << "<passivewidgets>";
                tab(n+3,fout);  fout << "<count>" << fPassiveWidgetCount << "</count>";
                for (s = fPassiveLines.begin(); s != fPassiveLines.end(); s++) {
                    tab(n+3, fout); fout << *s;
                }
            tab(n+2,fout);  fout << "</passivewidgets>";


            tab(n+2,fout);

            // widget layout
            tab(n+2,fout);  fout << "<layout>";
                for (   t = fLayoutTabs.begin(), s = fLayoutLines.begin();
                        s != fLayoutLines.end(); t++, s++) {
                    tab(n+3+*t, fout); fout << *s;
                }
            tab(n+2,fout);  fout << "</layout>";

        tab(n+1,fout);  fout << "</ui>";


    tab(n,fout); fout << "</faust>" << endl;

}

Here is the call graph for this function:

Here is the caller graph for this function:

void Description::tab ( int  n,
ostream &  fout 
) [private]

Definition at line 236 of file description.cpp.

Referenced by print().

{
    fout << '\n';
    while (n--) fout << '\t';
}

Here is the caller graph for this function:

void Description::ui ( Tree  t)

Definition at line 199 of file description.cpp.

References addGroup().

Referenced by SchedulerCompiler::compileMultiSignal(), and VectorCompiler::compileMultiSignal().

{
    addGroup(0,t);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Description* Description::version ( const string &  s) [inline]

Definition at line 61 of file description.hh.

Referenced by main().

{ fVersion = s; return this; }

Here is the caller graph for this function:


Member Data Documentation

list<string> Description::fActiveLines [private]

Definition at line 36 of file description.hh.

Referenced by print().

Definition at line 34 of file description.hh.

Referenced by addWidget(), and print().

string Description::fAuthor [private]

Definition at line 26 of file description.hh.

Referenced by print().

string Description::fCopyright [private]

Definition at line 27 of file description.hh.

Referenced by print().

int Description::fInputs [private]

Definition at line 31 of file description.hh.

Referenced by print().

list<string> Description::fLayoutLines [private]

Definition at line 38 of file description.hh.

Referenced by print().

list<int> Description::fLayoutTabs [private]

Definition at line 39 of file description.hh.

Referenced by print().

string Description::fLicense [private]

Definition at line 28 of file description.hh.

Referenced by print().

string Description::fName [private]

Definition at line 25 of file description.hh.

Referenced by print().

int Description::fOutputs [private]

Definition at line 32 of file description.hh.

Referenced by print().

list<string> Description::fPassiveLines [private]

Definition at line 37 of file description.hh.

Referenced by print().

Definition at line 35 of file description.hh.

Referenced by addWidget(), and print().

string Description::fVersion [private]

Definition at line 29 of file description.hh.

Referenced by print().

int Description::fWidgetID [private]

Definition at line 33 of file description.hh.

Referenced by addWidget().


The documentation for this class was generated from the following files: