listCast
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: list listCast( list mixedList, integer type );
Iterates through the contents of a list, producing a resulting list whose contents are cast to a single type. Please refer to llGetListEntryType() for valid types. This function is useful for converting a list to a type which is more memory efficient, or to a type that you know you are going to access a lot (in order to remove extra casting later-on).
Returns a list whose contents are all one type.
• list | mixedList | – | The list to cast, its contents may be anything. | |
• integer | type | – | The type of variable to cast all entries to. |
Examples
list mixed = [1, 2.0, "3", "Four", (key)"8aef4875-6873-0919-f5ab-c9d6b48d18d4"];
// Prints: 1, 2, 3, 0, 8
llOwnerSay(llList2CSV(listCast(mixed, TYPE_INTEGER)));
// Prints: 1.000000, 2.000000, 3.000000, 0.000000, 0.000000
llOwnerSay(llList2CSV(listCast(mixed, TYPE_FLOAT)));
Implementation
list listCast(list mixedList, integer type) {
list result = []; integer x = mixedList != [];
if (type == TYPE_INTEGER)
while (x)
result = [(integer)llList2String(mixedList, --x)] + result;
else if (type == TYPE_FLOAT)
while (x) {
if (llGetListEntryType(mixedList, --x) == TYPE_FLOAT) result = [llList2Float(mixedList, x)] + result;
else result = [(float)llList2String(mixedList, x)] + result;
}
else if (type == TYPE_VECTOR)
while (x) {
if (llGetListEntryType(mixedList, --x) == TYPE_VECTOR) result = [llList2Vector(mixedList, x)] + result;
else result = [(vector)llList2String(mixedList, x)] + result;
}
else if (type == TYPE_ROTATION)
while (x) {
if (llGetListEntryType(mixedList, --x) == TYPE_ROTATION) result = [llList2Rot(mixedList, x)] + result;
else result = [(rotation)llList2String(mixedList, x)] + result;
}
else if (type == TYPE_STRING)
while (x)
result = [llList2String(mixedList, --x)] + result;
else if (type == TYPE_KEY)
while (x)
result = [llList2Key(mixedList, --x)] + result;
else result = mixedList;
return result;
}