System::Collections::ObjectModel::ReadOnlyCollection< T > Class Template Reference

Inherits System::Object, and System::Collections::Generic::IList< T >.

Public Types

typedef T ValueType
 Value type. More...
 
typedef Generic::IList< T > BaseType
 Implemented interface. More...
 
typedef SharedPtr< System::Collections::Generic::IEnumerator< T > > IEnumeratorPtr
 Container of same elements. More...
 
- Public Types inherited from System::Object
typedef SmartPtr< Objectptr
 Alias for smart pointer type. More...
 
- Public Types inherited from System::Collections::Generic::IList< T >
typedef ICollection< T > BaseType
 Base type. More...
 
typedef IList< T > ThisType
 This type. More...
 
typedef T ValueType
 Value type. More...
 
- Public Types inherited from System::Collections::Generic::ICollection< T >
typedef T ValueType
 Value type name. More...
 
typedef ICollection< T > ThisType
 Collection type name. More...
 
- Public Types inherited from System::Collections::Generic::IEnumerable< T >
typedef IEnumerator< T > IEnumeratorType
 Enumerator type. More...
 

Public Member Functions

 ReadOnlyCollection (const SharedPtr< Generic::IList< T >> &list)
 
virtual ~ReadOnlyCollection () override
 Destructor. More...
 
virtual IEnumeratorPtr GetEnumerator () override
 
virtual int get_Count () const override
 
virtual bool Contains (const T &item) const override
 
virtual int IndexOf (const T &item) const override
 
virtual T idx_get (int index) const override
 
virtual void CopyTo (System::ArrayPtr< T > array, int index) override
 
void SetTemplateWeakPtr (unsigned int argument) override
 Does nothing as read-only collection only wraps data and stores nothing. More...
 
- Public Member Functions inherited from System::Object
 Object ()
 Creates object. Initializes all internal data structures. More...
 
virtual ~Object ()
 Destroys object. Frees all internal data structures. More...
 
 Object (Object const &x)
 Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
Objectoperator= (Object const &x)
 Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
ObjectSharedRefAdded ()
 Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int SharedRefRemovedSafe ()
 Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
void SharedRefRemoved ()
 Decrements shared reference count and deletes object if it hits zero. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
Detail::SmartPtrCounter * WeakRefAdded ()
 Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
void WeakRefRemoved ()
 Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
Detail::SmartPtrCounter * GetCounter ()
 Gets reference counter data structure associated with the object. More...
 
int SharedCount () const
 Gets current value of shared refernce counter. More...
 
void FreeOrDetectCycles (int count)
 Reacts on shared reference counter decrement. Shouldn't be called directly, use smart pointers instead. If neccessary, deletes the object. If allowed, initiates loop references lookup. More...
 
void Lock ()
 Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
 
void Unlock ()
 Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
 
virtual bool Equals (ptr obj)
 Compares objects using C# Object.Equals semantics. More...
 
virtual int GetHashCode () const
 Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
 
virtual String ToString () ASPOSE_CONST
 Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
 
virtual ptr MemberwiseClone () const
 Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
 
virtual const TypeInfoGetType () const
 Gets actual type of object. Analog of C# System.Object.GetType() call. More...
 
virtual bool Is (const TypeInfo &targetType) const
 Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. TypeInfo structure descibing the type to test current object against. More...
 
void __FreePointers ()
 Resets all smart pointers stored inside this object directly (in fields) or indirectly (in value type fields). Used by memory management systems, shouldn't be called directly. More...
 
template<>
bool Equals (float const &objA, float const &objB)
 
template<>
bool Equals (double const &objA, double const &objB)
 
template<>
bool ReferenceEquals (String const &str, std::nullptr_t)
 
template<>
bool ReferenceEquals (String const &str1, String const &str2)
 
- Public Member Functions inherited from System::Collections::Generic::ICollection< T >
virtual bool get_IsReadOnly () const
 

Protected Types

typedef SharedPtr< ReadOnlyCollection< T > > ThisPtr
 This pointer. More...
 
