Enhancement - Record accessors

- Implemented a variety of get/set routines for Record.
This commit is contained in:
Paul Beckingham 2009-05-23 18:51:37 -04:00
parent 0eff6fa2b1
commit 2e5e20e3e5
4 changed files with 63 additions and 24 deletions

View file

@ -25,6 +25,8 @@
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include <sstream>
#include "util.h"
#include "Record.h" #include "Record.h"
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -63,3 +65,56 @@ void Record::parse (const std::string& input)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::vector <Att> Record::all ()
{
std::vector <Att> all;
foreach (a, mAtts)
all.push_back (a->second);
return all;
}
////////////////////////////////////////////////////////////////////////////////
const std::string Record::get (const std::string& name)
{
if (mAtts.find (name) != mAtts.end ())
return mAtts[name].value ();
return "";
}
////////////////////////////////////////////////////////////////////////////////
int Record::getInt (const std::string& name)
{
if (mAtts.find (name) != mAtts.end ())
return ::atoi (mAtts[name].value ().c_str ());
return 0;
}
////////////////////////////////////////////////////////////////////////////////
void Record::set (const std::string& name, const std::string& value)
{
mAtts[name] = Att (name, value);
}
////////////////////////////////////////////////////////////////////////////////
void Record::set (const std::string& name, int value)
{
std::stringstream svalue;
svalue << value;
mAtts[name] = Att (name, svalue.str ());
}
////////////////////////////////////////////////////////////////////////////////
void Record::remove (const std::string& name)
{
std::map <std::string, Att> copy = mAtts;
mAtts.clear ();
foreach (i, copy)
if (i->first != name)
mAtts[i->first] = i->second;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -28,6 +28,7 @@
#define INCLUDED_RECORD #define INCLUDED_RECORD
#include <vector> #include <vector>
#include <map>
#include "Att.h" #include "Att.h"
class Record class Record
@ -42,16 +43,15 @@ public:
virtual std::string composeCSV () = 0; virtual std::string composeCSV () = 0;
void parse (const std::string&); void parse (const std::string&);
/* std::vector <Att> all ();
void getAttributes (std::map<std::string, std::string>&); const std::string get (const std::string&);
const std::string getAttribute (const std::string&); int getInt (const std::string&);
void setAttribute (const std::string&, const std::string&); void set (const std::string&, const std::string&);
void setAttributes (const std::map <std::string, std::string>&); void set (const std::string&, int);
void removeAttribute (const std::string&); void remove (const std::string&);
*/
private: private:
std::vector <Att> mAtts; std::map <std::string, Att> mAtts;
}; };
#endif #endif

View file

@ -215,21 +215,6 @@ void T::setAttribute (const std::string& name, const std::string& value)
mAttributes[name] = value; mAttributes[name] = value;
} }
////////////////////////////////////////////////////////////////////////////////
void T::setAttributes (const std::map <std::string, std::string>& attributes)
{
foreach (i, attributes)
{
if (i->first.find (' ') != std::string::npos)
throw std::string ("An attribute name may not contain spaces");
if (i->second.find (' ') != std::string::npos)
throw std::string ("An attribute value may not contain spaces");
mAttributes[i->first] = i->second;
}
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::removeAttribute (const std::string& name) void T::removeAttribute (const std::string& name)
{ {

View file

@ -77,7 +77,6 @@ public:
void getAttributes (std::map<std::string, std::string>&); void getAttributes (std::map<std::string, std::string>&);
const std::string getAttribute (const std::string&); const std::string getAttribute (const std::string&);
void setAttribute (const std::string&, const std::string&); void setAttribute (const std::string&, const std::string&);
void setAttributes (const std::map <std::string, std::string>&);
void removeAttribute (const std::string&); void removeAttribute (const std::string&);
void getAnnotations (std::map <time_t, std::string>&) const; void getAnnotations (std::map <time_t, std::string>&) const;