$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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.