Kaynağa Gözat

Added two new experimental methods to string isalpha and isdigit

mingodad 12 yıl önce
ebeveyn
işleme
f655140c67
1 değiştirilmiş dosya ile 26 ekleme ve 0 silme
  1. 26 0
      SquiLu/squirrel/sqbaselib.cpp

+ 26 - 0
SquiLu/squirrel/sqbaselib.cpp

@@ -1635,6 +1635,30 @@ static SQRESULT string_empty(HSQUIRRELVM v)
 	sq_pushbool(v,sq_getsize(v,1) == 0);
 	sq_pushbool(v,sq_getsize(v,1) == 0);
 	return 1;
 	return 1;
 }
 }
+
+static SQRESULT string_isalpha(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SQ_GET_STRING(v, 1, str);
+    SQ_GET_INTEGER(v, 2, idx);
+    if(idx >= str_size) {
+        return sq_throwerror(v, _SC("index %d out of range"), idx);
+    }
+	sq_pushbool(v, scisalpha(str[idx]));
+	return 1;
+}
+
+static SQRESULT string_isdigit(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SQ_GET_STRING(v, 1, str);
+    SQ_GET_INTEGER(v, 2, idx);
+    if(idx >= str_size) {
+        return sq_throwerror(v, _SC("index %d out of range"), idx);
+    }
+	sq_pushbool(v, scisdigit(str[idx]));
+	return 1;
+}
 
 
 #ifdef SQ_SUBLATIN
 #ifdef SQ_SUBLATIN
 #include "sublatin.h"
 #include "sublatin.h"
@@ -1765,6 +1789,8 @@ SQRegFunction SQSharedState::_string_default_delegate_funcz[]={
 	{_SC("split"),string_split,2, _SC("si")},
 	{_SC("split"),string_split,2, _SC("si")},
 	{_SC("split_by_strtok"),string_split_by_strtok,2, _SC("ss")},
 	{_SC("split_by_strtok"),string_split_by_strtok,2, _SC("ss")},
 	{_SC("empty"),string_empty,1, _SC("s")},
 	{_SC("empty"),string_empty,1, _SC("s")},
+	{_SC("isalpha"),string_isalpha,2, _SC("si")},
+	{_SC("isdigit"),string_isdigit,2, _SC("si")},
 #ifdef SQ_SUBLATIN
 #ifdef SQ_SUBLATIN
 	{_SC("sl_len"),string_sl_len,1, _SC("s")},
 	{_SC("sl_len"),string_sl_len,1, _SC("s")},
 	{_SC("sl_lower"),string_sl_lower,1, _SC("s")},
 	{_SC("sl_lower"),string_sl_lower,1, _SC("s")},