TROArray<T>

Overview

TROArray<T> is designed for declaring array types in Code-First services.

typical usage:

  NewArray = class(TROArray<NewStruct>) 
  end;

Location

 

constructor Create  reintroduce overload virtual    (declared in TROComplexType)

Creates a new instance.

constructor Create

constructor Create (TCollection)  overload override    (declared in TROComplexType)

Creates a new instance with given parameter.

constructor Create(aCollection: TCollection)

Parameters:

  • aCollection: collection

Add  overload

Creates a new instance and adds it to array

function Add: T

Add (T): Integer  overload

Adds specified item to array

function Add(const Value: T): Integer

Parameters:

  • Value: item

Assign  override

Copies data from a given source.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

AssignTo  override    (declared in TROComplexType)

Copies the properties of an object to a destination object.

procedure AssignTo(iDest: TPersistent)

Parameters:

  • iDest: destination object.

Clear  override

Empties the entire array and sets its size to zero. If the elements of the array are structs, binaries or other arrays, they will be freed before the array is cleared.

procedure Clear

Clone    (declared in TROArray)

Will create and return a second copy of the Array. The new instance will be a deep copy of the original array; if the members are structs, binaries or arrays themselves, they too will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent of the original class.

function Clone: TROArray

Clone    (declared in TROComplexType)

Creates and returns a second copy of the struct.

The new instance will be a deep copy of the original struct, all nested members that are arrays, structs or binaries will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent from the original class.

function Clone: TROComplexType

ContentAsJson    (declared in TROComplexType)

Returns object as JSON string

property ContentAsJson: UnicodeString read

ContentAsString    (declared in TROComplexType)

Returns the structure of the type in a string format.

property ContentAsString: string read

ContentAsXml    (declared in TROComplexType)

Returns object as XML string

property ContentAsXml: ROUTF8String read

Count

Contains the count of elements in the array.

property Count: Integer read

DefaultReadComplex    (declared in TROComplexType)

procedure DefaultReadComplex(aSerializer: TObject)

Parameters:

  • aSerializer:

DefaultWriteComplex    (declared in TROComplexType)

procedure DefaultWriteComplex(aSerializer: TObject)

Parameters:

  • aSerializer:

Delete  override

Deletes the i-th element of the array. If it is struct, binary or other array, it will be freed before the element is deleted.

procedure Delete(Index: Integer)

Parameters:

  • Index: Index

FieldCount    (declared in TROComplexType)

property FieldCount: Integer read

FieldInfo    (declared in TROComplexType)

property FieldInfo[Index: Integer]: PTypeInfo read

FieldName    (declared in TROComplexType)

property FieldName[Index: Integer]: string read

FreeInternalProperties  protected virtual    (declared in TROComplexType)

procedure FreeInternalProperties

GetAttributeCount  virtual    (declared in TROComplexType)

Returns the number of custom attributes defined for the class.

class function GetAttributeCount: Integer

GetAttributeName  virtual    (declared in TROComplexType)

Returns the name of custom attribute defined for the class, with the specified index.

class function GetAttributeName(aIndex: Integer): string

Parameters:

  • aIndex: The index of attribute.

GetAttributeValue  virtual    (declared in TROComplexType)

Returns the value of custom attribute defined for the class, with the specified index.

class function GetAttributeValue(aIndex: Integer): string

Parameters:

  • aIndex: The index of attribute.

GetContentAsJson    (declared in TROComplexType)

function GetContentAsJson(aIncludeExtraInfo: Boolean): UnicodeString

Parameters:

  • aIncludeExtraInfo:

GetEnumerator

Returns an enumerator for the container.

function GetEnumerator: TROArrayEnumerator

GetFieldNames    (declared in TROComplexType)

procedure GetFieldNames(aList: TStrings)

Parameters:

  • aList:

GetFieldValue    (declared in TROComplexType)

function GetFieldValue(const aFieldName: string): Variant

Parameters:

  • aFieldName:

