-#include <assert.h>
+#include "system/stacktrace.h"
#include <stdbool.h>
#include "edit_field.h"
struct Edit_field
{
- Lt *lt;
+ Lt lt;
char *buffer;
size_t buffer_size;
size_t cursor;
Vec font_size,
Color font_color)
{
- assert(font);
+ trace_assert(font);
- Lt *lt = create_lt();
+ Lt lt = create_lt();
if (lt == NULL) {
return NULL;
}
- Edit_field *const edit_field = PUSH_LT(lt, nth_alloc(sizeof(Edit_field)), free);
+ Edit_field *const edit_field = PUSH_LT(lt, nth_calloc(1, sizeof(Edit_field)), free);
if (edit_field == NULL) {
RETURN_LT(lt, NULL);
}
edit_field->lt = lt;
- edit_field->buffer = PUSH_LT(lt, nth_alloc(sizeof(char) * (BUFFER_CAPACITY + 10)), free);
+ edit_field->buffer = PUSH_LT(lt, nth_calloc(1, sizeof(char) * (BUFFER_CAPACITY + 10)), free);
if (edit_field->buffer == NULL) {
RETURN_LT(lt, NULL);
}
void destroy_edit_field(Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
RETURN_LT0(edit_field->lt);
}
SDL_Renderer *renderer,
Point position)
{
- assert(edit_field);
- assert(renderer);
+ trace_assert(edit_field);
+ trace_assert(renderer);
const float cursor_y_overflow = 10.0f;
const float cursor_width = 2.0f;
int edit_field_handle_event(Edit_field *edit_field,
const SDL_Event *event)
{
- assert(edit_field);
- assert(event);
+ trace_assert(edit_field);
+ trace_assert(event);
switch (event->type) {
case SDL_KEYDOWN:
const char *edit_field_as_text(const Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
return edit_field->buffer;
}
static void edit_field_right(Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
if (edit_field->cursor < edit_field->buffer_size) {
edit_field->cursor++;
}
static void edit_field_backspace(Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
if (edit_field->cursor == 0) {
return;
static void edit_field_delete(Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
if (edit_field->cursor >= edit_field->buffer_size) {
return;
static void edit_field_insert_char(Edit_field *edit_field, char c)
{
- assert(edit_field);
+ trace_assert(edit_field);
if (edit_field->buffer_size >= BUFFER_CAPACITY) {
return;
void edit_field_clean(Edit_field *edit_field)
{
- assert(edit_field);
+ trace_assert(edit_field);
edit_field->cursor = 0;
edit_field->buffer_size = 0;
void edit_field_replace(Edit_field *edit_field, const char *text)
{
- assert(edit_field);
+ trace_assert(edit_field);
edit_field_clean(edit_field);