Kintsugi OS 0.2.0
x86 Monolithic OS
Loading...
Searching...
No Matches
stdlib.c File Reference
#include "stdlib.h"
#include "ctypes.h"
#include "mem.h"
#include "stdio.h"

Functions

int fuzzy_search (const char *text, const char *query, int build_score, int **score, u32 *score_len)
 Алгоритм Fuzzy search.
 
void booltochar (u8 value, u8 *str)
 Конвертирует булеву переменную в строку "true" или "false".
 
void itoa (int num, char *str, int base)
 Преобразует целое число со знаком в строку в указанной системе счисления.
 
void utoa (u32 num, char *str, int base)
 Преобразует целое число без знака в строку в указанной системе счисления.
 
int atoi (const char *str)
 
u32 xorshift32 (u32 *state)
 
u32 rand_range (u32 *state, u32 min, u32 max)
 Генерирует псевдослучайное число в заданном диапазоне.
 
u32 rand (u32 *state)
 Генерирует псевдослучайное число используя линейный конгруэнтный метод.
 
void reboot ()
 Перезагружает систему.
 
void wait (int ms)
 Приостанавливает выполнение на указанное количество миллисекунд.
 
void * memset (void *s, int c, unsigned int n)
 Заполняет блок памяти указанным значением.
 
void * memcpy (void *dest, const void *src, unsigned int n)
 Копирует блок памяти из src в dest.
 
void memory_copy (u8 *source, u8 *dest, int nbytes)
 Копирует n байт из source в dest. (Альтернатива memcpy)
 
void memory_set (u8 *dest, u8 val, u32 len)
 Заполняет блок памяти указанным байт-значением.
 
void u32memory_set (u32 *dest, u32 val, u32 len)
 Заполняет блок памяти указанным 32-битным значением.
 
void int_to_ascii (int n, char str[])
 (legacy, используйте itoa) Преобразует целое число в строку ASCII.
 
int strtoint (char *str)
 Преобразует строку, представляющую число, в целое число со знаком.
 
void hex_to_ascii (int n, char str[])
 (legacy, используйте itoa) Преобразует целое число в шестнадцатеричную строку ASCII.
 
void strcpy (char *dest, char *src)
 Копирует строку из src в dest.
 
int hex_strtoint (char *str)
 Преобразует строку, представляющую шестнадцатеричное число, в целое число.
 
void reverse (char s[])
 Разворачивает строку на месте.
 
int strlen (char s[])
 Вычисляет длину строки.
 
void append (char s[], char n)
 Объединяет строку src к концу строки dest.
 
void backspace (char s[])
 Удаляет последний символ из строки (симуляция backspace).
 
int strcmp (char s1[], char s2[])
 Сравнивает две строки.
 
unsigned int is_delim (char c, char *delim)
 Проверяет, является ли символ разделителем.
 
char * strtok (char *src_str, char *delim)
 Разбивает строку на токены по разделителю.
 
char * strncpy (char *dest, const char *src, unsigned int n)
 Копирует до n символов из строки src в dest.
 
char * strncat (char *dest, const char *src, unsigned int n)
 Объединяет не более n символов строки src к концу строки dest.
 
int strncmp (const char *s1, const char *s2, unsigned int n)
 Сравнивает первые n символов двух строк.
 
char * strchr (const char *s, int c)
 Ищет первое вхождение символа в строке.
 
char * strstr (const char *haystack, const char *needle)
 Ищет первое вхождение подстроки needle в строке haystack.
 
int vsnprintf (char *buf, unsigned int size, const char *fmt, va_list args)
 Записывает форматированную строку в буфер с ограничением размера для va_list.
 
int sprintf (char *buf, const char *fmt,...)
 Записывает форматированную строку в буфер.
 
int snprintf (char *buf, unsigned int size, const char *fmt,...)
 Записывает форматированную строку в буфер с ограничением размера.
 
u32 strspn (const u8 *str1, const u8 *str2)
 Вычисляет длину начального сегмента строки str1, состоящего только из символов строки str2.
 
