ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
SG::AuxElementPrivateData Class Reference

Internal data container for private store. More...

Inheritance diagram for SG::AuxElementPrivateData:
Collaboration diagram for SG::AuxElementPrivateData:

Public Member Functions

 AuxElementPrivateData ()
 
virtual size_t size_v () const
 Return the size of the container. More...
 
virtual size_t capacity_v () const
 Return the capacity of the container. More...
 

Private Attributes

AuxStoreStandalone m_store
 

Aux store management.

const SG::IConstAuxStoregetConstStore () const
 Return the current store, as a const interface. More...
 
const DataLink< SG::IConstAuxStoregetConstStoreLink () const
 Return the data link to the current store, as a const interface. More...
 
SG::IAuxStoregetStore ()
 Return the current store, as a non-const interface. More...
 
const SG::IAuxStoregetStore () const
 Return the current store, as a non-const interface. More...
 
bool hasStore () const
 Return true if this object has an associated store. More...
 
bool hasNonConstStore () const
 Return true if this object has an associated non-const store. More...
 
bool setOption (auxid_t id, const AuxDataOption &option)
 Set an option for an auxiliary data variable. More...
 
bool setOption (const std::string &name, const AuxDataOption &option)
 Set an option for an auxiliary data variable. More...
 
bool setOption (const std::string &name, const std::string &clsname, const AuxDataOption &option)
 Set an option for an auxiliary data variable. More...
 
template<class T >
bool setOption (auxid_t id, const std::string &optname, T arg)
 Set an option for an auxiliary data variable. More...
 
bool setOption (const std::string &name, const std::string &optname, int arg)
 Set an option for an auxiliary data variable. More...
 
bool setOption (const std::string &name, const std::string &optname, float arg)
 
bool setOption (const std::string &name, const std::string &optname, double arg)
 
template<class T >
bool setOption (const std::string &name, const std::string &clsname, const std::string &optname, T arg)
 Set an option for an auxiliary data variable. More...
 
void setStore (SG::IAuxStore *store)
 Set the store associated with this object. More...
 
void setStore (const SG::IConstAuxStore *store)
 Set the store associated with this object. More...
 
void setStore (const DataLink< SG::IConstAuxStore > &store)
 Set the store associated with this object. More...
 
void setNonConstStore (SG::IAuxStore *store)
 Set the store associated with this object. More...
 

Data access.

const SG::auxid_set_tgetAuxIDs () const
 Return a set of identifiers for existing data items in store associated with this object. More...
 
const SG::auxid_set_tgetWritableAuxIDs () const
 Return a set of identifiers for writable data items in this store. More...
 
bool isAvailable (auxid_t id) const
 Test to see if a variable exists in the store. More...
 
bool isAvailableWritable (auxid_t id)
 Test to see if a variable is available for writing. More...
 
bool isAvailableWritableAsDecoration (auxid_t id) const
 Test to see if a variable is available for writing as a decoration. More...
 
template<class T >
AuxDataTraits< T >::reference_type getData (SG::auxid_t auxid, size_t ndx)
 Return reference to an aux data item. More...
 
template<class T >
AuxDataTraits< T >::const_reference_type getData (SG::auxid_t auxid, size_t ndx) const
 Return const reference to an aux data item. More...
 
template<class T >
AuxDataTraits< T >::reference_type getDecoration (SG::auxid_t auxid, size_t ndx) const
 Return reference to an aux decoration item. More...
 
const void * getDataArray (SG::auxid_t auxid) const
 Return a const pointer to the start of an aux data vector. More...
 
void * getDataArray (SG::auxid_t auxid)
 Return a pointer to the start of an aux data vector. More...
 
const void * getDataArrayAllowMissing (SG::auxid_t auxid) const
 Return a const pointer to the start of an aux data vector. More...
 
void * getDecorationArray (SG::auxid_t auxid) const
 Return a pointer to the start of an aux data vector for a decoration. More...
 
static size_t s_minCacheLen ATLAS_THREAD_SAFE
 Minimum length to use for the cache vector. More...
 

Other operations.

Cache m_cache ATLAS_THREAD_SAFE
 Cached pointers to the start of aux data vectors, non-const. More...
 
Cache m_constCache ATLAS_THREAD_SAFE
 Cached pointers to the start of aux data vectors, const. More...
 
Cache m_decorCache ATLAS_THREAD_SAFE
 Cached pointers to the start of aux data vectors, decorations. More...
 
