Changeset 1568 for trunk/src


Ignore:
Timestamp:
Sep 16, 2009 5:39:51 AM (15 years ago)
Author:
dkearney
Message:

adding dump/configure interface to curve object, plot object is broken

Location:
trunk/src/objects
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/objects/RpCurve.cc

    r1560 r1568  
    2828      _axisList (NULL)
    2929{
     30    this->name("");
    3031    this->path("");
    3132    this->label("");
     
    3435}
    3536
    36 Curve::Curve (const char *path)
     37Curve::Curve (const char *name)
    3738    : Object (),
    3839      _axisList (NULL)
    3940{
    40     this->path(path);
     41    this->name(name);
     42    this->path("");
    4143    this->label("");
    4244    this->desc("");
     
    4446}
    4547
    46 Curve::Curve (const char *path, const char *label, const char *desc,
     48Curve::Curve (const char *name, const char *label, const char *desc,
    4749              const char *group)
    4850    : Object (),
    4951      _axisList (NULL)
    5052{
    51     this->path(path);
     53    this->name(name);
     54    this->path("");
    5255    this->label(label);
    5356    this->desc(desc);
     
    5962    :   Object(o)
    6063{
     64    this->name(o.name());
    6165    this->path(o.path());
    6266    this->label(o.label());
     
    252256
    253257/**********************************************************************/
    254 // METHOD: xml()
    255 /// Return the xml of the object
    256 /**
    257  * Return the xml of the object
    258  */
    259 
    260 const char *
    261 Curve::xml(size_t indent, size_t tabstop)
    262 {
    263     size_t l1width = indent + tabstop;
    264     size_t l2width = indent + (2*tabstop);
    265     const char *sp = "";
    266 
    267     Path p(path());
    268 
    269     Array1D *tmpAxis = NULL;
     258// METHOD: configure(Rp_ParserXml *p)
     259/// construct a number object from the provided tree
     260/**
     261 * construct a number object from the provided tree
     262 */
     263
     264void
     265Curve::configure(size_t as, void *p)
     266{
     267    if (as == RPCONFIG_XML) {
     268        __configureFromXml((const char *)p);
     269    } else if (as == RPCONFIG_TREE) {
     270        __configureFromTree((Rp_ParserXml *)p);
     271    }
     272}
     273
     274/**********************************************************************/
     275// METHOD: configureFromXml(const char *xmltext)
     276/// configure the object based on Rappture1.1 xmltext
     277/**
     278 * Configure the object based on the provided xml
     279 */
     280
     281void
     282Curve::__configureFromXml(const char *xmltext)
     283{
     284    if (xmltext == NULL) {
     285        // FIXME: setup error
     286        return;
     287    }
     288
     289    Rp_ParserXml *p = Rp_ParserXmlCreate();
     290    Rp_ParserXmlParse(p, xmltext);
     291    configure(RPCONFIG_TREE, p);
     292
     293    return;
     294}
     295
     296
     297// This is really, __configureFromTree_1.0
     298// because it only allows for an xaxis and yaxis
     299// and component.xy formated data
     300void
     301Curve::__configureFromTree(Rp_ParserXml *p)
     302{
     303    if (p == NULL) {
     304        // FIXME: setup error
     305        return;
     306    }
     307
     308    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
     309
     310    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
     311
     312    path(pathObj.parent());
     313    name(Rp_ParserXmlNodeId(p,node));
     314    label(Rp_ParserXmlGet(p,"about.label"));
     315    desc(Rp_ParserXmlGet(p,"about.description"));
     316
     317    Array1D *xaxis = axis("xaxis","","","","",NULL,0);
     318    xaxis->label(Rp_ParserXmlGet(p,"xaxis.label"));
     319    xaxis->desc(Rp_ParserXmlGet(p,"xaxis.description"));
     320    xaxis->units(Rp_ParserXmlGet(p,"xaxis.units"));
     321    xaxis->scale(Rp_ParserXmlGet(p,"xaxis.scale"));
     322
     323    Array1D *yaxis = axis("yaxis","","","","",NULL,0);
     324    yaxis->label(Rp_ParserXmlGet(p,"yaxis.label"));
     325    yaxis->desc(Rp_ParserXmlGet(p,"yaxis.description"));
     326    yaxis->units(Rp_ParserXmlGet(p,"yaxis.units"));
     327    yaxis->scale(Rp_ParserXmlGet(p,"yaxis.scale"));
     328
     329    const char *values = Rp_ParserXmlGet(p,"component.xy");
     330
     331    double x,y;
     332    int n;
     333    while (sscanf(values,"%lf%lf%n",&x,&y,&n) == 2) {
     334        xaxis->append(&x,1);
     335        yaxis->append(&y,1);
     336        values += n;
     337    }
     338
     339    return;
     340}
     341
     342/**********************************************************************/
     343// METHOD: dump(size_t as, void *p)
     344/// construct a number object from the provided tree
     345/**
     346 * construct a number object from the provided tree
     347 */
     348
     349void
     350Curve::dump(size_t as, ClientData p)
     351{
     352    if (as == RPCONFIG_XML) {
     353        __dumpToXml(p);
     354    } else if (as == RPCONFIG_TREE) {
     355        __dumpToTree(p);
     356    }
     357}
     358
     359/**********************************************************************/
     360// METHOD: dumpToXml(ClientData p)
     361/// configure the object based on Rappture1.1 xmltext
     362/**
     363 * Configure the object based on the provided xml
     364 */
     365
     366void
     367Curve::__dumpToXml(ClientData c)
     368{
     369    if (c == NULL) {
     370        // FIXME: setup error
     371        return;
     372    }
     373
     374    ClientDataXml *d = (ClientDataXml *)c;
     375    Rp_ParserXml *parser = Rp_ParserXmlCreate();
     376    __dumpToTree(parser);
     377    const char *xmltext = Rp_ParserXmlXml(parser);
     378    _tmpBuf.appendf("%s",xmltext);
     379    Rp_ParserXmlDestroy(&parser);
     380    d->retStr = _tmpBuf.bytes();
     381}
     382
     383/**********************************************************************/
     384// METHOD: dumpToTree(ClientData p)
     385/// dump the object to a Rappture1.1 based tree
     386/**
     387 * Dump the object to a Rappture1.1 based tree
     388 */
     389
     390void
     391Curve::__dumpToTree(ClientData c)
     392{
     393    if (c == NULL) {
     394        // FIXME: setup error
     395        return;
     396    }
     397
     398    Rp_ParserXml *parser = (Rp_ParserXml *)c;
     399
     400    Path p;
     401
     402    p.parent(path());
     403    p.last();
     404
     405    p.add("curve");
     406    p.id(name());
     407
     408    p.add("about");
     409
     410    p.add("group");
     411    Rp_ParserXmlPutF(parser,p.path(),"%s",group());
     412
     413    p.del();
     414    p.add("label");
     415    Rp_ParserXmlPutF(parser,p.path(),"%s",label());
     416
     417    p.del();
     418    p.add("description");
     419    Rp_ParserXmlPutF(parser,p.path(),"%s",desc());
     420
     421    p.del();
     422    p.add("type");
     423    Rp_ParserXmlPutF(parser,p.path(),"%s",propstr("type"));
     424
     425    p.del();
     426    p.del();
     427
     428    const double *dataArr[dims()];
    270429    size_t nmemb = 0;
    271 
    272     const double *dataArr[dims()];
    273     const char *type = propstr("type");
    274 
    275     _tmpBuf.clear();
    276 
    277     _tmpBuf.appendf(
    278 "%9$*6$s<curve id=\"%1$s\">\n\
    279 %9$*7$s<about>\n\
    280 %9$*8$s<group>%2$s</group>\n\
    281 %9$*8$s<label>%3$s</label>\n\
    282 %9$*8$s<description>%4$s</description>\n\
    283 %9$*8$s<type>%5$s</type>\n\
    284 %9$*7$s</about>\n",
    285         p.id(),group(),label(),desc(),type,indent,l1width,l2width,sp);
    286 
    287     for (size_t dim=0; dim < dims(); dim++) {
    288         tmpAxis = getNthAxis(dim);
    289         nmemb = tmpAxis->nmemb();
    290         dataArr[dim] = tmpAxis->data();
    291         _tmpBuf.appendf(
    292 "%8$*6$s<%1$s>\n\
    293 %8$*7$s<label>%2$s</label>\n\
    294 %8$*7$s<description>%3$s</description>\n\
    295 %8$*7$s<units>%4$s</units>\n\
    296 %8$*7$s<scale>%5$s</scale>\n\
    297 %8$*6$s</%1$s>\n",
    298         tmpAxis->name(), tmpAxis->label(), tmpAxis->desc(),
    299         tmpAxis->units(), tmpAxis->scale(),l1width,l2width,sp);
    300     }
    301 
    302     _tmpBuf.appendf("%3$*1$s<component>\n%3$*2$s<xy>\n",l1width,l2width,sp);
     430    for (size_t dim = 0; dim < dims(); dim++) {
     431        Array1D *a = getNthAxis(dim);
     432        nmemb = a->nmemb();
     433        dataArr[dim] = a->data();
     434        p.add(a->name());
     435
     436        p.add("label");
     437        Rp_ParserXmlPutF(parser,p.path(),"%s",a->label());
     438        p.del();
     439
     440        p.add("description");
     441        Rp_ParserXmlPutF(parser,p.path(),"%s",a->desc());
     442        p.del();
     443
     444        p.add("units");
     445        Rp_ParserXmlPutF(parser,p.path(),"%s",a->units());
     446        p.del();
     447
     448        p.add("scale");
     449        Rp_ParserXmlPutF(parser,p.path(),"%s",a->scale());
     450        p.del();
     451
     452        p.del();
     453    }
     454
     455    SimpleCharBuffer tmpBuf;
    303456    for (size_t idx=0; idx < nmemb; idx++) {
    304457        for(size_t dim=0; dim < dims(); dim++) {
    305             _tmpBuf.appendf("%10g",dataArr[dim][idx]);
     458            tmpBuf.appendf("%10g",dataArr[dim][idx]);
    306459        }
    307         _tmpBuf.append("\n",1);
    308     }
    309     _tmpBuf.appendf("%4$*3$s</xy>\n%4$*2$s</component>\n%4$*1$s</curve>",
    310         indent, l1width, l2width, sp);
    311 
    312     return _tmpBuf.bytes();
     460        tmpBuf.appendf("\n");
     461    }
     462    p.add("component.xy");
     463    Rp_ParserXmlPutF(parser,p.path(),"%s",tmpBuf.bytes());
     464
     465    return;
    313466}
    314467
  • trunk/src/objects/RpCurve.h

    r1560 r1568  
    2424        Curve();
    2525
    26         Curve(const char *path);
     26        Curve(const char *name);
    2727
    28         Curve(const char *path, const char *label, const char *desc,
     28        Curve(const char *name, const char *label, const char *desc,
    2929              const char *group);
    3030
     
    4848        size_t dims() const;
    4949
    50         const char *xml(size_t indent, size_t tabstop);
     50        void configure(size_t as, ClientData p);
     51        void dump(size_t as, ClientData p);
     52
    5153        const int is() const;
    5254
     
    6062
    6163        Rp_ChainLink *__searchAxisList(const char * name) const;
     64
     65        void __configureFromXml(const char *p);
     66        void __configureFromTree(Rp_ParserXml *p);
     67        void __dumpToXml(ClientData c);
     68        void __dumpToTree(ClientData c);
    6269};
    6370
  • trunk/src/objects/RpNumber.cc

    r1566 r1568  
    397397{
    398398    if (as == RPCONFIG_XML) {
    399         __dumpToXml((clientdata_xml *)p);
     399        __dumpToXml(p);
    400400    } else if (as == RPCONFIG_TREE) {
    401         __dumpToTree((clientdata_tree *)p);
     401        __dumpToTree(p);
    402402    }
    403403}
     
    418418    }
    419419
    420     clientdata_xml *d = (clientdata_xml *)c;
    421 
    422     size_t l1width = d->indent + (1*d->tabstop);
    423     size_t l2width = d->indent + (2*d->tabstop);
    424     const char *sp = "";
    425 
    426     Path p(path());
    427     _tmpBuf.clear();
    428 
    429     _tmpBuf.appendf(
    430 "%8$*5$s<number id='%1$s'>\n\
    431 %8$*6$s<about>\n\
    432 %8$*7$s<label>%2$s</label>\n\
    433 %8$*7$s<description>%3$s</description>\n\
    434 %8$*6$s</about>\n\
    435 %8$*6$s<units>%4$s</units>\n",
    436        p.id(),label(),desc(),units(),d->indent,l1width,l2width,sp);
    437 
    438     if (_minSet) {
    439         _tmpBuf.appendf("%4$*3$s<min>%1$g%2$s</min>\n", min(),units(),l1width,sp);
    440     }
    441     if (_maxSet) {
    442         _tmpBuf.appendf("%4$*3$s<max>%1$g%2$s</max>\n", max(),units(),l1width,sp);
    443     }
    444 
    445     _tmpBuf.appendf(
    446 "%6$*5$s<default>%1$g%3$s</default>\n\
    447 %6$*5$s<current>%2$g%3$s</current>\n\
    448 %6$*4$s</number>",
    449        def(),cur(),units(),d->indent,l1width,sp);
    450 
    451     d->retStr =  _tmpBuf.bytes();
     420    Rp_ParserXml *parser = Rp_ParserXmlCreate();
     421    __dumpToTree(parser);
     422    const char *xmltext = Rp_ParserXmlXml(parser);
     423    _tmpBuf.appendf("%s",xmltext);
     424    Rp_ParserXmlDestroy(&parser);
    452425}
    453426
  • trunk/src/objects/RpObjConfig.h

    r1566 r1568  
    2323    size_t tabstop;
    2424    const char *retStr;
    25 } clientdata_xml;
    26 
    27 typedef struct {
    28     const char *retStr;
    29 } clientdata_tree;
     25} ClientDataXml;
    3026
    3127} // end namespace Rappture
  • trunk/src/objects/RpParserXML.cc

    r1566 r1568  
    155155    delete (*p)->path;
    156156    delete *p;
    157     p = NULL;
     157    *p = NULL;
    158158}
    159159
  • trunk/src/objects/RpPlot.cc

    r1560 r1568  
    9191    }
    9292
    93     Path cpath;
    94     cpath.id(name);
    95     c->path(cpath.path());
     93    // Path cpath;
     94    // cpath.id(name);
     95    // c->path(cpath.path());
     96    c->name(name);
    9697
    9798    // can't use "xaxis" kinda strings here have to allocate it forreal
     
    264265
    265266    _tmpBuf.clear();
     267
     268    Rp_ParserXml *parser = Rp_ParserXmlCreate();
    266269
    267270    l = Rp_ChainFirstLink(_curveList);
     
    302305        }
    303306
    304         _tmpBuf.append(c->xml(indent,tabstop));
    305         _tmpBuf.append("\n",1);
     307        c->dump(RPCONFIG_TREE,parser);
    306308        l = Rp_ChainNextLink(l);
    307309    }
     310    _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser));
     311    Rp_ParserXmlDestroy(&parser);
    308312
    309313    // remove trailing newline
    310     _tmpBuf.remove(1);
     314    //_tmpBuf.remove(1);
    311315    // append terminating null character
    312     _tmpBuf.append("\0",1);
     316    //_tmpBuf.append("\0",1);
    313317
    314318    return _tmpBuf.bytes();
Note: See TracChangeset for help on using the changeset viewer.