mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
Update the remaining functions from the string library to a more dynamic style.
This commit is contained in:
parent
2e3fc1e47e
commit
299bc5ba77
@ -474,12 +474,12 @@ static SQInteger SqCenterStr(HSQUIRRELVM vm)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
CSStr StrJustAlphaNum(CSStr str)
|
Buffer StrJustAlphaNumB(CSStr str)
|
||||||
{
|
{
|
||||||
// See if we actually have something to search for
|
// See if we actually have something to search for
|
||||||
if(!str || *str == '\0')
|
if(!str || *str == '\0')
|
||||||
{
|
{
|
||||||
return _SC(""); // Default to an empty string!
|
return Buffer(); // Default to an empty buffer!
|
||||||
}
|
}
|
||||||
// Calculate the string length
|
// Calculate the string length
|
||||||
Uint32 size = std::strlen(str);
|
Uint32 size = std::strlen(str);
|
||||||
@ -501,8 +501,49 @@ CSStr StrJustAlphaNum(CSStr str)
|
|||||||
}
|
}
|
||||||
// End the resulted string
|
// End the resulted string
|
||||||
b.At(n) = '\0';
|
b.At(n) = '\0';
|
||||||
// Return the string
|
// Move the cursor to the end
|
||||||
return b.Get< SQChar >();
|
b.Move(n);
|
||||||
|
// Return ownership of the buffer
|
||||||
|
return std::move(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
CSStr StrJustAlphaNum(CSStr str)
|
||||||
|
{
|
||||||
|
// See if we actually have something to search for
|
||||||
|
if(!str || *str == '\0')
|
||||||
|
{
|
||||||
|
return _SC(""); // Default to an empty string!
|
||||||
|
}
|
||||||
|
// Attempt to convert and return the result
|
||||||
|
return StrJustAlphaNumB(str).Get< SQChar >();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
static SQInteger SqJustAlphaNum(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
// Attempt to retrieve the value from the stack as a string
|
||||||
|
StackStrF val(vm, 2);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(val.mRes))
|
||||||
|
{
|
||||||
|
return val.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Forward the call to the actual implementation and store the buffer
|
||||||
|
Buffer b(StrJustAlphaNumB(val.mPtr));
|
||||||
|
// Is there anything in the buffer?
|
||||||
|
if (!b)
|
||||||
|
{
|
||||||
|
// Default to an empty string
|
||||||
|
sq_pushstring(vm, _SC(""), 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Push the buffer data as a string
|
||||||
|
sq_pushstring(vm, b.Data(), b.Position());
|
||||||
|
}
|
||||||
|
// We have a value to return on the stack
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
@ -1186,7 +1227,6 @@ void Register_String(HSQUIRRELVM vm)
|
|||||||
Table strns(vm);
|
Table strns(vm);
|
||||||
|
|
||||||
strns.Func(_SC("FromArray"), &FromArray)
|
strns.Func(_SC("FromArray"), &FromArray)
|
||||||
.Func(_SC("JustAlphaNum"), &StrJustAlphaNum)
|
|
||||||
.Func(_SC("Explode"), &StrExplode)
|
.Func(_SC("Explode"), &StrExplode)
|
||||||
.Func(_SC("Implode"), &StrImplode)
|
.Func(_SC("Implode"), &StrImplode)
|
||||||
.SquirrelFunc(_SC("Center"), &SqCenterStr)
|
.SquirrelFunc(_SC("Center"), &SqCenterStr)
|
||||||
@ -1198,6 +1238,7 @@ void Register_String(HSQUIRRELVM vm)
|
|||||||
.SquirrelFunc(_SC("ToUpper"), &SqToUppercase)
|
.SquirrelFunc(_SC("ToUpper"), &SqToUppercase)
|
||||||
.SquirrelFunc(_SC("Lowercase"), &SqToLowercase)
|
.SquirrelFunc(_SC("Lowercase"), &SqToLowercase)
|
||||||
.SquirrelFunc(_SC("Uppercase"), &SqToUppercase)
|
.SquirrelFunc(_SC("Uppercase"), &SqToUppercase)
|
||||||
|
.SquirrelFunc(_SC("JustAlnum"), &SqJustAlphaNum)
|
||||||
.SquirrelFunc(_SC("AreAllSpace"), &StrCType< CharClassSpec< CharClass::IsSpace > >::AllChars)
|
.SquirrelFunc(_SC("AreAllSpace"), &StrCType< CharClassSpec< CharClass::IsSpace > >::AllChars)
|
||||||
.SquirrelFunc(_SC("AreAllPrint"), &StrCType< CharClassSpec< CharClass::IsPrint > >::AllChars)
|
.SquirrelFunc(_SC("AreAllPrint"), &StrCType< CharClassSpec< CharClass::IsPrint > >::AllChars)
|
||||||
.SquirrelFunc(_SC("AreAllCntrl"), &StrCType< CharClassSpec< CharClass::IsCntrl > >::AllChars)
|
.SquirrelFunc(_SC("AreAllCntrl"), &StrCType< CharClassSpec< CharClass::IsCntrl > >::AllChars)
|
||||||
|
Loading…
Reference in New Issue
Block a user