Boost logo

Boost Users :

From: Graham Hudspith (graham.hudspith_at_[hidden])
Date: 2006-09-14 08:44:45


Another "basic" question for the list again, apologies in advance.

 

I have a class with a data member which is an enumeration, e.g.:

 

typedef enum param_choice

{

PARAM_CHOICE_UINT8,

PARAM_CHOICE_UINT16,

PARAM_CHOICE_UINT32,

PARAM_CHOICE_INT8,

PARAM_CHOICE_BOOL

} param_choice_e;

 

I can quite happily user the Boost Serialization library to save and restore
a class with a data member of this type:

 

class Stuff

{

friend std::ostream& operator<<(std::ostream& os, const Stuff& stuff

    

friend class boost::serialization::access;

 

template<class Archive>

void serialize(Archive& ar, const unsigned int file_version)

{

ar & BOOST_SERIALIZATION_NVP(choice);

}

    

param_choice choice;

 

public:

Stuff () {}

    

Stuff (param_choice theChoice);

};

 

This is using XML as the file-format. The data member appears in the file as
an integer.

 

However, what I would LIKE to do is output the value of "choice" as a string
(e.g. instead of outputing <choice>2</choice>, the file contains
<choice>UINT32</choice>). And do a conversion when I read it all back in
again, of course.

 

Can someone please provide some pointers to where I can find out how to do
this? Or an example?

 

Is the solution going to end up along the lines of:

 

* Split the serialize into separate load and save routines
* In the save, convert the data member into a string and output this
to the archive
* In the load, input from the archive into a string and then store
this into the data member

 

Best regards in anticipation,

 

Graham.

 



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net