User:Void Singer/Functions

From Second Life Wiki
< User:Void Singer
Revision as of 23:51, 15 July 2009 by Void Singer (talk | contribs) (perils of copypasta)
Jump to navigation Jump to search

String: Get Reverse Order

Reverse String Order (faster version)

<lsl>string uStringRevF( string vStrSrc ){

   integer vIntCnt = llStringLength( vStrSrc );
   @Loop; if (vIntCnt--){
       vStrSrc += llGetSubString( vStrSrc, vIntCnt, vIntCnt );
       jump Loop;
   }
   return llGetSubString( vStrSrc, llStringLength( vStrSrc ) >> 1, -1 );

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Reverse String Order (smaller memory version)

<lsl>string uStringRevS( string vStrSrc ){

   integer vIntCnt = llStringLength( vStrSrc );
   @Loop; if (vIntCnt--){
       vStrSrc += llGetSubString( vStrSrc, vIntCnt, vIntCnt );
       vStrSrc = llDeleteSubString( vStrSrc, vIntCnt, vIntCnt );
       jump Loop;
   }
   return vStrSrc;

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Return to top

String: Find Last Index

Get Last Index of String Test in String Source

<lsl>integer uGetStrIdxRev1( string vStrSrc, string vStrTst ){

   integer vIdxFnd =
     llStringLength( vStrSrc ) -
     llStringLength( vStrTst ) -
     llStringLength(
       llList2String(
         llParseStringKeepNulls( vStrSrc, (list)vStrTst, [] ),
         -1)
       );
return (vIdxFnd

List: Get Reverse Order

Reverse List Order (faster version)

<lsl>list uListRevF( list vLstSrc ){

   integer vIntCnt = (vLstSrc != []);
   @Loop; if (vIntCnt--){
       vLstSrc += llList2List( vLstSrc, vIntCnt, vIntCnt );
       jump Loop;
   }
   return llList2List( vLstSrc, (vLstSrc != []) >> 1, -1 );

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Reverse List Order (smaller memory version)

<lsl>list uListRevS( list vLstSrc ){

   integer vIntCnt = (vLstSrc != []);
   @Loop; if (vIntCnt--){
       vLstSrc += llList2List( vLstSrc, vIntCnt, vIntCnt );
       vLstSrc = llDeleteSubList( vLstSrc, vIntCnt, vIntCnt );
       jump Loop;
   }
   return vLstSrc;

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Return to top

List: Find Last Index

  • This function is a companion to llListFindList.
    • SPECIAL NOTE: this is only designed to work on string data that will NOT contain the "•" character(alt+7)... please use a different character to suit your needs.

Get Last Index of List Test in List Source

<lsl>integer uGetLstIdxRev( list vLstSrc, list vLstTst ){

   integer vIdxFnd =
     (vLstSrc != []) +
     ([] != vLstTst) +
     ([] != llParseString2List(
              llList2String(
                llParseStringKeepNulls(
                  llDumpList2String( vLstSrc, "•" ),
                  (list)llDumpList2String( vLstTst, "•" ),
                  [] ),
                -1 ),
              (list)"•",
              [] ));
return (vIdxFnd

List: Multi-Find Index (First or Last)

Get First Index in List Source of any element in List Test

<lsl>integer uMatchLstIdxFwd( list vLstSrc, list vLstTst ){

 return ((llParseString2List( 
            llList2String(
              llParseStringKeepNulls(
                llDumpList2String( vLstSrc, ";" ),
                vLstTst, [] ),
              0 ),
            (list)";", [] ) != []) + 1) %
        ((vLstSrc != []) + 1) - 1;

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Get Last Index in List Source of any element in List Test

<lsl>integer uMatchLstIdxRev( list vLstSrc, list vLstTst ){

 return (vLstSrc != []) -
   (llParseString2List(
      llList2String(
        llParseString2List( 
          llDumpList2String( vLstSrc, ";" ),
          vLstTst, [] ),
        -1 ),
      (list)";",
      [] ) != []) - 1;

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Return to top

Questions or Comments?

Feel free to leave me a note on my User Talk page.