GetIndex (string, Variant, Integer, TROSearchOptions): Integer  override

Searches for an item with a aPropertyName property, which is accessible via |GetPropValue and is equal to aPropertyValue. Returns the index of the first item found or -1.

function GetIndex(const aPropertyName: string; const aPropertyValue: Variant; StartFrom: Integer = 0; Options: TROSearchOptions = [soIgnoreCase]): Integer

Parameters:

  • aPropertyName: Name of the published property
  • aPropertyValue: Value of the property
  • StartFrom: Item index to start from
  • Options: Set of TROSearchOption

GetIndex (T, Integer): Integer  overload

Returns the index of the aValue item or -1.

function GetIndex(const aValue: T; const aStartFrom: Integer = 0): Integer

Parameters:

  • aValue: Value
  • aStartFrom: Item index to start from

GetItemClass  override

Returns item class for non-simple arrays

class function GetItemClass: TClass

GetItemRef  override

Returns the pointer to the array element specified by the index.

function GetItemRef(Index: Integer): Pointer

Parameters:

  • Index: Item position

GetItemSize  override

Returns the size of the data type stored in the array.

class function GetItemSize: Integer

GetItemType  override

Returns TypeInfo of the data type stored in the array.

class function GetItemType: PTypeInfo

Grow  protected virtual

Increases the array capacity.

procedure Grow

IndexOf

Returns the index of the aValue item or -1.

function IndexOf(const aValue: T; const aStartFrom: Integer = 0): Integer

Parameters:

  • aValue: item
  • aStartFrom: Item index to start from

InnerArray

Direct access to storage. can be used for copying items.

property InnerArray: TArray<T> read

Items

Returns item located at specific index.

property Items[Index: Integer]: T read write

ReadComplex  override    (declared in TROArray)

Deserializes current class instance using provided serializer.

procedure ReadComplex(ASerializer: TObject)

Parameters:


Resize    (declared in TROArray)

Resizes the array to the specified size.

Since arrays are not a very dynamic data structure, repeatedly adding single elements can be a costly procedure, since memory needs to be reallocated for the grown array with each addittion. If the final size of the array is known in advance, it will perform better if you size it to the proper count in advance, and then simply fill the new vacancies.

procedure Resize(ElementCount: Integer)

Parameters:

  • ElementCount: new size

SaveToJson  protected override    (declared in TROArray)

procedure SaveToJson(const aRoot: TROJSONValue; aIncludeExtraInfo: Boolean)

Parameters:

  • aRoot:
  • aIncludeExtraInfo:

SaveToXml  protected override    (declared in TROArray)

procedure SaveToXml(const aNode: TROConverterNode)

Parameters:

  • aNode:

Searches item with specified properties

function Search(const aPropertyName: string; const aPropertyValue: Variant; StartFrom: Integer = 0; Options: TROSearchOptions = [soIgnoreCase]): TCollectionItem

Parameters:

  • aPropertyName: property name
  • aPropertyValue: property value
  • StartFrom: index
  • Options: options

SetFieldValue    (declared in TROComplexType)

procedure SetFieldValue(const aFieldName: string; const aValue: Variant)

Parameters:

  • aFieldName:
  • aValue:

SetItemRef  override

MUST be overwritten for arrays of non-simple types.

procedure SetItemRef(Index: Integer; Ref: Pointer)

Parameters:

  • Index: Item position
  • Ref: Reference to object

SmartAssign    (declared in TROComplexType)

Copies specific data from a given source.

procedure SmartAssign(Source: TPersistent; TypeKinds: TTypeKinds = tkProperties)

Parameters:

  • Source: Instance whose properties will be copied
  • TypeKinds: Specifies which properties should be copied

TryGetAttribute    (declared in TROComplexType)

class function TryGetAttribute(aName: string; out aValue: string): Boolean

Parameters:

  • aName:
  • aValue:

WriteComplex  override    (declared in TROArray)

Serializes current class instance using provided serializer.