const SG::IConstAuxStorem_constStore
 Associated store, const. More...
 
DataLink< SG::IConstAuxStorem_constStoreLink
 Associated store link, const. More...
 
mutex_t m_mutex
 
void swap (AuxVectorData &other)
 Swap this instance with another. More...
 
void clearCache ()
 Clear the cached aux data pointers. More...
 
void clearDecorCache (SG::auxid_t auxid)
 Clear the cached decoration pointer for a single variable. More...
 
virtual void lock () override
 Lock the container. More...
 
bool clearDecorations () const
 Clear all decorations. More...
 
typedef AthContainers_detail::mutex mutex_t
 Mutex used to synchronize modifications to the cache vector. More...
 
typedef AthContainers_detail::lock_guard< mutex_tguard_t
 
static const SG::auxid_set_t s_emptySet
 Empty auxid set, used for a return value when we have no associated store. More...
 
void setCache (SG::auxid_t auxid, void *ptr)
 Explicitly set a cache pointer. More...
 
void setCache (SG::auxid_t auxid, const void *ptr)
 Explicitly set a cache pointer. More...
 
bool isAvailableOol (auxid_t id) const
 Out-of-line portion of isAvailable. More...
 
bool isAvailableWritableOol (auxid_t id)
 Out-of-line portion of isAvailableWritable. More...
 
bool isAvailableWritableAsDecorationOol (auxid_t id) const
 Out-of-line portion of isAvailableWritableAsDecoration. More...
 
void * getDataOol (SG::auxid_t auxid, bool allowMissing)
 Out-of-line portion of data access. More...
 
const void * getDataOol (SG::auxid_t auxid, bool allowMissing) const
 Out-of-line portion of data access (const version). More...
 
void * getDecorationOol (SG::auxid_t auxid) const
 Out-of-line portion of data access (decorator version). More...
 

Detailed Description

Internal data container for private store.

This is used when we have a private aux store. It contains an embedded store object.

Definition at line 43 of file AuxElement.cxx.

Member Typedef Documentation

◆ guard_t

typedef AthContainers_detail::lock_guard<mutex_t> SG::AuxVectorData::guard_t
privateinherited

Definition at line 912 of file AuxVectorData.h.

◆ mutex_t

typedef AthContainers_detail::mutex SG::AuxVectorData::mutex_t
privateinherited

Mutex used to synchronize modifications to the cache vector.

Definition at line 911 of file AuxVectorData.h.

Constructor & Destructor Documentation

◆ AuxElementPrivateData()

SG::AuxElementPrivateData::AuxElementPrivateData ( )
inline

Definition at line 47 of file AuxElement.cxx.

48  {
49  this->setStore (&m_store);
50  }

Member Function Documentation

◆ capacity_v()

virtual size_t SG::AuxElementData::capacity_v ( ) const
inlinevirtualinherited

Return the capacity of the container.

This is used when we need to create a new aux data vector.

Implements SG::AuxVectorData.

Definition at line 33 of file AuxElement.cxx.

33 { return 1; }

◆ clearCache()

void SG::AuxVectorData::clearCache ( )
inherited

Clear the cached aux data pointers.

You should call this any time something changes in the aux store that could invalidate the vector pointers.

◆ clearDecorations()

bool SG::AuxVectorData::clearDecorations ( ) const
inherited

Clear all decorations.

Erase all decorations from the store, restoring the state to when lock was called.

Returns true if there were any decorations that were cleared, false if the store did not contain any decorations.

Definition at line 609 of file AuxVectorData.cxx.

610 {
611  bool ret = false;
612  if (m_store) {
613  // Avoid warning about calling non-const function. OK here.
614  IAuxStore* store ATLAS_THREAD_SAFE = m_store;
615  ret = store->clearDecorations();
616  m_cache.clear();
617  m_constCache.clear();
618  m_decorCache.clear();
619  }
620  else if (getConstStore()) {
621  // The whole point of decorations is to allow adding information to
622  // something that's otherwise const. So we have the const_cast here.
623  // The store object is responsible for determining whether the
624  // modification is really allowed or not.
625  IConstAuxStore* store ATLAS_THREAD_SAFE =
626  const_cast<IConstAuxStore*> (getConstStore());
627  ret = store->clearDecorations();
628  }
629  else
630  throw SG::ExcNoAuxStore ("lock");
631  return ret;
632 }

◆ clearDecorCache()

void SG::AuxVectorData::clearDecorCache ( SG::auxid_t  auxid)
inherited

