Changeset 1569 for trunk/src/objects


Ignore:
Timestamp:
Sep 16, 2009 2:22:36 PM (12 years ago)
Author:
dkearney
Message:

adding configure/dump functions to plot object, creating simple test case for dumping xml
all objects should have "run" as their parent path if no parent path is provided.

Location:
trunk/src/objects
Files:
9 edited

Legend:

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

    r1568 r1569  
    2929{
    3030    this->name("");
    31     this->path("");
     31    this->path("run");
    3232    this->label("");
    3333    this->desc("");
     
    4040{
    4141    this->name(name);
    42     this->path("");
     42    this->path("run");
    4343    this->label("");
    4444    this->desc("");
     
    5252{
    5353    this->name(name);
    54     this->path("");
     54    this->path("run");
    5555    this->label(label);
    5656    this->desc(desc);
     
    312312    path(pathObj.parent());
    313313    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");
     314
     315    pathObj.clear();
     316    pathObj.add("about");
     317    pathObj.add("label");
     318    label(Rp_ParserXmlGet(p,pathObj.path()));
     319
     320    pathObj.del();
     321    pathObj.add("description");
     322    desc(Rp_ParserXmlGet(p,pathObj.path()));
     323
     324
     325    Array1D *xaxis = axis(Curve::x,"","","","",NULL,0);
     326    pathObj.del();
     327    pathObj.del();
     328    pathObj.add(Curve::x);
     329    pathObj.add("label");
     330    xaxis->label(Rp_ParserXmlGet(p,pathObj.path()));
     331    pathObj.del();
     332    pathObj.add("description");
     333    xaxis->desc(Rp_ParserXmlGet(p,pathObj.path()));
     334    pathObj.del();
     335    pathObj.add("units");
     336    xaxis->units(Rp_ParserXmlGet(p,pathObj.path()));
     337    pathObj.del();
     338    pathObj.add("scale");
     339    xaxis->scale(Rp_ParserXmlGet(p,pathObj.path()));
     340
     341    Array1D *yaxis = axis(Curve::y,"","","","",NULL,0);
     342    pathObj.del();
     343    pathObj.del();
     344    pathObj.add(Curve::y);
     345    pathObj.add("label");
     346    yaxis->label(Rp_ParserXmlGet(p,pathObj.path()));
     347    pathObj.del();
     348    pathObj.add("description");
     349    yaxis->desc(Rp_ParserXmlGet(p,pathObj.path()));
     350    pathObj.del();
     351    pathObj.add("units");
     352    yaxis->units(Rp_ParserXmlGet(p,pathObj.path()));
     353    pathObj.del();
     354    pathObj.add("scale");
     355    yaxis->scale(Rp_ParserXmlGet(p,pathObj.path()));
     356
     357    pathObj.del();
     358    pathObj.del();
     359    pathObj.add("component");
     360    pathObj.add("xy");
     361    const char *values = Rp_ParserXmlGet(p,pathObj.path());
    330362
    331363    double x,y;
     
    460492        tmpBuf.appendf("\n");
    461493    }
    462     p.add("component.xy");
     494    p.add("component");
     495    p.add("xy");
    463496    Rp_ParserXmlPutF(parser,p.path(),"%s",tmpBuf.bytes());
    464497
  • trunk/src/objects/RpNumber.cc

    r1568 r1569  
    2828    // FIXME: empty names should be autoname'd
    2929    this->name("");
    30     this->path("");
     30    this->path("run");
    3131    this->label("");
    3232    this->desc("");
     
    4848
    4949    this->name(name);
    50     this->path("");
     50    this->path("run");
    5151    this->label("");
    5252    this->desc("");
     
    7474
    7575    this->name(name);
    76     this->path("");
     76    this->path("run");
    7777    this->label(label);
    7878    this->desc(desc);
     
    301301
    302302/**********************************************************************/
    303 // METHOD: configure(Rp_ParserXml *p)
     303// METHOD: configure(ClientData c)
    304304/// construct a number object from the provided tree
    305305/**
     
    308308
    309309void
    310 Number::configure(size_t as, void *p)
     310Number::configure(size_t as, ClientData c)
    311311{
    312312    if (as == RPCONFIG_XML) {
    313         __configureFromXml((const char *)p);
     313        __configureFromXml(c);
    314314    } else if (as == RPCONFIG_TREE) {
    315         __configureFromTree((Rp_ParserXml *)p);
     315        __configureFromTree(c);
    316316    }
    317317}
     
    325325
    326326void
    327 Number::__configureFromXml(const char *xmltext)
    328 {
     327Number::__configureFromXml(ClientData c)
     328{
     329    const char *xmltext = (const char *)c;
    329330    if (xmltext == NULL) {
    330331        // FIXME: setup error
     
    340341
    341342void
    342 Number::__configureFromTree(Rp_ParserXml *p)
    343 {
     343Number::__configureFromTree(ClientData c)
     344{
     345    Rp_ParserXml *p = (Rp_ParserXml *)c;
    344346    if (p == NULL) {
    345347        // FIXME: setup error
     
    353355    path(pathObj.parent());
    354356    name(Rp_ParserXmlNodeId(p,node));
    355     label(Rp_ParserXmlGet(p,"about.label"));
    356     desc(Rp_ParserXmlGet(p,"about.description"));
     357
     358    pathObj.clear();
     359    pathObj.add("about");
     360    pathObj.add("label");
     361    label(Rp_ParserXmlGet(p,pathObj.path()));
     362    pathObj.type("description");
     363    desc(Rp_ParserXmlGet(p,pathObj.path()));
    357364    units(Rp_ParserXmlGet(p,"units"));
    358365    minFromStr(Rp_ParserXmlGet(p,"min"));
     
    418425    }
    419426
     427    ClientDataXml *d = (ClientDataXml *)c;
    420428    Rp_ParserXml *parser = Rp_ParserXmlCreate();
    421429    __dumpToTree(parser);
    422     const char *xmltext = Rp_ParserXmlXml(parser);
    423     _tmpBuf.appendf("%s",xmltext);
     430    _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser));
     431    d->retStr = _tmpBuf.bytes();
    424432    Rp_ParserXmlDestroy(&parser);
    425433}
  • trunk/src/objects/RpNumber.h

    r1566 r1569  
    5858
    5959
    60         void configure(size_t as, ClientData p);
    61         void dump(size_t as, ClientData p);
    62         // const char* xml(size_t indent, size_t tabstop);
     60        void configure(size_t as, ClientData c);
     61        void dump(size_t as, ClientData c);
    6362
    6463        const int is() const;
     
    8584        };
    8685
    87         void __configureFromXml(const char *p);
    88         void __configureFromTree(Rp_ParserXml *p);
     86        void __configureFromXml(ClientData c);
     87        void __configureFromTree(ClientData c);
    8988        void __dumpToXml(ClientData c);
    9089        void __dumpToTree(ClientData c);
  • trunk/src/objects/RpObject.cc

    r1566 r1569  
    312312
    313313void
    314 Object::configure(size_t as, void *p)
    315 {
    316     return;
    317 }
    318 
    319 void
    320 Object::dump(size_t as, void *p)
     314Object::configure(size_t as, ClientData c)
     315{
     316    return;
     317}
     318
     319void
     320Object::dump(size_t as, ClientData c)
    321321{
    322322    return;
  • trunk/src/objects/RpObject.h

    r1566 r1569  
    7878
    7979        // configure the object properties based on Rappture1.1 xml text
    80         virtual void configure(size_t as, void *p);
    81         virtual void dump(size_t as, void *p);
     80        virtual void configure(size_t as, ClientData c);
     81        virtual void dump(size_t as, ClientData c);
    8282
    8383        virtual const int is() const;
     
    9898        /// close out the object, freeing its memory
    9999        void __clear();
    100 
    101100};
    102101
  • trunk/src/objects/RpPath.cc

    r1566 r1569  
    409409}
    410410
     411Path&
     412Path::clear ()
     413{
     414    __pathFree();
     415    __pathInit();
     416    return *this;
     417}
     418
    411419size_t
    412420Path::count ()
  • trunk/src/objects/RpPath.h

    r1560 r1569  
    5454    Path& next();
    5555    Path& last();
     56    Path& clear();
    5657    size_t count();
    5758
  • trunk/src/objects/RpPlot.cc

    r1568 r1569  
    3434{
    3535    // this->path(autopath());
    36     this->path("");
     36    this->name("");
     37    this->path("run");
    3738    this->label("");
    3839    this->desc("");
     
    9192    }
    9293
    93     // Path cpath;
    94     // cpath.id(name);
    95     // c->path(cpath.path());
    9694    c->name(name);
    9795
     
    252250
    253251/**********************************************************************/
    254 // METHOD: xml()
    255 /// Return the xml of this object
    256 /**
    257  * returns the xml of this object
    258  */
    259 
    260 const char *
    261 Plot::xml(size_t indent, size_t tabstop)
    262 {
     252// METHOD: configure(Rp_ParserXml *c)
     253/// construct a number object from the provided tree
     254/**
     255 * construct a number object from the provided tree
     256 */
     257
     258void
     259Plot::configure(size_t as, ClientData c)
     260{
     261    if (as == RPCONFIG_XML) {
     262        __configureFromXml(c);
     263    } else if (as == RPCONFIG_TREE) {
     264        __configureFromTree(c);
     265    }
     266}
     267
     268/**********************************************************************/
     269// METHOD: configureFromXml(const char *xmltext)
     270/// configure the object based on Rappture1.1 xmltext
     271/**
     272 * Configure the object based on the provided xml
     273 */
     274
     275void
     276Plot::__configureFromXml(ClientData c)
     277{
     278    const char *xmltext = (const char *) c;
     279    if (xmltext == NULL) {
     280        // FIXME: setup error
     281        return;
     282    }
     283
     284    Rp_ParserXml *p = Rp_ParserXmlCreate();
     285    Rp_ParserXmlParse(p, xmltext);
     286    configure(RPCONFIG_TREE, p);
     287
     288    return;
     289}
     290
     291// FIXME: this is an incomplete definition of how to
     292//        configure a plot object from a tree because there
     293//        currently is no xml description for plot objects
     294void
     295Plot::__configureFromTree(ClientData c)
     296{
     297    Rp_ParserXml *p = (Rp_ParserXml *)c;
     298    if (p == NULL) {
     299        // FIXME: setup error
     300        return;
     301    }
     302
     303    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
     304
     305    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
     306
     307    path(pathObj.parent());
     308    name(Rp_ParserXmlNodeId(p,node));
     309
     310    return;
     311}
     312
     313/**********************************************************************/
     314// METHOD: dump(size_t as, void *p)
     315/// construct a number object from the provided tree
     316/**
     317 * construct a number object from the provided tree
     318 */
     319
     320void
     321Plot::dump(size_t as, ClientData c)
     322{
     323    if (as == RPCONFIG_XML) {
     324        __dumpToXml(c);
     325    } else if (as == RPCONFIG_TREE) {
     326        __dumpToTree(c);
     327    }
     328}
     329
     330/**********************************************************************/
     331// METHOD: dumpToXml(ClientData c)
     332/// configure the object based on Rappture1.1 xmltext
     333/**
     334 * Configure the object based on the provided xml
     335 */
     336
     337void
     338Plot::__dumpToXml(ClientData c)
     339{
     340    if (c == NULL) {
     341        // FIXME: setup error
     342        return;
     343    }
     344
     345    ClientDataXml *d = (ClientDataXml *) c;
     346    Rp_ParserXml *parser = Rp_ParserXmlCreate();
     347    __dumpToTree(parser);
     348    _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser));
     349    d->retStr = _tmpBuf.bytes();
     350    Rp_ParserXmlDestroy(&parser);
     351}
     352
     353/**********************************************************************/
     354// METHOD: dumpToTree(ClientData p)
     355/// dump the object to a Rappture1.1 based tree
     356/**
     357 * Dump the object to a Rappture1.1 based tree
     358 */
     359
     360void
     361Plot::__dumpToTree(ClientData c)
     362{
     363    if (c == NULL) {
     364        // FIXME: setup error
     365        return;
     366    }
     367
     368    Rp_ParserXml *parser = (Rp_ParserXml *)c;
     369
     370    Path p;
     371
     372    p.parent(path());
     373    p.last();
    263374
    264375    Rp_ChainLink *l = NULL;
    265 
    266     _tmpBuf.clear();
    267 
    268     Rp_ParserXml *parser = Rp_ParserXmlCreate();
    269376
    270377    l = Rp_ChainFirstLink(_curveList);
     
    279386            // FIXME: check fields to see if the user specified value
    280387            // plot defined curve, use plot's labels in curve's xml
     388            c->group(label());
     389            c->label(label());
     390            c->desc(desc());
     391
     392
    281393            const char *xlabel = propstr("xlabel");
    282394            const char *xdesc  = propstr("xdesc");
     
    303415                cyaxis->scale(yscale);
    304416            }
     417
    305418        }
    306419
     
    308421        l = Rp_ChainNextLink(l);
    309422    }
    310     _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser));
    311     Rp_ParserXmlDestroy(&parser);
    312 
    313     // remove trailing newline
    314     //_tmpBuf.remove(1);
    315     // append terminating null character
    316     //_tmpBuf.append("\0",1);
    317 
    318     return _tmpBuf.bytes();
    319423}
    320424
  • trunk/src/objects/RpPlot.h

    r1560 r1569  
    4242        Curve *getNthCurve(size_t n) const;
    4343
    44         const char *xml(size_t indent, size_t tabstop);
     44        void configure(size_t as, ClientData p);
     45        void dump(size_t as, ClientData p);
     46
    4547        const int is() const;
    4648
    4749    private:
    4850
    49         // hash or linked list of preset values
     51        // hash or linked list of curves
    5052        Rp_Chain *_curveList;
    5153
     
    6062        Rp_ChainLink *__searchCurveList(const char *name) const;
    6163        static int __curveCopyFxn(void **to, void *from);
     64
     65        void __configureFromXml(ClientData c);
     66        void __configureFromTree(ClientData c);
     67        void __dumpToXml(ClientData c);
     68        void __dumpToTree(ClientData c);
    6269};
    6370
Note: See TracChangeset for help on using the changeset viewer.