procedure WriteComplex(ASerializer: TObject)

Parameters:

 

ContentAsJson    (declared in TROComplexType)

Returns object as JSON string

property ContentAsJson: UnicodeString read

ContentAsString    (declared in TROComplexType)

Returns the structure of the type in a string format.

property ContentAsString: string read

ContentAsXml    (declared in TROComplexType)

Returns object as XML string

property ContentAsXml: ROUTF8String read

Count

Contains the count of elements in the array.

property Count: Integer read

FieldCount    (declared in TROComplexType)

property FieldCount: Integer read

FieldInfo    (declared in TROComplexType)

property FieldInfo[Index: Integer]: PTypeInfo read

FieldName    (declared in TROComplexType)

property FieldName[Index: Integer]: string read

InnerArray

Direct access to storage. can be used for copying items.

property InnerArray: TArray<T> read

Items

Returns item located at specific index.

property Items[Index: Integer]: T read write

 

GetAttributeCount  virtual    (declared in TROComplexType)

Returns the number of custom attributes defined for the class.

class function GetAttributeCount: Integer

GetAttributeName  virtual    (declared in TROComplexType)

Returns the name of custom attribute defined for the class, with the specified index.

class function GetAttributeName(aIndex: Integer): string

Parameters:

  • aIndex: The index of attribute.

GetAttributeValue  virtual    (declared in TROComplexType)

Returns the value of custom attribute defined for the class, with the specified index.

class function GetAttributeValue(aIndex: Integer): string

Parameters:

  • aIndex: The index of attribute.

GetItemClass  override

Returns item class for non-simple arrays

class function GetItemClass: TClass

GetItemSize  override

Returns the size of the data type stored in the array.

class function GetItemSize: Integer

GetItemType  override

Returns TypeInfo of the data type stored in the array.

class function GetItemType: PTypeInfo

TryGetAttribute    (declared in TROComplexType)

class function TryGetAttribute(aName: string; out aValue: string): Boolean

Parameters:

  • aName:
  • aValue:

 

constructor Create  reintroduce overload virtual    (declared in TROComplexType)

Creates a new instance.

constructor Create

constructor Create (TCollection)  overload override    (declared in TROComplexType)

Creates a new instance with given parameter.

constructor Create(aCollection: TCollection)

Parameters:

  • aCollection: collection

Add  overload

Creates a new instance and adds it to array

function Add: T

Add (T): Integer  overload

Adds specified item to array

function Add(const Value: T): Integer

Parameters:

  • Value: item

Assign  override

Copies data from a given source.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

AssignTo  override    (declared in TROComplexType)

Copies the properties of an object to a destination object.

procedure AssignTo(iDest: TPersistent)

Parameters:

  • iDest: destination object.

Clear  override

Empties the entire array and sets its size to zero. If the elements of the array are structs, binaries or other arrays, they will be freed before the array is cleared.

procedure Clear

Clone    (declared in TROArray)

Will create and return a second copy of the Array. The new instance will be a deep copy of the original array; if the members are structs, binaries or arrays themselves, they too will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent of the original class.

function Clone: TROArray

Clone    (declared in TROComplexType)

Creates and returns a second copy of the struct.

The new instance will be a deep copy of the original struct, all nested members that are arrays, structs or binaries will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent from the original class.

function Clone: TROComplexType

DefaultReadComplex    (declared in TROComplexType)

procedure DefaultReadComplex(aSerializer: TObject)

Parameters:

  • aSerializer:

DefaultWriteComplex    (declared in TROComplexType)

procedure DefaultWriteComplex(aSerializer: TObject)

Parameters:

  • aSerializer:

Delete  override

Deletes the i-th element of the array. If it is struct, binary or other array, it will be freed before the element is deleted.

procedure Delete(Index: Integer)

Parameters:

  • Index: Index

FreeInternalProperties  protected virtual    (declared in TROComplexType)

procedure FreeInternalProperties

GetContentAsJson    (declared in TROComplexType)

function GetContentAsJson(aIncludeExtraInfo: Boolean): UnicodeString

Parameters:

  • aIncludeExtraInfo:

GetEnumerator

Returns an enumerator for the container.

function GetEnumerator: TROArrayEnumerator

GetFieldNames    (declared in TROComplexType)

procedure GetFieldNames(aList: TStrings)

Parameters:

  • aList:

GetFieldValue    (declared in TROComplexType)

function GetFieldValue(const aFieldName: string): Variant

Parameters:

  • aFieldName:

GetIndex (string, Variant, Integer, TROSearchOptions): Integer  override

Searches for an item with a aPropertyName property, which is accessible via |GetPropValue and is equal to aPropertyValue. Returns the index of the first item found or -1.

function GetIndex(const aPropertyName: string; const aPropertyValue: Variant; StartFrom: Integer = 0; Options: TROSearchOptions = [soIgnoreCase]): Integer

Parameters:

  • aPropertyName: Name of the published property
  • aPropertyValue: Value of the property
  • StartFrom: Item index to start from
  • Options: Set of TROSearchOption

GetIndex (T, Integer): Integer  overload

Returns the index of the aValue item or -1.

function GetIndex(const aValue: T; const aStartFrom: Integer = 0): Integer

Parameters:

  • aValue: Value
  • aStartFrom: Item index to start from

GetItemRef  override

Returns the pointer to the array element specified by the index.

function GetItemRef(Index: Integer): Pointer

Parameters:

  • Index: Item position

Grow  protected virtual

Increases the array capacity.

procedure Grow

IndexOf

Returns the index of the aValue item or -1.

function IndexOf(const aValue: T; const aStartFrom: Integer = 0): Integer

Parameters:

  • aValue: item
  • aStartFrom: Item index to start from

ReadComplex  override    (declared in TROArray)

Deserializes current class instance using provided serializer.

procedure ReadComplex(ASerializer: TObject)

Parameters:


Resize    (declared in TROArray)

Resizes the array to the specified size.

Since arrays are not a very dynamic data structure, repeatedly adding single elements can be a costly procedure, since memory needs to be reallocated for the grown array with each addittion. If the final size of the array is known in advance, it will perform better if you size it to the proper count in advance, and then simply fill the new vacancies.

procedure Resize(ElementCount: Integer)

Parameters:

  • ElementCount: new size

SaveToJson  protected override    (declared in TROArray)

procedure SaveToJson(const aRoot: TROJSONValue; aIncludeExtraInfo: Boolean)

Parameters:

  • aRoot:
  • aIncludeExtraInfo:

SaveToXml  protected override    (declared in TROArray)

procedure SaveToXml(const aNode: TROConverterNode)

Parameters:

  • aNode:

Searches item with specified properties

function Search(const aPropertyName: string; const aPropertyValue: Variant; StartFrom: Integer = 0; Options: TROSearchOptions = [soIgnoreCase]): TCollectionItem

Parameters:

  • aPropertyName: property name
  • aPropertyValue: property value
  • StartFrom: index
  • Options: options

SetFieldValue    (declared in TROComplexType)

procedure SetFieldValue(const aFieldName: string; const aValue: Variant)

Parameters:

  • aFieldName:
  • aValue:

SetItemRef  override

MUST be overwritten for arrays of non-simple types.

procedure SetItemRef(Index: Integer; Ref: Pointer)

Parameters:

  • Index: Item position
  • Ref: Reference to object

SmartAssign    (declared in TROComplexType)

Copies specific data from a given source.

procedure SmartAssign(Source: TPersistent; TypeKinds: TTypeKinds = tkProperties)

Parameters:

  • Source: Instance whose properties will be copied
  • TypeKinds: Specifies which properties should be copied

WriteComplex  override    (declared in TROArray)

Serializes current class instance using provided serializer.

procedure WriteComplex(ASerializer: TObject)

Parameters: