|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| {{User:Cory Fimicoloud/hcard}} | | {{User:Cory Fimicoloud/hcard}} |
| ==My Functions==
| |
| ===Text===
| |
| ====String====
| |
| =====UTF8Len=====
| |
| Returns the UTF-8 byte count of the string passed to it.
| |
| <lsl>
| |
| integer UTF8Len(string fsString)
| |
| {
| |
| // Author: Cory Fimicoloud
| |
| // License: http://creativecommons.org/licenses/by-sa/3.0/us/
| |
| integer liLen = ~llStringLength(fsString);
| |
| string lsChar = "";
| |
| string lsEnc = "";
| |
| integer liByteLen = 0;
| |
| while (++liLen < 0)
| |
| {
| |
| lsEnc = llEscapeURL((lsChar = llGetSubString(fsString, liLen, liLen)));
| |
| if (lsChar != lsEnc)
| |
| liByteLen += llStringLength(lsEnc) / 3;
| |
| else
| |
| ++liByteLen;
| |
| }
| |
| return liByteLen;
| |
| }
| |
| default
| |
| {
| |
| state_entry()
| |
| {
| |
| // 63 characters. Each of the characters uses 1 byte except for ¢ (2 bytes) and € (3 bytes). Which results in 66 bytes.
| |
| string lsString = "Can I have $10 and 7¢, please? I would prefer it in €'s though.";
| |
| llOwnerSay("'" + lsString + "' is " + (string)UTF8Len(lsString) + " bytes.");
| |
| }
| |
| }</lsl>
| |
|
| |
| =====UTF8Split=====
| |
| Returns a list containing the string passed to it, split every fiSplit bytes.
| |
| <lsl>
| |
| list UTF8Split(string fsString, integer fiSplit)
| |
| {
| |
| // Author: Cory Fimicoloud
| |
| // License: http://creativecommons.org/licenses/by-sa/3.0/us/
| |
| string lsSplit = "";
| |
| list laSplit = [];
| |
| integer liLen = ~llStringLength(fsString);
| |
| string lsChar = "";
| |
| string lsEnc = "";
| |
| integer liByteLen = 0;
| |
| while (++liLen < 0)
| |
| {
| |
| lsChar = llGetSubString(fsString, liLen, liLen);
| |
| lsEnc = llEscapeURL(lsChar);
| |
| if (lsChar != lsEnc)
| |
| liByteLen += llStringLength(lsEnc) / 3;
| |
| else
| |
| ++liByteLen;
| |
| if (liByteLen <= fiSplit)
| |
| lsSplit += lsChar;
| |
| else
| |
| {
| |
| laSplit += [lsSplit];
| |
| lsSplit = lsChar;
| |
| liByteLen = 1;
| |
| }
| |
| }
| |
| return laSplit + [lsSplit];
| |
| }
| |
| default
| |
| {
| |
| state_entry()
| |
| {
| |
| list laSplit = UTF8Split("Can I have $10 and 7¢, please? I would prefer it in €'s though.", 33);
| |
| llOwnerSay("\nUTF8Split\n==========\n\t0: " + llList2String(laSplit, 0) + "\n\t1: " + llList2String(laSplit, 1));
| |
| }
| |
| }</lsl>
| |
|
| |
| ==Miscellaneous== | | ==Miscellaneous== |
| ===LSL/Mono Differences=== | | ===LSO/MONO Differences=== |
| Results are from 1000 iterations and are in seconds.
| |
| {| border="1" cellpadding="3" cellspacing="0" | | {| border="1" cellpadding="3" cellspacing="0" |
| !VM | | !VM |
| !Average | | !Average |
| !Total | | !Total |
| |+State Changing | | |+State Changing<br>''1000 iterations, in seconds.'' |
| | |- |
| | |LSO |
| | |0.000038 |
| | |00.037993 |
| |- | | |- |
| |Mono | | |MONO |
| |0.010054 | | |0.010054 |
| |10.053950 | | |10.053950 |
| | |} |
| | |
| | {| border="1" cellpadding="3" cellspacing="0" |
| | !VM |
| | !Count |
| | !Count + 1 Error |
| | |+Nested If Statements Limit |
| | |- |
| | |LSO |
| | |1474 |
| | |Byte code assembly failed -- out of memory |
| |- | | |- |
| |LSL | | |MONO |
| |0.000038 | | |2497 |
| |00.037993 | | |Syntax error |
| |} | | |} |
|
| |
|
| ==See Also== | | ==See Also== |
| * [[User:Cory_Fimicoloud/SimIPScan|Simulator IP Scan]] | | * [[User:Cory_Fimicoloud/SimIPScan|Simulator IP Scan]] |
| | * [[User:Cory_Fimicoloud/LSLFunctions|LSL Functions]] |
| * {{Jira Reporter}} | | * {{Jira Reporter}} |
|
| |
|