Hello!
I would like to save an object of the bellow declared BPM_ALL_BASE.
This class has two pointer to call the class 'monitor_info'.
First I declared a static array of 'single_monitor' in 'monitor_info' and the
root standard streamer functions decomposed this array properly so that the
needed data could be saved to file.
I decided to use a variable length array to save some memory because both
'monitor_info' classes differs largely in size (factor 1000:1) but can and
should be described equally.
Is there a easy solution to save a variable length array of C struct without
decomposing the C struct into three singular arrays or to write a new
streamer?
Thanks in advance.
Ralph Steinhagen
[..] excerpts out of the code
struct single_monitor
{
Char_t name[20];
Float_t pos;
Int_t plane; // 1: horizontal 2: vertical
};
class monitor_info: public TObject
{ public:
monitor_info();
~monitor_info();
Int_t GetMonitorCount();
Char_t* GetMonitorName(Int_t i);
Float_t GetMonitorPosition(Int_t i);
Int_t GetMonitorPlane(Int_t i);
const Char_t* GetMonitorNamePlane(Int_t i);
Int_t AddMonitor(Int_t i, Char_t *name, Float_t pos, Int_t plane);
Int_t IsMonitorPlane(Int_t i, Int_t plane);
private:
Int_t fcount;
single_monitor *fmonitor; //[fcount]
ClassDef(monitor_info,1)
};
class BPM_ALL_BASE : public TObject
{
public:
Int_t Cycletype;
monitor_info *MOPOS_Monitor; //->
monitor_info *REALTIME_Monitor; //->
BPM_ALL_BASE();
~BPM_ALL_BASE();
private:
ClassDef(BPM_ALL_BASE,1)
};
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET