From 12241b4c7b82626b1e04a4b53c163626befc99c8 Mon Sep 17 00:00:00 2001 From: dresk Date: Mon, 30 Apr 2007 17:27:16 +0000 Subject: [PATCH] Added DP_QC_STRING_CASE_FUNCTIONS extension, providing VM functions strtolower and strtoupper which return the lowercase and uppercase of strings respectively, available across the CL, SV and MENU VMs. git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7216 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 4 ++-- common.h | 2 ++ mvm_cmds.c | 5 +++-- prvm_cmds.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ prvm_cmds.h | 3 +++ svvm_cmds.c | 5 +++-- 6 files changed, 58 insertions(+), 6 deletions(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index 81320714..2d820b85 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -3162,8 +3162,8 @@ VM_strlennocol, // #476 float(string s) : DRESK - String Length (not countin VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS) VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME) VM_tokenizebyseparator, // #479 float(string s) tokenizebyseparator (DP_QC_TOKENIZEBYSEPARATOR) -NULL, // #480 -NULL, // #481 +VM_strtolower, // #480 string(string s) VM_strtolower : DRESK - Return string as lowercase +VM_strtoupper, // #481 string(string s) VM_strtoupper : DRESK - Return string as uppercase NULL, // #482 NULL, // #483 NULL, // #484 diff --git a/common.h b/common.h index 3d960d13..6bd42a29 100644 --- a/common.h +++ b/common.h @@ -289,6 +289,8 @@ int COM_ReadAndTokenizeLine(const char **text, char **argv, int maxargc, char *t size_t COM_StringLengthNoColors(const char *s, size_t size_s, qboolean *valid); qboolean COM_StringDecolorize(const char *in, size_t size_in, char *out, size_t size_out, qboolean escape_carets); +void COM_ToLowerString (const char *in, char *out, size_t size_out); +void COM_ToUpperString (const char *in, char *out, size_t size_out); typedef struct stringlist_s { diff --git a/mvm_cmds.c b/mvm_cmds.c index b5f79278..80ea17e2 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -9,6 +9,7 @@ char *vm_m_extensions = "DP_MENU_EXTRESPONSEPACKET " "DP_QC_ASINACOSATANATAN2TAN " "DP_QC_STRFTIME " +"DP_QC_STRING_CASE_FUNCTIONS " "DP_QC_STRINGCOLORFUNCTIONS " "DP_QC_TOKENIZEBYSEPARATOR " "DP_QC_UNLIMITEDTEMPSTRINGS " @@ -1238,8 +1239,8 @@ VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS) VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME) VM_tokenizebyseparator, // #479 float(string s) tokenizebyseparator (DP_QC_TOKENIZEBYSEPARATOR) -NULL, // #480 -NULL, // #481 +VM_strtolower, // #480 string(string s) VM_strtolower : DRESK - Return string as lowercase +VM_strtoupper, // #481 string(string s) VM_strtoupper : DRESK - Return string as uppercase NULL, // #482 NULL, // #483 NULL, // #484 diff --git a/prvm_cmds.c b/prvm_cmds.c index 73816935..7c74a060 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -1788,6 +1788,51 @@ void VM_strlennocol(void) PRVM_G_FLOAT(OFS_RETURN) = nCnt; } +// DRESK - String to Uppercase and Lowercase +/* +========= +VM_strtolower + +string strtolower(string s) +========= +*/ +// string (string s) strtolower = #480; // returns passed in string in lowercase form +void VM_strtolower(void) +{ + char szNewString[VM_STRINGTEMP_LENGTH]; + const char *szString; + + // Prepare Strings + VM_SAFEPARMCOUNT(1,VM_strtolower); + szString = PRVM_G_STRING(OFS_PARM0); + + COM_ToLowerString(szString, szNewString, sizeof(szNewString) ); + + PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(szNewString); +} + +/* +========= +VM_strtoupper + +string strtoupper(string s) +========= +*/ +// string (string s) strtoupper = #481; // returns passed in string in uppercase form +void VM_strtoupper(void) +{ + char szNewString[VM_STRINGTEMP_LENGTH]; + const char *szString; + + // Prepare Strings + VM_SAFEPARMCOUNT(1,VM_strtoupper); + szString = PRVM_G_STRING(OFS_PARM0); + + COM_ToUpperString(szString, szNewString, sizeof(szNewString) ); + + PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(szNewString); +} + /* ========= VM_strcat diff --git a/prvm_cmds.h b/prvm_cmds.h index 2ee6ebca..5f1e80a5 100644 --- a/prvm_cmds.h +++ b/prvm_cmds.h @@ -291,6 +291,9 @@ void VM_strunzone(void); void VM_strlennocol(void); // DRESK - Decolorized String void VM_strdecolorize(void); +// DRESK - String Uppercase and Lowercase Support +void VM_strtolower(void); +void VM_strtoupper(void); void VM_clcommand (void); diff --git a/svvm_cmds.c b/svvm_cmds.c index 1f9fe7fb..470b7366 100644 --- a/svvm_cmds.c +++ b/svvm_cmds.c @@ -68,6 +68,7 @@ char *vm_sv_extensions = "DP_QC_RANDOMVEC " "DP_QC_SINCOSSQRTPOW " "DP_QC_STRFTIME " +"DP_QC_STRING_CASE_FUNCTIONS " "DP_QC_STRINGBUFFERS " "DP_QC_STRINGCOLORFUNCTIONS " "DP_QC_TOKENIZEBYSEPARATOR " @@ -3139,8 +3140,8 @@ VM_strlennocol, // #476 float(string s) : DRESK - String Length (not countin VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_SV_STRINGCOLORFUNCTIONS) VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME) VM_tokenizebyseparator, // #479 float(string s) tokenizebyseparator (DP_QC_TOKENIZEBYSEPARATOR) -NULL, // #480 -NULL, // #481 +VM_strtolower, // #480 string(string s) VM_strtolower : DRESK - Return string as lowercase +VM_strtoupper, // #481 string(string s) VM_strtoupper : DRESK - Return string as uppercase NULL, // #482 NULL, // #483 NULL, // #484 -- 2.39.2