TROArray<T>
Overview
TROArray<T> is designed for declaring array types in Code-First services.
typical usage:
NewArray = class(TROArray<NewStruct>)
end;
Location
- Unit: uROArray.pas
- Ancestry: TCollectionItem | TROComplexType | TROArray | TROArray<T>
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:
- ASerializer: Data source (type TROSerializer).
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:
Search (string, Variant, Integer, TROSearchOptions): TCollectionItem overload (declared in TROArray)
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:
- ASerializer: Data sink (type TROSerializer)
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:
- ASerializer: Data source (type TROSerializer).
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:
Search (string, Variant, Integer, TROSearchOptions): TCollectionItem overload (declared in TROArray)
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:
- ASerializer: Data sink (type TROSerializer)