Clear the cached decoration pointer for a single variable.

Parameters
auxidID of the variable to clear.

Not really safe to use if another thread may be accessing the same decoration.

Definition at line 576 of file AuxVectorData.cxx.

577 {
578  guard_t guard (m_mutex);
579  m_decorCache.clear (auxid);
580 }

◆ getAuxIDs()

const SG::auxid_set_t & SG::AuxVectorData::getAuxIDs ( ) const
inherited

Return a set of identifiers for existing data items in store associated with this object.

This will include identifiers for all items, const and non-const. If no store is associated with this object, this will return an empty set.

Definition at line 201 of file AuxVectorData.cxx.

202 {
203  if (getConstStore())
204  return getConstStore()->getAuxIDs();
205  return s_emptySet;
206 }

◆ getConstStore()

const SG::IConstAuxStore* SG::AuxVectorData::getConstStore ( ) const
inherited

Return the current store, as a const interface.

This will be non-zero if either a const or non-const store is associated with this object.

◆ getConstStoreLink()

const DataLink<SG::IConstAuxStore> SG::AuxVectorData::getConstStoreLink ( ) const
inherited

Return the data link to the current store, as a const interface.

This is set by persistency when reading an object, but it may be overridden by setting the store pointer directly.

◆ getData() [1/2]

template<class T >
AuxDataTraits<T>::reference_type SG::AuxVectorData::getData ( SG::auxid_t  auxid,
size_t  ndx 
)
inherited

Return reference to an aux data item.

Parameters
auxidThe desired aux data item.
ndxIndex of the element to return.

This will return a reference to element ndx of aux data item auxid. If the aux data item does not exist, it will be created. Errors are signaled by raising an exception.

Warning: no type checking is done. You should usually access the data via Accessor or ConstAccessor.

◆ getData() [2/2]

template<class T >
AuxDataTraits<T>::const_reference_type SG::AuxVectorData::getData ( SG::auxid_t  auxid,
size_t  ndx 
) const
inherited

Return const reference to an aux data item.

Parameters
auxidThe desired aux data item.
ndxIndex of the element to return.

This will return a reference to element ndx of aux data item auxid. Errors are signaled by raising an exception.

Warning: no type checking is done. You should usually access the data via Accessor or ConstAccessor.

◆ getDataArray() [1/2]

void* SG::AuxVectorData::getDataArray ( SG::auxid_t  auxid)
inherited

Return a pointer to the start of an aux data vector.

Parameters
auxidThe desired aux data item.

This will return a pointer to the start of the data for aux data item auxid. If the item doesn't exist, it will be created. Errors are signaled by raising an exception.

◆ getDataArray() [2/2]

const void* SG::AuxVectorData::getDataArray ( SG::auxid_t  auxid) const
inherited

Return a const pointer to the start of an aux data vector.

Parameters
auxidThe desired aux data item.

This will return a pointer to the start of the data for aux data item auxid. Errors are signaled by raising an exception.

◆ getDataArrayAllowMissing()

const void* SG::AuxVectorData::getDataArrayAllowMissing ( SG::auxid_t  auxid) const
inherited

Return a const pointer to the start of an aux data vector.

Parameters
auxidThe desired aux data item.

This will return a pointer to the start of the data for aux data item auxid. If the item does not exist, this will return nullptr rather than raising an exception.

◆ getDataOol() [1/2]

void * SG::AuxVectorData::getDataOol ( SG::auxid_t  auxid,
bool  allowMissing 
)
privateinherited

Out-of-line portion of data access.

Parameters
auxidaux data item being accessed.
allowMissingIf true, then return nullptr if the variable is missing rather than throwing an exception.

When this function returns, the cache entry m_cache[auxid] will be valid. That entry is also returned. If there's an error, the function will throw an exception rather than returning.

Definition at line 294 of file AuxVectorData.cxx.

295 {
296  guard_t guard (m_mutex);
297 
298  // Fetch the pointer from the store, or raise an exception if we don't
299  // have a non-const store.
300  void* ptr = 0;
301  if (m_store) {
302  if (SG::AuxTypeRegistry::instance().isLinked (auxid)) {
303  ptr = m_store->getData (auxid, 0, 0);
304  }
305  else {
306  ptr = m_store->getData (auxid, this->size_v(), this->capacity_v());
307  }
308  }
309  else if (getConstStore())
310  throw SG::ExcConstAuxData ("fetch item", auxid);
311  else
312  throw SG::ExcNoAuxStore (auxid);
313 
314  // Check that we got a good pointer back, otherwise throw.
315  if (ptr) {
316  m_cache.store (auxid, ptr);
317 
318  // Set the same entry in the other caches as well.
319  m_constCache.store (auxid, ptr);
320  m_decorCache.store (auxid, ptr);
321  }
322  else if (!allowMissing)
323  throw SG::ExcBadAuxVar (auxid);
324 
325  return ptr;
326 }

