Changeset 1568
- Timestamp:
- Sep 16, 2009 5:39:51 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/examples/objects/curve/curve.cc
r1560 r1568 21 21 } 22 22 23 int24 printCurve(Rappture::Curve *n)25 {26 std::cout << "path: " << n->path() << std::endl;27 std::cout << "label: " << n->label() << std::endl;28 std::cout << "desc: " << n->desc() << std::endl;29 std::cout << "group: " << n->group() << std::endl;30 std::cout << "dims: " << n->dims() << std::endl;31 32 const Rappture::Array1D *a = NULL;33 34 for (size_t i = 0; i < n->dims(); i++) {35 a = n->getNthAxis(i);36 std::cout << "a[" << i << "] = " << a->label() << std::endl;37 }38 39 std::cout << "xml: " << n->xml(indent,tabstop) << std::endl;40 return 0;41 }42 43 23 int curve_0_0 () 44 24 { … … 46 26 const char *testname = "curve_0_0"; 47 27 48 const char *expected = " output.curve(myid)";28 const char *expected = "myid"; 49 29 const char *received = NULL; 50 30 51 31 Rappture::Curve c(expected); 52 received = c.path(); 32 received = c.name(); 33 34 return test(testname,desc,expected,received); 35 } 36 37 int curve_1_0 () 38 { 39 const char *desc = "test generating xml text for curve object"; 40 const char *testname = "curve_1_0"; 41 42 const char *expected = "<?xml version=\"1.0\"?>\n\ 43 <curve id=\"myid\">\n\ 44 <about>\n\ 45 <group>mygroup</group>\n\ 46 <label>mylabel</label>\n\ 47 <description>mydesc</description>\n\ 48 <type>(null)</type>\n\ 49 </about>\n\ 50 <xaxis>\n\ 51 <label>xlabel</label>\n\ 52 <description>xdesc</description>\n\ 53 <units>xunits</units>\n\ 54 <scale>xscale</scale>\n\ 55 </xaxis>\n\ 56 <yaxis>\n\ 57 <label>ylabel</label>\n\ 58 <description>ydesc</description>\n\ 59 <units>yunits</units>\n\ 60 <scale>yscale</scale>\n\ 61 </yaxis>\n\ 62 <component>\n\ 63 <xy> 1 1\n\ 64 2 4\n\ 65 3 9\n\ 66 4 16\n\ 67 5 25\n\ 68 6 36\n\ 69 7 49\n\ 70 8 64\n\ 71 9 81\n\ 72 10 100\n\ 73 </xy>\n\ 74 </component>\n\ 75 </curve>\n\ 76 "; 77 const char *received = NULL; 78 79 Rappture::Curve *c = NULL; 80 double x[] = {1,2,3,4,5,6,7,8,9,10}; 81 double y[] = {1,4,9,16,25,36,49,64,81,100}; 82 83 c = new Rappture::Curve("myid","mylabel","mydesc","mygroup"); 84 85 c->axis("xaxis","xlabel","xdesc","xunits","xscale",x,10); 86 c->axis("yaxis","ylabel","ydesc","yunits","yscale",y,10); 87 88 Rappture::ClientDataXml xmldata; 89 xmldata.indent = indent; 90 xmldata.tabstop = tabstop; 91 xmldata.retStr = NULL; 92 c->dump(Rappture::RPCONFIG_XML,&xmldata); 93 received = xmldata.retStr; 53 94 54 95 return test(testname,desc,expected,received); … … 57 98 int main() 58 99 { 59 Rappture::Curve *n = NULL; 60 double x[] = {1,2,3,4,5,6,7,8,9,10}; 61 double z[] = {1,2,3,4,5,6,7,8,9,10}; 62 double y[] = {1,4,9,16,25,36,49,64,91,100}; 63 64 n = new Rappture::Curve("output.curve(temperature)","mylabel", 65 "mydesc","mygroup"); 66 67 n->axis("xaxis","xlabel","xdesc","xunits","xscale",x,10); 68 n->axis("yaxis","ylabel","ydesc","yunits","yscale",y,10); 69 n->axis("zaxis","zlabel","zdesc","zunits","zscale",z,10); 70 printCurve(n); 71 n->delAxis("zlabel"); 72 n->delAxis("xzylabel"); 73 printCurve(n); 74 75 delete n; 100 curve_0_0 (); 101 curve_1_0 (); 76 102 return 0; 77 103 } -
trunk/src/objects/RpCurve.cc
r1560 r1568 28 28 _axisList (NULL) 29 29 { 30 this->name(""); 30 31 this->path(""); 31 32 this->label(""); … … 34 35 } 35 36 36 Curve::Curve (const char * path)37 Curve::Curve (const char *name) 37 38 : Object (), 38 39 _axisList (NULL) 39 40 { 40 this->path(path); 41 this->name(name); 42 this->path(""); 41 43 this->label(""); 42 44 this->desc(""); … … 44 46 } 45 47 46 Curve::Curve (const char * path, const char *label, const char *desc,48 Curve::Curve (const char *name, const char *label, const char *desc, 47 49 const char *group) 48 50 : Object (), 49 51 _axisList (NULL) 50 52 { 51 this->path(path); 53 this->name(name); 54 this->path(""); 52 55 this->label(label); 53 56 this->desc(desc); … … 59 62 : Object(o) 60 63 { 64 this->name(o.name()); 61 65 this->path(o.path()); 62 66 this->label(o.label()); … … 252 256 253 257 /**********************************************************************/ 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 264 void 265 Curve::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 281 void 282 Curve::__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 300 void 301 Curve::__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 349 void 350 Curve::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 366 void 367 Curve::__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 390 void 391 Curve::__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()]; 270 429 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; 303 456 for (size_t idx=0; idx < nmemb; idx++) { 304 457 for(size_t dim=0; dim < dims(); dim++) { 305 _tmpBuf.appendf("%10g",dataArr[dim][idx]);458 tmpBuf.appendf("%10g",dataArr[dim][idx]); 306 459 } 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; 313 466 } 314 467 -
trunk/src/objects/RpCurve.h
r1560 r1568 24 24 Curve(); 25 25 26 Curve(const char * path);26 Curve(const char *name); 27 27 28 Curve(const char * path, const char *label, const char *desc,28 Curve(const char *name, const char *label, const char *desc, 29 29 const char *group); 30 30 … … 48 48 size_t dims() const; 49 49 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 51 53 const int is() const; 52 54 … … 60 62 61 63 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); 62 69 }; 63 70 -
trunk/src/objects/RpNumber.cc
r1566 r1568 397 397 { 398 398 if (as == RPCONFIG_XML) { 399 __dumpToXml( (clientdata_xml *)p);399 __dumpToXml(p); 400 400 } else if (as == RPCONFIG_TREE) { 401 __dumpToTree( (clientdata_tree *)p);401 __dumpToTree(p); 402 402 } 403 403 } … … 418 418 } 419 419 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); 452 425 } 453 426 -
trunk/src/objects/RpObjConfig.h
r1566 r1568 23 23 size_t tabstop; 24 24 const char *retStr; 25 } clientdata_xml; 26 27 typedef struct { 28 const char *retStr; 29 } clientdata_tree; 25 } ClientDataXml; 30 26 31 27 } // end namespace Rappture -
trunk/src/objects/RpParserXML.cc
r1566 r1568 155 155 delete (*p)->path; 156 156 delete *p; 157 p = NULL;157 *p = NULL; 158 158 } 159 159 -
trunk/src/objects/RpPlot.cc
r1560 r1568 91 91 } 92 92 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); 96 97 97 98 // can't use "xaxis" kinda strings here have to allocate it forreal … … 264 265 265 266 _tmpBuf.clear(); 267 268 Rp_ParserXml *parser = Rp_ParserXmlCreate(); 266 269 267 270 l = Rp_ChainFirstLink(_curveList); … … 302 305 } 303 306 304 _tmpBuf.append(c->xml(indent,tabstop)); 305 _tmpBuf.append("\n",1); 307 c->dump(RPCONFIG_TREE,parser); 306 308 l = Rp_ChainNextLink(l); 307 309 } 310 _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser)); 311 Rp_ParserXmlDestroy(&parser); 308 312 309 313 // remove trailing newline 310 _tmpBuf.remove(1);314 //_tmpBuf.remove(1); 311 315 // append terminating null character 312 _tmpBuf.append("\0",1);316 //_tmpBuf.append("\0",1); 313 317 314 318 return _tmpBuf.bytes();
Note: See TracChangeset
for help on using the changeset viewer.