Skip to content

Commit b67d039

Browse files
committed
Adding String.lower() and String.upper()
1 parent 0a81514 commit b67d039

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

rsl/RSL_String.c

+48
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,52 @@ int String_$_length_$_(IDENT_MPTR_RAW * s_)
184184
{
185185
String * s = s_ ->obj;
186186
return s->length;
187+
}
188+
189+
IDENT_MPTR_RAW * String_$_lower_$_(IDENT_MPTR_RAW * right_, IDENT_MPTR_RAW * $_mptr_in)
190+
{
191+
debugPrintf("String_$_lower %s -> %s\n",right_->debugName, $_mptr_in->debugName);
192+
_$_mptr __attribute__ ((__cleanup__(_$_cleanup))) $_mptr_temp;
193+
IDENT_MPTR_INITIALIZE_RAW (&$_mptr_temp, xstr($_mptr_temp));
194+
IDENT_MPTR_RAW * s_ = String_$_String_$_(&$_mptr_temp);
195+
String * s = s_->obj;
196+
String * right = right_->obj;
197+
198+
s->buffer = malloc(right->length + 1);
199+
200+
201+
for(int i = 0; right->buffer[i]; i++){
202+
s->buffer[i] = tolower(right->buffer[i]);
203+
}
204+
205+
s->length = right->length;
206+
s->buffer[s->length] = 0;
207+
s->isStaticBuffer = false;
208+
209+
_$_mptr_prepare(&$_mptr_temp,$_mptr_in);
210+
return $_mptr_in;
211+
}
212+
213+
IDENT_MPTR_RAW * String_$_upper_$_(IDENT_MPTR_RAW * right_, IDENT_MPTR_RAW * $_mptr_in)
214+
{
215+
debugPrintf("String_$_lower %s -> %s\n",right_->debugName, $_mptr_in->debugName);
216+
_$_mptr __attribute__ ((__cleanup__(_$_cleanup))) $_mptr_temp;
217+
IDENT_MPTR_INITIALIZE_RAW (&$_mptr_temp, xstr($_mptr_temp));
218+
IDENT_MPTR_RAW * s_ = String_$_String_$_(&$_mptr_temp);
219+
String * s = s_->obj;
220+
String * right = right_->obj;
221+
222+
s->buffer = malloc(right->length + 1);
223+
224+
225+
for(int i = 0; right->buffer[i]; i++){
226+
s->buffer[i] = toupper(right->buffer[i]);
227+
}
228+
229+
s->length = right->length;
230+
s->buffer[s->length] = 0;
231+
s->isStaticBuffer = false;
232+
233+
_$_mptr_prepare(&$_mptr_temp,$_mptr_in);
234+
return $_mptr_in;
187235
}

rsl/RSL_String.h

+5
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,9 @@ IDENT_MPTR_RAW * float_$_plus_$_String(float left, IDENT_MPTR_RAW * right_, IDEN
5050
char String_$_getObjectAtIndex_$_int(IDENT_MPTR_RAW * right_, int left);
5151

5252
int String_$_length_$_(IDENT_MPTR_RAW * string);
53+
54+
IDENT_MPTR_RAW * String_$_lower_$_(IDENT_MPTR_RAW * right_, IDENT_MPTR_RAW * $_mptr_in);
55+
56+
IDENT_MPTR_RAW * String_$_upper_$_(IDENT_MPTR_RAW * right_, IDENT_MPTR_RAW * $_mptr_in);
57+
5358
#endif

rsl/String.rix

+4
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@
33
String::BaseType
44
length->int()
55
//Virtual
6+
lower->String()
7+
//Virtual
8+
upper->String()
9+
//Virtual
610
//Done
711
##external ""

0 commit comments

Comments
 (0)