Added DP_QC_STRING_CASE_FUNCTIONS extension, providing VM functions strtolower and...
authordresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 30 Apr 2007 17:27:16 +0000 (17:27 +0000)
committerdresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 30 Apr 2007 17:27:16 +0000 (17:27 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7216 d7cf8633-e32d-0410-b094-e92efae38249

clvm_cmds.c
common.h
mvm_cmds.c
prvm_cmds.c
prvm_cmds.h
svvm_cmds.c

index 8132071..2d820b8 100644 (file)
@@ -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
index 3d960d1..6bd42a2 100644 (file)
--- 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
 {
index b5f7927..80ea17e 100644 (file)
@@ -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
index 7381693..7c74a06 100644 (file)
@@ -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
index 2ee6ebc..5f1e80a 100644 (file)
@@ -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);
 
index 1f9fe7f..470b736 100644 (file)
@@ -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