- Protected Types inherited from System::Object
template<class T >
using supports_free_pointers = decltype(__SupportsFreePointers(std::declval< T * >()))
 Checks if T type supports __FreePointers() method. More...
 

Protected Member Functions

virtual Object::shared_members_type GetSharedMembers () override
 Allows loop references detection for ReadOnlyCollection. More...
 
- Protected Member Functions inherited from System::Object
template<class Container , typename Value = typename Container::value_type>
std::enable_if<!System::IsSmartPtr< Value >::value &&!System::detail::is_a< Value, std::pair >::value, void >::type PopulateSharedMembers (Object::shared_members_type &, const char *, Container &)
 
template<class Container , typename Value = typename Container::value_type>
std::enable_if< System::IsSmartPtr< Value >::value, void >::type PopulateSharedMembers (Object::shared_members_type &data, const char *name, Container &container)
 
template<class Container , typename Value = typename Container::value_type>
std::enable_if< System::detail::is_a< Value, std::pair >::value &&!System::IsSmartPtr< typename Value::first_type >::value &&!System::IsSmartPtr< typename Value::second_type >::value, void >::type PopulateSharedMembers (Object::shared_members_type &, const char *, Container &)
 
template<class Container , typename Value = typename Container::value_type>
std::enable_if< System::detail::is_a< Value, std::pair >::value &&System::IsSmartPtr< typename Value::first_type >::value &&!System::IsSmartPtr< typename Value::second_type >::value, void >::type PopulateSharedMembers (Object::shared_members_type &data, const char *name, Container &container)
 
template<class Container , typename Value = typename Container::value_type>
std::enable_if< System::detail::is_a< Value, std::pair >::value &&!System::IsSmartPtr< typename Value::first_type >::value &&System::IsSmartPtr< typename Value::second_type >::value, void >::type PopulateSharedMembers (Object::shared_members_type &data, const char *name, Container &container)
 
template<class Container , typename Value = typename Container::value_type>
std::enable_if< System::detail::is_a< Value, std::pair >::value &&System::IsSmartPtr< typename Value::first_type >::value &&System::IsSmartPtr< typename Value::second_type >::value, void >::type PopulateSharedMembers (Object::shared_members_type &data, const char *name, Container &container)
 

Protected Attributes

SharedPtr< Generic::IList< T > > m_list
 Wrapped container. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from System::Object
static bool ReferenceEquals (ptr const &objA, ptr const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, T const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, std::nullptr_t)
 Reference-compares value type object with nullptr. More...
 
template<typename T1 , typename T2 >
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares reference type objects in C# style. More...
 
template<typename T1 , typename T2 >
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares value type objects in C# style. More...
 
static const TypeInfoType ()
 Impleemnts C# typeof(System.Object) construct. More...
 
static void __FreeStaticPointers ()
 Implementation of cleanup_tests option. Deletes shared members of type it is called for. Nothing to delete at this level. More...
 
- Static Protected Member Functions inherited from System::Object
template<class T , class Check = decltype(std::declval<T*>()->__FreePointers())>
static std::true_type __SupportsFreePointers (T *)
 Formal function for template magic to check if type T supports __FreePointers() method. More...
 
static std::false_type __SupportsFreePointers (...)
 Formal function for template magic to check if type T supports __FreePointers() method. More...
 
template<class T >
static std::enable_if< supports_free_pointers< T >::value, void >::type __DoFreePointers (T &t)
 
template<class T >
static std::enable_if<!supports_free_pointers< T >::value &&!std::is_fundamental< T >::value &&!std::is_enum< T >::value &&!std::is_const< T >::value, void >::type __DoFreePointers (const T &)
 
template<class T >
static std::enable_if<!supports_free_pointers< T >::value &&!std::is_fundamental< T >::value &&!std::is_enum< T >::value &&std::is_const< T >::value, void >::type __DoFreePointers (T &)
 
template<class T >
static std::enable_if< std::is_fundamental< T >::value||std::is_enum< T >::value, void >::type __DoFreePointers (T)
 