◆ getDataOol() [2/2]

const void * SG::AuxVectorData::getDataOol ( SG::auxid_t  auxid,
bool  allowMissing 
) const
privateinherited

Out-of-line portion of data access (const version).

Parameters
auxidaux data item being accessed.
allowMissingIf true, then return nullptr if the variable is missing rather than throwing an exception.

When this function returns, the cache entry m_constCache[auxid] will be valid. That entry is also returned. If there's an error, the function will throw an exception rather than returning.

Definition at line 339 of file AuxVectorData.cxx.

341 {
342  guard_t guard (m_mutex);
343 
344  // Fetch the pointer from the store, or raise an exception if we don't
345  // have a const store.
346  const void* ptr = 0;
347  if (getConstStore())
348  ptr = getConstStore()->getData (auxid);
349  else
350  throw SG::ExcNoAuxStore (auxid);
351 
352  // Check that we got a good pointer back, otherwise throw.
353  if (ptr) {
354  // We could avoid the const_cast here by having distinct const and
355  // non-const Cache types, holding const void* and void*, respectively.
356  // However, since this is a purely internal class that users don't
357  // deal with directly, that's not worth the bother (and the extra code).
358  void* vp ATLAS_THREAD_SAFE = const_cast<void*> (ptr);
359  m_constCache.store (auxid, vp);
360  }
361  else if (!allowMissing)
362  throw SG::ExcBadAuxVar (auxid);
363 
364  return ptr;
365 }

◆ getDecoration()

template<class T >
AuxDataTraits<T>::reference_type SG::AuxVectorData::getDecoration ( SG::auxid_t  auxid,
size_t  ndx 
) const
inherited

Return reference to an aux decoration item.

Parameters
auxidThe desired aux decoration item.
ndxIndex of the element to return.

This will return a reference to element ndx of aux decoration item auxid. If the aux data item does not exist, it will be created. Errors are signaled by raising an exception.

Warning: no type checking is done. You should usually access the data via Decorator.

The difference between getDecoration and getData is that getDecoration takes a const container as input, but returns a non-const reference. This will only succeed if either the container is not locked or the item was first accessed as a decoration.

◆ getDecorationArray()

void* SG::AuxVectorData::getDecorationArray ( SG::auxid_t  auxid) const
inherited

Return a pointer to the start of an aux data vector for a decoration.

Parameters
auxidThe desired aux data item.

This will return a pointer to the start of the data for aux data item auxid. If the item doesn't exist, it will be created. Errors are signaled by raising an exception.

The difference between getDecorationArray and getDataArray is that getDecorationArray takes a const container as input, but returns a non-const pointer. This will only succeed if either the container is not locked or the item was first accessed as a decoration.

◆ getDecorationOol()

void * SG::AuxVectorData::getDecorationOol ( SG::auxid_t  auxid) const
privateinherited

Out-of-line portion of data access (decorator version).

Parameters
auxidaux data item being accessed.

When this function returns, the cache entry m_cache[auxid] will be valid. That entry is also returned. If there's an error, the function will throw an exception rather than returning.

The difference between getDecorationOol and getDataOol is that getDecorationOol takes a const container as input, but returns a non-const pointer. This will only succeed if either the container is not locked or the item was first accessed as a decoration.

Definition at line 382 of file AuxVectorData.cxx.

383 {
384  guard_t guard (m_mutex);
385 
386  // Fetch the pointer from the store, or raise an exception if we don't
387  // have a non-const store.
388  void* ptr = 0;
389  if (m_store) {
390  // Avoid warning about calling non-const function. OK here.
391  IAuxStore* store ATLAS_THREAD_SAFE = m_store;
392  if (SG::AuxTypeRegistry::instance().isLinked (auxid)) {
393  ptr = store->getDecoration (auxid, 0, 0);
394  }
395  else {
396  ptr = store->getDecoration (auxid, this->size_v(), this->capacity_v());
397  }
398  }
399  else if (getConstStore()) {
400  // The whole point of decorations is to allow adding information to
401  // something that's otherwise const. So we have the const_cast here.
402  // The store object is responsible for determining whether the
403  // modification is really allowed or not.
404  IConstAuxStore* store ATLAS_THREAD_SAFE =
405  const_cast<IConstAuxStore*> (getConstStore());
406  if (SG::AuxTypeRegistry::instance().isLinked (auxid)) {
407  ptr = store->getDecoration (auxid, 0, 0);
408  }
409  else {
410  ptr = store->getDecoration (auxid, this->size_v(), this->capacity_v());
411  }
412  }
413  else
414  throw SG::ExcNoAuxStore (auxid);
415 
416  // Check that we got a good pointer back, otherwise throw.
417  if (!ptr)
418  throw SG::ExcBadAuxVar (auxid);
419 
420  m_decorCache.store (auxid, ptr);
421 
422  // Set the same entry in the const cache as well.
423  m_constCache.store (auxid, ptr);
424 
425  return ptr;
426 }

◆ getStore() [1/2]

SG::IAuxStore* SG::AuxVectorData::getStore ( )
inherited

Return the current store, as a non-const interface.

This will be non-zero if a non-const store is associated with this object.

◆ getStore() [2/2]

const SG::IAuxStore* SG::AuxVectorData::getStore ( ) const
inherited

Return the current store, as a non-const interface.

This will be non-zero if a non-const store is associated with this object.

◆ getWritableAuxIDs()

const SG::auxid_set_t & SG::AuxVectorData::getWritableAuxIDs ( ) const
inherited

Return a set of identifiers for writable data items in this store.

This will include only non-const identifiers. If no store is associated with this object, this will return an empty set.

Definition at line 217 of file AuxVectorData.cxx.

218 {
219  if (m_store)
220  return m_store->getWritableAuxIDs();
221  return s_emptySet;
222 }

◆ hasNonConstStore()

bool SG::AuxVectorData::hasNonConstStore ( ) const
inherited

Return true if this object has an associated non-const store.

◆ hasStore()

bool SG::AuxVectorData::hasStore ( ) const
inherited

Return true if this object has an associated store.

◆ isAvailable()

bool SG::AuxVectorData::isAvailable ( auxid_t  id) const
inherited

Test to see if a variable exists in the store.

Parameters
idThe variable to test.

◆ isAvailableOol()

bool SG::AuxVectorData::isAvailableOol ( auxid_t  id) const
privateinherited

Out-of-line portion of isAvailable.

Parameters
idThe variable to test.

Definition at line 229 of file AuxVectorData.cxx.

230 {
231  guard_t guard (m_mutex);
232 
234  if (!store) return false;
235 
236  // Don't rely on getAuxIDs() --- the store can lie.
237  // Explicitly try to fetch the data.
238  const void* ptr = store->getData (id);
239  if (ptr) {
240  // We could avoid the const_cast here by having distinct const and
241  // non-const Cache types, holding const void* and void*, respectively.
242  // However, since this is a purely internal class that users don't
243  // deal with directly, that's not worth the bother (and the extra code).
244  void* vp ATLAS_THREAD_SAFE = const_cast<void*> (ptr);
245  m_constCache.store (id, vp);
246  return true;
247  }
248  return false;
249 }

◆ isAvailableWritable()

bool SG::AuxVectorData::isAvailableWritable ( auxid_t  id)
inherited

Test to see if a variable is available for writing.

Parameters
idThe variable to test.

◆ isAvailableWritableAsDecoration()

bool SG::AuxVectorData::isAvailableWritableAsDecoration ( auxid_t  id) const
inherited

Test to see if a variable is available for writing as a decoration.

Parameters
idThe variable to test.

◆ isAvailableWritableAsDecorationOol()

bool SG::AuxVectorData::isAvailableWritableAsDecorationOol ( auxid_t  id) const
privateinherited

Out-of-line portion of isAvailableWritableAsDecoration.

Parameters
idThe variable to test.

Definition at line 268 of file AuxVectorData.cxx.

269 {
270  if (!isAvailableOol (id)) return false;
271 
272  // Not nice, but not sure we can do otherwise without changing interfaces.
273  // I think the case of a caught exception should be rare.
274  try {
275  this->getDecorationArray (id);
276  }
277  catch (const SG::ExcStoreLocked&) {
278  return false;
279  }
280  return true;
281 }

◆ isAvailableWritableOol()

bool SG::AuxVectorData::isAvailableWritableOol ( auxid_t  id)
privateinherited

Out-of-line portion of isAvailableWritable.

Parameters
idThe variable to test.

Definition at line 256 of file AuxVectorData.cxx.

257 {
258  const SG::IAuxStore* store = getStore();
259  if (!store) return false;
260  return store->getWritableAuxIDs().test(id);
261 }

◆ lock()

void SG::AuxVectorData::lock ( )
overridevirtualinherited

Lock the container.

After this, only decorations can be changed/modified. If the container is already locked, this is a no-op.

Implements ILockable.

Definition at line 589 of file AuxVectorData.cxx.

590 {
591  if (m_store) {
592  m_store->lock();
593  clearCache();
594  }
595 
596  // No error if no store or no writable store.
597 }

◆ setCache() [1/2]

void SG::AuxVectorData::setCache ( SG::auxid_t  auxid,
const void *  ptr 
)
protectedinherited

Explicitly set a cache pointer.

Parameters
auxidVariable ID to set.
ptrPointer to which the cache entry should be set.

For internal use; do not use from user code. This does not acquire the lock — it's mostly meant to be used from a constructor.

◆ setCache() [2/2]

void SG::AuxVectorData::setCache ( SG::auxid_t  auxid,
void *  ptr 
)
protectedinherited

Explicitly set a cache pointer.

Parameters
auxidVariable ID to set.
ptrPointer to which the cache entry should be set.

For internal use; do not use from user code. This does not acquire the lock — it's mostly meant to be used from a constructor.

◆ setNonConstStore()

void SG::AuxVectorData::setNonConstStore ( SG::IAuxStore store)
protectedinherited

Set the store associated with this object.

Parameters
storeThe new store.

This will set both the const and non-const store pointers, and also clear the cache. This is the same as setStore() above with the same signature. It exists so that it can be called from python; pyroot would not be able to call the non-const overload of setStore due to its simplistic overload resolution.

◆ setOption() [1/8]

bool SG::AuxVectorData::setOption ( auxid_t  id,
const AuxDataOption option 
)
inherited

Set an option for an auxiliary data variable.

Parameters
idThe variable for which we want to set the option.
optionThe option setting to make.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

Definition at line 148 of file AuxVectorData.cxx.

149 {
150  if (id == null_auxid) return false;
152  if (!store) return false;
153  return store->setOption (id, option);
154 }

◆ setOption() [2/8]

template<class T >
bool SG::AuxVectorData::setOption ( auxid_t  id,
const std::string &  optname,
arg 
)
inherited

Set an option for an auxiliary data variable.

Parameters
idThe variable for which we want to set the option.
optnameThe name of the option to set.
argThe option value to set.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

◆ setOption() [3/8]

bool SG::AuxVectorData::setOption ( const std::string &  name,
const AuxDataOption option 
)
inherited

Set an option for an auxiliary data variable.

Parameters
nameThe name of the variable.
optionThe option setting to make.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

Definition at line 166 of file AuxVectorData.cxx.

168 {
170  return setOption (id, option);
171 }

◆ setOption() [4/8]

bool SG::AuxVectorData::setOption ( const std::string &  name,
const std::string &  clsname,
const AuxDataOption option 
)
inherited

Set an option for an auxiliary data variable.

Parameters
nameThe name of the variable.
clsnameThe name of the associated class. May be blank.
optionThe option setting to make.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

Definition at line 184 of file AuxVectorData.cxx.

187 {
189  return setOption (id, option);
190 }

◆ setOption() [5/8]

template<class T >
bool SG::AuxVectorData::setOption ( const std::string &  name,
const std::string &  clsname,
const std::string &  optname,
arg 
)
inherited

Set an option for an auxiliary data variable.

Parameters
nameThe name of the variable.
clsnameThe name of the associated class. May be blank.
optnameThe name of the option to set.
argThe option value to set.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

◆ setOption() [6/8]

bool SG::AuxVectorData::setOption ( const std::string &  name,
const std::string &  optname,
double  arg 
)
inherited

◆ setOption() [7/8]

bool SG::AuxVectorData::setOption ( const std::string &  name,
const std::string &  optname,
float  arg 
)
inherited

◆ setOption() [8/8]

bool SG::AuxVectorData::setOption ( const std::string &  name,
const std::string &  optname,
int  arg 
)
inherited

Set an option for an auxiliary data variable.

Parameters
nameThe name of the variable.
optnameThe name of the option to set.
argThe option value to set.

The interpretation of option depends on the associated auxiliary store. See PackedParameters.h for option settings for writing packed data. Returns true on success, false otherwise.

◆ setStore() [1/3]

void SG::AuxVectorData::setStore ( const DataLink< SG::IConstAuxStore > &  store)
protectedinherited

Set the store associated with this object.

Parameters
storeThe new store.

This will clear the non-const store pointer, and also clear the cache.

Parameters
Thenew store.

This will clear the non-const store pointer, and also clear the cache.

Definition at line 130 of file AuxVectorData.cxx.

131 {
132  m_store = 0;
133  m_constStore = 0;
135  clearCache();
136 }

◆ setStore() [2/3]

void SG::AuxVectorData::setStore ( const SG::IConstAuxStore store)
protectedinherited

Set the store associated with this object.

Parameters
storeThe new store.

This will clear the non-const store pointer, and also clear the cache.

Parameters
Thenew store.

This will clear the non-const store pointer, and also clear the cache.

Definition at line 98 of file AuxVectorData.cxx.

99 {
100  m_store = 0;
103  clearCache();
104 }

◆ setStore() [3/3]

void SG::AuxVectorData::setStore ( SG::IAuxStore store)
protectedinherited

Set the store associated with this object.

Parameters
storeThe new store.

This will set both the const and non-const store pointers, and also clear the cache.

nb. List the non-const overload before the const one; otherwise, we can't call the const one from python.

Parameters
Thenew store.

This will set both the const and non-const store pointers, and also clear the cache.

Definition at line 114 of file AuxVectorData.cxx.

115 {
116  m_store = store;
119  clearCache();
120 }

◆ size_v()

virtual size_t SG::AuxElementData::size_v ( ) const
inlinevirtualinherited

Return the size of the container.

This is used when we need to create a new aux data vector.

Implements SG::AuxVectorData.

Definition at line 32 of file AuxElement.cxx.

32 { return 1; }

◆ swap()

void SG::AuxVectorData::swap ( AuxVectorData other)
inherited

Swap this instance with another.

Parameters
otherThe other instance with which to swap.

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/4]

size_t s_minCacheLen SG::AuxVectorData::ATLAS_THREAD_SAFE
staticprotectedinherited

Minimum length to use for the cache vector.

Only changed by unit tests.

Definition at line 571 of file AuxVectorData.h.

◆ ATLAS_THREAD_SAFE [2/4]

Cache m_cache SG::AuxVectorData::ATLAS_THREAD_SAFE
mutableprivateinherited

Cached pointers to the start of aux data vectors, non-const.

Definition at line 889 of file AuxVectorData.h.

◆ ATLAS_THREAD_SAFE [3/4]

Cache m_constCache SG::AuxVectorData::ATLAS_THREAD_SAFE
mutableprivateinherited

Cached pointers to the start of aux data vectors, const.

Definition at line 892 of file AuxVectorData.h.

◆ ATLAS_THREAD_SAFE [4/4]

Cache m_decorCache SG::AuxVectorData::ATLAS_THREAD_SAFE
mutableprivateinherited

Cached pointers to the start of aux data vectors, decorations.

Definition at line 895 of file AuxVectorData.h.

◆ m_constStore

const SG::IConstAuxStore* SG::AuxVectorData::m_constStore
privateinherited

Associated store, const.

Definition at line 903 of file AuxVectorData.h.

◆ m_constStoreLink

DataLink< SG::IConstAuxStore > SG::AuxVectorData::m_constStoreLink
privateinherited

Associated store link, const.

Definition at line 907 of file AuxVectorData.h.

◆ m_mutex

mutex_t SG::AuxVectorData::m_mutex
mutableprivateinherited

Definition at line 913 of file AuxVectorData.h.

◆ m_store

AuxStoreStandalone SG::AuxElementPrivateData::m_store
private

Definition at line 54 of file AuxElement.cxx.

◆ s_emptySet

const SG::auxid_set_t SG::AuxVectorData::s_emptySet
staticprivateinherited

Empty auxid set, used for a return value when we have no associated store.

Definition at line 916 of file AuxVectorData.h.


The documentation for this class was generated from the following file:
SG::AuxVectorData::getConstStore
const SG::IConstAuxStore * getConstStore() const
Return the current store, as a const interface.
SG::AuxVectorData::isAvailableOol
bool isAvailableOol(auxid_t id) const
Out-of-line portion of isAvailable.
Definition: AuxVectorData.cxx:229
store
StoreGateSvc * store
Definition: fbtTestBasics.cxx:69
SG::IConstAuxStore::getData
virtual const void * getData(SG::auxid_t auxid) const =0
Return the data vector for one aux data item.
SG::AuxVectorData::m_constStoreLink
DataLink< SG::IConstAuxStore > m_constStoreLink
Associated store link, const.
Definition: AuxVectorData.h:907
SG::AuxVectorData::ATLAS_THREAD_SAFE
static size_t s_minCacheLen ATLAS_THREAD_SAFE
Minimum length to use for the cache vector.
Definition: AuxVectorData.h:571
SG::AuxTypeRegistry::instance
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Definition: AuxTypeRegistry.cxx:49
DataLinkBase::clear
void clear()
Clear the link (make it null).
Definition: DataLinkBase.cxx:36
SG::AuxTypeRegistry::findAuxID
SG::auxid_t findAuxID(const std::string &name, const std::string &clsname="") const
Look up a name -> auxid_t mapping.
Definition: AuxTypeRegistry.cxx:159
SG::AuxVectorData::guard_t
AthContainers_detail::lock_guard< mutex_t > guard_t
Definition: AuxVectorData.h:912
SG::ExcStoreLocked
Exception — Attempted to modify auxiliary data in a locked store.
Definition: Control/AthContainers/AthContainers/exceptions.h:183
SG::ExcConstAuxData
Exception — Non-const operation performed on const aux data.
Definition: Control/AthContainers/AthContainers/exceptions.h:77
SG::AuxVectorData::getDecorationArray
void * getDecorationArray(SG::auxid_t auxid) const
Return a pointer to the start of an aux data vector for a decoration.
SG::AuxVectorData::m_constStore
const SG::IConstAuxStore * m_constStore
Associated store, const.
Definition: AuxVectorData.h:903
SG::AuxVectorData::setStore
void setStore(SG::IAuxStore *store)
Set the store associated with this object.
Definition: AuxVectorData.cxx:114
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
SG::AuxVectorData::s_emptySet
static const SG::auxid_set_t s_emptySet
Empty auxid set, used for a return value when we have no associated store.
Definition: AuxVectorData.h:916
SG::AuxElementPrivateData::m_store
AuxStoreStandalone m_store
Definition: AuxElement.cxx:54
SG::ExcBadAuxVar
Exception — Attempt to retrieve nonexistent aux data item.
Definition: Control/AthContainers/AthContainers/exceptions.h:59
ret
T ret(T t)
Definition: rootspy.cxx:260
SG::AuxVectorData::m_mutex
mutex_t m_mutex
Definition: AuxVectorData.h:913
SG::AuxVectorData::getStore
SG::IAuxStore * getStore()
Return the current store, as a non-const interface.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
SG::AuxTypeRegistry::isLinked
bool isLinked(SG::auxid_t auxid) const
Test whether this is a linked variable.
SG::AuxVectorData::clearCache
void clearCache()
Clear the cached aux data pointers.
SG::AuxVectorData::m_store
SG::IAuxStore * m_store
Associated store, non-const.
Definition: AuxVectorData.h:899
SG::IAuxStore::getWritableAuxIDs
virtual const SG::auxid_set_t & getWritableAuxIDs() const =0
Return a set of identifiers for writable data items in this store.
SG::IAuxStore
Interface for non-const operations on an auxiliary store.
Definition: IAuxStore.h:48
SG::IAuxStore::getData
virtual void * getData(auxid_t auxid, size_t size, size_t capacity)=0
Return the data vector for one aux data item.
SG::IConstAuxStore::lock
virtual void lock()=0
Lock the container.
SG::IConstAuxStore
Interface for const operations on an auxiliary store.
Definition: IConstAuxStore.h:64
SG::ExcNoAuxStore
Exception — Aux data requested from object with no store.
Definition: Control/AthContainers/AthContainers/exceptions.h:34
SG::IConstAuxStore::getAuxIDs
virtual const SG::auxid_set_t & getAuxIDs() const =0
Return a set of identifiers for existing data items in this store.
SG::AuxVectorData::capacity_v
virtual size_t capacity_v() const =0
Return the capacity of the container.
SG::AuxVectorData::size_v
virtual size_t size_v() const =0
Return the size of the container.
SG::AuxVectorData::setOption
bool setOption(auxid_t id, const AuxDataOption &option)
Set an option for an auxiliary data variable.
Definition: AuxVectorData.cxx:148