STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
Platform::Details::sealed Class Reference

#include <vccorlib.h>

Inheritance diagram for Platform::Details::sealed:

Public Member Functions

virtual long __stdcall __abi_QueryInterface (::Platform::Guid &__riid, void **__ppvObject)
 
virtual unsigned long __stdcall __abi_AddRef ()
 
virtual unsigned long __stdcall __abi_Release ()
 

Private Member Functions

unsigned long __stdcall IncrementStrongReference ()
 
unsigned long __stdcall DecrementStrongReference ()
 
long __stdcall GetRefcount ()
 
 ControlBlock ()
 
 __declspec (dllimport) void InitControlBlock(void *__object
 
 __declspec (dllimport) void ReleaseTarget()
 

Private Attributes

volatile long __weakRefCount
 
volatile long __strongRefCount
 
__abi_IUnknown * __target
 
bool __bSingleAllocation
 
bool __bAlignedAllocation
 
bool __bExceptionAllocation
 
bool __bSingleAllocationParam = true
 
bool bool __bAlignedAllocationParam = false
 
bool bool bool __bExceptionAllocationParam = false)
 

Friends

class __abi_FTMWeakRefData
 
voidDetails::Heap::Allocate (::Platform::SizeT,::Platform::SizeT)
 
voidDetails::Heap::AlignedAllocate (::Platform::SizeT,::Platform::SizeT,::Platform::SizeT)
 
voidDetails::Heap::AllocateException (::Platform::SizeT __rcOffset,::Platform::SizeT __sizeArg)
 
voidDetails::Heap::AlignedAllocateException (::Platform::SizeT __rcOffset,::Platform::SizeT __sizeArg,::Platform::SizeT __alignment)
 

Member Function Documentation

virtual unsigned long __stdcall Platform::Details::sealed::__abi_AddRef ( )
inlinevirtual
627  {
628  return static_cast<unsigned long>(_InterlockedIncrement(&__weakRefCount));
629  }
volatile long __weakRefCount
Definition: vccorlib.h:615
long __cdecl _InterlockedIncrement(long volatile *)
virtual long __stdcall Platform::Details::sealed::__abi_QueryInterface ( ::Platform::Guid &  __riid,
void **  __ppvObject 
)
virtual
virtual unsigned long __stdcall Platform::Details::sealed::__abi_Release ( )
inlinevirtual
632  {
633  unsigned long __ref = static_cast<unsigned long>(_InterlockedDecrement(&__weakRefCount));
634  if (__ref == 0)
635  {
637  {
638  ::Platform::Details::Heap::AlignedFree(__target);
639  }
640  else
641  {
643  }
644  }
645  return __ref;
646  }
__abi_IUnknown * __target
Definition: vccorlib.h:617
_CRTIMP void __cdecl Free(_Pre_maybenull_ _Post_invalid_ void *_PAllocation)
Releases a block of memory previously allocated by the Alloc method to the Concurrency Runtime Cachin...
bool __bAlignedAllocation
Definition: vccorlib.h:619
volatile long __weakRefCount
Definition: vccorlib.h:615
long __cdecl _InterlockedDecrement(long volatile *)
Platform::Details::sealed::__declspec ( dllimport  )
private
Platform::Details::sealed::__declspec ( dllimport  )
private
Platform::Details::sealed::ControlBlock ( )
inlineprivate
677 {}
unsigned long __stdcall Platform::Details::sealed::DecrementStrongReference ( )
inlineprivate
662  {
663  // InterlockedDecrement calls _InterlockedDecrement intrinsic thus we call directly _InterlockedDecrement to save the call
664  unsigned long __ref = static_cast<unsigned long>(_InterlockedDecrement(&__strongRefCount));
665  if (__ref == 0)
666  {
667  __strongRefCount = static_cast<int>(0xC0000000); // LONG_MIN / 2
668  }
669  return __ref;
670  }
long __cdecl _InterlockedDecrement(long volatile *)
volatile long __strongRefCount
Definition: vccorlib.h:616
long __stdcall Platform::Details::sealed::GetRefcount ( )
inlineprivate
673  {
674  return __strongRefCount;
675  }
volatile long __strongRefCount
Definition: vccorlib.h:616
unsigned long __stdcall Platform::Details::sealed::IncrementStrongReference ( )
inlineprivate
656  {
657  // InterlockedIncrement calls _InterlockedIncrement intrinsic thus we call directly _InterlockedIncrement to save the call
658  return static_cast<unsigned long>(_InterlockedIncrement(&__strongRefCount));
659  }
volatile long __strongRefCount
Definition: vccorlib.h:616
long __cdecl _InterlockedIncrement(long volatile *)

Friends And Related Function Documentation

friend class __abi_FTMWeakRefData
friend
void* Details::Heap::AlignedAllocate ( ::Platform::SizeT  ,
::Platform::SizeT  ,
::Platform::SizeT   
)
friend
void* Details::Heap::AlignedAllocateException ( ::Platform::SizeT  __rcOffset,
::Platform::SizeT  __sizeArg,
::Platform::SizeT  __alignment 
)
friend
void* Details::Heap::Allocate ( ::Platform::SizeT  ,
::Platform::SizeT   
)
friend
void* Details::Heap::AllocateException ( ::Platform::SizeT  __rcOffset,
::Platform::SizeT  __sizeArg 
)
friend

Member Data Documentation

bool Platform::Details::sealed::__bAlignedAllocation
private
bool bool Platform::Details::sealed::__bAlignedAllocationParam = false
private
bool Platform::Details::sealed::__bExceptionAllocation
private
bool bool bool Platform::Details::sealed::__bExceptionAllocationParam = false)
private
bool Platform::Details::sealed::__bSingleAllocation
private
bool Platform::Details::sealed::__bSingleAllocationParam = true
private
volatile long Platform::Details::sealed::__strongRefCount
private
__abi_IUnknown* Platform::Details::sealed::__target
private
volatile long Platform::Details::sealed::__weakRefCount
private

The documentation for this class was generated from the following file: