7ee6a73ea4
Add standard library modules: - Std::String: strlen, strcmp, concat, copy, starts_with wrappers - Std::Map: linear-probing hash map with String keys, int values Add error handling: - Result and Option algebraic enum examples - ? try operator for automatic error propagation in HIR lowering Compiler bugfixes: - Fix sizeof() for user-defined structs (new hSizeOf HIR node) - Fix HIR type lowering for char8, bool8, int8, uint8, etc. - Fix let statement lowering for pointer types (*char8 → int* bug) - Fix PrintInt ABI mismatch (int64_t → int in io.c) - Fix Makefile test bug (_test_tmp_pkg already exists) Documentation: - Rewrite README.md with features, examples, project structure - Add docs/LanguageRef.md — complete language reference - Add docs/Stdlib.md — standard library documentation - Add docs/BuildAndTest.md — build and test guide New examples: strings, map, result_option, try_operator (13 total)
50 lines
985 B
C
50 lines
985 B
C
/* Bux Standard Library - I/O functions */
|
|
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
|
|
/* PrintLine - print string with newline */
|
|
void PrintLine(const char* s) {
|
|
if (s != NULL) {
|
|
puts(s);
|
|
} else {
|
|
puts("");
|
|
}
|
|
}
|
|
|
|
/* Print - print string without newline */
|
|
void Print(const char* s) {
|
|
if (s != NULL) {
|
|
printf("%s", s);
|
|
}
|
|
}
|
|
|
|
/* PrintInt - print integer */
|
|
void PrintInt(int n) {
|
|
printf("%d", n);
|
|
}
|
|
|
|
/* PrintFloat - print float */
|
|
void PrintFloat(double f) {
|
|
printf("%g", f);
|
|
}
|
|
|
|
/* PrintBool - print boolean */
|
|
void PrintBool(int b) {
|
|
printf("%s", b ? "true" : "false");
|
|
}
|
|
|
|
/* ReadLine - read line from stdin (simplified) */
|
|
const char* ReadLine(void) {
|
|
static char buffer[1024];
|
|
if (fgets(buffer, sizeof(buffer), stdin) != NULL) {
|
|
size_t len = strlen(buffer);
|
|
if (len > 0 && buffer[len-1] == '\n') {
|
|
buffer[len-1] = '\0';
|
|
}
|
|
return buffer;
|
|
}
|
|
return "";
|
|
}
|