u32 strcspn (const u8 *str1, const u8 *str2)
 Вычисляет длину начального сегмента строки str1, который не содержит ни одного символа из строки str2.
 
u8strpbrk (const u8 *str1, const u8 *str2)
 Ищет в строке str1 первый символ, который совпадает с любым символом из строки str2.
 
void * memmove (void *dest, const void *src, u32 n)
 Перемещает блок памяти из src в dest. Области могут перекрываться.
 
int memcmp (const void *ptr1, const void *ptr2, u32 n)
 Сравнивает два блока памяти.
 
void * memchr (const void *ptr, int c, u32 n)
 Ищет первое вхождение символа в блоке памяти.
 

Function Documentation

◆ append()

void append ( char  s[],
char  n 
)

Объединяет строку src к концу строки dest.

Parameters
destУказатель на целевую строку. Должна иметь достаточно места.
srcУказатель на строку-источник.

◆ atoi()

int atoi ( const char *  str)

◆ backspace()

void backspace ( char  s[])

Удаляет последний символ из строки (симуляция backspace).

Parameters
sУказатель на строку для модификации.

◆ booltochar()

void booltochar ( u8  value,
u8 str 
)

Конвертирует булеву переменную в строку "true" или "false".

Parameters
valueБулева переменная для конвертации.
strУказатель на буфер, куда будет записана результирующая строка. Буфер должен быть достаточно большим (минимум 6 символов для "false").

◆ fuzzy_search()

int fuzzy_search ( const char *  text,
const char *  query,
int  build_score,
int **  score,
u32 score_len 
)

Алгоритм Fuzzy search.

Parameters
[in]textТекст
[in]queryЗапрос
[in]build_scoreОценка за построение
scoreОценка
score_lenДлина оценка
Returns
int Оценка

◆ hex_strtoint()

int hex_strtoint ( char *  str)

Преобразует строку, представляющую шестнадцатеричное число, в целое число.

Parameters
strУказатель на строку для преобразования (в формате "0xFF", "FF", etc.).
Returns
Результат преобразования.

◆ hex_to_ascii()

void hex_to_ascii ( int  n,
char  str[] 
)

(legacy, используйте itoa) Преобразует целое число в шестнадцатеричную строку ASCII.

Parameters
nЧисло для преобразования.
strБуфер для записи результата.

◆ int_to_ascii()

void int_to_ascii ( int  n,
char  str[] 
)

(legacy, используйте itoa) Преобразует целое число в строку ASCII.

K&R Реализация

◆ is_delim()

unsigned int is_delim ( char  c,
char *  delim 
)

Проверяет, является ли символ разделителем.

Parameters
cПроверяемый символ.
delimСтрока с разделителями.
Returns
Ненулевое значение, если символ является разделителем, иначе 0.

◆ itoa()

void itoa ( int  num,
char *  str,
int  base 
)

Преобразует целое число со знаком в строку в указанной системе счисления.

Parameters
numЧисло для преобразования.
strУказатель на буфер для записи результата.
baseОснование системы счисления (от 2 до 36).

◆ memchr()

void * memchr ( const void *  ptr,
int  c,
u32  n 
)

Ищет первое вхождение символа в блоке памяти.

Parameters
ptrУказатель на блок памяти для поиска.
cИскомый символ (передается как int, но преобразуется в unsigned char).
nРазмер блока памяти в байтах.
Returns
Указатель на найденный символ или NULL, если символ не найден.

◆ memcmp()

int memcmp ( const void *  ptr1,
const void *  ptr2,
u32  n 
)

Сравнивает два блока памяти.

Parameters
ptr1Указатель на первый блок памяти.
ptr2Указатель на второй блок памяти.
nКоличество байт для сравнения.
Returns
0 если блоки идентичны, >0 если ptr1 > ptr2, <0 если ptr1 < ptr2.

◆ memcpy()

void * memcpy ( void *  dest,
const void *  src,
unsigned int  n 
)

Копирует блок памяти из src в dest.

Parameters
destУказатель на назначение.
srcУказатель на источник.
nКоличество байт для копирования.
Returns
Указатель на назначение (dest).

◆ memmove()

void * memmove ( void *  dest,
const void *  src,
u32  n 
)

Перемещает блок памяти из src в dest. Области могут перекрываться.

Parameters
destУказатель на назначение.
srcУказатель на источник.
nКоличество байт для копирования.
Returns
Указатель на назначение (dest).

◆ memory_copy()

void memory_copy ( u8 source,
u8 dest,
int  nbytes 
)

Копирует n байт из source в dest. (Альтернатива memcpy)

Parameters
sourceУказатель на источник.
destУказатель на назначение.
nbytesКоличество байт для копирования.

◆ memory_set()

void memory_set ( u8 dest,
u8  val,
u32  len 
)

Заполняет блок памяти указанным байт-значением.

Parameters
destУказатель на начало блока памяти.
valЗначение для заполнения.
lenКоличество байт для заполнения.

◆ memset()

void * memset ( void *  s,
int  c,
unsigned int  n 
)

Заполняет блок памяти указанным значением.

Parameters
sУказатель на начало блока памяти.
cЗначение для заполнения (передается как int, но преобразуется в unsigned char).
nКоличество байт для заполнения.
Returns
Указатель на начало блока памяти (s).

◆ rand()

u32 rand ( u32 state)

Генерирует псевдослучайное число используя линейный конгруэнтный метод.

Parameters
stateУказатель на переменную состояния генератора.
Returns
Псевдослучайное число в диапазоне [0, UINT32_MAX].

◆ rand_range()

u32 rand_range ( u32 state,
u32  min,
u32  max 
)

Генерирует псевдослучайное число в заданном диапазоне.

Parameters
stateУказатель на переменную состояния генератора.
minНижняя граница диапазона (включительно).
maxВерхняя граница диапазона (включительно).
Returns
Псевдослучайное число в диапазоне [min, max].

◆ reboot()

void reboot ( )

Перезагружает систему.

◆ reverse()

void reverse ( char  s[])

Разворачивает строку на месте.

Parameters
sУказатель на строку для разворота.

◆ snprintf()

int snprintf ( char *  buf,
unsigned int  size,
const char *  fmt,
  ... 
)

Записывает форматированную строку в буфер с ограничением размера.

Parameters
bufУказатель на буфер для записи результата.
sizeМаксимальное количество символов для записи (включая завершающий ноль).
fmtУказатель на строку формата.
...Аргументы, соответствующие спецификаторам в формате.
Returns
Количество символов, которые были бы записаны, если бы size был достаточным (без учета завершающего нуля). Если возвращаемое значение >= size, произошло усечение.

◆ sprintf()

int sprintf ( char *  buf,
const char *  fmt,
  ... 
)

Записывает форматированную строку в буфер.

Parameters
bufУказатель на буфер для записи результата.
fmtУказатель на строку формата.
...Аргументы, соответствующие спецификаторам в формате.
Returns
Количество символов, записанных в буфер (без учета завершающего нуля).

◆ strchr()

char * strchr ( const char *  s,
int  c 
)

Ищет первое вхождение символа в строке.

Parameters
sУказатель на строку для поиска.
cИскомый символ (передается как int, но преобразуется в char).
Returns
Указатель на найденный символ в строке или NULL, если символ не найден.

◆ strcmp()

int strcmp ( char  s1[],
char  s2[] 
)

Сравнивает две строки.

Parameters
s1Указатель на первую строку.
s2Указатель на вторую строку.
Returns
0 если строки равны, >0 если s1 > s2, <0 если s1 < s2.

◆ strcpy()

void strcpy ( char *  dest,
char *  src 
)

Копирует строку из src в dest.

Parameters
destУказатель на буфер назначения.
srcУказатель на строку-источник.

◆ strcspn()

u32 strcspn ( const u8 str1,
const u8 str2 
)

Вычисляет длину начального сегмента строки str1, который не содержит ни одного символа из строки str2.

Parameters
str1Указатель на анализируемую строку.
str2Указатель на строку, содержащую набор запрещенных символов.
Returns
Длина начального сегмента.

◆ strlen()

int strlen ( char  s[])

Вычисляет длину строки.

