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
632  {
633  return static_cast<unsigned long>(_InterlockedIncrement(&__weakRefCount));
634  }
volatile long __weakRefCount
Definition: vccorlib.h:620
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
637  {
638  unsigned long __ref = static_cast<unsigned long>(_InterlockedDecrement(&__weakRefCount));
639  if (__ref == 0)
640  {
642  {
643  ::Platform::Details::Heap::AlignedFree(this);
644  }
645  else
646  {
648  }
649  }
650  return __ref;
651  }
bool __bAlignedAllocation
Definition: vccorlib.h:624
_CONCRTIMP 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...
volatile long __weakRefCount
Definition: vccorlib.h:620
long __cdecl _InterlockedDecrement(long volatile *)
Platform::Details::sealed::__declspec ( dllimport  )
private
Platform::Details::sealed::__declspec ( dllimport  )
private
Platform::Details::sealed::ControlBlock ( )
inlineprivate
682 {}
unsigned long __stdcall Platform::Details::sealed::DecrementStrongReference ( )
inlineprivate
667  {
668  // InterlockedDecrement calls _InterlockedDecrement intrinsic thus we call directly _InterlockedDecrement to save the call
669  unsigned long __ref = static_cast<unsigned long>(_InterlockedDecrement(&__strongRefCount));
670  if (__ref == 0)
671  {
672  __strongRefCount = static_cast<int>(0xC0000000); // LONG_MIN / 2
673  }
674  return __ref;
675  }
long __cdecl _InterlockedDecrement(long volatile *)
volatile long __strongRefCount
Definition: vccorlib.h:621
long __stdcall Platform::Details::sealed::GetRefcount ( )
inlineprivate
678  {
679  return __strongRefCount;
680  }
volatile long __strongRefCount
Definition: vccorlib.h:621
unsigned long __stdcall Platform::Details::sealed::IncrementStrongReference ( )
inlineprivate
661  {
662  // InterlockedIncrement calls _InterlockedIncrement intrinsic thus we call directly _InterlockedIncrement to save the call
663  return static_cast<unsigned long>(_InterlockedIncrement(&__strongRefCount));
664  }
volatile long __strongRefCount
Definition: vccorlib.h:621
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: