CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Namespaces | Macros | Functions | Variables
refcore_implementation.h File Reference
#include <limits>
#include <cstdint>
#include <atomic>

Go to the source code of this file.

Namespaces

 edm
 HLT enums.
 
 edm::refcoreimpl
 

Macros

#define DataFormats_Common_refcore_implementation_h
 
#define ID_IMPL   return ProductID(processIndex_ & refcoreimpl::kProcessIndexMask,productIndex_)
 
#define ID_IMPL   return ProductID(processIndex_ & refcoreimpl::kProcessIndexMask,productIndex_)
 
#define ISNONNULL_IMPL   return isTransient() ? productPtr() != nullptr : id().isValid()
 
#define ISNONNULL_IMPL   return isTransient() ? productPtr() != nullptr : id().isValid()
 
#define ISTRANSIENT_IMPL   return 0!=(processIndex_ & refcoreimpl::kTransientBit)
 
#define ISTRANSIENT_IMPL   return 0!=(processIndex_ & refcoreimpl::kTransientBit)
 
#define PRODUCTGETTER_IMPL   return refcoreimpl::productGetter(cachePtr_)
 
#define PRODUCTGETTER_IMPL   return refcoreimpl::productGetter(cachePtr_)
 
#define PRODUCTPTR_IMPL   return refcoreimpl::productPtr(cachePtr_)
 
#define PRODUCTPTR_IMPL   return refcoreimpl::productPtr(cachePtr_)
 
#define SETCACHEISPRODUCTGETTER_IMPL(_getter_)   refcoreimpl::setCacheIsProductGetter(cachePtr_, _getter_)
 
#define SETCACHEISPRODUCTGETTER_IMPL(_getter_)   refcoreimpl::setCacheIsProductGetter(cachePtr_, _getter_)
 
#define SETCACHEISPRODUCTPTR_IMPL(_item_)   refcoreimpl::setCacheIsItem(cachePtr_,_item_)
 
#define SETCACHEISPRODUCTPTR_IMPL(_item_)   refcoreimpl::setCacheIsItem(cachePtr_,_item_)
 
#define SETTRANSIENT_IMPL   processIndex_ |=refcoreimpl::kTransientBit
 
#define SETTRANSIENT_IMPL   processIndex_ |=refcoreimpl::kTransientBit
 

Functions

bool edm::refcoreimpl::cacheIsProductPtr (void const *iPtr)
 
EDProductGetter const * edm::refcoreimpl::productGetter (std::atomic< void const * > const &iCache)
 
void const * edm::refcoreimpl::productPtr (std::atomic< void const * > const &iCache)
 
void edm::refcoreimpl::setCacheIsItem (std::atomic< void const * > &iCache, void const *iNewValue)
 
void edm::refcoreimpl::setCacheIsProductGetter (std::atomic< void const * > &ptr, EDProductGetter const *iGetter)
 
void edm::refcoreimpl::setCacheIsProductGetter (void const *&ptr, EDProductGetter const *iGetter)
 
bool edm::refcoreimpl::tryToSetCacheItemForFirstTime (std::atomic< void const * > &iCache, void const *iNewValue)
 

Variables

const std::uintptr_t edm::refcoreimpl::kCacheIsProductPtrBit = 0x1
 
const std::uintptr_t edm::refcoreimpl::kCacheIsProductPtrMask = std::numeric_limits<std::uintptr_t>::max() ^ kCacheIsProductPtrBit
 
const unsigned short edm::refcoreimpl::kProcessIndexMask = 0x3FFF
 
const unsigned short edm::refcoreimpl::kTransientBit = 0x8000
 

Macro Definition Documentation

#define DataFormats_Common_refcore_implementation_h

Definition at line 3 of file classes.h.

#define ID_IMPL   return ProductID(processIndex_ & refcoreimpl::kProcessIndexMask,productIndex_)

Definition at line 93 of file classes.h.

Referenced by edm::RefCore::id(), and edm::RefCoreWithIndex::id().

#define ID_IMPL   return ProductID(processIndex_ & refcoreimpl::kProcessIndexMask,productIndex_)
#define ISNONNULL_IMPL   return isTransient() ? productPtr() != nullptr : id().isValid()

Definition at line 97 of file classes.h.

Referenced by edm::RefCore::isNonnull(), and edm::RefCoreWithIndex::isNonnull().

#define ISNONNULL_IMPL   return isTransient() ? productPtr() != nullptr : id().isValid()
#define ISTRANSIENT_IMPL   return 0!=(processIndex_ & refcoreimpl::kTransientBit)

Definition at line 101 of file classes.h.

Referenced by edm::RefCore::isTransient(), and edm::RefCoreWithIndex::isTransient().

#define ISTRANSIENT_IMPL   return 0!=(processIndex_ & refcoreimpl::kTransientBit)
#define PRODUCTGETTER_IMPL   return refcoreimpl::productGetter(cachePtr_)

Definition at line 99 of file classes.h.

Referenced by edm::RefCore::productGetter(), and edm::RefCoreWithIndex::productGetter().

#define PRODUCTGETTER_IMPL   return refcoreimpl::productGetter(cachePtr_)
#define PRODUCTPTR_IMPL   return refcoreimpl::productPtr(cachePtr_)

Definition at line 95 of file classes.h.

Referenced by edm::RefCore::productPtr(), and edm::RefCoreWithIndex::productPtr().

#define PRODUCTPTR_IMPL   return refcoreimpl::productPtr(cachePtr_)
#define SETCACHEISPRODUCTGETTER_IMPL (   _getter_)    refcoreimpl::setCacheIsProductGetter(cachePtr_, _getter_)
#define SETCACHEISPRODUCTGETTER_IMPL (   _getter_)    refcoreimpl::setCacheIsProductGetter(cachePtr_, _getter_)
#define SETCACHEISPRODUCTPTR_IMPL (   _item_)    refcoreimpl::setCacheIsItem(cachePtr_,_item_)
#define SETCACHEISPRODUCTPTR_IMPL (   _item_)    refcoreimpl::setCacheIsItem(cachePtr_,_item_)
#define SETTRANSIENT_IMPL   processIndex_ |=refcoreimpl::kTransientBit

Definition at line 103 of file classes.h.

Referenced by edm::RefCore::setTransient(), and edm::RefCoreWithIndex::setTransient().

#define SETTRANSIENT_IMPL   processIndex_ |=refcoreimpl::kTransientBit