Parameters
sУказатель на строку.
Returns
Длина строки (количество символов до завершающего нуля '\0').

◆ strncat()

char * strncat ( char *  dest,
const char *  src,
unsigned int  n 
)

Объединяет не более n символов строки src к концу строки dest.

Parameters
destУказатель на целевую строку. Должна иметь достаточно места.
srcУказатель на строку-источник.
nМаксимальное количество символов для добавления.
Returns
Указатель на целевую строку (dest).

◆ strncmp()

int strncmp ( const char *  s1,
const char *  s2,
unsigned int  n 
)

Сравнивает первые n символов двух строк.

Parameters
s1Указатель на первую строку.
s2Указатель на вторую строку.
nМаксимальное количество символов для сравнения.
Returns
0 если части строк равны, >0 если s1 > s2, <0 если s1 < s2.

◆ strncpy()

char * strncpy ( char *  dest,
const char *  src,
unsigned int  n 
)

Копирует до n символов из строки src в dest.

Parameters
destУказатель на буфер назначения.
srcУказатель на строку-источник.
nМаксимальное количество символов для копирования.
Returns
Указатель на буфер назначения (dest).

◆ strpbrk()

u8 * strpbrk ( const u8 str1,
const u8 str2 
)

Ищет в строке str1 первый символ, который совпадает с любым символом из строки str2.

Parameters
str1Указатель на строку для поиска.
str2Указатель на строку с искомыми символами.
Returns
Указатель на найденный символ или NULL, если символ не найден.

◆ strspn()

u32 strspn ( const u8 str1,
const u8 str2 
)

Вычисляет длину начального сегмента строки str1, состоящего только из символов строки str2.

Parameters
str1Указатель на анализируемую строку.
str2Указатель на строку, содержащую набор искомых символов.
Returns
Длина начального сегмента.

◆ strstr()

char * strstr ( const char *  haystack,
const char *  needle 
)

Ищет первое вхождение подстроки needle в строке haystack.

Parameters
haystackУказатель на строку, в которой выполняется поиск.
needleУказатель на искомую подстроку.
Returns
Указатель на начало найденной подстроки или NULL, если подстрока не найдена.

◆ strtoint()

int strtoint ( char *  str)

Преобразует строку, представляющую число, в целое число со знаком.

Parameters
strУказатель на строку для преобразования.
Returns
Результат преобразования.

◆ strtok()

char * strtok ( char *  src_str,
char *  delim 
)

Разбивает строку на токены по разделителю.

Parameters
src_strСтрока для разбиения. При последующих вызовах передавайте NULL.
delimСтрока, содержащая символы-разделители.
Returns
Указатель на следующий токен или NULL, если токенов больше нет.

◆ u32memory_set()

void u32memory_set ( u32 dest,
u32  val,
u32  len 
)

Заполняет блок памяти указанным 32-битным значением.

Parameters
destУказатель на начало блока памяти (должен быть выровнен по границе 4 байта).
valЗначение для заполнения.
lenКоличество 32-битных слов для заполнения.

◆ utoa()

void utoa ( u32  num,
char *  str,
int  base 
)

Преобразует целое число без знака в строку в указанной системе счисления.

Parameters
numЧисло для преобразования.
strУказатель на буфер для записи результата.
baseОснование системы счисления (от 2 до 36).

◆ vsnprintf()

int vsnprintf ( char *  buf,
unsigned int  size,
const char *  fmt,
va_list  args 
)

Записывает форматированную строку в буфер с ограничением размера для va_list.

Parameters
bufУказатель на буфер для записи результата.
sizeМаксимальное количество символов для записи (включая завершающий ноль).
fmtУказатель на строку формата.
argsАргументы типа va_list.
...Аргументы, соответствующие спецификаторам в формате.
Returns
Количество символов, которые были бы записаны, если бы size был достаточным (без учета завершающего нуля). Если возвращаемое значение >= size, произошло усечение.

◆ wait()

void wait ( int  ms)

Приостанавливает выполнение на указанное количество миллисекунд.

Parameters
msВремя задержки в миллисекундах.

◆ xorshift32()

u32 xorshift32 ( u32 state)