Detailed Description

template<typename T>
class System::Collections::ObjectModel::ReadOnlyCollection< T >

Wraps specific container to access it in read-only mode.

Template Parameters
TElement type.

Member Typedef Documentation

◆ BaseType

Implemented interface.

◆ IEnumeratorPtr

◆ ThisPtr

This pointer.

◆ ValueType

template<typename T >
typedef T System::Collections::ObjectModel::ReadOnlyCollection< T >::ValueType

Value type.

Constructor & Destructor Documentation

◆ ReadOnlyCollection()

template<typename T >
System::Collections::ObjectModel::ReadOnlyCollection< T >::ReadOnlyCollection ( const SharedPtr< Generic::IList< T >> &  list)
inline

Wraps read-only collection around specific collection.

Parameters
listCollection to wrap.

◆ ~ReadOnlyCollection()

template<typename T >
virtual System::Collections::ObjectModel::ReadOnlyCollection< T >::~ReadOnlyCollection ( )
inlineoverridevirtual

Destructor.

Member Function Documentation

◆ Contains()

template<typename T >
virtual bool System::Collections::ObjectModel::ReadOnlyCollection< T >::Contains ( const T &  item) const
inlineoverridevirtual

Checks if container contains specific item.

Parameters
itemItem to look for.
Returns
true if item is found, false otherwise.

Implements System::Collections::Generic::ICollection< T >.

◆ CopyTo()

template<typename T >
virtual void System::Collections::ObjectModel::ReadOnlyCollection< T >::CopyTo ( System::ArrayPtr< T >  array,
int  index 
)
inlineoverridevirtual

Copies container elements to existing array elements.

Parameters
arrayDestination array.
indexDestination array beginning index.

Implements System::Collections::Generic::ICollection< T >.

◆ get_Count()

template<typename T >
virtual int System::Collections::ObjectModel::ReadOnlyCollection< T >::get_Count ( ) const
inlineoverridevirtual

Gets count of container elements.

Returns
Actual elements count.

Implements System::Collections::Generic::ICollection< T >.

◆ GetEnumerator()

template<typename T >
virtual IEnumeratorPtr System::Collections::ObjectModel::ReadOnlyCollection< T >::GetEnumerator ( )
inlineoverridevirtual

Gets collection enumerator.

Returns
Pointer to newly created enumerator.

Implements System::Collections::Generic::IEnumerable< T >.

◆ GetSharedMembers()

template<typename T >
virtual Object::shared_members_type System::Collections::ObjectModel::ReadOnlyCollection< T >::GetSharedMembers ( )
inlineoverrideprotectedvirtual

Allows loop references detection for ReadOnlyCollection.

Reimplemented from System::Object.

◆ idx_get()

template<typename T >
virtual T System::Collections::ObjectModel::ReadOnlyCollection< T >::idx_get ( int  index) const
inlineoverridevirtual

Gets item at specific position.

Parameters
indexIndex to get element from.
Returns
Copy of element at specified position.

Implements System::Collections::Generic::IList< T >.

◆ IndexOf()

template<typename T >
virtual int System::Collections::ObjectModel::ReadOnlyCollection< T >::IndexOf ( const T &  item) const
inlineoverridevirtual

Looks for specific item in collection.

Parameters
itemItem to look for.
Returns
Index of the first occurrence of specified item or negative value if not found.

Implements System::Collections::Generic::IList< T >.

◆ SetTemplateWeakPtr()

template<typename T >
void System::Collections::ObjectModel::ReadOnlyCollection< T >::SetTemplateWeakPtr ( unsigned int  argument)
inlineoverridevirtual

Does nothing as read-only collection only wraps data and stores nothing.

Reimplemented from System::Object.

Member Data Documentation

◆ m_list

template<typename T >
SharedPtr<Generic::IList<T> > System::Collections::ObjectModel::ReadOnlyCollection< T >::m_list
protected

Wrapped container.