GetAt - FormList
Revision as of 15:45, 19 April 2012 by imported>Tunaisafish (→Examples: Added binary search method)
Member of: FormList Script
Returns the form at a specified index in the list.
Syntax
Form Function GetAt(int aiIndex) native
Parameters
- aiIndex: The index in the list we want to fetch the form from
- The index is 0-based. If a list has 3 items in it, valid indices are: 0, 1 and 2
Return Value
Returns the form at index aiIndex, none in case of error (such as wrong index value)
Examples
; Print out the forms in the list
FormList property list auto
int index = 0
While (index < list.GetSize())
Debug.Trace("Form " + index + " is " + list.GetAt(index))
index = index + 1
EndWhile
int Function GetFormIndex(FormList List, Form Member) global
{Gets the index of Member in List. Returns -1 if not found}
if (!List.HasForm(Member))
Return -1
endif
int Index = 0
While (List.GetAt(Index) != Member)
Index += 1
EndWhile
Return Index
EndFunction
; Searching a LONG formlist of ORDERED FORMS (by FormID)
; Binary Search Method adapted to Papyrus from
; http://en.wikipedia.org/wiki/Binary_search_algorithm#Deferred_detection_of_equality
Int Function GetFormIndexOrdered(FormList List, Form Member) Global
{Gets the index of Member in an ordered List - by FormID. Returns -1 if not found}
Int tgt = Member.GetFormID()
Int imin = 0
Int imax = List.GetSize() - 1
While (imax > imin)
Int imid = (imin + imax) / 2
If (tgt > List.GetAt(imid).GetFormID())
imin = imid + 1
Else
imax = imid
EndIf
EndWhile
If ((imax == imin) && (tgt == List.GetAt(imin).GetFormID() ))
Return imin
Else
Return -1
EndIf
EndFunction