24#ifndef INCLUDED_RTL_INSTANCE_HXX 
   25#define INCLUDED_RTL_INSTANCE_HXX 
  269template< 
typename Inst, 
typename InstCtor,
 
  270          typename Guard, 
typename GuardCtor,
 
  271          typename Data = int, 
typename DataCtor = 
int >
 
  275    static Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor)
 
  278        static Inst * m_pInstance = NULL;
 
  280        Inst * p = m_pInstance;
 
  283            Guard aGuard(aGuardCtor());
 
  299    static Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor,
 
  303        static Inst * m_pInstance = NULL;
 
  305        Inst * p = m_pInstance;
 
  308            Data aData(aDataCtor());
 
  309            Guard aGuard(aGuardCtor());
 
  313                p = aInstCtor(aData);
 
  325    static Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor,
 
  329        static Inst * m_pInstance = 0;
 
  331        Inst * p = m_pInstance;
 
  334            Guard aGuard(aGuardCtor());
 
  338                p = aInstCtor(rData);
 
  352    static Inst * m_pInstance;
 
  357template< 
typename Inst, 
typename InstCtor,
 
  358          typename Guard, 
typename GuardCtor,
 
  359          typename Data, 
typename DataCtor >
 
  361rtl_Instance< Inst, InstCtor, Guard, GuardCtor, Data, DataCtor >::m_pInstance
 
  388#if defined LIBO_INTERNAL_ONLY 
  389template<
typename T, 
typename Unique>
 
  404template<
typename T, 
typename Unique>
 
  414        return *rtl_Instance<
 
 
  420    struct StaticInstance {
 
 
  448#if defined LIBO_INTERNAL_ONLY 
  449template<
typename T, 
typename Data, 
typename Unique>
 
  458    static T & 
get(
const Data& rData) {
 
  459        static T instance(rData);
 
  469    static T & 
get(Data& rData) {
 
  470        static T instance(rData);
 
  475template<
typename T, 
typename Data, 
typename Unique>
 
  484    static T & 
get(
const Data& rData) {
 
  485        return *rtl_Instance<
 
  486            T, StaticInstanceWithArg,
 
  488            Data >::create( StaticInstanceWithArg(),
 
 
  499    static T & 
get(Data& rData) {
 
  500        return *rtl_Instance<
 
  501            T, StaticInstanceWithArg,
 
  503            Data >::create( StaticInstanceWithArg(),
 
 
  508    struct StaticInstanceWithArg {
 
  509        T * operator () (
const Data& rData) {
 
  510            static T instance(rData);
 
  514        T * operator () (Data& rData) {
 
  515            static T instance(rData);
 
 
  530#if defined LIBO_INTERNAL_ONLY 
  531template<
typename T, 
typename InitAggregate>
 
  542        static T *instance = InitAggregate()();
 
  547template<
typename T, 
typename InitAggregate>
 
  595#if defined LIBO_INTERNAL_ONLY 
  596template<
typename T, 
typename InitData,
 
  597         typename Unique = InitData, 
typename Data = T>
 
  598class StaticWithInit {
 
  607        static T instance = InitData()();
 
  612template<
typename T, 
typename InitData,
 
  613         typename Unique = InitData, 
typename Data = T>
 
  623        return *rtl_Instance<
 
  624            T, StaticInstanceWithInit,
 
  626            Data, InitData >::create( StaticInstanceWithInit(),
 
 
  631    struct StaticInstanceWithInit {
 
  632        T * operator () ( Data d ) {
 
  633            static T instance(d);
 
 
#define OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER()
A platform specific macro needed to make double-checked locking work.
Definition doublecheckedlocking.h:73
Guard< Mutex > MutexGuard
Definition mutex.hxx:273
Definition bootstrap.hxx:34
Helper base class for a late-initialized (default-constructed) static variable, implementing the doub...
Definition instance.hxx:405
static T & get()
Gets the static.
Definition instance.hxx:413
Helper base class for a late-initialized (default-constructed) static variable, implementing the doub...
Definition instance.hxx:476
static T & get(Data &rData)
Gets the static.
Definition instance.hxx:499
static T & get(const Data &rData)
Gets the static.
Definition instance.hxx:484
Helper class for a late-initialized static aggregate, e.g.
Definition instance.hxx:548
static T * get()
Gets the static aggregate, late-initializing.
Definition instance.hxx:556
Helper base class for a late-initialized static variable, implementing the double-checked locking pat...
Definition instance.hxx:614
static T & get()
Gets the static.
Definition instance.hxx:622
A helper functor for the rtl_Instance template.
Definition getglobalmutex.hxx:36