119 typedef std::pair<ANamedItem *, std::pair<ANamedItem *,DataLink *> >
FullItem;
123 std::vector <ANamedItem *> fDataItems;
125 std::vector <DataLink *> fDataLinks;
131 std::vector< FullItem > fArrayOfItems;
132 std::vector< FullItem > fArrayOfIdleItems;
136 FullItem *IsAnItem(
const Char_t *,
const Char_t *);
140 FullItem *IsAIdleItem(
const Char_t *,
const Char_t *);
181 if ( fitem->second.first == 0x0 )
182 proxy = fitem->second.first = fitem->first->
MakeAProxy();
184 proxy = fitem->second.first;
190 if ( fitem->second.first )
191 proxy = fitem->second.first;
193 proxy = fitem->second.first = fitem->first->
MakeAProxy();
199 p.second.second = 0x0;
201 fArrayOfIdleItems.push_back( p );
203 proxy = p.second.first;
212 template <
typename Data_t> Bool_t
Link(
const char *name, Data_t *external_address)
214 Bool_t ok =
false;
FullItem *fitem = 0x0;
219 if ( fitem->second.second == 0x0 ) {
221 fitem->second.second = fitem->first->MakeADataLink(external_address);
222 fDataLinks.push_back(fitem->second.second);
231 if ( fitem->second.second == 0x0 ) {
233 fitem->second.second = fitem->first->MakeADataLink(external_address);
234 fDataLinks.push_back(fitem->second.second);
242 p.second.first = 0x0;
245 fArrayOfIdleItems.push_back( p );
252 Bool_t
LinkItem(
const Char_t *,
const Char_t *,
void *);
254 Bool_t
LinkItem(
const Char_t *name, Short_t *address);
255 Bool_t
LinkItem(
const Char_t *name, UShort_t *address);
256 Bool_t
LinkItem(
const Char_t *name, Int_t *address);
257 Bool_t
LinkItem(
const Char_t *name, UInt_t *address);
258 Bool_t
LinkItem(
const Char_t *name, Float_t *address);
259 Bool_t
LinkItem(
const Char_t *name, Double_t *address);
260 Bool_t
LinkItem(
const Char_t *name, Long64_t *address);
261 Bool_t
LinkItem(
const Char_t *name, ULong64_t *address);
265 {
return fDataLinks.size() == fDataItems.size(); }
278 virtual void Reset();
288 virtual void Print(std::ostream &out = std::cout)
const ;
296 static const UShort_t kMaxSize = 256u;
305 template<
typename Data_T> Data_T
Get(UShort_t offset = 0u)
const
307 if ( (offset+
sizeof(Data_T)) < kMaxSize )
308 return (*(Data_T*)(
fData+offset));
312 template<
typename Data_T>
void Set(
const Data_T data, UShort_t offset = 0u)
314 if ( (offset+
sizeof(Data_T)) < kMaxSize )
315 *((Data_T*)(
fData+offset)) = data;
328 std::ostream &
operator << (std::ostream &,
const Anonymous & );
329 BufferIO &
operator << (BufferIO &,
const Anonymous & );
330 const BufferIO &
operator >> (
const BufferIO &, Anonymous &);
346 { fGObject.
Reset(); }
354 {
return &fGObject; }
Data_T Get(UShort_t offset=0u) const
virtual ANamedItem * MakeAProxy()
ask this to create a proxy for it
std::ostream & operator<<(std::ostream &, const Anonymous &)
A DataLink links too variables in memory.
virtual Bool_t AddItem(ANamedItem *item)
Add a named item to this. The item belongs to GObject and will be thus deleted.
Base class for a Global Object.
Bool_t Link(const char *name, Data_t *external_address)
General method to Link one item with an external address.
virtual void Reset()
Set local to default.
void TransferLinkAndProxy(GObject &to)
transfert proxy and link for one GObject to another one
Bool_t LinkItem(const Char_t *, const Char_t *, void *)
Only for basic type ... otherwise better to use the most general Link method.
std::pair< ANamedItem *, std::pair< ANamedItem *, DataLink * > > FullItem
a full item is composed of a pointer to an item, an pointer to a proxy and a pointer to a datalink ...
virtual DataLink * MakeADataLink(void *extern_add)
ask this to create a suitable DataLink
friend const BufferIO & operator>>(const BufferIO &, Anonymous &)
void Set(const Data_T data, UShort_t offset=0u)
header file for DataHandling.cpp
const BufferIO & operator>>(const BufferIO &, Anonymous &)
virtual Bool_t IsFullyLinked() const
to check if all the items are linked with external variables
virtual ANamedItem * MakeAProxy()=0
ask this to create a proxy for that item
virtual ~GObject()
Destructor.
const NamedItem< Data_t > * Get(const char *name)
to get a given item (reading mode only !!)
const char * NamedItemTypeOf(Bool_t)
Anonymous operator=(const Anonymous &a)
virtual void Print(std::ostream &out=std::cout) const
print some informations about this object
Base class for a DataInterface.
friend std::ostream & operator<<(std::ostream &, const Anonymous &)
virtual void SetItems()
Copy external variables into locals.
virtual void GetItems() const
Copy local variables into externals.
virtual GObject * Global()