Files
jsix/src/libraries/libc_free/include/stdint.h.cog
Justin C. Miller fca570a163 [scripts] Make j6libc.py into the codegen package
j6libc.py was initially made for libc to generate stdint.h, but it
gained a few things that aren't libc-specific. Move it to a package and
split the int-types-specific code into codegen.int_types.
2024-08-10 23:29:21 -07:00

69 lines
2.8 KiB
C

#pragma once
/** \file stdint.h
* Fixed-width integer types
*
* This file is part of the C standard library for the jsix operating
* system.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/**[[[cog code generation
import cog
from codegen.int_types import definition, int_widths, int_mods
for width in int_widths:
definition("typedef", f"__INT{width}_TYPE__", f"int{width}_t;")
definition("#define", f"INT{width}_WIDTH", f"{width}")
definition("#define", f"INT{width}_MAX", f"__INT{width}_MAX__")
definition("#define", f"INT{width}_MIN", f"((-__INT{width}_MAX__) - 1)")
definition("#define", f"INT{width}_C( x )", f"x ## __INT{width}_C_SUFFIX__")
cog.outl()
definition("typedef", f"__UINT{width}_TYPE__", f"uint{width}_t;")
definition("#define", f"UINT{width}_WIDTH", f"{width}")
definition("#define", f"UINT{width}_MAX", f"__UINT{width}_MAX__")
definition("#define", f"UINT{width}_C( x )", f"x ## __UINT{width}_C_SUFFIX__")
for mod in int_mods:
cog.outl()
definition("typedef", f"__INT_{mod.upper()}{width}_TYPE__", f"int_{mod}{width}_t;")
definition("typedef", f"__UINT_{mod.upper()}{width}_TYPE__", f"uint_{mod}{width}_t;")
definition("#define", f"INT_{mod.upper()}{width}_WIDTH", f"{width}")
definition("#define", f"INT_{mod.upper()}{width}_MAX", f"__INT_{mod.upper()}{width}_MAX__")
definition("#define", f"INT_{mod.upper()}{width}_MIN", f"((-__INT_{mod.upper()}{width}_MAX) - 1)")
cog.outl()
definition("typedef", f"__UINT_{mod.upper()}{width}_TYPE__", f"uint_least{width}_t;")
definition("#define", f"UINT_{mod.upper()}{width}_WIDTH", f"{width}")
definition("#define", f"UINT_{mod.upper()}{width}_MAX", f"__UINT_{mod.upper()}{width}_MAX__")
cog.outl()
]]]*/
/*[[[end]]]*/
typedef __INTMAX_TYPE__ intmax_t;
#define INTMAX_WIDTH __INTMAX_WIDTH__
#define INTMAX_MAX __INTMAX_MAX__
#define INTMAX_MIN ((-__INTMAX_MAX__) - 1)
#define INTMAX_C( x ) x ## __INTMAX_C_SUFFIX__
typedef __UINTMAX_TYPE__ uintmax_t;
#define UINTMAX_WIDTH __UINTMAX_WIDTH__
#define UINTMAX_MAX __UINTMAX_MAX__
#define UINTMAX_C( x ) x ## __UINTMAX_C_SUFFIX__
typedef __INTPTR_TYPE__ intptr_t;
#define INTPTR_WIDTH __INTPTR_WIDTH__
#define INTPTR_MAX __INTPTR_MAX__
#define INTPTR_MIN ((-__INTPTR_MAX__) - 1)
typedef __UINTPTR_TYPE__ uintptr_t;
#define UINTPTR_WIDTH __UINTPTR_WIDTH__
#define UINTPTR_MAX __UINTPTR_MAX__
/* vim: set ft=c: */