Fix from_str in stdlib, add concat_strings
This commit is contained in:
parent
d96fc51b9c
commit
de803e9024
@ -3,14 +3,20 @@ import std::from_str;
|
|||||||
import std::add_char;
|
import std::add_char;
|
||||||
import std::set_char;
|
import std::set_char;
|
||||||
import std::free_string;
|
import std::free_string;
|
||||||
|
import std::new_string;
|
||||||
import std::add_num_to_str;
|
import std::add_num_to_str;
|
||||||
|
import std::concat_strings;
|
||||||
|
|
||||||
fn main() -> i32 {
|
fn main() -> i32 {
|
||||||
let mut test = from_str("hello world");
|
let mut test = from_str("hello");
|
||||||
|
let mut other = from_str(" world");
|
||||||
|
|
||||||
|
concat_strings(&mut test, &other);
|
||||||
|
|
||||||
add_char(&mut test, '!');
|
add_char(&mut test, '!');
|
||||||
set_char(&mut test, 'B', 0);
|
add_char(&mut test, '\n');
|
||||||
add_num_to_str(&mut test, 1234);
|
|
||||||
|
add_num_to_str(&mut test, 175);
|
||||||
|
|
||||||
print(&test);
|
print(&test);
|
||||||
|
|
||||||
|
@ -39,14 +39,15 @@ pub fn new_string() -> String {
|
|||||||
|
|
||||||
pub fn from_str(str: *char) -> String {
|
pub fn from_str(str: *char) -> String {
|
||||||
let length = str_length(str);
|
let length = str_length(str);
|
||||||
let cloned = malloc(length as u64) as *char;
|
let mut new = new_string();
|
||||||
copy_bits(str, cloned, length as u64);
|
let static = String {
|
||||||
return String {
|
inner: str,
|
||||||
inner: cloned,
|
length: length - 1,
|
||||||
length: length -1,
|
|
||||||
max_length: length,
|
max_length: length,
|
||||||
must_be_freed: false,
|
must_be_freed: false,
|
||||||
};
|
};
|
||||||
|
concat_strings(&mut new, &static);
|
||||||
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_char(string: &mut String, c: char) {
|
pub fn add_char(string: &mut String, c: char) {
|
||||||
@ -63,7 +64,7 @@ pub fn add_char(string: &mut String, c: char) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(*string).inner[(*string).length] = c;
|
(*string).inner[(*string).length] = c;
|
||||||
(((*string).inner) as *u8)[((*string).length + 1)] = 0;
|
(((*string).inner) as *u8)[(*string).length + 1] = 0;
|
||||||
(*string).length = (*string).length + 1;
|
(*string).length = (*string).length + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,4 +125,10 @@ pub fn abs(f: f32) -> f32 {
|
|||||||
return f * (0.0 - 1.0);
|
return f * (0.0 - 1.0);
|
||||||
}
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn concat_strings(destination: &mut String, source: &String) {
|
||||||
|
for i in 0 .. (str_length((*source).inner) - 1) {
|
||||||
|
add_char(destination, (*source).inner[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user