Ignore:
Timestamp:
Oct 5, 2005, 8:17:26 AM (19 years ago)
Author:
dkearney
Message:
  1. More cleaning of RpUnits and RpLibrary? code
  2. added rp_result code to c++/fortran/c code
  3. added rp_children, rp_lib_node[comp,type,id] for fortran code (need to test)
  4. adjusted convert function to recognize statements as follows:

convert("5J","neV")
convert("3.12075e+28neV","J")

  1. made joules a metric unit in RpUnits.cc
  2. tested examples/app-fermi/fortran/fermi.f with new rappture library.

added units conversion.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/core/RpLibrary.h

    r77 r83  
     1/*
     2 * ----------------------------------------------------------------------
     3 *  Rappture Library Header
     4 *
     5 * ======================================================================
     6 *  AUTHOR:  Derrick Kearney, Purdue University
     7 *  Copyright (c) 2005
     8 *  Purdue Research Foundation, West Lafayette, IN
     9 * ======================================================================
     10 */
    111
    212#include "scew.h"
     
    515#include <string>
    616#include <sstream>
     17#include <fstream>
    718#include <stdlib.h>
    819#include <errno.h>
     20#include <time.h>
    921
    1022/* indentation size (in whitespaces) */
     
    1729{
    1830    public:
    19        
     31
    2032        // users member fxns
    2133
    2234        RpLibrary* element (std::string path = "", std::string as = "object");
     35
    2336        // should return RpObject& but for simplicity right now it doesnt
    2437        // RpObject will either be an Array, RpString, RpNumber ...
    25         /*
    26         RpLibrary** children (  std::string path = "",
    27                                 std::string as = "object",
    28                                 std::string type = ""   );
    29         */
    30 
    31         RpLibrary*  children (  std::string path = "",
    32                                 RpLibrary* rpChildNode = NULL,
     38
     39        RpLibrary*  children (  std::string path = "",
     40                                RpLibrary* rpChildNode = NULL,
    3341                                std::string type = "",
    3442                                int* childCount = NULL  );
     
    4250                            std::string id = "",
    4351                            int append = 0  );
    44        
     52
    4553        RpLibrary& put (    std::string path,
    4654                            double value,
     
    5563        std::string nodeId();
    5664        std::string nodeComp();
    57        
     65
     66        void result();
    5867        const char* nodeTypeC();
    5968        const char* nodeIdC();
     
    6776                tree        (NULL),
    6877                root        (NULL)
    69                    
    7078        {
    7179            tree = scew_tree_create();
     
    8189                root        (NULL)
    8290        {
    83            
     91
    8492            if (filePath.length() != 0) {
    8593                // file path should not be null or empty string unless we are
     
    105113                    if (code == scew_error_expat)
    106114                    {
    107                         enum XML_Error expat_code = 
     115                        enum XML_Error expat_code =
    108116                            scew_error_expat_code(parser);
    109                         printf("Expat error #%d (line %d, column %d): %s\n", 
     117                        printf("Expat error #%d (line %d, column %d): %s\n",
    110118                               expat_code,
    111119                               scew_error_expat_line(parser),
     
    115123                    // should probably exit program or something
    116124                    // return EXIT_FAILURE;
    117                    
     125
    118126                }
    119127
     
    127135        }
    128136
    129        
     137
    130138        // copy constructor
    131139        // for some reason making this a const gives me problems when calling xml()
     
    149157            buffer = other.xml();
    150158            buffLen = buffer.length();
    151            
     159
    152160            if (buffLen > 0) {
    153161                if (!scew_parser_load_buffer(parser,buffer.c_str(),buffLen))
     
    161169                    if (code == scew_error_expat)
    162170                    {
    163                         enum XML_Error expat_code = 
     171                        enum XML_Error expat_code =
    164172                            scew_error_expat_code(parser);
    165173                        printf("Expat error #%d (line %d, column %d): %s\n",
     
    172180                    // return an empty RpLibrary?
    173181                    // return EXIT_FAILURE;
    174                    
     182
    175183                    parser = NULL;
    176184                }
     
    214222
    215223                // Loads the XML from other
    216                 // the length cannot be 0 because xml() should not be returning 
     224                // the length cannot be 0 because xml() should not be returning
    217225                // empty strings
    218226                buffer = other.xml();
    219227                buffLen = buffer.length();
    220                
     228
    221229                if (buffLen > 0) {
    222230                    if (!scew_parser_load_buffer(parser,buffer.c_str(),buffLen))
     
    242250                        // or maybe return an empty RpLibrary?
    243251                        // return EXIT_FAILURE;
    244                        
     252
    245253                        // return this object to its previous state.
    246254                        parser = tmp_parser;
     
    256264
    257265                        // free the current RpLibrary's data
    258                         // we do the free so far down so we can see if 
     266                        // we do the free so far down so we can see if
    259267                        // parsing the other object's xml fails.
    260                         // if the parsing fails, we can still return this 
     268                        // if the parsing fails, we can still return this
    261269                        // object to its previous state.
    262270                        if (tmp_tree && tmp_freeTree) {
     
    278286            return *this;
    279287        } // end operator=
    280                
     288
    281289
    282290        // default destructor
     
    304312        scew_tree* tree;
    305313        scew_element* root;
    306        
    307         // flag to tell if we are responsible for calling scew_tree_free
    308         // on the tree structure. if we get our tree by using the scew_tree_create
    309         // fxn, we need to free it. if we get our tree using the scew_parser_tree
     314
     315        // flag to tell if we are responsible for calling scew_tree_free
     316        // on the tree structure. if we get our tree by using the
     317        // scew_tree_create
     318        // fxn, we need to free it. if we get our tree using the
     319        // scew_parser_tree
    310320        // fxn, then it will be free'd when the parser is free'd.
    311321        int freeTree;
     
    316326                tree        (NULL),
    317327                root        (node)
    318                    
     328
    319329        {}
    320330
     
    324334        std::string _node2name (scew_element* node);
    325335        std::string _node2comp (scew_element* node);
    326         int _splitPath (std::string& path, 
    327                         std::string& tagName, 
    328                         int* idx, 
     336        int _splitPath (std::string& path,
     337                        std::string& tagName,
     338                        int* idx,
    329339                        std::string& id );
    330         scew_element* _find (std::string path, int create); 
     340        scew_element* _find (std::string path, int create);
    331341        void print_indent (unsigned int indent, std::stringstream& outString);
    332342        void print_attributes (scew_element* element, std::stringstream& outString);
    333         void print_element( scew_element* element, 
    334                             unsigned int indent, 
     343        void print_element( scew_element* element,
     344                            unsigned int indent,
    335345                            std::stringstream& outString    );
    336346
Note: See TracChangeset for help on using the changeset viewer.