Pārlūkot izejas kodu

Updated Array_List: next_index -> count

master
Felix Brendel pirms 5 gadiem
vecāks
revīzija
1a09ed780c
5 mainītis faili ar 34 papildinājumiem un 44 dzēšanām
  1. +15
    -15
      arraylist.hpp
  2. +2
    -2
      error.hpp
  3. +6
    -6
      hooks.hpp
  4. +3
    -3
      print.hpp
  5. +8
    -18
      test.cpp

+ 15
- 15
arraylist.hpp Parādīt failu

@@ -7,11 +7,11 @@ template <typename type>
struct Array_List {
type* data;
u32 length;
u32 next_index;
u32 count;

void alloc(u32 initial_capacity = 16) {
data = (type*)malloc(initial_capacity * sizeof(type));
next_index = 0;
count = 0;
length = initial_capacity;
}

@@ -21,16 +21,16 @@ struct Array_List {
}

void clear() {
next_index = 0;
count = 0;
}

Array_List<type> clone() {
Array_List<type> ret;
ret.length = length;
ret.next_index = next_index;
ret.count = count;

ret.data = (type*)malloc(length * sizeof(type));
for (u32 i = 0; i < next_index; ++i) {
for (u32 i = 0; i < count; ++i) {
ret.data[i] = data[i];
}
return ret;
@@ -41,24 +41,24 @@ struct Array_List {
}

type* end() {
return data+(next_index);
return data+(count);
}

void remove_index(u32 index) {
data[index] = data[--next_index];
data[index] = data[--count];
}

void append(type element) {
if (next_index == length) {
if (count == length) {
length *= 2;
data = (type*)realloc(data, length * sizeof(type));
}
data[next_index] = element;
next_index++;
data[count] = element;
count++;
}

void reserve(u32 count) {
if (next_index+count >= (u32)length) {
void reserve(u32 amount) {
if (count+amount >= (u32)length) {
length *= 2;
data = (type*)realloc(data, length * sizeof(type));
}
@@ -112,9 +112,9 @@ struct Array_List {

void sort(s32 left=-1, s32 right=-1) {
if (left == -1) {
if (next_index == 0)
if (count == 0)
return;
sort(0, next_index - 1);
sort(0, count - 1);
return;
} else if (left == right) {
return;
@@ -130,7 +130,7 @@ struct Array_List {

u32 sorted_find(type elem, s32 left=-1, s32 right=-1) {
if (left == -1) {
return sorted_find(elem, 0, next_index - 1);
return sorted_find(elem, 0, count - 1);
} else if (left == right) {
if ((size_t)data[left] == (size_t)elem)
return left;


+ 2
- 2
error.hpp Parādīt failu

@@ -21,14 +21,14 @@ auto delete_error() -> void {
auto create_error(const char* c_func_name, const char* c_file_name,
u32 c_file_line, String type, const char* format, ...) -> void {

error = new Error;
error->type = type;
error = (Error*) malloc(sizeof(Error));

va_list args;
va_start(args, format);
error->message.length = print_va_args_to_string(&(error->message.data), format, &args);
va_end(args);

error->type = type;
print("\n%{color<}%{->Str} error:%{>color} %{->Str}\n",
console_red, &(error->type), &(error->message));



+ 6
- 6
hooks.hpp Parādīt failu

@@ -59,19 +59,19 @@ struct Hook : Array_List<Lambda<void()>> {
}
void operator<<(Lambda<void()> f) {
// FIXME(Felix): Why can I not call Array_List::append here??? Hallo?
if (next_index == length) {
if (count == length) {
length *= 2;
data = (Lambda<void()>*)realloc(data, length * sizeof(Lambda<void()>));
}
data[next_index] = f;
next_index++;
data[count] = f;
count++;
}
void operator()() {
while(next_index --> 0) {
while(count --> 0) {
fflush(stdout);
data[next_index]();
data[count]();
}
next_index = 0;
count = 0;
}
};



+ 3
- 3
print.hpp Parādīt failu

@@ -415,11 +415,11 @@ int print_color_start(FILE* f, char* str) {
}

int print_color_end(FILE* f) {
--color_stack.next_index;
if (color_stack.next_index == 0) {
--color_stack.count;
if (color_stack.count == 0) {
return print_to_file(f, "%s", console_normal);
} else {
return print_to_file(f, "%s", color_stack[color_stack.next_index-1]);
return print_to_file(f, "%s", color_stack[color_stack.count-1]);
}
}



+ 8
- 18
test.cpp Parādīt failu

@@ -49,24 +49,14 @@ s32 main(s32 argc, char* argv[]) {
// test_printer();

init_printer();
// create_generic_error("nothing to lex was found:\n"
// " in %{color<}%{->char}%{>color}\n"
// " at %{color<}%{->char}%{>color}\n"
// "bottom text\n",
// console_green,
// "some file name",
// console_cyan,
// "yesssssss");
create_generic_error("nothing to lex was found:\n"
" in %{color<}%{->char}%{>color}\n"
" at %{color<}%{->char}%{>color}\n"
"bottom text\n",
console_green,
"some file name",
console_cyan,
"yesssssss");

create_error(__FUNCTION__, __FILE__, __LINE__,
make_heap_string("generic"),
"nothing to lex was found:\n"
" in %{color<}%{->char}%{>color}\n"
" at %{color<}%{->char}%{>color}\n"
"bottom text\n",
console_green,
"some file name",
console_cyan,
"yesssssss");
return 0;
}

Notiek ielāde…
Atcelt
Saglabāt