diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 8ad74f7..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Normalize EOL for all files that Git considers text files. -* text=auto eol=lf diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a0adca8..0000000 --- a/.gitignore +++ /dev/null @@ -1,162 +0,0 @@ -# Only include required source files. -# Do no include any binaries or libraries/external sources. -# Submodules are not added here, as they are managed by Git automatically. -* -*/ - -# / -!.gitignore -!.gitignores -!AUTHORS -!build.sh -!CHANGELOG -!configure.ac -!LICENSE -!Makefile.am -!README -!TODO - -!/bin/main.gdextension - -# /bld -!/bld/ -/bld/* - -# /bld/src -!/bld/src/ -/bld/src/* - -# /doc -!/doc/ -/doc/* - -!/doc/1.1_ACKNOWLEDGMENTS -!/doc/1.2_PRIVACY - -# /doc/2.0_DEVELOPMENT -!/doc/2.0_DEVELOPMENT/ -/doc/2.0_DEVELOPMENT/* - -!/doc/2.0_DEVELOPMENT/2.1_VERSIONING -!/doc/2.0_DEVELOPMENT/2.3_EXTENSIONS -!/doc/2.0_DEVELOPMENT/2.5_LANGUAGE -!/doc/2.0_DEVELOPMENT/2.7_LIBRARIES - -# /engine -!/engine/ -/engine/* - -!/engine/project.godot -!/engine/icon.svg -!/engine/debug.tscn -!/engine/title.tscn - -# /engine/assets -!/engine/assets/ -/engine/assets/* - -# /engine/assets/material -!/engine/assets/material/ -/engine/assets/material/* - -# /engine/assets/material/concrete_wet -!/engine/assets/material/concrete_wet/ -/engine/assets/material/concrete_wet/* - -!/engine/assets/material/concrete_wet/concrete_wet.blend -!/engine/assets/material/concrete_wet/concrete_wet.blend1 - -# /engine/assets/material/metal_pipe -!/engine/assets/material/metal_pipe/ -/engine/assets/material/metal_pipe/* - -# /engine/bin -!/engine/bin/ -/engine/bin/* - -!/engine/bin/librtr.gdextension -!/engine/bin/libsb.gdextension - -# /engine/img -!/engine/img/ -/engine/img/* - -!/engine/img/sky.hdr - -# /src -!/src/ -/src/* - -!/src/gdextension_interface.h -!/src/Makefile.am -!/src/main.c -!/src/main.gdextension -!/src/main.h - -# /src/filesize -!/src/filesize -/src/filesize/* - -!/src/filesize/filesize.c -!/src/filesize/filesize.h - -# /src/logging -!/src/logging -/src/logging/* - -!/src/logging/logging.c -!/src/logging/logging.h - -# /src/init -!/src/init -/src/init/* - -# /src/init/c -!/src/init/c/ -/src/init/c/* - -!/src/init/c/gdextension_interface.c - -# /src/init/c/util -!/src/init/c/util -/src/init/c/util/* - -!/src/init/c/util/inttypes.c -!/src/init/c/util/inttypes.h -!/src/init/c/util/iso646.h -!/src/init/c/util/locale.c -!/src/init/c/util/locale.h -!/src/init/c/util/Q8defs.h -!/src/init/c/util/signal.c -!/src/init/c/util/signal.h -!/src/init/c/util/sitest.c -!/src/init/c/util/stdbool.h -!/src/init/c/util/stdint.h -!/src/init/c/util/wchar.c -!/src/init/c/util/wchar.h -!/src/init/c/util/wctype.c -!/src/init/c/util/wctype.h - -# /src/init/cpp -!/src/init/cpp/ -/src/init/cpp/* - -!/src/init/cpp/bind.cpp - -# /res -!/res/ -/res/* - -# /res/mesh -!/res/mesh/ -/res/mesh/* - -# res/texture -!/res/texture/ -/res/texture/* - -!/res/texture/Sky.blend - -# Godot 4+ specific ignores -.godot/ - diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 21a2d90..0000000 --- a/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -AUTHORS -======= - -Aidan Mullen - ---- end of AUTHORS --- diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100755 index ad6bbb6..0000000 --- a/CHANGELOG +++ /dev/null @@ -1,7 +0,0 @@ -CHANGELOG -========= - -0.1.0 ------ - ---- end of CHANGELOG --- diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 3e21a44..0000000 --- a/LICENSE +++ /dev/null @@ -1,6 +0,0 @@ -LICENSE - -Copyright (c) 2024 Aidan Mullen. -All rights reserved. - ---- end of LICENSE --- diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 9712bf9..0000000 --- a/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -AUTOMAKE_OPTIONS = foreign # Do not generate GNU files (COPYING, etc.) -SUBDIRS = src # Source subdirectory. -ACLOCAL_AMFLAGS = -I m4 # Autoconf flags; m4 is the language used. diff --git a/README b/README deleted file mode 100755 index dc84ca7..0000000 --- a/README +++ /dev/null @@ -1,63 +0,0 @@ -Spruce Basin (Temporary Title) -============================== - - Media source repository. - -Dependencies ------------- - - The following dependencies will need to be installed as per the instructions -for your system; heavily shared library-oriented systems may need all of these -installed to run the compiled binary. - - - Godot 4.4 - - Vulkan Developement Libraries (version compatible with Godot 4.4) - - Godot Jolt - - Boost C++ Libraries: https://www.boost.org/ - - cwebsocket: https://github.com/jeremyhahn/cwebsocket - - TinyCThread: https://github.com/tinycthread/tinycthread - - Some platforms may require that shared libraries be placed alongside the -source files, such as MSYS-2.0.dll. - - C Reference: - https://en.cppreference.com/w/c - - C++ Reference: - https://en.cppreference.com/w/ - -Build ------ - - The recommended build procedure requires the following installations: - - Git - - GNU Autotools - - UNIX Shell - - GCC (with G++) - - 1.) Install the dependencies listed above. - - 2.) Clone this repository with all submodules. - a.) Run the following command: - git clone --recurse-submodules -j8 -b {branch} {URL to this - repository} - No submodules have been added yet. - - 3.) Run "build.sh" within a UNIX shell. - - Using this configuration, the project will be compatible with all major -operating systems and WebAssembly, which can be useful for transpiling and -new platform testing. - -Quick Setup ------------ - - In a terminal run Godot with the "--dump-extension-api" flag; this will -generate the "extension_api.json" required by your installation. - - Refer to documentation for more information. - - Project organized in conformance to the Straightforward C Project Standard 5 -(SCPS5). - ---- end of README --- diff --git a/TODO b/TODO deleted file mode 100644 index ee515e7..0000000 --- a/TODO +++ /dev/null @@ -1,4 +0,0 @@ -TODO -==== - ---- end of TODO --- diff --git a/build.sh b/build.sh deleted file mode 100644 index f2539f5..0000000 --- a/build.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env sh - -# Build Script - -# Prepare to Build Project - -mkdir ./bld -mkdir ./bld/obj - -# Run Autotools -libtoolize -aclocal -autoconf -autoheader -automake --add-missing - -# Run Generated Files -# Disable static linking and enable GUI component; builds complete version. -./configure --disable-static --enable-shared -make - -cp ./src/.libs/* ./bld/obj/ diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 7dea2d0..0000000 --- a/configure.ac +++ /dev/null @@ -1,82 +0,0 @@ -# Title, version, etc. -AC_INIT(\ - [SB0], \ - [0.1.0], \ - [mail@acm.contact], \ - [sb0], \ - [https://www.delay.cloud/] \ - ) - -AC_COPYRIGHT(All rights reserved.) - -# AC_CHECK_LIB is not utilized, since it checks the presence of libraries by -# linking them to test program; this process introduces more overhead and longer -# build times. - -# Define BUILD in order to enable inclusion of config.h, which will act as the -# Autoheader. -AC_DEFINE([BUILD], [1], [Build system enabled.]) -AM_CONFIG_HEADER([src/config.h]) - -AC_CONFIG_MACRO_DIR([m4 - ]) - -# Use libtool. -AC_PROG_LIBTOOL -AC_PROG_INSTALL - -# Prefer shared libraries. -AC_ENABLE_SHARED -AC_DISABLE_STATIC - -# Do not generate GNU project files and disable some checks. -# Includes flags to strictly compile Standard C89. -AM_INIT_AUTOMAKE([\ - foreign \ - -Wall \ - -Werror \ - -Wno-portability \ - subdir-objects \ - ]) - -# Option to enable extras. -#AC_ARG_ENABLE([extra], -# AS_HELP_STRING([--enable-extra], [Enable features])) -#AS_IF([test "x$enable_extra" = "xyes"], [ -# AC_DEFINE([EXTRA], [1], [Enable extra features.]) -# AM_CONDITIONAL([EXTRA], [test "x$enable_extra" = "xyes"]) -#]) - -# Locations of generated Makefiles. -AC_CONFIG_FILES([\ - Makefile \ - src/Makefile \ - ]) - -# Primary SDT. -AC_CONFIG_SRCDIR([src/main.c]) - - -CFLAGS="$CFLAGS -std=c89 -pedantic-errors -Wall -Wold-style-definition -Wextra \ - -Wmissing-prototypes -Wstrict-prototypes" # Compile to C89 - # without - # GNU extensions. - # Warnings on. - -# Change -std=c++98 to -std=c++11. - -CXXFLAGS="$CFLAGS -std=c++98 -pedantic-errors -Wall -Wold-style-definition \ - -Wextra -Wmissing-prototypes -Wstrict-prototypes" # Compile to C++98 - # without - # GNU extensions. - # Warnings on. - -LT_INIT([shared disable-static]) # Start GNU Libtool. Satic libraries - # disabled; shared/dynamic linking. - -AC_PROG_CC([gcc]) # Autoconf for C compiler; obviously set to use GCC. -AC_PROG_CXX([g++]) - -AC_OUTPUT # Generate files. - -# Possibly add echo here. diff --git a/doc/1.1_ACKNOWLEDGMENTS b/doc/1.1_ACKNOWLEDGMENTS deleted file mode 100644 index bfecbc9..0000000 --- a/doc/1.1_ACKNOWLEDGMENTS +++ /dev/null @@ -1,4 +0,0 @@ -1.1 ACKNOWLEDGMENTS -=================== - ---- end of 1.1 ACKNOWLEDGMENTS --- diff --git a/doc/1.2_PRIVACY b/doc/1.2_PRIVACY deleted file mode 100644 index af3ff37..0000000 --- a/doc/1.2_PRIVACY +++ /dev/null @@ -1,4 +0,0 @@ -1.2 PRIVACY -=========== - ---- end of 1.2 PRIVACY --- diff --git a/doc/2.0_DEVELOPMENT/2.1_VERSIONING b/doc/2.0_DEVELOPMENT/2.1_VERSIONING deleted file mode 100755 index ebb39d6..0000000 --- a/doc/2.0_DEVELOPMENT/2.1_VERSIONING +++ /dev/null @@ -1,90 +0,0 @@ -2.1 VERSIONING -============== - - The version-scheme used to track progress. - -I. Basic Structure ------------------- - - u.v.w-x.y - - Major Version - - The first number, "u" in the example, represents the current major - version. A major version of "0" means that the software is not fully - complete; it's only incremented when backwards compatibility is lost. - - Minor Version - - Minor versions utilize the second number, "v" in the example, - and are incremented when new features are added. - - Patch - - Patches, "w" in the example, are generally small releases that only - fix bugs and make small improvements to the existing feature-set. - - Pre-Releases - - Preleases fill-in the "x" and "y" in the example. These indicate - that the release is either an alpha or a beta, meaning that it is - unfinished or not fully tested. To continue, the suffix (x), will be - replaced with an "a" for alpha releases, a "b" for betas, and an "rc" - for release candidates. To iterate, the "y" is substituted with a - number that is incremented with each passing alpha or beta release. - Please note that the "-x.y" extension is only added for pre-releases, - and is absent in stable versions. - - Full Example - - 1.3.7-b.4 - - Represents the fourth beta of the seventh patch for the third - minor version of the first major release. - -II. Branches ------------- - - This software utilizes branches in order to organize new features and - remove bugs as they move down the "pipeline" or "stream". - - Pre-Alpha - - All new features begin within their own Git branches. This allows - them to be contained and prevent breakage caused by other features. Once - an extremely early version of the feature is complete, it is moved into - the "Alpha" branch. - - Alpha - - During the "Alpha" stage, features will most likely be buggy and - more prone to problems; the goal of alphas in this project is to fix any - critical bugs and complete the feature. During this phase, features - are merged into a staging branch that will eventually become the future - "stable" branch. - - Formatting: x.y.z-a.x - - Beta - - The "Beta" stage comes once a feature is complete, but still needs - further testing. The "freeze" applied to further development of the - feature prevents excess bugs from appearing. - - Formatting: x.y.z-b.x - - Release Candidate - - By this stage, critical issues have been resolved, leaving only - final testing to be done. - - Patches begin here, as they do not require a full alpha or beta build. - - Formatting: x.y.z-rc.x - - Stable - - "Stable" is the end-user release and is based on the branch of the - same name. - ---- end of 2.1 VERSIONING --- diff --git a/doc/2.0_DEVELOPMENT/2.3_EXTENSIONS b/doc/2.0_DEVELOPMENT/2.3_EXTENSIONS deleted file mode 100755 index 8f05ef4..0000000 --- a/doc/2.0_DEVELOPMENT/2.3_EXTENSIONS +++ /dev/null @@ -1,11 +0,0 @@ -2.3 EXTENSIONS -============== - - For extensions minimal and embeddable scripting language is ideal. For -this reason Lua is the preferred langauge with regard to extending the -application, as it is extremely small, allowing for minimal overhead and -employment in minimized builds; written in ANSI-C89, so it will run on virtually -any platform dating back aged legacy systems; and has a profoundly -apprehensive C API, which allows for trivial integration with minimal friction. - ---- end of 2.3 EXTENSIONS --- diff --git a/doc/2.0_DEVELOPMENT/2.5_LANGUAGE b/doc/2.0_DEVELOPMENT/2.5_LANGUAGE deleted file mode 100755 index 1412f98..0000000 --- a/doc/2.0_DEVELOPMENT/2.5_LANGUAGE +++ /dev/null @@ -1,56 +0,0 @@ -2.5 LANGUAGE -============ - - DISCLAIMER: this file must be updated and adapted to this project. - -I. Organized Codebase ---------------------- - - The program is primarily written in C, and is dispersed into a variety of -optional modules; therefore, the inclusion of other languages, dialects, and -platform-dependent components are permitted. - - This project's core and a number of its direct dependencies conform to ISO -9899:1990, which is generally referred to as Standard C90, and is functionally -identical to ANSI X3.159-1989 "Programming Language C", which is Standard -C89/ANSI-C. This ensures compatibilty between the basic functionality of the -application and legacy/"retro" platforms, which support is planned for. - - In the project's core, dialect-dependent features should be omitted, unless -they are included within a preprocessor-directive that optionalizes their -implmentation and separates their influence from the vital structure of the -program. - - Other languages and C-dialects can be used, but they must conform to the -modular nature and goals of the program. By default, all extraneous and -non-vital components should be disabled; compiler-flags and build-options will -be the primary means of enabling them. - -II. Styling ------------ - - The source-code in this project is formatted to the "Allman" style of - indentation; see the provided example below: - - while (x == y) - { - function(); - function_2(); - } - - Note that braces align with the control statement, and statements placed - within the braces are indented. - - Allman-style indentation maximizes the readability of the program and, - via a clear, block-like structure, reduces the probabilty of ambiguous - formatting. - - Each source file must have a comment at the bottom marking the end of - its content e.g. - - /* --- end of FILE_C --- */ - - The period located before the extension is shown as an underscore, and - the name is now capitalized, whereas the real filename is snake_case. - ---- end of 2.5 LANGUAGE --- diff --git a/doc/2.0_DEVELOPMENT/2.7_LIBRARIES b/doc/2.0_DEVELOPMENT/2.7_LIBRARIES deleted file mode 100755 index b592992..0000000 --- a/doc/2.0_DEVELOPMENT/2.7_LIBRARIES +++ /dev/null @@ -1,32 +0,0 @@ -LIBRARIES -========= - - Each library used should be widely portbale and should lack - platform-dependent features. Components that are not written in standard - C/C++ or D should be disabled by default at compilation; only being - enabled by flags. - - Note: libraries licensed under any version of the GNU GPL should be - avoided, due to the fact that these licenses require that the software - linking them is provided under the same terms. The LGPL is an exception, but - instructions for replacing the library with a different version must be - provided, as the LGPL requires that users can easily modify the LGPL code in - contrast to the common misconception that this license forbids static - linking. In general, copyleft and strongly reciprical licenses must be - avoided. - - 1.) Libraries should always be included as Git submodules. - 2.) Libraries should only be included if writing the same functionality - would take an unreasonably long period of time. - 3.) Libraries should be platform-agnostic, or they should at least provide - the ability to replace components with those required on a different system. - 4.) All libraries must be disabled by default at compilation and must only - be enabled via compilation options. - - Adding on, all contributions must be original and not be derived from - the work of another person, company, software, or any other entity that may - generate the content in question within this document. - - Header files should only be used to declare functions. - ---- end of 2.7 LIBRARIES --- diff --git a/engine/assets/material/concrete_wet/concrete_wet.blend b/engine/assets/material/concrete_wet/concrete_wet.blend deleted file mode 100644 index 81cf068..0000000 Binary files a/engine/assets/material/concrete_wet/concrete_wet.blend and /dev/null differ diff --git a/engine/assets/material/concrete_wet/concrete_wet.blend1 b/engine/assets/material/concrete_wet/concrete_wet.blend1 deleted file mode 100644 index 9d0ca33..0000000 Binary files a/engine/assets/material/concrete_wet/concrete_wet.blend1 and /dev/null differ diff --git a/engine/bin/libsb.gdextension b/engine/bin/libsb.gdextension deleted file mode 100644 index ebb5063..0000000 --- a/engine/bin/libsb.gdextension +++ /dev/null @@ -1,10 +0,0 @@ -[configuration] - -entry_symbol = "libsb" -compatibility_minimum = "4.4" - -[libraries] - -linux.x86_64 = "res://../bld/obj/libsb.so" -darwin.x86_64 = "res://../bld/obj/libsb.dylib" -windows.x86_64 = "res://../bld/obj/libsb.dll" diff --git a/engine/debug.tscn b/engine/debug.tscn deleted file mode 100644 index b7fe040..0000000 --- a/engine/debug.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://cg5vtf37cafsd"] - -[ext_resource type="Texture2D" uid="uid://cg7gvce3y7ca0" path="res://img/sky.hdr" id="1_cqrla"] - -[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_owhq0"] -panorama = ExtResource("1_cqrla") - -[sub_resource type="Sky" id="Sky_1uwqr"] -sky_material = SubResource("PanoramaSkyMaterial_owhq0") - -[sub_resource type="Environment" id="Environment_yt03y"] -background_mode = 2 -sky = SubResource("Sky_1uwqr") - -[node name="Node3D" type="Node3D"] - -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource("Environment_yt03y") diff --git a/engine/icon.svg b/engine/icon.svg deleted file mode 100644 index c8000e7..0000000 --- a/engine/icon.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - diff --git a/engine/img/sky.hdr b/engine/img/sky.hdr deleted file mode 100644 index 62aad4f..0000000 Binary files a/engine/img/sky.hdr and /dev/null differ diff --git a/engine/project.godot b/engine/project.godot deleted file mode 100644 index 592a85a..0000000 --- a/engine/project.godot +++ /dev/null @@ -1,32 +0,0 @@ -; Engine configuration file. -; It's best edited using the editor UI and not directly, -; since the parameters that go here are not all obvious. -; -; Format: -; [section] ; section goes between [] -; param=value ; assign values to parameters - -config_version=5 - -[application] - -config/name="Spruce-Basin" -run/main_scene="res://title.tscn" -config/features=PackedStringArray("4.4", "Forward Plus") -boot_splash/bg_color=Color(0, 0, 0, 1) -boot_splash/show_image=false -config/icon="res://icon.svg" - -[display] - -window/size/mode=4 -window/stretch/mode="canvas_items" -window/stretch/aspect="expand" - -[filesystem] - -import/blender/enabled=false - -[physics] - -3d/physics_engine="JoltPhysics3D" diff --git a/engine/title.tscn b/engine/title.tscn deleted file mode 100644 index effee64..0000000 --- a/engine/title.tscn +++ /dev/null @@ -1,141 +0,0 @@ -[gd_scene load_steps=6 format=3 uid="uid://b827xc3j75sb6"] - -[ext_resource type="Texture2D" uid="uid://cg7gvce3y7ca0" path="res://img/sky.hdr" id="1_y7k74"] - -[sub_resource type="Theme" id="Theme_1d1pm"] - -[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_oyqm6"] -panorama = ExtResource("1_y7k74") - -[sub_resource type="Sky" id="Sky_70g61"] -sky_material = SubResource("PanoramaSkyMaterial_oyqm6") - -[sub_resource type="Environment" id="Environment_kpexm"] -background_mode = 2 -sky = SubResource("Sky_70g61") - -[node name="Node3D" type="Node3D"] - -[node name="Camera3D" type="Camera3D" parent="."] - -[node name="CanvasLayer" type="CanvasLayer" parent="Camera3D"] - -[node name="ParallaxBackground" type="ParallaxBackground" parent="Camera3D/CanvasLayer"] - -[node name="Disclaimer" type="Label" parent="Camera3D/CanvasLayer"] -offset_right = 1151.0 -offset_bottom = 650.0 -text = "Reference Title: Spruce-Basin -Pre-Release Prototype -All Content Subject to Change." -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="Button_Container" type="Control" parent="Camera3D/CanvasLayer"] -layout_mode = 3 -anchors_preset = 0 -offset_left = 304.5 -offset_top = 450.0 -offset_right = 847.5 -offset_bottom = 481.0 - -[node name="Continue" type="Button" parent="Camera3D/CanvasLayer/Button_Container"] -layout_mode = 0 -offset_right = 79.0 -offset_bottom = 31.0 -theme = SubResource("Theme_1d1pm") -disabled = true -toggle_mode = true -text = "Continue" - -[node name="New_Game" type="Button" parent="Camera3D/CanvasLayer/Button_Container"] -layout_mode = 0 -offset_left = 150.0 -offset_right = 243.0 -offset_bottom = 31.0 -theme = SubResource("Theme_1d1pm") -toggle_mode = true -text = "New Game" - -[node name="Options" type="Button" parent="Camera3D/CanvasLayer/Button_Container"] -layout_mode = 0 -offset_left = 300.0 -offset_right = 393.0 -offset_bottom = 31.0 -theme = SubResource("Theme_1d1pm") -toggle_mode = true -text = "Options" - -[node name="Quit" type="Button" parent="Camera3D/CanvasLayer/Button_Container"] -layout_mode = 1 -anchors_preset = 1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -93.0 -offset_bottom = 31.0 -grow_horizontal = 0 -theme = SubResource("Theme_1d1pm") -toggle_mode = true -text = "Quit" - -[node name="Copyright" type="Label" parent="Camera3D/CanvasLayer"] -anchors_preset = 7 -anchor_left = 0.5 -anchor_top = 1.0 -anchor_right = 0.5 -anchor_bottom = 1.0 -offset_left = -250.0 -offset_top = -45.0 -offset_right = 250.0 -grow_horizontal = 2 -grow_vertical = 0 -text = "Copyright © 2024 Aidan Mullen" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="Version" type="Label" parent="Camera3D/CanvasLayer"] -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -100.0 -offset_top = -45.0 -grow_horizontal = 0 -grow_vertical = 0 -text = "v0.1.0-a.1" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="To-Do" type="Label" parent="Camera3D/CanvasLayer"] -offset_right = 500.0 -offset_bottom = 45.0 -text = "To-Do: -- HDRI Texture will have to be baked and exported at various resolutions. -- Create shader to apply gaussian blur to a rectangle to place in front of the viewport; blurring the background; an HRDI is available with this project. -- Create theme for UI. - - Fade animations for buttons. - - Possibly have no background for the buttons; instead having an outline that changes. - - Custom fonts are being worked on. -- Use C API to implement interactive interface; this API is available via GDExtension, which has bindings available for an extended -selection of languages, which may all interact with each other via this API. -- Components that require speed, such as procedural generation and most core logic, should be implemented in C99/C++11; these libraries may then -be called from a more expressive language, such as D or a WASM object. -- These issues will be migrated to the Forgejo instance. - -- Button for copyright notices in bottom-left corner." -vertical_alignment = 1 - -[node name="Notices" type="Label" parent="Camera3D/CanvasLayer"] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -45.0 -offset_right = 336.0 -grow_vertical = 0 -text = "Information SVG here for copyright notices." -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="WorldEnvironment" type="WorldEnvironment" parent="Camera3D"] -environment = SubResource("Environment_kpexm") diff --git a/res/texture/Sky.blend b/res/texture/Sky.blend deleted file mode 100644 index 7cd49db..0000000 Binary files a/res/texture/Sky.blend and /dev/null differ diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 9449c86..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -# Makefile for primary source directory. -#SUBDIRS = extra # Subdirectory for extras (not currently used). -#bin_PROGRAMS = $(top_builddir)/bin/rtr # Program name. -#__top_builddir__bin_rtr_CFLAGS = -DBUILD # Define BUILD variable. -#__top_builddir__bin_rtr_SOURCES = main.c # Sources - -# The .la extension is an AutoTools library format that is automatically -# converted into the host OS's object format. -lib_LTLIBRARIES = libsb.la -libsb_la_SOURCES = main.c - -# Compile as shared library. -libsb_la_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined - -#bin_PROGRAMS = rtr -#rtr_CFLAGS = -DBUILD -c -fPIC -shared # Define BUILD and output shared. -#rtr_SOURCES = main.c # Sources -#if extra -#__top_builddir__bin_rtr_LDADD = ./extra/libextra.la # Include extra. - -# -Bshared sets preference for shared libraries. -# No libraries are currently linked here. -#AM_CFLAGS = "-I$(srcdir) \ -# -Bshared -#endif diff --git a/src/filesize/filesize.c b/src/filesize/filesize.c deleted file mode 100755 index 11a7054..0000000 --- a/src/filesize/filesize.c +++ /dev/null @@ -1,286 +0,0 @@ -/** - * @author : Aidan Mullen (git@acm.contact) - * @file : filesize - * @created : Wednesday Jun 19, 2024 21:10:14 EDT - */ - -#include -#include - -#include "filesize.h" - -/* Test FILENAME_MAX on different platforms. */ - -char filename[FILENAME_MAX]; -char name[FILENAME_MAX]; - -/* - * =========== - * Buffer Size - * =========== - * - * Buffer size is chosen at compilation; it limits the block-size chosen by the - * user. When the block size is greater than the buffer, overflow occurs. - * - * The buffer size is defined in bytes. - * - * Larger buffer sizes are less accurate, which may be possible to fix if a - * position is set at the end of the read block, then the remaining area is - * read using a smaller buffer size. - */ - - /* This buffer size selection should be relegated to the options.ini file. */ - -#define BUFFER 1073741824 - -#if !defined(BUFFER) || BUFFER == 1 - -char buf[1]; /* 1B */ - -#elif BUFFER == 2 - -char buf[2]; /* 2B */ - -#elif BUFFER == 4 - -char buf[4]; /* 4B */ - -#elif BUFFER == 8 - -char buf[8]; /* 8B */ - -#elif BUFFER == 16 - -char buf[16]; /* 16B */ - -#elif BUFFER == 32 - -char buf[32]; /* 32B */ - -#elif BUFFER == 64 - -char buf[64]; /* 64B */ - -#elif BUFFER == 128 - -char buf[128]; /* 128B */ - -#elif BUFFER == 256 - -char buf[256]; /* 256B */ - -#elif BUFFER == 512 - -char buf[512]; /* 512B */ - -#elif BUFFER == 1024 - -char buf[1024]; /* 1KB */ - -#elif BUFFER == 2048 - -char buf[2048]; /* 2KB */ - -#elif BUFFER == 4096 - -char buf[4096]; /* 4KB */ - -#elif BUFFER == 8192 - -char buf[8192]; /* 8KB */ - -#elif BUFFER == 1048576 - -char buf[1048576]; /* 1MB */ - -#elif BUFFER == 536870912 - -char buf[536870912]; /* 512MB */ - -#elif BUFFER == 1073741824 - -char buf[1073741824]; /* 1GB */ - -#else - -char buf[BUFFER]; - -#endif - -unsigned long int bsize = BUFFER; - -fpos_t pos; -fpos_t end; - -/* - * =============== - * Fallback Reader - * =============== - * - * The reader counts each record in the file, then adds the value of the records - * (in bytes) in order to return the filesize. - * - * Fallback function in-case a platform solution is not present. - * Note that, depending on the buffer size, this method may be somewhat - * inaccurate, as a higher buffer size will only measure in records equivalent - * to its value, and may stop before reaching the end of the file; it may be - * possible to account for this by restarting the file-read at the endpoint - * found by fread with a lower buffer size, but this would require that fseek - * and ftell are not used, since these often use signed 32-bit integers that - * limit the maximum size they can read to ~2GB. - */ - -int get_size_fallback(void) -{ - /* - unsigned long int size = 0; - unsigned long int record = 0; - */ - unsigned long size = 0; - unsigned long record = 0; - - FILE * file; - - /* If mode is CLI */ - printf("Enter a filename: "); - - fgets(filename, sizeof(filename), stdin); - - /* Compare filename with \r\n and remove them. */ - filename[strcspn(filename, "\r\n")] = 0; - - strcpy(name, filename); - printf("Reading file \"%s\"...\n", name); - - file = fopen(filename, "rb"); - - printf("Warning: Using fallback reader; process may be slow.\n"); - printf("Initial buffer size: %lu\n", bsize); - - if (file) - { - fgetpos(file, &pos); - - printf("Attempting to read file...\n"); - - for - ( - size = 0; - (fread(buf, sizeof * buf, bsize, file) == bsize); - (record = size) - ) - { - (size = size + bsize); - fgetpos(file, &end); - printf("Read: [ %luB ]\n", size); - - if (record == size) - { - printf("No appropriately sized blocks remaining.\n"); - break; - } - } - - /* - * ============== - * Small File Fix - * ============== - * - * If result is 0, try again with lower block size, as small - * files cannot be read when the selected size is larger than them. - */ - - record = 0; - - if (size == 0) - { - while (bsize > 1) - { - printf("Attempting to read with lower buffer size...\n"); - - bsize = (bsize/2); - /* bsize = 1; */ - fsetpos(file, &pos); - printf("Buffer size lowered to %luB\n", bsize); - - while (fread(buf, sizeof * buf, bsize, file) == bsize) - { - size = size + bsize; - fgetpos(file, &pos); - printf("Read: [ %luB ]\n", size); - - if (record == size) - { - printf("No appropriately sized blocks remaining.\n"); - break; - } - - record = size; - } - } - } - - /* - * ============== - * Large File Fix - * ============== - * - * Using a large buffer to read large files quickly resulted in an - * inaccurate filesize. - * - * This block lowers the block size at the end of the reading, and - * attempts to read data after the current position in the file. It - * repeats this until the buffer size is one byte. - * - * The accuracy should be around plus-or-minus one byte when reading. - */ - - while (size > 0) - { - printf("Checking for remaining data...\n"); - - bsize = (bsize/2); - - fsetpos(file, &end); - - while (fread(buf, sizeof * buf, bsize, file) == bsize) - { - size = size + bsize; - fgetpos(file, &end); - printf("Read: [ %luB ]\n", size); - - if (record == size) - { - printf("No appropriately sized blocks remaining.\n"); - break; - } - - record = size; - } - if (bsize > 1) - { - continue; - } - else - { - printf("Buffer at minimum size; stopping.\n"); - break; - } - } - - printf("No further data to read; stopping.\n"); - - fclose(file); - - printf("Final buffer size: %luB\n", bsize); - printf("\nFilesize: %luB\n", size); - } - else - { - printf("Error: file not found.\n"); - } - - return(size); -} - -/* --- end of SIZE_C --- */ diff --git a/src/filesize/filesize.h b/src/filesize/filesize.h deleted file mode 100755 index 92e299f..0000000 --- a/src/filesize/filesize.h +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @author : Aidan Mullen (git@acm.contact) - * @file : sfileize - * @created : Wednesday Jun 19, 2024 21:13:29 EDT - */ - -#ifndef FILESIZE_H - -#define FILESIZE_H - -#endif /* end of include guard SIZE_H */ - -int get_size_fallback(void); - -/* --- end of SIZE_H --- */ diff --git a/src/init/c/util/Q8defs.h b/src/init/c/util/Q8defs.h deleted file mode 100644 index 47b5b6b..0000000 --- a/src/init/c/util/Q8defs.h +++ /dev/null @@ -1,629 +0,0 @@ -/* - Q8defs.h -- defines platform-specific parameters for standard headers - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Several of the standard headers provided by Doug Gwyn make use - of these __Q8_* symbols. If you want to define other names of - the form __Q8_*, please coordinate them with gwyn@arl.mil, who - claims "dibs" on (first-come ownership of) that name space. - - Aside: Why "Q8"? That was used as a system external symbol - prefix in old CDC Fortran implementations, to avoid link-time - name-space collisions with user-defined symbols, on the - assumption that no user would ever think of using such a name. -*/ - -/* This header doesn't need an idempotency lock; there are no typedefs here. */ - -/* This header doesn't need C++ extern "C"; there are no declarations here. */ - -#define __Q8_TEST /* [undef to disable configuration checks] */ - -#define _SYS_INT_TYPES_H /* kludge to override Solaris header */ -#define _SYS_INT_LIMITS_H /* ditto */ - -/* - The following macros come in handy in many situations. -*/ - -/* splice arguments into one token */ -#ifdef __STDC__ -#define __Q8_1J(a,b) a ## b -#define __Q8_2J(a,b) __Q8_1J(a,b) -#else -#define __Q8_1J(a) a -#define __Q8_2J(a,b) __Q8_1J(a)b -#endif - -/* older versions of C didn't have certain type qualifiers */ -#ifdef __STDC__ -#define __Q8_CONST const -#else -#define __Q8_CONST -#endif - -#if __STDC_VERSION__ >= 199901 -#define __Q8_RESTRICT restrict -#else -#define __Q8_RESTRICT /* nothing */ -#endif - -/* older versions of C don't support function prototypes */ -#ifdef __STDC__ -#define __Q8_PARAMS(a) a -#else -#define __Q8_PARAMS(a) () -#endif -/* usage: return_type func_name __Q8_PARAMS((param_decls)); */ - -/* - The following is based on the MUVES "Va" (variable argument) package. - - created: 94/08/16 D A Gwyn - - The Va package provides portable support for functions taking - a variable number of arguments. It defines several macros - that work together to hide the differences between the old - UNIX facility and the new Standard C . - - Rather than describing each Va package macro separately, it is - best to give an example of the proper usage of the whole set of - macros. It should be easy to adapt this generic example to any - specific requirement. - - The example is for a function named Advise that has two - required arguments, the first being a printf-like format string - and the second a flag that indicates (when true) that an extra - "verbosity level" is provided as the third argument. Remaining - arguments are those, if any, associated with the format string. - The Advise function prints the formatted result on the standard - error output if and only if the verbosity level is given and is - greater than 0. It returns true unless it had trouble printing - on the standard error output stream. - - Any code that wants to invoke the Advise function must include - a proper declaration for it: - - #include // includes Va package - extern bool Advise( __Q8_T(const char *) __Q8_T(bool) __Q8_Dots ); - // alternatively: - // extern bool Advise __Q8_PARAMS(( const char *, bool, ... )); - - The implementation of the Advise function might be: - - #include - #include - #ifdef __STDC__ - #include - #else - #include - #endif - #include - - // VARARGS // not VARARGS2 - bool - Advise( __Q8_T( const char *format ) __Q8_T( bool verbose ) __Q8_AList ) - __Q8_Dcl - { - __Q8_D( const char * format ) - __Q8_D( bool verbose ) - __Q8_List( ap ) - register int verbosity; - register bool status; - - __Q8_Start( ap, verbose ) - __Q8_I( ap, char *, format ) // no "const" here - __Q8_I( ap, bool, verbose ) - - if ( verbose ) - verbosity = __Q8_Arg( ap, int ); - else - verbosity = 0; - - if ( verbosity > 0 ) - status = vfprintf( stderr, format, ap ) > 0; - else - status = true; - - __Q8_End( ap ) - return status; - } - - Note that several of these macros are reminiscent of the va_* - macros in or , but there are significant - differences. Proper usage of the "function-like" macros, in - particular, does not require semicolons; this is intentional, - in order to avoid warnings about "null statements" from certain - compilers and "lint". The easiest way to ensure correct usage - is to copy the above example and then make changes to the copy - as needed for the specific application. -*/ - -#ifdef __STDC__ - -#define __Q8_T(t) t, -#define __Q8_Dots ... -#define __Q8_AList ... -#define __Q8_D(d) /* nothing */ -#define __Q8_Dcl /* nothing */ -#define __Q8_List(ap) va_list ap; -#define __Q8_Start(ap, A0) va_start(ap, A0); -#define __Q8_I(ap, T, Ai) /* nothing */ -#define __Q8_Arg(ap, T) va_arg(ap, T) -#define __Q8_End(ap) va_end(ap); - -#else /* "classic" version of UNIX assumed */ - -#define __Q8_T(t) /* nothing */ -#define __Q8_Dots /* nothing */ -#define __Q8_AList va_alist -#define __Q8_D(d) d; -#define __Q8_Dcl va_dcl -#define __Q8_List(ap) va_list ap; -#define __Q8_Start(ap, A0) va_start(ap); -#define __Q8_I(ap, T, Ai) Ai = va_arg(ap, T); -#define __Q8_Arg(ap, T) va_arg(ap, T) -#define __Q8_End(ap) va_end(ap); - -#endif - -/* - The following are used to define macros in multiple headers. -*/ - -/* NOTE: The following must be spelled *exactly* like EOF in . */ -#define __Q8_EOF (-1) -/* XXX -- not currently used in the headers I provide. */ - -/* NOTE: The following must be spelled *exactly* like NULL in etc. */ -#if defined(_LP64) && !defined(__cplusplus) /* Why? */ -#define __Q8_NULL 0L -#else -#define __Q8_NULL 0 -#endif - -#define __Q8_WEOF ((wint_t)-1) - -/* - The following are used to typedef types in multiple headers. -*/ - -#define __Q8_MBSTATE_T int /* dummy; usually a struct */ -#define __Q8_WINT_T int /* this type works nearly everywhere */ -#define __Q8_FILE FILE /* must match */ - /* XXX -- At present, __Q8_FILE requires #including . */ -/* XXX -- the following are not currently used in the headers I provide. */ -#define __Q8_SIZE_T unsigned long /* this type works nearly everywhere */ -#define __Q8_WCHAR_T char /* for minimal implementations */ -/* XXX -- this is incomplete; these should be coupled with the following - parameter definitions, and their limits should be computed and defined. */ - -/* - The following defines parameters for supported types; - they are used mainly by . - - C:char S:short I:int L:long P:void* Q:long long M:max-width int. - D:ptrdiff_t A:sig_atomic_t Z:size_t W:wchar_t X:wint_t - G:long double - followed by W:width T:type U:is unsigned S:suffix for constant - F:printf/scanf length modifier - - TC:twos-complement OC:ones-complement SM:signed-magnitude - SC:"signed char" or "char" if signed - - These values depend strongly on the architecture and compiler; - the only combinations included here are the ones I use myself. - Please add your particular combination and e-mail me the edits. - - XXX -- system parameters really ought to be in a separate header. -*/ - -#if defined(__i386) /* Intel x86, 32-bit, Sun Solaris */ - -#define __Q8_TC -#define __Q8_SC /* signed */ char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 32 -#define __Q8_LW 32 -#define __Q8_PW 32 -#define __Q8_DW 32 -#define __Q8_AW 32 -#undef __Q8_AU -#define __Q8_ZW 32 -#define __Q8_WW 32 -#undef __Q8_WU -#define __Q8_XW 32 -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#else -#undef __Q8_CF /* no known length modifier for character type */ -#endif -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#define __Q8_GT long double - -#elif defined(_M_IX86) /* Intel x86, 32-bit, Microsoft */ - -#define __Q8_TC -#define __Q8_SC signed char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 32 -#define __Q8_LW 32 -#define __Q8_PW 32 -#define __Q8_DW 32 -#define __Q8_AW 32 -#undef __Q8_AU -#define __Q8_ZW 32 -#define __Q8_WW 32 -#undef __Q8_WU -#define __Q8_XW 32 -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#else -#undef __Q8_CF /* no known length modifier for character type */ -#define __Q8_QW 64 -#define __Q8_QT __int64 -#define __Q8_QS i64 -#define __Q8_QF "I64" -#endif -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#define __Q8_GT long double - -#elif defined(__sparc) /* SPARC, Sun Solaris */ - -#define __Q8_TC -#define __Q8_SC /* signed */ char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 32 -#define __Q8_AW 32 -#undef __Q8_AU -#ifdef __sparcv9 /* 64-bit environment */ -#define __Q8_LW 64 -#else /* 32-bit environment */ -#define __Q8_LW 32 -#endif -#define __Q8_PW __Q8_LW -#define __Q8_DW __Q8_LW -#define __Q8_ZW __Q8_LW -#define __Q8_WW __Q8_LW -#undef __Q8_WU -#define __Q8_XW __Q8_LW -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#else -#undef __Q8_CF /* no known length modifier for character type */ -#endif -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#define __Q8_GT long double - -#elif defined(_TMS320C6000) /* TI TMS320C6xxx DSP, Code Composer */ - -#define __Q8_TC -#define __Q8_SC signed char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 32 -#define __Q8_AW 32 -#undef __Q8_AU -#define __Q8_LW 40 -#define __Q8_PW 32 -#define __Q8_DW 32 -#define __Q8_ZW 32 -#define __Q8_WW 8 -#define __Q8_WU /* XXX -- check */ -#define __Q8_XW 32 -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#else -#undef __Q8_CF /* no known length modifier for character type */ -#define __Q8_MW __Q8_LW -#define __Q8_MT long -#define __Q8_MS L -#define __Q8_MF "l" -#endif -#define __Q8_GT long double - -#elif defined(__vax) /* DEC VAX-11 */ - -#define __Q8_TC -#define __Q8_SC /* signed */ char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 32 -#define __Q8_LW 32 -#define __Q8_PW 32 -#define __Q8_DW 32 -#define __Q8_AW 32 -#undef __Q8_AU -#define __Q8_ZW 32 -#define __Q8_WW 32 -#undef __Q8_WU -#define __Q8_XW 32 -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#define __Q8_GT long double -#else -#undef __Q8_CF /* no known length modifier for character type */ -#define __Q8_MW 32 -#define __Q8_MT long -#define __Q8_MS L -#undef __Q8_GT /* long double not supported */ -#endif - -#elif defined(__pdp11) /* DEC PDP-11 */ - -#define __Q8_TC -#define __Q8_SC /* signed */ char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 16 -#define __Q8_LW 32 -#define __Q8_PW 16 /* (violates section 5.2.4.1) */ -#define __Q8_DW 16 /* (violates section 5.2.4.1) */ -#define __Q8_AW 16 -#undef __Q8_AU -#define __Q8_ZW 16 -#define __Q8_WW 32 -#undef __Q8_WU -#define __Q8_XW 32 -#undef __Q8_XU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#define __Q8_GT long double -#else -#undef __Q8_CF /* no known length modifier for character type */ -#define __Q8_MW 32 -#define __Q8_MT long -#define __Q8_MS L -#define __Q8_MF "l" -#undef __Q8_GT /* long double not supported */ -#endif - -#elif defined(__ORCAC__) /* Apple IIGS, large memory model */ - -/* #pragma optimize -1 /* enables all compiler optimizations */ - -#define __Q8_TC -#define __Q8_SC signed char -#define __Q8_CW 8 -#define __Q8_SW 16 -#define __Q8_IW 16 -#define __Q8_LW 32 -#define __Q8_PW 32 -#define __Q8_DW 32 -#define __Q8_AW 16 -#undef __Q8_AU -#define __Q8_ZW 32 /* XXX -- check */ -#define __Q8_WW 32 -#undef __Q8_WU -#if __STDC_VERSION__ >= 199901 -#define __Q8_CF "hh" -#define __Q8_QW 64 -#define __Q8_QT long long -#define __Q8_QS LL -#define __Q8_QF "ll" -#define __Q8_MW __Q8_QW -#define __Q8_MT __Q8_QT -#define __Q8_MS __Q8_QS -#define __Q8_MF __Q8_QF -#else -#undef __Q8_CF /* no known length modifier for character type */ -#define __Q8_MW 32 -#define __Q8_MT long -#define __Q8_MS L -#define __Q8_MF "l" -#endif -#define __Q8_GT long double - -#else - -#error "Q8defs.h: unknown CPU type" - -#endif - -#if defined(__Q8_TEST) - -/* sanity checks */ - -#if defined(__Q8_TC)+defined(__Q8_OC)+defined(__Q8_SM) != 1 -#error "Q8defs.h: representation improperly defined" -#endif - -#if __Q8_CW < 8 -#error "Q8defs.h: __Q8_CW improperly defined" -#endif - -#if __Q8_SW < __Q8_CW || __Q8_SW < 16 -#error "Q8defs.h: __Q8_SW improperly defined" -#endif - -#if __Q8_IW < __Q8_SW -#error "Q8defs.h: __Q8_IW improperly defined" -#endif - -#if __Q8_LW < __Q8_IW || __Q8_LW < 32 -#error "Q8defs.h: __Q8_LW improperly defined" -#endif - -#ifdef __Q8_PW -#if __Q8_PW < 16 || __Q8_PW < __Q8_CW || \ - __STDC_VERSION__ >= 199901 && __Q8_PW < 17 -#error "Q8defs.h: __Q8_PW improperly defined" -#endif -#endif - -#ifdef __Q8_DW -#if __Q8_DW < 16 || __Q8_DW < __Q8_CW || \ - __STDC_VERSION__ >= 199901 && __Q8_DW < 17 -#error "Q8defs.h: __Q8_DW improperly defined" -#endif -#endif - -#if __Q8_AW < __Q8_CW -#error "Q8defs.h: __Q8_AW improperly defined" -#endif - -#if __Q8_ZW < 16 || __Q8_ZW < __Q8_CW -#error "Q8defs.h: __Q8_ZW improperly defined" -#endif - -#if __Q8_WW < __Q8_CW -#error "Q8defs.h: __Q8_WW improperly defined" -#endif - -#if __Q8_XW < 16 || __Q8_XW < __Q8_CW -#error "Q8defs.h: __Q8_XW improperly defined" -#endif - -#ifdef __Q8_QT -#if __Q8_QW < __Q8_LW || __Q8_QW < 64 -#error "Q8defs.h: __Q8_QW improperly defined" -#endif -#elif __STDC_VERSION__ >= 199901 -#error "Q8defs.h: __Q8_QT not defined" -#endif - -#if __Q8_MW < __Q8_LW || defined(__Q8_QT) && __Q8_MW < __Q8_QW -#error "Q8defs.h: __Q8_MW improperly defined" -#endif - -#ifndef __Q8_MT -#error "Q8defs.h: __Q8_MT not defined" -#endif - -#endif /* defined(__Q8_TEST) */ - -/* limits for various types */ - -/* top signed values */ -#define __Q8_TI(w) (~(~0<<(w)-1)) -#define __Q8_TL (~(~0L<<__Q8_LW-1)) -#define __Q8_TQ (~(~__Q8_2J(0,__Q8_QS)<<__Q8_QW-1)) -#define __Q8_TM (~(~__Q8_2J(0,__Q8_MS)<<__Q8_MW-1)) - -/* upper unsigned values */ -#define __Q8_UI(w) (~0U>>__Q8_IW-(w)) -#define __Q8_UL (~0UL) -#define __Q8_UQ (~__Q8_2J(0U,__Q8_QS)) -#define __Q8_UM (~__Q8_2J(0U,__Q8_MS)) - -/* bottom signed values */ -#if defined(__Q8_TC) -#define __Q8_BI(w) (-__Q8_TI(w)-1) -#define __Q8_BL (-__Q8_TL-1) -#define __Q8_BQ (-__Q8_TQ-1) -#define __Q8_BM (-__Q8_TM-1) -#else /* defined(__Q8_OC) || defined(__Q8_SM) */ -#define __Q8_BI(w) (-__Q8_TI(w)) -#define __Q8_BL (-__Q8_TL) -#define __Q8_BQ (-__Q8_TQ) -#define __Q8_BM (-__Q8_TM) -#endif - -#if defined(__Q8_TEST) - -/* sanity checks */ - -#define __Q8_X1 1 -#define __Q8_X2 2u -#if __Q8_2J(__Q8_X1,__Q8_X2) != 12u -#error "Q8defs.h: __Q8_2J macro is broken" -#endif - -#if __Q8_TI(__Q8_CW) <= 0 || __Q8_BI(__Q8_CW) >= 0 || \ - __Q8_TI(__Q8_SW) <= 0 || __Q8_BI(__Q8_SW) >= 0 || \ - __Q8_TI(__Q8_IW) <= 0 || __Q8_BI(__Q8_IW) >= 0 || \ - __Q8_TI(__Q8_CW) <= __Q8_BI(__Q8_CW) || \ - __Q8_TI(__Q8_SW) <= __Q8_BI(__Q8_SW) || \ - __Q8_TI(__Q8_IW) <= __Q8_BI(__Q8_IW) -#error "Q8defs.h: __Q8_TI, __Q8_BI macros are broken" -#endif -#if __Q8_UI(__Q8_CW) <= 0 || __Q8_UI(__Q8_CW) <= __Q8_TI(__Q8_CW) || \ - __Q8_UI(__Q8_SW) <= 0 || __Q8_UI(__Q8_SW) <= __Q8_TI(__Q8_SW) || \ - __Q8_UI(__Q8_IW) <= 0 || __Q8_UI(__Q8_IW) <= __Q8_TI(__Q8_IW) -#error "Q8defs.h: __Q8_UI or __Q8_TI macro is broken" -#endif - -#if __Q8_TL <= 0 || __Q8_BL >= 0 || __Q8_TL <= __Q8_BL -#error "Q8defs.h: __Q8_TL, __Q8_BL macros are broken" -#endif -#if __Q8_UL <= 0 || __Q8_UL <= __Q8_TL -#error "Q8defs.h: __Q8_UL or __Q8_TL macro is broken" -#endif - -#ifdef __Q8_QT -#if __Q8_TQ <= 0 || __Q8_BQ >= 0 || __Q8_TQ <= __Q8_BQ -#error "Q8defs.h: __Q8_TQ, __Q8_BQ macros are broken" -#endif -#if __Q8_UQ <= 0 || __Q8_UQ <= __Q8_TQ -#if 0 /* XXX -- not working on Solaris */ -#error "Q8defs.h: __Q8_UQ or __Q8_TQ macro is broken" -#endif -#endif -#endif - -#if __Q8_TM <= 0 || __Q8_BM >= 0 || __Q8_TM <= __Q8_BM -#error "Q8defs.h: __Q8_TM, __Q8_BM macros are broken" -#endif -#if __Q8_UM <= 0 || __Q8_UM <= __Q8_TM -#if 0 /* XXX -- not working on Solaris */ -#error "Q8defs.h: __Q8_UM or __Q8_TM macro is broken" -#endif -#endif - -#endif /* defined(__Q8_TEST) */ diff --git a/src/init/c/util/inttypes.c b/src/init/c/util/inttypes.c deleted file mode 100644 index 32401ed..0000000 --- a/src/init/c/util/inttypes.c +++ /dev/null @@ -1,389 +0,0 @@ -/* - inttypes -- format conversion of integer types - (standard library functions declared by ) - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.8.2 of ISO/IEC 9899:1999 (E). - - This particular implementation requires the matching . - It also assumes that character codes for A..Z and a..z are in - contiguous ascending order; this is true for ASCII but not EBCDIC. -*/ - -#include -#include -#include - -#include -#include /* defines various __Q8_* symbols */ -#include -#include - -/* helper macros: */ - -/* convert digit character to number, in any base */ -#define ToNumber(c) (isdigit(c) ? (c) - '0' : \ - isupper(c) ? (c) - 'A' + 10 : \ - islower(c) ? (c) - 'a' + 10 : \ - -1 /* "invalid" flag */ \ - ) -#define ToWNumber(c) (iswdigit(c) ? (c) - L'0' : \ - iswupper(c) ? (c) - L'A' + 10 : \ - iswlower(c) ? (c) - L'a' + 10 : \ - -1 /* "invalid" flag */ \ - ) - -/* validate converted digit character for specific base */ -#define valid(n, b) ((n) >= 0 && (n) < (b)) - -/* - 7.8.2 Functions for greatest-width integer types -*/ - -intmax_t -imaxabs(j) - intmax_t j; - { - return j >= 0 ? j : -j; - } - -imaxdiv_t -imaxdiv(numer, denom) - intmax_t numer, denom; - { - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - return result; - } - -intmax_t -strtoimax(nptr, endptr, base) - register __Q8_CONST char *__Q8_RESTRICT nptr; - char **__Q8_RESTRICT endptr; - register int base; - { - register uintmax_t accum; /* accumulates converted value */ - register int n; /* numeral from digit character */ - bool minus; /* set iff minus sign seen */ - bool toobig; /* set iff value overflows */ - - if ( endptr != NULL ) - *endptr = (char *)nptr; /* in case no conversion's performed */ - - if ( base < 0 || base == 1 || base > 36 ) - { - errno = EDOM; - return 0; /* unspecified behavior */ - } - - /* skip initial, possibly empty sequence of white-space characters */ - - while ( isspace(*nptr) ) - ++nptr; - - /* process subject sequence: */ - - /* optional sign */ - if ( (minus = *nptr == '-') || *nptr == '+' ) - ++nptr; - - if ( base == 0 ) - if ( *nptr == '0' ) - if ( nptr[1] == 'X' || nptr[1] == 'x' ) - base = 16; - else - base = 8; - else - base = 10; - - /* optional "0x" or "0X" for base 16 */ - - if ( base == 16 && *nptr == '0' && (nptr[1] == 'X' || nptr[1] == 'x') ) - nptr += 2; /* skip past this prefix */ - - /* check whether there is at least one valid digit */ - - n = ToNumber(*nptr); - ++nptr; - - if ( !valid(n, base) ) - return 0; /* subject seq. not of expected form */ - - accum = n; - - for ( toobig = false; n = ToNumber(*nptr), valid(n, base); ++nptr ) - if ( accum > INTMAX_MAX / base + 2 ) /* major wrap-around */ - toobig = true; /* but keep scanning */ - else - accum = base * accum + n; - - if ( endptr != NULL ) - *endptr = (char *)nptr; /* points to first not-valid-digit */ - -#ifdef __Q8_TC /* twos-complement representation */ - if ( minus ) - { - if ( accum > (uintmax_t)INTMAX_MAX + 1 ) - toobig = true; - } - else -#endif - if ( accum > (uintmax_t)INTMAX_MAX ) - toobig = true; - - if ( toobig ) - { - errno = ERANGE; - return minus ? INTMAX_MIN : INTMAX_MAX; - } - else - return (intmax_t)(minus ? -accum : accum); - } - -uintmax_t -strtoumax(nptr, endptr, base) - register __Q8_CONST char *__Q8_RESTRICT nptr; - char **__Q8_RESTRICT endptr; - register int base; - { - register uintmax_t accum; /* accumulates converted value */ - register uintmax_t next; /* for computing next value of accum */ - register int n; /* numeral from digit character */ - bool minus; /* set iff minus sign seen (yes!) */ - bool toobig; /* set iff value overflows */ - - if ( endptr != NULL ) - *endptr = (char *)nptr; /* in case no conversion's performed */ - - if ( base < 0 || base == 1 || base > 36 ) - { - errno = EDOM; - return 0; /* unspecified behavior */ - } - - /* skip initial, possibly empty sequence of white-space characters */ - - while ( isspace(*nptr) ) - ++nptr; - - /* process subject sequence: */ - - /* optional sign (yes!) */ - - if ( (minus = *nptr == '-') || *nptr == '+' ) - ++nptr; - - if ( base == 0 ) - if ( *nptr == '0' ) - if ( nptr[1] == 'X' || nptr[1] == 'x' ) - base = 16; - else - base = 8; - else - base = 10; - - /* optional "0x" or "0X" for base 16 */ - - if ( base == 16 && *nptr == '0' && (nptr[1] == 'X' || nptr[1] == 'x') ) - nptr += 2; /* skip past this prefix */ - - /* check whether there is at least one valid digit */ - - n = ToNumber(*nptr); - ++nptr; - - if ( !valid(n, base) ) - return 0; /* subject seq. not of expected form */ - - accum = n; - - for ( toobig = false; n = ToNumber(*nptr), valid(n, base); ++nptr ) - if ( accum > UINTMAX_MAX / base + 1 /* major wrap-around */ - || (next = base * accum + n) < accum /* minor wrap-around */ - ) - toobig = true; /* but keep scanning */ - else - accum = next; - - if ( endptr != NULL ) - *endptr = (char *)nptr; /* points to first not-valid-digit */ - - if ( toobig ) - { - errno = ERANGE; - return UINTMAX_MAX; - } - else - return minus ? -accum : accum; /* (yes!) */ - } - -intmax_t -wcstoimax(nptr, endptr, base) - register __Q8_CONST wchar_t *__Q8_RESTRICT nptr; - wchar_t **__Q8_RESTRICT endptr; - register int base; - { - register uintmax_t accum; /* accumulates converted value */ - register int n; /* numeral from digit character */ - bool minus; /* set iff minus sign seen */ - bool toobig; /* set iff value overflows */ - - if ( endptr != NULL ) - *endptr = (wchar_t *)nptr; /* in case no conv performed */ - - if ( base < 0 || base == 1 || base > 36 ) - { - errno = EDOM; - return 0; /* unspecified behavior */ - } - - /* skip initial, possibly empty sequence of white-space w.characters */ - - while ( iswspace(*nptr) ) - ++nptr; - - /* process subject sequence: */ - - /* optional sign */ - - if ( (minus = *nptr == L'-') || *nptr == L'+' ) - ++nptr; - - if ( base == 0 ) - if ( *nptr == L'0' ) - if ( nptr[1] == L'X' || nptr[1] == L'x' ) - base = 16; - else - base = 8; - else - base = 10; - - /* optional "0x" or "0X" for base 16 */ - - if ( base == 16 && *nptr == L'0' - && (nptr[1] == L'X' || nptr[1] == L'x') - ) - nptr += 2; /* skip past this prefix */ - - /* check whether there is at least one valid digit */ - - n = ToWNumber(*nptr); - ++nptr; - - if ( !valid(n, base) ) - return 0; /* subject seq. not of expected form */ - - accum = n; - - for ( toobig = false; n = ToWNumber(*nptr), valid(n, base); ++nptr ) - if ( accum > INTMAX_MAX / base + 2 ) /* major wrap-around */ - toobig = true; /* but keep scanning */ - else - accum = base * accum + n; - - if ( endptr != NULL ) - *endptr = (wchar_t *)nptr; /* -> first not-valid-digit */ - -#ifdef __Q8_TC /* twos-complement representation */ - if ( minus ) - { - if ( accum > (uintmax_t)INTMAX_MAX + 1 ) - toobig = true; - } - else -#endif - if ( accum > (uintmax_t)INTMAX_MAX ) - toobig = true; - - if ( toobig ) - { - errno = ERANGE; - return minus ? INTMAX_MIN : INTMAX_MAX; - } - else - return (intmax_t)(minus ? -accum : accum); - } - -uintmax_t -wcstoumax(nptr, endptr, base) - register __Q8_CONST wchar_t *__Q8_RESTRICT nptr; - wchar_t **__Q8_RESTRICT endptr; - register int base; - { - register uintmax_t accum; /* accumulates converted value */ - register uintmax_t next; /* for computing next value of accum */ - register int n; /* numeral from digit character */ - bool minus; /* set iff minus sign seen (yes!) */ - bool toobig; /* set iff value overflows */ - - if ( endptr != NULL ) - *endptr = (wchar_t *)nptr; /* in case no conv performed */ - - if ( base < 0 || base == 1 || base > 36 ) - { - errno = EDOM; - return 0; /* unspecified behavior */ - } - - /* skip initial, possibly empty sequence of white-space w.characters */ - - while ( iswspace(*nptr) ) - ++nptr; - - /* process subject sequence: */ - - /* optional sign */ - - if ( (minus = *nptr == L'-') || *nptr == L'+' ) - ++nptr; - - if ( base == 0 ) - if ( *nptr == L'0' ) - if ( nptr[1] == L'X' || nptr[1] == L'x' ) - base = 16; - else - base = 8; - else - base = 10; - - /* optional "0x" or "0X" for base 16 */ - - if ( base == 16 && *nptr == L'0' - && (nptr[1] == L'X' || nptr[1] == L'x') - ) - nptr += 2; /* skip past this prefix */ - - /* check whether there is at least one valid digit */ - - n = ToWNumber(*nptr); - ++nptr; - - if ( !valid(n, base) ) - return 0; /* subject seq. not of expected form */ - - accum = n; - - for ( toobig = false; n = ToWNumber(*nptr), valid(n, base); ++nptr ) - if ( accum > UINTMAX_MAX / base + 1 /* major wrap-around */ - || (next = base * accum + n) < accum /* minor wrap-around */ - ) - toobig = true; /* but keep scanning */ - else - accum = next; - - if ( endptr != NULL ) - *endptr = (wchar_t *)nptr; /* -> first not-valid-digit */ - - if ( toobig ) - { - errno = ERANGE; - return UINTMAX_MAX; - } - else - return minus ? -accum : accum; /* (yes!) */ - } diff --git a/src/init/c/util/inttypes.h b/src/init/c/util/inttypes.h deleted file mode 100644 index 2a9f4e1..0000000 --- a/src/init/c/util/inttypes.h +++ /dev/null @@ -1,757 +0,0 @@ -/* - inttypes.h -- format conversion of integer types - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.8 of ISO/IEC 9899:1999 (E). - - This particular implementation requires the matching - and inttypes.c. - - This implementation is SELF-CONFIGURING, based on parameters defined - in . If you plan to include it in a C implementation, - it would be best to trim it down, with all the parameterized actions - already performed. -*/ - -#if !defined(_INTTYPES_H) && !defined(_INC_INTTYPES) /* usual */ -#define _INTTYPES_H /* idempotency lock (section 7.1.2) */ -#define _INC_INTTYPES - -#include /* defines various __Q8_* symbols */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - type defined by this header (only) -*/ - -typedef struct - { - intmax_t quot; /* member order must match function */ - intmax_t rem; - } imaxdiv_t; - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) - -/* figure out the type of wchar_t */ -#ifdef __Q8_WU - -#if __Q8_CW >= __Q8_WW -#define __Q8_WT unsigned char -#elif __Q8_SW >= __Q8_WW -#define __Q8_WT unsigned short -#elif __Q8_IW >= __Q8_WW -#define __Q8_WT unsigned int -#elif __Q8_LW >= __Q8_WW -#define __Q8_WT unsigned long -#elif __Q8_QW >= __Q8_WW -#define __Q8_WT unsigned __Q8_QT -#else -#define __Q8_WT unsigned __Q8_MT -#endif - -#define WCHAR_MIN 0 - -#else /* !defined(__Q8_WU) */ - -#if __Q8_CW >= __Q8_WW && defined(__Q8_SC) -#define __Q8_WT __Q8_SC -#elif __Q8_SW >= __Q8_WW -#define __Q8_WT short -#elif __Q8_IW >= __Q8_WW -#define __Q8_WT int -#elif __Q8_LW >= __Q8_WW -#define __Q8_WT long -#elif __Q8_QW >= __Q8_WW -#define __Q8_WT __Q8_QT -#else -#define __Q8_WT __Q8_MT -#endif - -#endif /* defined(__Q8_WU) */ - -/* - 7.8.1 Macros for format specifiers - - The optional 40-bit type is supported by the TMS320C6xxx DSP. - - Note that there was no length modifier for char type prior to C99. -*/ - -#if __Q8_CW == 8 && defined(__Q8_SC) -#define PRId8 "d" -#define PRIi8 "i" -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#ifdef __Q8_CF -#define SCNd8 __Q8_CF"d" -#define SCNi8 __Q8_CF"i" -#define SCNo8 __Q8_CF"o" -#define SCNu8 __Q8_CF"u" -#define SCNx8 __Q8_CF"x" -#endif -#endif -#if __Q8_CW == 16 && defined(__Q8_SC) -#define PRId16 "d" -#define PRIi16 "i" -#define PRIo16 "o" -#define PRIu16 "u" -#define PRIx16 "x" -#define PRIX16 "X" -#ifdef __Q8_CF -#define SCNd16 __Q8_CF"d" -#define SCNi16 __Q8_CF"i" -#define SCNo16 __Q8_CF"o" -#define SCNu16 __Q8_CF"u" -#define SCNx16 __Q8_CF"x" -#endif -#elif __Q8_SW == 16 -#define PRId16 "d" -#define PRIi16 "i" -#define PRIo16 "o" -#define PRIu16 "u" -#define PRIx16 "x" -#define PRIX16 "X" -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#endif -#if __Q8_CW == 32 && defined(__Q8_SC) -#define PRId32 "d" -#define PRIi32 "i" -#define PRIo32 "o" -#define PRIu32 "u" -#define PRIx32 "x" -#define PRIX32 "X" -#ifdef __Q8_CF -#define SCNd32 __Q8_CF"d" -#define SCNi32 __Q8_CF"i" -#define SCNo32 __Q8_CF"o" -#define SCNu32 __Q8_CF"u" -#define SCNx32 __Q8_CF"x" -#endif -#elif __Q8_SW == 32 -#define PRId32 "d" -#define PRIi32 "i" -#define PRIo32 "o" -#define PRIu32 "u" -#define PRIx32 "x" -#define PRIX32 "X" -#define SCNd32 "hd" -#define SCNi32 "hi" -#define SCNo32 "ho" -#define SCNu32 "hu" -#define SCNx32 "hx" -#elif __Q8_IW == 32 -#define PRId32 "d" -#define PRIi32 "i" -#define PRIo32 "o" -#define PRIu32 "u" -#define PRIx32 "x" -#define PRIX32 "X" -#define SCNd32 "d" -#define SCNi32 "i" -#define SCNo32 "o" -#define SCNu32 "u" -#define SCNx32 "x" -#elif __Q8_LW == 32 -#define PRId32 "ld" -#define PRIi32 "li" -#define PRIo32 "lo" -#define PRIu32 "lu" -#define PRIx32 "lx" -#define PRIX32 "lX" -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#endif -#if __Q8_CW == 40 && defined(__Q8_SC) -#define PRId40 "d" -#define PRIi40 "i" -#define PRIo40 "o" -#define PRIu40 "u" -#define PRIx40 "x" -#define PRIX40 "X" -#ifdef __Q8_CF -#define SCNd40 __Q8_CF"d" -#define SCNi40 __Q8_CF"i" -#define SCNo40 __Q8_CF"o" -#define SCNu40 __Q8_CF"u" -#define SCNx40 __Q8_CF"x" -#endif -#elif __Q8_SW == 40 -#define PRId40 "d" -#define PRIi40 "i" -#define PRIo40 "o" -#define PRIu40 "u" -#define PRIx40 "x" -#define PRIX40 "X" -#define SCNd40 "hd" -#define SCNi40 "hi" -#define SCNo40 "ho" -#define SCNu40 "hu" -#define SCNx40 "hx" -#elif __Q8_IW == 40 -#define PRId40 "d" -#define PRIi40 "i" -#define PRIo40 "o" -#define PRIu40 "u" -#define PRIx40 "x" -#define PRIX40 "X" -#define SCNd40 "d" -#define SCNi40 "i" -#define SCNo40 "o" -#define SCNu40 "u" -#define SCNx40 "x" -#elif __Q8_LW == 40 -#define PRId40 "ld" -#define PRIi40 "li" -#define PRIo40 "lo" -#define PRIu40 "lu" -#define PRIx40 "lx" -#define PRIX40 "lX" -#define SCNd40 "ld" -#define SCNi40 "li" -#define SCNo40 "lo" -#define SCNu40 "lu" -#define SCNx40 "lx" -#endif -#if __Q8_CW == 64 && defined(__Q8_SC) -#define PRId64 "d" -#define PRIi64 "i" -#define PRIo64 "o" -#define PRIu64 "u" -#define PRIx64 "x" -#define PRIX64 "X" -#ifdef __Q8_CF -#define SCNd64 __Q8_CF"d" -#define SCNi64 __Q8_CF"i" -#define SCNo64 __Q8_CF"o" -#define SCNu64 __Q8_CF"u" -#define SCNx64 __Q8_CF"x" -#endif -#elif __Q8_SW == 64 -#define PRId64 "d" -#define PRIi64 "i" -#define PRIo64 "o" -#define PRIu64 "u" -#define PRIx64 "x" -#define PRIX64 "X" -#define SCNd64 "hd" -#define SCNi64 "hi" -#define SCNo64 "ho" -#define SCNu64 "hu" -#define SCNx64 "hx" -#elif __Q8_IW == 64 -#define PRId64 "d" -#define PRIi64 "i" -#define PRIo64 "o" -#define PRIu64 "u" -#define PRIx64 "x" -#define PRIX64 "X" -#define SCNd64 "d" -#define SCNi64 "i" -#define SCNo64 "o" -#define SCNu64 "u" -#define SCNx64 "x" -#elif __Q8_LW == 64 -#define PRId64 "ld" -#define PRIi64 "li" -#define PRIo64 "lo" -#define PRIu64 "lu" -#define PRIx64 "lx" -#define PRIX64 "lX" -#define SCNd64 "ld" -#define SCNi64 "li" -#define SCNo64 "lo" -#define SCNu64 "lu" -#define SCNx64 "lx" -#elif __Q8_QW == 64 -#define PRId64 __Q8_QF"d" -#define PRIi64 __Q8_QF"i" -#define PRIo64 __Q8_QF"o" -#define PRIu64 __Q8_QF"u" -#define PRIx64 __Q8_QF"x" -#define PRIX64 __Q8_QF"X" -#define SCNd64 __Q8_QF"d" -#define SCNi64 __Q8_QF"i" -#define SCNo64 __Q8_QF"o" -#define SCNu64 __Q8_QF"u" -#define SCNx64 __Q8_QF"x" -#endif - -#if __Q8_CW < __Q8_IW && defined(__Q8_SC) -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#ifdef __Q8_CF -#define SCNdLEAST8 __Q8_CF"d" -#define SCNiLEAST8 __Q8_CF"i" -#define SCNoLEAST8 __Q8_CF"o" -#define SCNuLEAST8 __Q8_CF"u" -#define SCNxLEAST8 __Q8_CF"x" -#endif -#elif __Q8_SW < __Q8_IW -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define SCNdLEAST8 "hd" -#define SCNiLEAST8 "hi" -#define SCNoLEAST8 "ho" -#define SCNuLEAST8 "hu" -#define SCNxLEAST8 "hx" -#else -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 16 && defined(__Q8_SC) -#define PRIdLEAST16 "d" -#define PRIiLEAST16 "i" -#define PRIoLEAST16 "o" -#define PRIuLEAST16 "u" -#define PRIxLEAST16 "x" -#define PRIXLEAST16 "X" -#ifdef __Q8_CF -#define SCNdLEAST16 __Q8_CF"d" -#define SCNiLEAST16 __Q8_CF"i" -#define SCNoLEAST16 __Q8_CF"o" -#define SCNuLEAST16 __Q8_CF"u" -#define SCNxLEAST16 __Q8_CF"x" -#endif -#elif __Q8_SW < __Q8_IW -#define PRIdLEAST16 "d" -#define PRIiLEAST16 "i" -#define PRIoLEAST16 "o" -#define PRIuLEAST16 "u" -#define PRIxLEAST16 "x" -#define PRIXLEAST16 "X" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#else -#define PRIdLEAST16 "d" -#define PRIiLEAST16 "i" -#define PRIoLEAST16 "o" -#define PRIuLEAST16 "u" -#define PRIxLEAST16 "x" -#define PRIXLEAST16 "X" -#define SCNdLEAST16 "d" -#define SCNiLEAST16 "i" -#define SCNoLEAST16 "o" -#define SCNuLEAST16 "u" -#define SCNxLEAST16 "x" -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 32 && defined(__Q8_SC) -#define PRIdLEAST32 "d" -#define PRIiLEAST32 "i" -#define PRIoLEAST32 "o" -#define PRIuLEAST32 "u" -#define PRIxLEAST32 "x" -#define PRIXLEAST32 "X" -#ifdef __Q8_CF -#define SCNdLEAST32 __Q8_CF"d" -#define SCNiLEAST32 __Q8_CF"i" -#define SCNoLEAST32 __Q8_CF"o" -#define SCNuLEAST32 __Q8_CF"u" -#define SCNxLEAST32 __Q8_CF"x" -#endif -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 32 -#define PRIdLEAST32 "d" -#define PRIiLEAST32 "i" -#define PRIoLEAST32 "o" -#define PRIuLEAST32 "u" -#define PRIxLEAST32 "x" -#define PRIXLEAST32 "X" -#define SCNdLEAST32 "hd" -#define SCNiLEAST32 "hi" -#define SCNoLEAST32 "ho" -#define SCNuLEAST32 "hu" -#define SCNx32 "hx" -#elif __Q8_IW >= 32 -#define PRIdLEAST32 "d" -#define PRIiLEAST32 "i" -#define PRIoLEAST32 "o" -#define PRIuLEAST32 "u" -#define PRIxLEAST32 "x" -#define PRIXLEAST32 "X" -#define SCNdLEAST32 "d" -#define SCNiLEAST32 "i" -#define SCNoLEAST32 "o" -#define SCNuLEAST32 "u" -#define SCNxLEAST32 "x" -#else -#define PRIdLEAST32 "ld" -#define PRIiLEAST32 "li" -#define PRIoLEAST32 "lo" -#define PRIuLEAST32 "lu" -#define PRIxLEAST32 "lx" -#define PRIXLEAST32 "lX" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 40 && defined(__Q8_SC) -#define PRIdLEAST40 "d" -#define PRIiLEAST40 "i" -#define PRIoLEAST40 "o" -#define PRIuLEAST40 "u" -#define PRIxLEAST40 "x" -#define PRIXLEAST40 "X" -#ifdef __Q8_CF -#define SCNdLEAST40 __Q8_CF"d" -#define SCNiLEAST40 __Q8_CF"i" -#define SCNoLEAST40 __Q8_CF"o" -#define SCNuLEAST40 __Q8_CF"u" -#define SCNxLEAST40 __Q8_CF"x" -#endif -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 40 -#define PRIdLEAST40 "d" -#define PRIiLEAST40 "i" -#define PRIoLEAST40 "o" -#define PRIuLEAST40 "u" -#define PRIxLEAST40 "x" -#define PRIXLEAST40 "X" -#define SCNdLEAST40 "hd" -#define SCNiLEAST40 "hi" -#define SCNoLEAST40 "ho" -#define SCNuLEAST40 "hu" -#define SCNxLEAST40 "hx" -#elif __Q8_IW >= 40 -#define PRIdLEAST40 "d" -#define PRIiLEAST40 "i" -#define PRIoLEAST40 "o" -#define PRIuLEAST40 "u" -#define PRIxLEAST40 "x" -#define PRIXLEAST40 "X" -#define SCNdLEAST40 "d" -#define SCNiLEAST40 "i" -#define SCNoLEAST40 "o" -#define SCNuLEAST40 "u" -#define SCNxLEAST40 "x" -#elif __Q8_LW >= 40 -#define PRIdLEAST40 "ld" -#define PRIiLEAST40 "li" -#define PRIoLEAST40 "lo" -#define PRIuLEAST40 "lu" -#define PRIxLEAST40 "lx" -#define PRIXLEAST40 "lX" -#define SCNdLEAST40 "ld" -#define SCNiLEAST40 "li" -#define SCNoLEAST40 "lo" -#define SCNuLEAST40 "lu" -#define SCNxLEAST40 "lx" -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -#define PRIdLEAST40 __Q8_QF"d" -#define PRIiLEAST40 __Q8_QF"i" -#define PRIoLEAST40 __Q8_QF"o" -#define PRIuLEAST40 __Q8_QF"u" -#define PRIxLEAST40 __Q8_QF"x" -#define PRIXLEAST40 __Q8_QF"X" -#define SCNdLEAST40 __Q8_QF"d" -#define SCNiLEAST40 __Q8_QF"i" -#define SCNoLEAST40 __Q8_QF"o" -#define SCNuLEAST40 __Q8_QF"u" -#define SCNxLEAST40 __Q8_QF"x" -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 64 && defined(__Q8_SC) -#define PRIdLEAST64 "d" -#define PRIiLEAST64 "i" -#define PRIoLEAST64 "o" -#define PRIuLEAST64 "u" -#define PRIxLEAST64 "x" -#define PRIXLEAST64 "X" -#ifdef __Q8_CF -#define SCNdLEAST64 __Q8_CF"d" -#define SCNiLEAST64 __Q8_CF"i" -#define SCNoLEAST64 __Q8_CF"o" -#define SCNuLEAST64 __Q8_CF"u" -#define SCNxLEAST64 __Q8_CF"x" -#endif -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 64 -#define PRIdLEAST64 "d" -#define PRIiLEAST64 "i" -#define PRIoLEAST64 "o" -#define PRIuLEAST64 "u" -#define PRIxLEAST64 "x" -#define PRIXLEAST64 "X" -#define SCNdLEAST64 "hd" -#define SCNiLEAST64 "hi" -#define SCNoLEAST64 "ho" -#define SCNuLEAST64 "hu" -#define SCNxLEAST64 "hx" -#elif __Q8_IW >= 64 -#define PRIdLEAST64 "d" -#define PRIiLEAST64 "i" -#define PRIoLEAST64 "o" -#define PRIuLEAST64 "u" -#define PRIxLEAST64 "x" -#define PRIXLEAST64 "X" -#define SCNdLEAST64 "d" -#define SCNiLEAST64 "i" -#define SCNoLEAST64 "o" -#define SCNuLEAST64 "u" -#define SCNxLEAST64 "x" -#elif __Q8_LW >= 64 -#define PRIdLEAST64 "ld" -#define PRIiLEAST64 "li" -#define PRIoLEAST64 "lo" -#define PRIuLEAST64 "lu" -#define PRIxLEAST64 "lx" -#define PRIXLEAST64 "lX" -#define SCNdLEAST64 "ld" -#define SCNiLEAST64 "li" -#define SCNoLEAST64 "lo" -#define SCNuLEAST64 "lu" -#define SCNxLEAST64 "lx" -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -#define PRIdLEAST64 __Q8_QF"d" -#define PRIiLEAST64 __Q8_QF"i" -#define PRIoLEAST64 __Q8_QF"o" -#define PRIuLEAST64 __Q8_QF"u" -#define PRIxLEAST64 __Q8_QF"x" -#define PRIXLEAST64 __Q8_QF"X" -#define SCNdLEAST64 __Q8_QF"d" -#define SCNiLEAST64 __Q8_QF"i" -#define SCNoLEAST64 __Q8_QF"o" -#define SCNuLEAST64 __Q8_QF"u" -#define SCNxLEAST64 __Q8_QF"x" -#endif - -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define PRIdFAST16 "d" -#define PRIiFAST16 "i" -#define PRIoFAST16 "o" -#define PRIuFAST16 "u" -#define PRIxFAST16 "x" -#define PRIXFAST16 "X" -#define SCNdFAST16 "d" -#define SCNiFAST16 "i" -#define SCNoFAST16 "o" -#define SCNuFAST16 "u" -#define SCNxFAST16 "x" -#if __Q8_IW >= 32 -#define PRIdFAST32 "d" -#define PRIiFAST32 "i" -#define PRIoFAST32 "o" -#define PRIuFAST32 "u" -#define PRIxFAST32 "x" -#define PRIXFAST32 "X" -#define SCNdFAST32 "d" -#define SCNiFAST32 "i" -#define SCNoFAST32 "o" -#define SCNuFAST32 "u" -#define SCNxFAST32 "x" -#else -#define PRIdFAST32 "ld" -#define PRIiFAST32 "li" -#define PRIoFAST32 "lo" -#define PRIuFAST32 "lu" -#define PRIxFAST32 "lx" -#define PRIXFAST32 "lX" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#endif -#if __Q8_IW >= 40 -#define PRIdFAST40 "d" -#define PRIiFAST40 "i" -#define PRIoFAST40 "o" -#define PRIuFAST40 "u" -#define PRIxFAST40 "x" -#define PRIXFAST40 "X" -#define SCNdFAST40 "d" -#define SCNiFAST40 "i" -#define SCNoFAST40 "o" -#define SCNuFAST40 "u" -#define SCNxFAST40 "x" -#elif __Q8_LW >= 40 -#define PRIdFAST40 "ld" -#define PRIiFAST40 "li" -#define PRIoFAST40 "lo" -#define PRIuFAST40 "lu" -#define PRIxFAST40 "lx" -#define PRIXFAST40 "lX" -#define SCNdFAST40 "ld" -#define SCNiFAST40 "li" -#define SCNoFAST40 "lo" -#define SCNuFAST40 "lu" -#define SCNxFAST40 "lx" -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -#define PRIdFAST40 __Q8_QF"d" -#define PRIiFAST40 __Q8_QF"i" -#define PRIoFAST40 __Q8_QF"o" -#define PRIuFAST40 __Q8_QF"u" -#define PRIxFAST40 __Q8_QF"x" -#define PRIXFAST40 __Q8_QF"X" -#define SCNdFAST40 __Q8_QF"d" -#define SCNiFAST40 __Q8_QF"i" -#define SCNoFAST40 __Q8_QF"o" -#define SCNuFAST40 __Q8_QF"u" -#define SCNxFAST40 __Q8_QF"x" -#endif -#if __Q8_IW >= 64 -#define PRIdFAST64 "d" -#define PRIiFAST64 "i" -#define PRIoFAST64 "o" -#define PRIuFAST64 "u" -#define PRIxFAST64 "x" -#define PRIXFAST64 "X" -#define SCNdFAST64 "d" -#define SCNiFAST64 "i" -#define SCNoFAST64 "o" -#define SCNuFAST64 "u" -#define SCNxFAST64 "x" -#elif __Q8_LW >= 64 -#define PRIdFAST64 "ld" -#define PRIiFAST64 "li" -#define PRIoFAST64 "lo" -#define PRIuFAST64 "lu" -#define PRIxFAST64 "lx" -#define PRIXFAST64 "lX" -#define SCNdFAST64 "ld" -#define SCNiFAST64 "li" -#define SCNoFAST64 "lo" -#define SCNuFAST64 "lu" -#define SCNxFAST64 "lx" -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -#define PRIdFAST64 __Q8_QF"d" -#define PRIiFAST64 __Q8_QF"i" -#define PRIoFAST64 __Q8_QF"o" -#define PRIuFAST64 __Q8_QF"u" -#define PRIxFAST64 __Q8_QF"x" -#define PRIXFAST64 __Q8_QF"X" -#define SCNdFAST64 __Q8_QF"d" -#define SCNiFAST64 __Q8_QF"i" -#define SCNoFAST64 __Q8_QF"o" -#define SCNuFAST64 __Q8_QF"u" -#define SCNxFAST64 __Q8_QF"x" -#endif - -#define PRIdMAX __Q8_MF"d" -#define PRIiMAX __Q8_MF"i" -#define PRIoMAX __Q8_MF"o" -#define PRIuMAX __Q8_MF"u" -#define PRIxMAX __Q8_MF"x" -#define PRIXMAX __Q8_MF"X" -#define SCNdMAX __Q8_MF"d" -#define SCNiMAX __Q8_MF"i" -#define SCNoMAX __Q8_MF"o" -#define SCNuMAX __Q8_MF"u" -#define SCNxMAX __Q8_MF"x" - -#if defined(__Q8_PW) -#if __Q8_IW >= __Q8_PW -#define PRIdPTR "d" -#define PRIiPTR "i" -#define PRIoPTR "o" -#define PRIuPTR "u" -#define PRIxPTR "x" -#define PRIXPTR "X" -#define SCNdPTR "d" -#define SCNiPTR "i" -#define SCNoPTR "o" -#define SCNuPTR "u" -#define SCNxPTR "x" -#elif __Q8_LW >= __Q8_PW -#define PRIdPTR "ld" -#define PRIiPTR "li" -#define PRIoPTR "lo" -#define PRIuPTR "lu" -#define PRIxPTR "lx" -#define PRIXPTR "lX" -#define SCNdPTR "ld" -#define SCNiPTR "li" -#define SCNoPTR "lo" -#define SCNuPTR "lu" -#define SCNxPTR "lx" -#elif __Q8_QW >= __Q8_PW -#define PRIdPTR __Q8_QF"d" -#define PRIiPTR __Q8_QF"i" -#define PRIoPTR __Q8_QF"o" -#define PRIuPTR __Q8_QF"u" -#define PRIxPTR __Q8_QF"x" -#define PRIXPTR __Q8_QF"X" -#define SCNdPTR __Q8_QF"d" -#define SCNiPTR __Q8_QF"i" -#define SCNoPTR __Q8_QF"o" -#define SCNuPTR __Q8_QF"u" -#define SCNxPTR __Q8_QF"x" -#elif __Q8_MW >= __Q8_PW -#define PRIdPTR __Q8_MF"d" -#define PRIiPTR __Q8_MF"i" -#define PRIoPTR __Q8_MF"o" -#define PRIuPTR __Q8_MF"u" -#define PRIxPTR __Q8_MF"x" -#define PRIXPTR __Q8_MF"X" -#define SCNdPTR __Q8_MF"d" -#define SCNiPTR __Q8_MF"i" -#define SCNoPTR __Q8_MF"o" -#define SCNuPTR __Q8_MF"u" -#define SCNxPTR __Q8_MF"x" -#endif -#endif - -#endif /* !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) */ - -/* - 7.8.2 Functions for greatest-width integer types -*/ - -intmax_t imaxabs __Q8_PARAMS((intmax_t __j)); -imaxdiv_t imaxdiv __Q8_PARAMS((intmax_t __numer, intmax_t __denom)); -intmax_t strtoimax __Q8_PARAMS((__Q8_CONST char *__Q8_RESTRICT __nptr, - char **__Q8_RESTRICT __endptr, int __base)); -uintmax_t strtoumax __Q8_PARAMS((__Q8_CONST char *__Q8_RESTRICT __nptr, - char **__Q8_RESTRICT __endptr, int __base)); -intmax_t wcstoimax __Q8_PARAMS((__Q8_CONST __Q8_WT *__Q8_RESTRICT __nptr, - __Q8_WT **__Q8_RESTRICT __endptr, int __base)); -uintmax_t wcstoumax __Q8_PARAMS((__Q8_CONST __Q8_WT *__Q8_RESTRICT __nptr, - __Q8_WT **__Q8_RESTRICT __endptr, int __base)); - -#ifdef __cplusplus - } -#endif - -#endif /* !defined(_INTTYPES_H) && !defined(_INC_INTTYPES) */ diff --git a/src/init/c/util/iso646.h b/src/init/c/util/iso646.h deleted file mode 100644 index 2abfb32..0000000 --- a/src/init/c/util/iso646.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - -- macros for use in place of certain tokens that are - not expressible in the invariant subset of ISO 646:1991 - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclause 7.9 of ISO/IEC 9899:1999 (E). - - Usage: ??=include - - Notes: The C standard has always required that the following - source trigraphs be supported in translation phase 1: - ??= mapped to # - ??( mapped to [ - ??/ mapped to \ - ??) mapped to ] - ??' mapped to ^ - ??< mapped to { - ??! mapped to | - ??> mapped to } - ??- mapped to ~ - - ISO/IEC 9899:1994 (ISO/IEC 9899:1990/Amendment 1) - and subsequently ISO/IEC 9899:1999, which require - conforming implementations to provide , - also require support in translation phases 3..4 - for the following preprocessing tokens: - %: alternate spelling for # - %:%: alternate spelling for ## - They also require support in translation phases 3..7 - for the following preprocessing tokens: - <: alternate spelling for [ - :> alternate spelling for ] - <% alternate spelling for { - %> alternate spelling for } - - The C standard also requires that the "difficult" - characters be somehow provided in both the basic source - and execution character sets, regardless of the - provision of trigraph, digraph, and macro alternatives - for these characters. (Thus, the alternate spellings - are intended to help programmers, not C implementors.) - - The 1999 revision of the C standard adds support for - international characters in identifiers via Universal - Character Names, but UCN equivalents are not allowed - for the aforementioned "difficult" characters. - - It is suggested that *all* C programmers avoid use of - the following identifiers in their programs, in case - somebody later needs to use in maintaining - the programs. - */ - -/* This header doesn't need an idempotency lock; there are no typedefs here. */ - -/* This header doesn't need C++ extern "C"; there are no declarations here. */ - -#define and && -#define and_eq &= -#define bitand & -#define bitor | -#define compl ~ -#define not ! -#define not_eq != -#define or || -#define or_eq |= -#define xor ^ -#define xor_eq ^= diff --git a/src/init/c/util/locale.c b/src/init/c/util/locale.c deleted file mode 100644 index fa88ef2..0000000 --- a/src/init/c/util/locale.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - localeconv() -- numeric formatting convention inquiry - setlocale() -- locale control function - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclauses 7.11.1.1 & 7.11.2.1 of ISO/IEC 9899:1999 (E). - - This is a minimal implementation for environments where - internationalization is not considered important. - - XXX -- UNTESTED -- XXX -*/ - -#include /* for CHAR_MAX */ - -#include - -static char empty[] = ""; - -static struct lconv c_lconv = /* lconv for "C" locale */ - { - /* WARNING: The following order must match the header! */ - ".", /* decimal_point */ - empty, /* thousands_sep */ - empty, /* grouping */ - empty, /* int_curr_symbol */ - empty, /* currency_symbol */ - empty, /* mon_decimal_point */ - empty, /* mon_thousands_sep */ - empty, /* mon_grouping */ - empty, /* positive_sign */ - empty, /* negative_sign */ - CHAR_MAX, /* int_frac_digits */ - CHAR_MAX, /* frac_digits */ - CHAR_MAX, /* p_cs_precedes */ - CHAR_MAX, /* p_sep_by_space */ - CHAR_MAX, /* n_cs_precedes */ - CHAR_MAX, /* n_sep_by_space */ - CHAR_MAX, /* p_sign_posn */ - CHAR_MAX, /* n_sign_posn */ - CHAR_MAX, /* int_p_cs_precedes */ - CHAR_MAX, /* int_p_sep_by_space */ - CHAR_MAX, /* int_n_cs_precedes */ - CHAR_MAX, /* int_n_sep_by_space */ - CHAR_MAX, /* int_p_sign_posn */ - CHAR_MAX, /* int_n_sign_posn */ - }; - -struct lconv * -localeconv() - { - return &c_lconv; - } - -char * -setlocale(category, locale) - int category; - const char *locale; - { - switch ( category ) - { - case LC_ALL: - case LC_COLLATE: - case LC_CTYPE: - case LC_MONETARY: - case LC_NUMERIC: - case LC_TIME: - return empty; /* native "" == "C" == "POSIX" */ - /* The string doesn't have to be the same as the argument. */ - - default: - return NULL; /* unsupported category */ - } - } diff --git a/src/init/c/util/locale.h b/src/init/c/util/locale.h deleted file mode 100644 index e7449f1..0000000 --- a/src/init/c/util/locale.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - -- definitions for internationalization functions - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclause 7.11 of ISO/IEC 9899:1999 (E). - - The standard allows additional macro definitions starting with - "LC_" and an uppercase letter. - */ - -/* This header doesn't need an idempotency lock; there are no typedefs here. */ - -#include /* defines __Q8_NULL and __Q8_PARAMS */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct lconv /* members are in usual UNIX order */ - { - /* The following are controlled by LC_NUMERIC: */ - char *decimal_point; - char *thousands_sep; - char *grouping; - /* The following are controlled by LC_MONETARY: */ - char *int_curr_symbol; - char *currency_symbol; - char *mon_decimal_point; - char *mon_thousands_sep; - char *mon_grouping; - char *positive_sign; - char *negative_sign; - char int_frac_digits; - char frac_digits; - char p_cs_precedes; - char p_sep_by_space; - char n_cs_precedes; - char n_sep_by_space; - char p_sign_posn; - char n_sign_posn; - char int_p_cs_precedes; - char int_p_sep_by_space; - char int_n_cs_precedes; - char int_n_sep_by_space; - char int_p_sign_posn; - char int_n_sign_posn; - }; - -/* The following have the usual UNIX values: */ -#define LC_CTYPE (0) -#define LC_NUMERIC (1) -#define LC_TIME (2) -#define LC_COLLATE (3) -#define LC_MONETARY (4) -#define LC_ALL (6) -/* other categories may be added here: */ -#define LC_MESSAGES (5) - -#ifndef NULL -#define NULL __Q8_NULL -#endif - -extern char *setlocale __Q8_PARAMS((int __category, - const char *__locale)); -extern struct lconv *localeconv __Q8_PARAMS((void)); - -#ifdef __cplusplus - } -#endif diff --git a/src/init/c/util/signal.c b/src/init/c/util/signal.c deleted file mode 100644 index 129a6e4..0000000 --- a/src/init/c/util/signal.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - signal -- specify signal handling - raise -- send signal - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclauses 7.14.1 & 7.14.2 of ISO/IEC 9899:1999 (E). - - These are minimally functional versions, solely for systems that don't - already provide signal() (such as the TMS320C6xxx DSP's compiler). - - XXX -- UNTESTED -- XXX -*/ - -#include -#include /* for abort() */ - -#include /* for __Q8_PARAMS */ -#include -#include - -#define NSIG (SIGTERM+1) /* max. supported signal number + 1 */ - -static void (*handler[NSIG])__Q8_PARAMS((int)); /* current handlers */ - -static bool inited = false; /* for initializing above */ - -/* dummy functions for unique address */ -void __sig_err(sig) int sig; { } -void __sig_ign(sig) int sig; { } - -/* - 7.14.1 -- specify signal handling -*/ - -void (* -signal(sig, func) - )__Q8_PARAMS((int)) /* returns previous handler */ - register int sig; - void (*func)__Q8_PARAMS((int)); - { - register void (*retval)__Q8_PARAMS((int)); /* previous handler */ - - if ( sig <= 0 || sig >= NSIG ) /* safety check */ - { - errno = EDOM; - return SIG_ERR; - } - - /* C language provides no good way to initialize handler[] */ - if ( !inited ) /* once only */ - { - register int i; - - for ( i = 0; i < NSIG; ++i ) - handler[i] = SIG_DFL; /* initialize */ - - inited = true; - } - - retval = handler[sig - 1]; /* previous state */ - handler[sig - 1] = func; /* new state */ - - return retval; /* previous handler */ - } - -/* - 7.14.2 -- send signal -*/ - -int -raise(sig) - int sig; - { - register void (*func)__Q8_PARAMS((int)); /* handler value */ - - if ( sig <= 0 || sig >= NSIG ) /* safety check */ - { - errno = EDOM; - return 1; /* indicate failure */ - } - - func = handler[sig - 1]; - - if ( func == SIG_IGN ) - return 0; /* indicate success */ - - if ( func == SIG_DFL ) - { - abort(); /* (an arbitrary decision) */ - return 1; /* just in case, indicate failure */ - } - - handler[sig - 1] = SIG_DFL; /* classic UNIX behavior */ - (*func)(sig); - - return 0; /* indicate success */ - } diff --git a/src/init/c/util/signal.h b/src/init/c/util/signal.h deleted file mode 100644 index 469b805..0000000 --- a/src/init/c/util/signal.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - signal.h -- signal handling - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.14 of ISO/IEC 9899:1999 (E). - - This particular implementation requires the matching signal.c. - - This is a minimally functional version, solely for systems that don't - already provide (such as the TMS320C6xxx DSP's compiler). -*/ - -#if !defined(_SIGNAL_H) && !defined(_INC_SIGNAL) /* usual lock names */ -#define _SIGNAL_H /* idempotency lock (section 7.1.2) */ -#define _INC_SIGNAL - -#include /* defines __Q8_PARAMS */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* atomic-access data type: */ - -typedef int sig_atomic_t; /* this type works nearly everywhere */ - -/* signal states: */ - -#define SIG_DFL ((void (*)__Q8_PARAMS((int)))0) /* default */ -#define SIG_ERR __sig_err /* error return from signal() */ -#define SIG_IGN __sig_ign /* ignore */ - -/* dummy functions for unique address */ -extern void __sig_err __Q8_PARAMS((int __sig)); -extern void __sig_ign __Q8_PARAMS((int __sig)); - -/* signal numbers (these are a subset of the traditional UNIX values): */ - -#define SIGINT (2) /* interactive attention signal */ -#define SIGILL (4) /* invalid function image */ -#define SIGABRT (6) /* abnormal termination */ -#define SIGFPE (8) /* erroneous arithmetic operation */ -#define SIGSEGV (11) /* invalid access to storage */ -#define SIGTERM (15) /* termination request */ -/* Note: SIGTERM is assumed by my signal.c to have the highest value. */ - -/* - 7.14.1 -- specify signal handling -*/ - -extern void (*signal __Q8_PARAMS((int __sig, void (*__func)(int)))) - __Q8_PARAMS((int)); - -/* - 7.14.2 -- send signal -*/ - -extern int raise __Q8_PARAMS((int __sig)); - -#ifdef __cplusplus - } -#endif - -#endif /* !defined(_SIGNAL_H) && !defined(_INC_SIGNAL) */ diff --git a/src/init/c/util/sitest.c b/src/init/c/util/sitest.c deleted file mode 100644 index b8ec355..0000000 --- a/src/init/c/util/sitest.c +++ /dev/null @@ -1,1521 +0,0 @@ -/* - sitest -- exercise features of C99 and - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Tries to accommodate pre-C99 versions of . - - Takes advantage of __Q8_* symbols defined by a particular - implementation of , but doesn't require them. - - NOTE: This is not a thorough validation test of the facilities. -*/ - -#include -#include /* for CHAR_BIT */ -#include -#include /* for ptrdiff_t */ -#include -#include - -#include /* embeds */ -#include /* for sig_atomic_t */ -#if defined(INTMAX_MAX) /* has C99 features */ -#include -#endif - -#include /* test idempotency */ - -#if __STDC_VERSION__ >= 199901 -#ifndef __Q8_QT -#define __Q8_QT long long -#endif -#endif - -#ifdef PRIdMAX -#define HAVE_PRIdMAX -#ifndef __Q8_MT -#define __Q8_MT intmax_t -#endif -#else -#ifdef PRIdLEAST64 -#ifndef __Q8_MT -#define __Q8_MT int_least64_t -#endif -#define PRIdMAX PRIdLEAST64 -#else -#ifndef __Q8_MT -#define __Q8_MT long -#endif -#define PRIdMAX "ld" -#endif -#endif - -#ifdef PRIuMAX -#define HAVE_PRIuMAX -#define U__Q8_MT uintmax_t -#else -#ifdef PRIuLEAST64 -#define U__Q8_MT uint_least64_t -#define PRIuMAX PRIuLEAST64 -#else -#define U__Q8_MT unsigned long -#define PRIuMAX "lu" -#endif -#endif - -#define STR_SUB(s) # s -#define STRINGIZE(s) STR_SUB(s) /* extra level to expand argument */ - -#if defined(SCNo32) || defined(PRIo32) -static int32_t int32; -#endif -static int_least16_t intl16; -static uint_least16_t uintl16; -static uint_fast16_t uintf16; -static intmax_t intmax; -static uintmax_t uintmax; - -int -main() { - int status = 0; /* exit status to be returned */ - - /* features: */ - - printf("CHAR_BIT=%u\n", (unsigned)CHAR_BIT ); - printf("sizeof(char)=%u\n", (unsigned)sizeof(char)); /* s.b. 1 */ - printf("sizeof(short)=%u\n", (unsigned)sizeof(short)); - printf("sizeof(int)=%u\n", (unsigned)sizeof(int)); - printf("sizeof(long)=%u\n", (unsigned)sizeof(long)); -#ifdef __Q8_QT - printf("sizeof(long long)=%u\n", (unsigned)sizeof(__Q8_QT)); -#endif - printf("sizeof(intmax_t)=%u\n", (unsigned)sizeof(intmax_t)); - printf("sizeof(ptrdiff_t)=%u\n", (unsigned)sizeof(ptrdiff_t)); - printf("sizeof(size_t)=%u\n", (unsigned)sizeof(size_t)); - printf("sizeof(sig_atomic_t)=%u\n", (unsigned)sizeof(sig_atomic_t)); - printf("sizeof(wchar_t)=%u\n", (unsigned)sizeof(wchar_t)); -#if defined(WINT_MAX) || __STDC_VERSION__ >= 199901 - printf("sizeof(wint_t)=%u\n", (unsigned)sizeof(wint_t)); -#else - printf("*** wint_t isn't defined ***\n"); - status = EXIT_FAILURE; -#endif -#ifdef INT8_MAX - printf("sizeof(int8_t)=%u\n", (unsigned)sizeof(int8_t)); - printf("sizeof(uint8_t)=%u\n", (unsigned)sizeof(uint8_t)); -#endif -#ifdef INT9_MAX - printf("sizeof(int9_t)=%u\n", (unsigned)sizeof(int9_t)); - printf("sizeof(uint9_t)=%u\n", (unsigned)sizeof(uint9_t)); -#endif -#ifdef INT12_MAX - printf("sizeof(int12_t)=%u\n", (unsigned)sizeof(int12_t)); - printf("sizeof(uint12_t)=%u\n", (unsigned)sizeof(uint12_t)); -#endif -#ifdef INT16_MAX - printf("sizeof(int16_t)=%u\n", (unsigned)sizeof(int16_t)); - printf("sizeof(uint16_t)=%u\n", (unsigned)sizeof(uint16_t)); -#endif -#ifdef INT18_MAX - printf("sizeof(int18_t)=%u\n", (unsigned)sizeof(int18_t)); - printf("sizeof(uint18_t)=%u\n", (unsigned)sizeof(uint18_t)); -#endif -#ifdef INT24_MAX - printf("sizeof(int24_t)=%u\n", (unsigned)sizeof(int24_t)); - printf("sizeof(uint24_t)=%u\n", (unsigned)sizeof(uint24_t)); -#endif -#ifdef INT32_MAX - printf("sizeof(int32_t)=%u\n", (unsigned)sizeof(int32_t)); - printf("sizeof(uint32_t)=%u\n", (unsigned)sizeof(uint32_t)); -#endif -#ifdef INT36_MAX - printf("sizeof(int36_t)=%u\n", (unsigned)sizeof(int36_t)); - printf("sizeof(uint36_t)=%u\n", (unsigned)sizeof(uint36_t)); -#endif -#ifdef INT40_MAX - printf("sizeof(int40_t)=%u\n", (unsigned)sizeof(int40_t)); - printf("sizeof(uint40_t)=%u\n", (unsigned)sizeof(uint40_t)); -#endif -#ifdef INT48_MAX - printf("sizeof(int48_t)=%u\n", (unsigned)sizeof(int48_t)); - printf("sizeof(uint48_t)=%u\n", (unsigned)sizeof(uint48_t)); -#endif -#ifdef INT60_MAX - printf("sizeof(int60_t)=%u\n", (unsigned)sizeof(int60_t)); - printf("sizeof(uint60_t)=%u\n", (unsigned)sizeof(uint60_t)); -#endif -#ifdef INT64_MAX - printf("sizeof(int64_t)=%u\n", (unsigned)sizeof(int64_t)); - printf("sizeof(uint64_t)=%u\n", (unsigned)sizeof(uint64_t)); -#endif -#ifdef INT72_MAX - printf("sizeof(int72_t)=%u\n", (unsigned)sizeof(int72_t)); - printf("sizeof(uint72_t)=%u\n", (unsigned)sizeof(uint72_t)); -#endif -#ifdef INT128_MAX - printf("sizeof(int128_t)=%u\n", (unsigned)sizeof(int128_t)); - printf("sizeof(uint128_t)=%u\n", (unsigned)sizeof(uint128_t)); -#endif - printf("sizeof(int_least8_t)=%u\n", (unsigned)sizeof(int_least8_t)); - printf("sizeof(uint_least8_t)=%u\n", (unsigned)sizeof(uint_least8_t)); - printf("sizeof(int_least16_t)=%u\n", (unsigned)sizeof(int_least16_t)); - printf("sizeof(uint_least16_t)=%u\n", (unsigned)sizeof(uint_least16_t)); - printf("sizeof(int_least32_t)=%u\n", (unsigned)sizeof(int_least32_t)); - printf("sizeof(uint_least32_t)=%u\n", (unsigned)sizeof(uint_least32_t)); -#ifdef INT_LEAST64_MAX - printf("sizeof(int_least64_t)=%u\n", (unsigned)sizeof(int_least64_t)); - printf("sizeof(uint_least64_t)=%u\n", (unsigned)sizeof(uint_least64_t)); -#else - printf("*** uint_least64_t isn't defined ***\n"); - status = EXIT_FAILURE; -#endif -#ifdef INT_LEAST128_MAX - printf("sizeof(int_least128_t)=%u\n", (unsigned)sizeof(int_least128_t)); - printf("sizeof(uint_least128_t)=%u\n", - (unsigned)sizeof(uint_least128_t)); -#endif - printf("sizeof(int_fast8_t)=%u\n", (unsigned)sizeof(int_fast8_t)); - printf("sizeof(uint_fast8_t)=%u\n", (unsigned)sizeof(uint_fast8_t)); - printf("sizeof(int_fast16_t)=%u\n", (unsigned)sizeof(int_fast16_t)); - printf("sizeof(uint_fast16_t)=%u\n", (unsigned)sizeof(uint_fast16_t)); - printf("sizeof(int_fast32_t)=%u\n", (unsigned)sizeof(int_fast32_t)); - printf("sizeof(uint_fast32_t)=%u\n", (unsigned)sizeof(uint_fast32_t)); -#ifdef INT_FAST64_MAX - printf("sizeof(int_fast64_t)=%u\n", (unsigned)sizeof(int_fast64_t)); - printf("sizeof(uint_fast64_t)=%u\n", (unsigned)sizeof(uint_fast64_t)); -#else - printf("*** int_fast64_t isn't defined ***\n"); - status = EXIT_FAILURE; -#endif -#ifdef INT_FAST128_MAX - printf("sizeof(int_fast128_t)=%u\n", (unsigned)sizeof(int_fast128_t)); - printf("sizeof(uint_fast128_t)=%u\n", (unsigned)sizeof(uint_fast128_t)); -#endif -#if defined(INTPTR_MAX) - printf("sizeof(intptr_t)=%u\n", (unsigned)sizeof(intptr_t)); -#if defined(UINTPTR_MAX) - printf("sizeof(uintptr_t)=%u\n", (unsigned)sizeof(uintptr_t)); -#else - printf("*** intptr_t is defined but uintptr_t isn't ***\n"); - status = EXIT_FAILURE; -#endif -#elif defined(UINTPTR_MAX) - printf("sizeof(uintptr_t)=%u\n", (unsigned)sizeof(uintptr_t)); - printf("*** uintptr_t is defined but intptr_t isn't ***\n"); - status = EXIT_FAILURE; -#else - printf("*** neither intptr_t nor uintptr_t is defined ***\n"); - status = EXIT_FAILURE; -#endif -#ifdef INTMAX_MAX - printf("sizeof(intmax_t)=%u\n", (unsigned)sizeof(intmax_t)); - printf("sizeof(uintmax_t)=%u\n", (unsigned)sizeof(uintmax_t)); -#else - printf("*** intmax_t isn't defined ***\n"); - status = EXIT_FAILURE; -#endif - -#ifdef INT8_MAX - printf("INT8_MIN=%"PRIdMAX"\n", (__Q8_MT)INT8_MIN); - printf("INT8_MAX=%"PRIdMAX"\n", (__Q8_MT)INT8_MAX); - printf("UINT8_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT8_MAX); -#endif -#ifdef INT9_MAX - printf("INT9_MIN=%"PRIdMAX"\n", (__Q8_MT)INT9_MIN); - printf("INT9_MAX=%"PRIdMAX"\n", (__Q8_MT)INT9_MAX); - printf("UINT9_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT9_MAX); -#endif -#ifdef INT12_MAX - printf("INT12_MIN=%"PRIdMAX"\n", (__Q8_MT)INT12_MIN); - printf("INT12_MAX=%"PRIdMAX"\n", (__Q8_MT)INT12_MAX); - printf("UINT12_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT12_MAX); -#endif -#ifdef INT16_MAX - printf("INT16_MIN=%"PRIdMAX"\n", (__Q8_MT)INT16_MIN); - printf("INT16_MAX=%"PRIdMAX"\n", (__Q8_MT)INT16_MAX); - printf("UINT16_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT16_MAX); -#endif -#ifdef INT18_MAX - printf("INT18_MIN=%"PRIdMAX"\n", (__Q8_MT)INT18_MIN); - printf("INT18_MAX=%"PRIdMAX"\n", (__Q8_MT)INT18_MAX); - printf("UINT18_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT18_MAX); -#endif -#ifdef INT24_MAX - printf("INT24_MIN=%"PRIdMAX"\n", (__Q8_MT)INT24_MIN); - printf("INT24_MAX=%"PRIdMAX"\n", (__Q8_MT)INT24_MAX); - printf("UINT24_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT24_MAX); -#endif -#ifdef INT32_MAX - printf("INT32_MIN=%"PRIdMAX"\n", (__Q8_MT)INT32_MIN); - printf("INT32_MAX=%"PRIdMAX"\n", (__Q8_MT)INT32_MAX); - printf("UINT32_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT32_MAX); -#endif -#ifdef INT36_MAX - printf("INT36_MIN=%"PRIdMAX"\n", (__Q8_MT)INT36_MIN); - printf("INT36_MAX=%"PRIdMAX"\n", (__Q8_MT)INT36_MAX); - printf("UINT36_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT36_MAX); -#endif -#ifdef INT40_MAX - printf("INT40_MIN=%"PRIdMAX"\n", (__Q8_MT)INT40_MIN); - printf("INT40_MAX=%"PRIdMAX"\n", (__Q8_MT)INT40_MAX); - printf("UINT40_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT40_MAX); -#endif -#ifdef INT48_MAX - printf("INT48_MIN=%"PRIdMAX"\n", (__Q8_MT)INT48_MIN); - printf("INT48_MAX=%"PRIdMAX"\n", (__Q8_MT)INT48_MAX); - printf("UINT48_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT48_MAX); -#endif -#ifdef INT60_MAX - printf("INT60_MIN=%"PRIdMAX"\n", (__Q8_MT)INT60_MIN); - printf("INT60_MAX=%"PRIdMAX"\n", (__Q8_MT)INT60_MAX); - printf("UINT60_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT60_MAX); -#endif -#ifdef INT64_MAX - printf("INT64_MIN=%"PRIdMAX"\n", (__Q8_MT)INT64_MIN); - printf("INT64_MAX=%"PRIdMAX"\n", (__Q8_MT)INT64_MAX); - printf("UINT64_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT64_MAX); -#endif -#ifdef INT72_MAX - printf("INT72_MIN=%"PRIdMAX"\n", (__Q8_MT)INT72_MIN); - printf("INT72_MAX=%"PRIdMAX"\n", (__Q8_MT)INT72_MAX); - printf("UINT72_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT72_MAX); -#endif -#ifdef INT128_MAX - printf("INT128_MIN=%"PRIdMAX"\n", (__Q8_MT)INT128_MIN); - printf("INT128_MAX=%"PRIdMAX"\n", (__Q8_MT)INT128_MAX); - printf("UINT128_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT128_MAX); -#endif - printf("INT_LEAST8_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST8_MIN); - printf("INT_LEAST8_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST8_MAX); - printf("UINT_LEAST8_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_LEAST8_MAX); - printf("INT_LEAST16_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST16_MIN); - printf("INT_LEAST16_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST16_MAX); - printf("UINT_LEAST16_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_LEAST16_MAX); - printf("INT_LEAST32_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST32_MIN); - printf("INT_LEAST32_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST32_MAX); - printf("UINT_LEAST32_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_LEAST32_MAX); -#ifdef INT_LEAST64_MAX - printf("INT_LEAST64_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST64_MIN); - printf("INT_LEAST64_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST64_MAX); - printf("UINT_LEAST64_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT_LEAST64_MAX); -#endif -#ifdef INT_LEAST128_MAX - printf("INT_LEAST128_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST128_MIN); - printf("INT_LEAST128_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_LEAST128_MAX); - printf("UINT_LEAST128_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT_LEAST128_MAX); -#endif - printf("INT_FAST8_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_FAST8_MIN); - printf("INT_FAST8_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_FAST8_MAX); - printf("UINT_FAST8_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_FAST8_MAX); - printf("INT_FAST16_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_FAST16_MIN); - printf("INT_FAST16_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_FAST16_MAX); - printf("UINT_FAST16_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_FAST16_MAX); - printf("INT_FAST32_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_FAST32_MIN); - printf("INT_FAST32_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_FAST32_MAX); - printf("UINT_FAST32_MAX=%"PRIuMAX"\n", - (U__Q8_MT)UINT_FAST32_MAX); -#ifdef INT_FAST64_MAX - printf("INT_FAST64_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_FAST64_MIN); - printf("INT_FAST64_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_FAST64_MAX); - printf("UINT_FAST64_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT_FAST64_MAX); -#endif -#ifdef INT_FAST128_MAX - printf("INT_FAST128_MIN=%"PRIdMAX"\n", (__Q8_MT)INT_FAST128_MIN); - printf("INT_FAST128_MAX=%"PRIdMAX"\n", (__Q8_MT)INT_FAST128_MAX); - printf("UINT_FAST128_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINT_FAST128_MAX); -#endif -#ifdef INTPTR_MAX - printf("INTPTR_MIN=%"PRIdMAX"\n", (__Q8_MT)INTPTR_MIN); - printf("INTPTR_MAX=%"PRIdMAX"\n", (__Q8_MT)INTPTR_MAX); -#endif -#ifdef UINTPTR_MAX - printf("UINTPTR_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINTPTR_MAX); -#endif -#ifdef INTMAX_MAX - printf("INTMAX_MIN=%"PRIdMAX"\n", (__Q8_MT)INTMAX_MIN); - printf("INTMAX_MAX=%"PRIdMAX"\n", (__Q8_MT)INTMAX_MAX); - printf("UINTMAX_MAX=%"PRIuMAX"\n", (U__Q8_MT)UINTMAX_MAX); -#endif -#ifdef PTRDIFF_MAX - printf("PTRDIFF_MIN=%"PRIdMAX"\n", (__Q8_MT)PTRDIFF_MIN); - printf("PTRDIFF_MAX=%"PRIdMAX"\n", (__Q8_MT)PTRDIFF_MAX); -#endif -#ifdef SIG_ATOMIC_MAX -#if SIG_ATOMIC_MIN < 0 - printf("SIG_ATOMIC_MIN=%"PRIdMAX"\n", (__Q8_MT)SIG_ATOMIC_MIN); - printf("SIG_ATOMIC_MAX=%"PRIdMAX"\n", (__Q8_MT)SIG_ATOMIC_MAX); -#else - printf("SIG_ATOMIC_MIN=%"PRIuMAX"\n", (U__Q8_MT)SIG_ATOMIC_MIN); - printf("SIG_ATOMIC_MAX=%"PRIuMAX"\n", (U__Q8_MT)SIG_ATOMIC_MAX); -#endif -#endif -#ifdef SIZE_MAX - printf("SIZE_MAX=%"PRIuMAX"\n", (U__Q8_MT)SIZE_MAX); -#endif - -#ifdef WCHAR_MAX -#if WCHAR_MIN < 0 - printf("WCHAR_MIN=%"PRIdMAX"\n", (__Q8_MT)WCHAR_MIN); - printf("WCHAR_MAX=%"PRIdMAX"\n", (__Q8_MT)WCHAR_MAX); -#else - printf("WCHAR_MIN=%"PRIuMAX"\n", (U__Q8_MT)WCHAR_MIN); - printf("WCHAR_MAX=%"PRIuMAX"\n", (U__Q8_MT)WCHAR_MAX); -#endif -#endif -#ifdef WINT_MAX -#if WINT_MIN < 0 - printf("WINT_MIN=%"PRIdMAX"\n", (__Q8_MT)WINT_MIN); - printf("WINT_MAX=%"PRIdMAX"\n", (__Q8_MT)WINT_MAX); -#else - printf("WINT_MIN=%"PRIuMAX"\n", (U__Q8_MT)WINT_MIN); - printf("WINT_MAX=%"PRIuMAX"\n", (U__Q8_MT)WINT_MAX); -#endif -#endif - - /* - 7.18.4 Macros for integer constants - */ - - /* INTn_C for n=8 and 16 were at one point unimplementable - on most platforms, so they're treated as "optional": */ -#ifdef INT8_C - if ( INT8_C(-123) != -123 ) - printf("*** INT8_C(-123) produced %"PRIdMAX" ***\n", - (__Q8_MT)INT8_C(-123) - ); - if ( UINT8_C(123) != 123 ) - printf("*** UINT8_C(123) produced %"PRIuMAX" ***\n", - (U__Q8_MT)UINT8_C(123) - ); -#endif -#ifdef INT16_C - if ( INT16_C(-12345) != -12345 ) - printf("*** INT16_C(-12345) produced %"PRIdMAX" ***\n", - (__Q8_MT)INT16_C(-12345) - ); - if ( UINT16_C(12345) != 12345 ) - printf("*** UINT16_C(12345) produced %"PRIuMAX" ***\n", - (U__Q8_MT)UINT16_C(12345) - ); -#endif - if ( INT32_C(-123456789) != -123456789 ) - printf("*** INT32_C(-123456789) produced %"PRIdMAX" ***\n", - (__Q8_MT)INT32_C(-123456789) - ); - if ( UINT32_C(123456789) != 123456789 ) - printf("*** UINT32_C(123456789) produced %"PRIuMAX" ***\n", - (U__Q8_MT)UINT32_C(123456789) - ); -#ifdef INT_LEAST64_MAX - if ( INT64_C(-1234567890123456789) != -1234567890123456789 ) - printf("*** INT64_C(-1234567890123456789) produced %"PRIdMAX - " ***\n", - (__Q8_MT)INT64_C(-1234567890123456789) - ); - if ( UINT64_C(1234567890123456789) != 1234567890123456789 ) - printf("*** UINT64_C(1234567890123456789) produced %"PRIuMAX - " ***\n", - (U__Q8_MT)UINT64_C(1234567890123456789) - ); -#endif -#ifdef INTMAX_MAX - if ( INTMAX_C(-1234567890123456789) != -1234567890123456789 ) - printf("*** INTMAX_C(-1234567890123456789) produced %"PRIdMAX - " ***\n", - (__Q8_MT)INTMAX_C(-1234567890123456789) - ); - if ( UINTMAX_C(1234567890123456789) != 1234567890123456789 ) - printf("*** UINTMAX_C(1234567890123456789) produced %"PRIuMAX - " ***\n", - (U__Q8_MT)UINTMAX_C(1234567890123456789) - ); -#endif - - /* features: */ - -#if __STDC_VERSION__ >= 199901 - printf("sizeof(imaxdiv_t)=%u\n", (unsigned)sizeof(imaxdiv_t)); -#endif - - /* - 7.8.1 Macros for format specifiers - */ - - { - /* scanf these strings */ - static const char in_dn[] = "Z119bZ"; - static const char in_dmo[] = "Z-0119bZ"; - static const char in_dspx[] = "Z \t\n +0X119bZ"; - static const char in_dsmx[] = "Z \t\n -0x119bZ"; - static const char in_dsn[] = "Z \t\n 119bZ"; - static const char in_dp[] = "Z+119bZ"; - static const char in_dpx[] = "Z+0X119bz"; - - /* sprintf into this */ - static char buffer[1024]; - -#define SCAN(buf,fs,var,exp) if ( sscanf(buf, "Z%" fs, &var) != 1 ) \ - { \ - printf("*** " #fs "=" STR_SUB(fs) \ - " failed ***\n" \ - ); \ - status = EXIT_FAILURE; \ - } \ - else if ( var != (exp) ) \ - { \ - printf("*** " #fs "=" STR_SUB(fs) \ - " should be: " STR_SUB(exp) \ - ", was: %" fs " ***\n", var \ - ); \ - status = EXIT_FAILURE; \ - } \ - else /* for trailing semicolon */ - -#define PRINT(fs,var,exp) if ( sprintf(buffer, "%" fs, var ) <= 0 ) \ - { \ - printf("*** " #fs "=" STR_SUB(fs) \ - " failed ***\n" \ - ); \ - status = EXIT_FAILURE; \ - } \ - else if ( strcmp(buffer, STR_SUB(exp)) != 0 ) \ - { \ - printf("*** " #fs "=" STR_SUB(fs) \ - " should be: " STR_SUB(exp) \ - ", was: %s ***\n", buffer \ - ); \ - status = EXIT_FAILURE; \ - } \ - else /* for trailing semicolon */ - -#ifdef SCNo32 - SCAN(in_dn, SCNo32, int32, 9); -#endif -#ifdef PRIo32 - PRINT(PRIo32, int32, 11); -#endif - SCAN(in_dmo, SCNiLEAST16, intl16, -9); - SCAN(in_dspx, SCNdLEAST16, intl16, 0); - SCAN(in_dsmx, SCNiLEAST16, intl16, -4507); - PRINT(PRIdLEAST16, intl16, -4507); - PRINT(PRIiLEAST16, intl16, -4507); - SCAN(in_dsn, SCNxLEAST16, uintl16, 4507); - PRINT(PRIoLEAST16, uintl16, 10633); - PRINT(PRIuLEAST16, uintl16, 4507); - PRINT(PRIxLEAST16, uintl16, 119b); - PRINT(PRIXLEAST16, uintl16, 119B); - SCAN(in_dp, SCNxFAST16, uintf16, 4507); - PRINT(PRIxFAST16, uintf16, 119b); -#ifdef SCNdMAX - SCAN(in_dp, SCNdMAX, intmax, 119); -#endif -#ifdef PRIiMAX - PRINT(PRIiMAX, intmax, 119); -#endif -#ifdef SCNoMAX - SCAN(in_dpx, SCNoMAX, uintmax, 0); -#endif -#ifdef PRIxMAX - PRINT(PRIxMAX, uintmax, 0); -#endif - /* Obviously there should be a much larger battery of such tests. */ - } - -#if defined(INTMAX_MAX) /* has C99 features */ - /* - 7.8.2 Functions for greatest-width integer types - */ - - { - static struct - { - intmax_t input; - intmax_t expect; - } abs_data[] = - { -#ifdef INT8_MAX - INT8_MAX, INT8_MAX, - -INT8_MAX, INT8_MAX, - UINT8_MAX, UINT8_MAX, -#endif -#ifdef INT16_MAX - INT16_MAX, INT16_MAX, - -INT16_MAX, INT16_MAX, - UINT16_MAX, UINT16_MAX, -#endif -#ifdef INT32_MAX - INT32_MAX, INT32_MAX, - -INT32_MAX, INT32_MAX, -#ifdef INT_LEAST64_MAX /* else might support only 32 bits */ - UINT32_MAX, UINT32_MAX, -#endif -#endif -#ifdef INT64_MAX - INT64_MAX, INT64_MAX, - -INT64_MAX, INT64_MAX, -#endif - INT_LEAST8_MAX, INT_LEAST8_MAX, - -INT_LEAST8_MAX, INT_LEAST8_MAX, - UINT_LEAST8_MAX, UINT_LEAST8_MAX, - INT_LEAST16_MAX, INT_LEAST16_MAX, - -INT_LEAST16_MAX, INT_LEAST16_MAX, - UINT_LEAST16_MAX, UINT_LEAST16_MAX, - INT_LEAST32_MAX, INT_LEAST32_MAX, - -INT_LEAST32_MAX, INT_LEAST32_MAX, -#ifdef INT_LEAST64_MAX - UINT_LEAST32_MAX, UINT_LEAST32_MAX, - INT_LEAST64_MAX, INT_LEAST64_MAX, - -INT_LEAST64_MAX, INT_LEAST64_MAX, -#endif - INT_FAST8_MAX, INT_FAST8_MAX, - -INT_FAST8_MAX, INT_FAST8_MAX, - UINT_FAST8_MAX, UINT_FAST8_MAX, - INT_FAST16_MAX, INT_FAST16_MAX, - -INT_FAST16_MAX, INT_FAST16_MAX, - UINT_FAST16_MAX, UINT_FAST16_MAX, - INT_FAST32_MAX, INT_FAST32_MAX, - -INT_FAST32_MAX, INT_FAST32_MAX, -#ifdef INT_FAST64_MAX - UINT_FAST32_MAX, UINT_FAST32_MAX, - INT_FAST64_MAX, INT_FAST64_MAX, - -INT_FAST64_MAX, INT_FAST64_MAX, -#endif -#ifdef INTPTR_MAX - INTPTR_MAX, INTPTR_MAX, - -INTPTR_MAX, INTPTR_MAX, -#endif -#ifdef UINTPTR_MAX - UINTPTR_MAX, UINTPTR_MAX, -#endif - INTMAX_MAX, INTMAX_MAX, -#ifdef PTRDIFF_MAX - PTRDIFF_MAX, PTRDIFF_MAX, -#endif -#ifdef SIG_ATOMIC_MAX - SIG_ATOMIC_MAX, SIG_ATOMIC_MAX, -#if SIG_ATOMIC_MIN < 0 - -SIG_ATOMIC_MAX, SIG_ATOMIC_MAX, -#endif -#endif -#ifdef SIZE_MAX - SIZE_MAX, SIZE_MAX, -#endif -#ifdef WCHAR_MAX - WCHAR_MAX, WCHAR_MAX, -#if WCHAR_MIN < 0 - -WCHAR_MAX, WCHAR_MAX, -#endif -#endif -#ifdef WINT_MAX - WINT_MAX, WINT_MAX, -#if WINT_MIN < 0 - -WINT_MAX, WINT_MAX, -#endif -#endif - 127, 127, - -127, 127, - 128, 128, - -127-1, 128, - 255, 255, - -256+1, 255, - 256, 256, - -256, 256, - 32767, 32767, - -32767, 32767, - 32768, 32768, - -32767-1, 32768, - 65535, 65535, - -65536+1, 65535, - 65536, 65536, - -65536, 65536, - 2147483647, 2147483647, - -2147483647, 2147483647, - 2147483648, 2147483648, - -2147483647-1, 2147483648, -#ifdef INT_LEAST64_MAX /* else might support only 32 bits */ - 4294967295, 4294967295, - -4294967296+1, 4294967295, - 4294967296, 4294967296, - -4294967296, 4294967296, - 9223372036854775807, 9223372036854775807, - -9223372036854775807, 9223372036854775807, - 1234567890123456789, 1234567890123456789, - -1234567890123456789, 1234567890123456789, -#endif - 1, 1, - -1, 1, - 2, 2, - -2, 2, - 10, 10, - -10, 10, - 16, 16, - -16, 16, - /* Other test cases can be added here. */ - 0, 0 /* terminates the list */ - }, *adp = abs_data; - - do if ( (intmax = imaxabs(adp->input)) != adp->expect ) - { - printf("*** imaxabs(%"PRIdMAX") failed; should be: %" - PRIdMAX", was: %"PRIdMAX" ***\n", - adp->input, adp->expect, intmax - ); - status = EXIT_FAILURE; - } - while ( adp++->input != 0 ); - } - - { - imaxdiv_t result; - static struct - { - intmax_t numer; - intmax_t denom; - intmax_t exp_quot; - intmax_t exp_rem; - } div_data[] = - { - 0, 1, 0, 0, - 0, -1, 0, 0, - 0, 2, 0, 0, - 0, -2, 0, 0, - 0, 5, 0, 0, - 0, -5, 0, 0, - 1, 1, 1, 0, - 1, -1, -1, 0, - 1, 2, 0, 1, - 1, -2, 0, 1, - 1, 5, 0, 1, - 1, -5, 0, 1, - -1, 1, -1, 0, - -1, -1, 1, 0, - -1, 2, 0, -1, - -1, -2, 0, -1, - -1, 5, 0, -1, - -1, -5, 0, -1, - 2, 1, 2, 0, - 2, -1, -2, 0, - 2, 2, 1, 0, - 2, -2, -1, 0, - 2, 5, 0, 2, - 2, -5, 0, 2, - -2, 1, -2, 0, - -2, -1, 2, 0, - -2, 2, -1, 0, - -2, -2, 1, 0, - -2, 5, 0, -2, - -2, -5, 0, -2, - 17, 5, 3, 2, - -17, -5, 3, -2, - 17, -5, -3, 2, - -17, 5, -3, -2, - 2147483647, 1, 2147483647, 0, - -2147483647, 1, -2147483647, 0, - 2147483648, 1, 2147483648, 0, - -2147483647-1, 1, -2147483647-1, 0, - 2147483647, 2, 1073741823, 1, - -2147483647, 2, -1073741823, -1, - 2147483648, 2, 1073741824, 0, - -2147483647-1, 2, -1073741824, 0, -#ifdef INT_LEAST64_MAX /* else might support only 32 bits */ - 4294967295, 1, 4294967295, 0, - -4294967296+1, 1, -4294967296+1, 0, - 4294967296, 1, 4294967296, 0, - -4294967296, 1, -4294967296, 0, - 4294967295, -1, -4294967296+1, 0, - -4294967296+1, -1, 4294967295, 0, - 4294967296, -1, -4294967296, 0, - -4294967296, -1, 4294967296, 0, - 4294967295, 2, 2147483647, 1, - -4294967296+1, 2, -2147483647, -1, - 4294967296, 2, 2147483648, 0, - -4294967296, 2, -2147483647-1, 0, - 4294967295, 2147483647, 2, 1, - -4294967296+1, 2147483647, -2, -1, - 4294967296, 2147483647, 2, 2, - -4294967296, 2147483647, -2, -2, - 4294967295, -2147483647, -2, 1, - -4294967296+1, -2147483647, 2, -1, - 4294967296, -2147483647, -2, 2, - -4294967296, -2147483647, 2, -2, - 4294967295, 2147483648, 1, 2147483647, - -4294967296+1, 2147483648, -1, -2147483647, - 4294967296, 2147483648, 2, 0, - -4294967296, 2147483648, -2, 0, - 4294967295, -2147483647-1, -1, 2147483647, - -4294967296+1, -2147483647-1, 1, -2147483647, - 4294967296, -2147483647-1, -2, 0, - -4294967296, -2147483647-1, 2, 0, - 9223372036854775807, 1, 9223372036854775807, 0, - -9223372036854775807, 1, -9223372036854775807, 0, - 9223372036854775807, 2, 4611686018427387903, 1, - -9223372036854775807, 2, -4611686018427387903, -1, -#endif - /* There should be a much larger battery of such tests. */ - 0, 0, 0, 0 /* 0 denom terminates the list */ - }, *ddp; - - for ( ddp = div_data; ddp->denom != 0; ++ddp ) - if ( (result = imaxdiv(ddp->numer, ddp->denom)).quot - != ddp->exp_quot || result.rem != ddp->exp_rem - ) { - printf("*** imaxdiv(%"PRIdMAX",%"PRIdMAX - ") failed; should be: (%"PRIdMAX",%"PRIdMAX - "), was: (%"PRIdMAX",%"PRIdMAX") ***\n", - ddp->numer, ddp->denom, ddp->exp_quot, - ddp->exp_rem, result.quot, result.rem - ); - status = EXIT_FAILURE; - } - } - - { - char *endptr; - wchar_t *wendptr; - static char saved[64]; /* holds copy of input string */ - static wchar_t wnptr[64]; /* holds wide copy of test string */ - static int warned; /* "warned for null endptr" flag */ - register int i; - static struct - { - char * nptr; - int base; - intmax_t exp_val; - int exp_len; - } str_data[] = - { - "", 0, 0, 0, - "", 2, 0, 0, - "", 8, 0, 0, - "", 9, 0, 0, - "", 10, 0, 0, - "", 16, 0, 0, - "", 36, 0, 0, - "0", 0, 0, 1, - "0", 2, 0, 1, - "0", 8, 0, 1, - "0", 9, 0, 1, - "0", 10, 0, 1, - "0", 16, 0, 1, - "0", 36, 0, 1, - "+0", 0, 0, 2, - "+0", 2, 0, 2, - "+0", 8, 0, 2, - "+0", 9, 0, 2, - "+0", 10, 0, 2, - "+0", 16, 0, 2, - "+0", 36, 0, 2, - "-0", 0, 0, 2, - "-0", 2, 0, 2, - "-0", 8, 0, 2, - "-0", 9, 0, 2, - "-0", 10, 0, 2, - "-0", 16, 0, 2, - "-0", 36, 0, 2, - "Inf", 0, 0, 0, - "Inf", 2, 0, 0, - "Inf", 8, 0, 0, - "Inf", 9, 0, 0, - "Inf", 10, 0, 0, - "Inf", 16, 0, 0, - "Inf", 36, 24171, 3, - "+Inf", 0, 0, 0, - "+Inf", 2, 0, 0, - "+Inf", 8, 0, 0, - "+Inf", 9, 0, 0, - "+Inf", 10, 0, 0, - "+Inf", 16, 0, 0, - "+Inf", 36, 24171, 4, - "-Inf", 0, 0, 0, - "-Inf", 2, 0, 0, - "-Inf", 8, 0, 0, - "-Inf", 9, 0, 0, - "-Inf", 10, 0, 0, - "-Inf", 16, 0, 0, - "-Inf", 36, -24171, 4, - "inf", 0, 0, 0, - "inf", 2, 0, 0, - "inf", 8, 0, 0, - "inf", 9, 0, 0, - "inf", 10, 0, 0, - "inf", 16, 0, 0, - "inf", 36, 24171, 3, - "+inf", 0, 0, 0, - "+inf", 2, 0, 0, - "+inf", 8, 0, 0, - "+inf", 9, 0, 0, - "+inf", 10, 0, 0, - "+inf", 16, 0, 0, - "+inf", 36, 24171, 4, - "-inf", 0, 0, 0, - "-inf", 2, 0, 0, - "-inf", 8, 0, 0, - "-inf", 9, 0, 0, - "-inf", 10, 0, 0, - "-inf", 16, 0, 0, - "-inf", 36, -24171, 4, - "119b8Z", 0, 119, 3, - "119bZ", 0, 119, 3, - "-0119bZ", 0, -9, 4, - " \t\n 0X119bZ", 0, 4507, 10, - " \t\n +0X119bZ", 0, 4507, 11, - " \t\n -0x119bZ", 0, -4507, 11, - " \t\n 119bZ", 0, 119, 7, - "+119bZ", 0, 119, 4, - "+0X119bz", 0, 4507, 7, - "119b8Z", 2, 3, 2, - "119bZ", 2, 3, 2, - "-0119bZ", 2, -3, 4, - " \t\n 0X119bZ", 2, 0, 5, - " \t\n +0X119bZ", 2, 0, 6, - " \t\n -0x119bZ", 2, 0, 6, - " \t\n 119bZ", 2, 3, 6, - "+119bZ", 2, 3, 3, - "+0X119bz", 2, 0, 2, - "119b8Z", 8, 9, 2, - "119bZ", 8, 9, 2, - "-0119bZ", 8, -9, 4, - " \t\n 0X119bZ", 8, 0, 5, - " \t\n +0X119bZ", 8, 0, 6, - " \t\n -0x119bZ", 8, 0, 6, - " \t\n 119bZ", 8, 9, 6, - "+119bZ", 8, 9, 3, - "+0X119bz", 8, 0, 2, - "119b8Z", 9, 10, 2, - "119bZ", 9, 10, 2, - "-0119bZ", 9, -10, 4, - " \t\n 0X119bZ", 9, 0, 5, - " \t\n +0X119bZ", 9, 0, 6, - " \t\n -0x119bZ", 9, 0, 6, - " \t\n 119bZ", 9, 10, 6, - "+119bZ", 9, 10, 3, - "+0X119bz", 9, 0, 2, - "119b8Z", 10, 119, 3, - "119bZ", 10, 119, 3, - "-0119bZ", 10, -119, 5, - " \t\n 0X119bZ", 10, 0, 5, - " \t\n +0X119bZ", 10, 0, 6, - " \t\n -0x119bZ", 10, 0, 6, - " \t\n 119bZ", 10, 119, 7, - "+119bZ", 10, 119, 4, - "+0X119bz", 10, 0, 2, - "119b8Z", 16, 72120, 5, - "119bZ", 16, 4507, 4, - "-0119bZ", 16, -4507, 6, - " \t\n 0X119bZ", 16, 4507, 10, - " \t\n +0X119bZ", 16, 4507, 11, - " \t\n -0x119bZ", 16, -4507, 11, - " \t\n 119bZ", 16, 4507,8, - "+119bZ", 16, 4507, 5, - "+0X119bz", 16, 4507, 7, - "119b8Z", 36, 62580275, 6, - "119bZ", 36, 1738367, 5, - "-0119bZ", 36, -1738367, 7, - " \t\n 0X119bZ", 36, 1997122175, 11, - " \t\n +0X119bZ", 36, 1997122175, 12, - " \t\n -0x119bZ", 36, -1997122175, 12, - " \t\n 119bZ", 36, 1738367, 9, - "+119bZ", 36, 1738367, 6, - "+0X119bz", 36, 1997122175, 8, - /* There should be a much larger battery of such tests. */ - "127", 0, 127, 3, - "-127", 0, -127, 4, - "128", 0, 128, 3, - "-128", 0, -127-1, 4, - "255", 0, 255, 3, - "-255", 0, -255, 4, - "256", 0, 256, 3, - "-256", 0, -255-1, 4, - "32767", 0, 32767, 5, - "-32767", 0, -32767, 6, - "32768", 0, 32768, 5, - "-32768", 0, -32767-1, 6, - "65535", 0, 65535, 5, - "-65535", 0, -65536+1, 6, - "65536", 0, 65536, 5, - "-65536", 0, -65536, 6, - "2147483647", 0, 2147483647, 10, - "-2147483647", 0, -2147483647, 11, - "2147483648", 0, 2147483648, 10, - "-2147483648", 0, -2147483647-1, 11, - "4294967295", 0, 4294967295, 10, - "-4294967295", 0, -4294967296+1, 11, - "4294967296", 0, 4294967296, 10, - "-4294967296", 0, -4294967296, 11, - "9223372036854775807", 0, 9223372036854775807, 19, - "-9223372036854775807", 0, -9223372036854775807, 20, - "1234567890123456789", 0, 1234567890123456789, 19, - "-1234567890123456789", 0, -1234567890123456789, 20, - "1", 0, 1, 1, - "-1", 0, -1, 2, - "2", 0, 2, 1, - "-2", 0, -2, 2, - "10", 0, 10, 2, - "-10", 0, -10, 3, - "16", 0, 16, 2, - "-16", 0, -16, 3, - /* Other test cases can be added here. */ - NULL, 0, 0, 0 /* terminates the list */ - }, *sdp; - - for ( sdp = str_data; sdp->nptr != NULL ; ++sdp ) - { - /* - 7.8.2.3 The strtoimax and strtoumax functions - */ - - strcpy(saved, sdp->nptr); - - errno = 0; /* shouldn't be changed */ - - if ( (intmax = strtoimax(sdp->nptr, &endptr, sdp->base)) - != sdp->exp_val - ) { - int save = errno; - - printf("*** strtoimax(%s,,%d) failed; should be: %" - PRIdMAX", was: %"PRIdMAX" ***\n", sdp->nptr, - sdp->base, sdp->exp_val, intmax - ); - status = EXIT_FAILURE; - errno = save; - } - else if ( endptr != sdp->nptr + sdp->exp_len ) - { - int save = errno; - - printf("*** strtoimax(%s,,%d) returned wrong endptr" - " ***\n", sdp->nptr, sdp->base - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - printf("*** strtoimax modified errno ***\n"); - status = EXIT_FAILURE; - } - - if ( strcmp(sdp->nptr, saved) != 0 ) - { - printf("*** strtoimax modified its input ***\n"); - status = EXIT_FAILURE; - strcpy(saved, sdp->nptr); - } - - if ( sdp->exp_val >= 0 ) /* else some sign extension */ - { - errno = 0; /* shouldn't be changed */ - - if ( (uintmax = strtoumax(sdp->nptr, &endptr, sdp->base - ) - ) != sdp->exp_val - ) { - int save = errno; - - printf("*** strtoumax(%s,,%d) failed; " - "should be: %"PRIuMAX", was: %"PRIuMAX - " ***\n", sdp->nptr, sdp->base, - sdp->exp_val, uintmax - ); - status = EXIT_FAILURE; - errno = save; - } - else if ( endptr != sdp->nptr + sdp->exp_len ) - { - int save = errno; - - printf("*** strtoumax(%s,,%d) returned wrong " - "endptr ***\n", sdp->nptr, sdp->base - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - printf("*** strtoumax modified errno ***\n"); - status = EXIT_FAILURE; - } - - if ( strcmp(sdp->nptr, saved) != 0 ) - { - printf("*** strtoumax" - " modified its input ***\n" - ); - status = EXIT_FAILURE; - strcpy(saved, sdp->nptr); - } - } - - /* tests for null endptr */ - -#define WARN() if (!warned) warned = 1, printf("*** Using null endptr: ***\n") - - warned = 0; - errno = 0; /* shouldn't be changed */ - - if ( (intmax = strtoimax(sdp->nptr, (char **)NULL, sdp->base)) - != sdp->exp_val - ) { - int save = errno; - - WARN(); - printf("*** strtoimax(%s,NULL,%d) failed; " - "should be: %"PRIdMAX", was: %"PRIdMAX" ***\n", - sdp->nptr, sdp->base, sdp->exp_val, intmax - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - WARN(); - printf("*** strtoimax modified errno ***\n"); - status = EXIT_FAILURE; - } - - if ( strcmp(sdp->nptr, saved) != 0 ) - { - WARN(); - printf("*** strtoimax modified its input ***\n"); - status = EXIT_FAILURE; - strcpy(saved, sdp->nptr); - } - - if ( sdp->exp_val >= 0 ) /* else some sign extension */ - { - errno = 0; /* shouldn't be changed */ - - if ( (uintmax = strtoumax(sdp->nptr, (char **)NULL, - sdp->base - ) - ) != sdp->exp_val - ) { - int save = errno; - - WARN(); - printf("*** strtoumax(%s,NULL,%d) failed; " - "should be: %"PRIuMAX", was: %"PRIuMAX - " ***\n", sdp->nptr, sdp->base, - sdp->exp_val, uintmax - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - WARN(); - printf("*** strtoumax modified errno ***\n"); - status = EXIT_FAILURE; - } - - if ( strcmp(sdp->nptr, saved) != 0 ) - { - WARN(); - printf("*** strtoumax" - " modified its input ***\n" - ); - status = EXIT_FAILURE; - strcpy(saved, sdp->nptr); - } - } - - /* - 7.8.2.4 The wcstoimax and wcstoumax functions - */ - - for ( i = 0; i < 64; ++i ) - if ( (wnptr[i] = sdp->nptr[i]) == '\0' ) - break; - - errno = 0; /* shouldn't be changed */ - - if ( (intmax = wcstoimax(wnptr, &wendptr, sdp->base)) - != sdp->exp_val - ) { - int save = errno; - - printf("*** wcstoimax(%s,,%d) failed; should be: %" - PRIdMAX", was: %"PRIdMAX" ***\n", sdp->nptr, - sdp->base, sdp->exp_val, intmax - ); - status = EXIT_FAILURE; - errno = save; - } - else if ( wendptr != wnptr + sdp->exp_len ) - { - int save = errno; - - printf("*** wcstoimax(%s,,%d) returned wrong endptr" - " ***\n", sdp->nptr, sdp->base - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - printf("*** wcstoimax modified errno ***\n"); - status = EXIT_FAILURE; - } - - for ( i = 0; i < 64; ++i ) - if ( wnptr[i] != sdp->nptr[i] ) - { - printf("*** wcstoimax modified its input ***\n" - ); - status = EXIT_FAILURE; - - for ( ; i < 64; ++i ) - if ( (wnptr[i] = sdp->nptr[i]) == '\0' ) - break; - - break; - } - else if ( wnptr[i] == '\0' ) - break; - - if ( sdp->exp_val >= 0 ) /* else some sign extension */ - { - errno = 0; /* shouldn't be changed */ - - if ( (uintmax = wcstoumax(wnptr, &wendptr, sdp->base) - ) != sdp->exp_val - ) { - int save = errno; - - printf("*** wcstoumax(%s,,%d) failed; " - "should be: %"PRIuMAX", was: %"PRIuMAX - " ***\n", sdp->nptr, sdp->base, - sdp->exp_val, uintmax - ); - status = EXIT_FAILURE; - errno = save; - } - else if ( wendptr != wnptr + sdp->exp_len ) - { - int save = errno; - - printf("*** wcstoumax(%s,,%d) returned wrong " - "endptr ***\n", sdp->nptr, sdp->base - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - printf("*** wcstoumax modified errno ***\n"); - status = EXIT_FAILURE; - } - - for ( i = 0; i < 64; ++i ) - if ( wnptr[i] != sdp->nptr[i] ) - { - printf("*** wcstoumax" - " modified its input ***\n" - ); - status = EXIT_FAILURE; - - for ( ; i < 64; ++i ) - if ( (wnptr[i] = sdp->nptr[i]) - == '\0' - ) - break; - - break; - } - else if ( wnptr[i] == '\0' ) - break; - } - - /* tests for null endptr */ - - warned = 0; - errno = 0; /* shouldn't be changed */ - - if ( (intmax = wcstoimax(wnptr, (wchar_t **)NULL, sdp->base)) - != sdp->exp_val - ) { - int save = errno; - - WARN(); - printf("*** wcstoimax(%s,NULL,%d) failed; should be: %" - PRIdMAX", was: %"PRIdMAX" ***\n", sdp->nptr, - sdp->base, sdp->exp_val, intmax - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - WARN(); - printf("*** wcstoimax modified errno ***\n"); - status = EXIT_FAILURE; - } - - for ( i = 0; i < 64; ++i ) - if ( wnptr[i] != sdp->nptr[i] ) - { - WARN(); - printf("*** wcstoimax modified its input ***\n" - ); - status = EXIT_FAILURE; - - for ( ; i < 64; ++i ) - if ( (wnptr[i] = sdp->nptr[i]) - == '\0' - ) - break; - - break; - } - else if ( wnptr[i] == '\0' ) - break; - - if ( sdp->exp_val >= 0 ) /* else some sign extension */ - { - errno = 0; /* shouldn't be changed */ - - if ( (uintmax = wcstoumax(wnptr, (wchar_t **)NULL, - sdp->base - ) - ) != sdp->exp_val - ) { - int save = errno; - - WARN(); - printf("*** wcstoumax(%s,NULL,%d) failed; " - "should be: %"PRIuMAX", was: %"PRIuMAX - " ***\n", sdp->nptr, sdp->base, - sdp->exp_val, uintmax - ); - status = EXIT_FAILURE; - errno = save; - } - - if ( errno != 0 ) - { - WARN(); - printf("*** wcstoumax modified errno ***\n"); - status = EXIT_FAILURE; - } - - for ( i = 0; i < 64; ++i ) - if ( wnptr[i] != sdp->nptr[i] ) - { - WARN(); - printf("*** wcstoumax" - " modified its input ***\n" - ); - status = EXIT_FAILURE; - - for ( ; i < 64; ++i ) - if ( (wnptr[i] = sdp->nptr[i]) - == '\0' - ) - break; - - break; - } - else if ( wnptr[i] == '\0' ) - break; - } - } - - /* - 7.8.2.3 The strtoimax and strtoumax functions (continued) - */ - - if ( (intmax = strtoimax("1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != INTMAX_MAX || errno != ERANGE - ) { - printf("*** strtoimax failed overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (intmax = strtoimax("+1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != INTMAX_MAX || errno != ERANGE - ) { - printf("*** strtoimax failed +overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (intmax = strtoimax("-1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != INTMAX_MIN || errno != ERANGE - ) { - printf("*** strtoimax failed -overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = strtoumax("1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** strtoumax failed overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = strtoumax("+1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** strtoumax failed +overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = strtoumax("-1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890", - &endptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** strtoumax failed -overflow test ***\n"); - status = EXIT_FAILURE; - } - - /* - 7.8.2.4 The wcstoimax and wcstoumax functions (continued) - */ - - if ( (intmax = wcstoimax(L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != INTMAX_MAX || errno != ERANGE - ) { - printf("*** wcstoimax failed overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (intmax = wcstoimax(L"+1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != INTMAX_MAX || errno != ERANGE - ) { - printf("*** wcstoimax failed +overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (intmax = wcstoimax(L"-1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != INTMAX_MIN || errno != ERANGE - ) { - printf("*** wcstoimax failed -overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = wcstoumax(L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** wcstoumax failed overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = wcstoumax(L"+1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** wcstoumax failed +overflow test ***\n"); - status = EXIT_FAILURE; - } - - if ( (uintmax = wcstoumax(L"-1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890" - L"1234567890123456789012345678901234567890", - &wendptr, 0 - ) - ) != UINTMAX_MAX || errno != ERANGE - ) { - printf("*** wcstoumax failed -overflow test ***\n"); - status = EXIT_FAILURE; - } - } -#endif /* defined(INTMAX_MAX) */ - - if ( status != 0 ) - fprintf(stderr, "sitest failed; see stdout for details\n"); - - return status; - } diff --git a/src/init/c/util/stdbool.h b/src/init/c/util/stdbool.h deleted file mode 100644 index 178c3b7..0000000 --- a/src/init/c/util/stdbool.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - stdbool.h -- Boolean type and values - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.16 of ISO/IEC 9899:1999 (E). -*/ - -#if !defined(_STDBOOL_H) && !defined(_INC_STDBOOL) /* usual lock names */ -#define _STDBOOL_H /* idempotency lock (section 7.1.2) */ -#define _INC_STDBOOL - -/* This header doesn't need C++ extern "C"; there are no declarations here. */ - -/* program is allowed to contain its own definitions, so ... */ -#undef bool -#undef true -#undef false -#undef __bool_true_false_are_defined - -#define bool _Bool -#define true 1 -#define false 0 -#define __bool_true_false_are_defined 1 - -#if __STDC_VERSION__ < 199901 -typedef int _Bool; /* not built into pre-C99 compilers */ -#endif - -#endif /* !defined(_STDBOOL_H) && !defined(_INC_STDBOOL) */ diff --git a/src/init/c/util/stdint.h b/src/init/c/util/stdint.h deleted file mode 100644 index cafa646..0000000 --- a/src/init/c/util/stdint.h +++ /dev/null @@ -1,692 +0,0 @@ -/* - stdint.h -- integer types - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.18 of ISO/IEC 9899:1999 (E) + TC1. - - This particular implementation assumes that widths of the standard - integer types are powers of 2, and that there are no extended integer - types with intermediate widths. - - This implementation is SELF-CONFIGURING, based on parameters defined - in . If you plan to include this in a C implementation, - it would be best to trim it down, with all the parameterized decisions - already made. -*/ - -/* This header doesn't need an idempotency lock; there are no typedefs here. */ - -#include /* defines the __Q8_* symbols */ - -/* This header doesn't need C++ extern "C"; there are no declarations here. */ - -/* - 7.18.1.1 Exact-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. -*/ - -#if __Q8_CW == 8 && defined(__Q8_SC) -typedef __Q8_SC int8_t; -typedef unsigned char uint8_t; -#endif -#if __Q8_CW == 16 && defined(__Q8_SC) -typedef __Q8_SC int16_t; -typedef unsigned char uint16_t; -#elif __Q8_SW == 16 -typedef short int16_t; -typedef unsigned short uint16_t; -#endif -#if __Q8_CW == 32 && defined(__Q8_SC) -typedef __Q8_SC int32_t; -typedef unsigned char uint32_t; -#elif __Q8_SW == 32 -typedef short int32_t; -typedef unsigned short uint32_t; -#elif __Q8_IW == 32 -typedef int int32_t; -typedef unsigned int uint32_t; -#elif __Q8_LW == 32 -typedef long int32_t; -typedef unsigned long uint32_t; -#endif -#if __Q8_CW == 40 && defined(__Q8_SC) -typedef __Q8_SC int40_t; -typedef unsigned char uint40_t; -#elif __Q8_SW == 40 -typedef short int40_t; -typedef unsigned short uint40_t; -#elif __Q8_IW == 40 -typedef int int40_t; -typedef unsigned int uint40_t; -#elif __Q8_LW == 40 -typedef long int40_t; -typedef unsigned long uint40_t; -#endif -#if __Q8_CW == 64 && defined(__Q8_SC) -typedef __Q8_SC int64_t; -typedef unsigned char uint64_t; -#elif __Q8_SW == 64 -typedef short int64_t; -typedef unsigned short uint64_t; -#elif __Q8_IW == 64 -typedef int int64_t; -typedef unsigned int uint64_t; -#elif __Q8_LW == 64 -typedef long int64_t; -typedef unsigned long uint64_t; -#elif __Q8_QW == 64 -typedef __Q8_QT int64_t; -typedef unsigned __Q8_QT uint64_t; -#endif - -/* - 7.18.1.2 Minimum-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. - - Prefers type int over char or short char, due to a possible - problem constructing suitable integer constants for 7.18.4.1. -*/ - -#if __Q8_CW < __Q8_IW && defined(__Q8_SC) -typedef __Q8_SC int_least8_t; -typedef unsigned char uint_least8_t; -#elif __Q8_SW < __Q8_IW -typedef short int_least8_t; -typedef unsigned short uint_least8_t; -#else -typedef int int_least8_t; -typedef unsigned int uint_least8_t; -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 16 && defined(__Q8_SC) -typedef __Q8_SC int_least16_t; -typedef unsigned char uint_least16_t; -#elif __Q8_SW < __Q8_IW -typedef short int_least16_t; -typedef unsigned short uint_least16_t; -#else -typedef int int_least16_t; -typedef unsigned int uint_least16_t; -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 32 && defined(__Q8_SC) -typedef __Q8_SC int_least32_t; -typedef unsigned char uint_least32_t; -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 32 -typedef short int_least32_t; -typedef unsigned short uint_least32_t; -#elif __Q8_IW >= 32 -typedef int int_least32_t; -typedef unsigned int uint_least32_t; -#else -typedef long int_least32_t; -typedef unsigned long uint_least32_t; -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 40 && defined(__Q8_SC) -typedef __Q8_SC int_least40_t; -typedef unsigned char uint_least40_t; -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 40 -typedef short int_least40_t; -typedef unsigned short uint_least40_t; -#elif __Q8_IW >= 40 -typedef int int_least40_t; -typedef unsigned int uint_least40_t; -#elif __Q8_LW >= 40 -typedef long int_least40_t; -typedef unsigned long uint_least40_t; -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -typedef __Q8_QT int_least40_t; -typedef unsigned __Q8_QT uint_least40_t; -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 64 && defined(__Q8_SC) -typedef __Q8_SC int_least64_t; -typedef unsigned char uint_least64_t; -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 64 -typedef short int_least64_t; -typedef unsigned short uint_least64_t; -#elif __Q8_IW >= 64 -typedef int int_least64_t; -typedef unsigned int uint_least64_t; -#elif __Q8_LW >= 64 -typedef long int_least64_t; -typedef unsigned long uint_least64_t; -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -typedef __Q8_QT int_least64_t; -typedef unsigned __Q8_QT uint_least64_t; -#endif - -/* - 7.18.1.3 Fastest minimum-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. - - "Fastest" is hard to determine; if "int" qualifies, it is chosen. -*/ - -typedef int int_fast8_t; -typedef unsigned int uint_fast8_t; -typedef int int_fast16_t; -typedef unsigned int uint_fast16_t; -#if __Q8_IW >= 32 -typedef int int_fast32_t; -typedef unsigned int uint_fast32_t; -#else -typedef long int_fast32_t; -typedef unsigned long uint_fast32_t; -#endif -#if __Q8_IW >= 40 -typedef int int_fast40_t; -typedef unsigned int uint_fast40_t; -#elif __Q8_LW >= 40 -typedef long int_fast40_t; -typedef unsigned long uint_fast40_t; -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -typedef __Q8_QT int_fast40_t; -typedef unsigned __Q8_QT uint_fast40_t; -#endif -#if __Q8_IW >= 64 -typedef int int_fast64_t; -typedef unsigned int uint_fast64_t; -#elif __Q8_LW >= 64 -typedef long int_fast64_t; -typedef unsigned long uint_fast64_t; -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -typedef __Q8_QT int_fast64_t; -typedef unsigned __Q8_QT uint_fast64_t; -#endif - -/* - 7.18.1.4 Integer types capable of holding object pointers - - Theoretically, these tests might not work (e.g., the implementation - can limit the interconvertible type to one that is not the smallest - possible), but I'm unaware of any platform where they fail. -*/ - -#if defined(__Q8_PW) -#if __Q8_IW >= __Q8_PW -typedef int intptr_t; -typedef unsigned int uintptr_t; -#elif __Q8_LW >= __Q8_PW -typedef long intptr_t; -typedef unsigned long uintptr_t; -#elif __Q8_QW >= __Q8_PW -typedef __Q8_QT intptr_t; -typedef unsigned __Q8_QT uintptr_t; -#elif __Q8_MW >= __Q8_PW -typedef __Q8_MT intptr_t; -typedef unsigned __Q8_MT uintptr_t; -#endif -#endif - -/* - 7.18.1.5 Greatest-width integer types -*/ - -typedef __Q8_MT intmax_t; -typedef unsigned __Q8_MT uintmax_t; - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) - -/* - 7.18.2.1 Limits of exact-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. -*/ - -#if __Q8_CW == 8 && defined(__Q8_SC) -#define INT8_MAX __Q8_TI(__Q8_CW) -#define INT8_MIN __Q8_BI(__Q8_CW) -#define UINT8_MAX __Q8_UI(__Q8_CW) -#endif -#if __Q8_CW == 16 && defined(__Q8_SC) -#define INT16_MAX __Q8_TI(__Q8_CW) -#define INT16_MIN __Q8_BI(__Q8_CW) -#define UINT16_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW == 16 -#define INT16_MAX __Q8_TI(__Q8_SW) -#define INT16_MIN __Q8_BI(__Q8_SW) -#define UINT16_MAX __Q8_UI(__Q8_SW) -#endif -#if __Q8_CW == 32 && defined(__Q8_SC) -#define INT32_MAX __Q8_TI(__Q8_CW) -#define INT32_MIN __Q8_BI(__Q8_CW) -#define UINT32_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW == 32 -#define INT32_MAX __Q8_TI(__Q8_SW) -#define INT32_MIN __Q8_BI(__Q8_SW) -#define UINT32_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW == 32 -#define INT32_MAX __Q8_TI(__Q8_IW) -#define INT32_MIN __Q8_BI(__Q8_IW) -#define UINT32_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW == 32 -#define INT32_MAX __Q8_TL -#define INT32_MIN __Q8_BL -#define UINT32_MAX __Q8_UL -#endif -#if __Q8_CW == 40 && defined(__Q8_SC) -#define INT40_MAX __Q8_TI(__Q8_CW) -#define INT40_MIN __Q8_BI(__Q8_CW) -#define UINT40_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW == 40 -#define INT40_MAX __Q8_TI(__Q8_SW) -#define INT40_MIN __Q8_BI(__Q8_SW) -#define UINT40_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW == 40 -#define INT40_MAX __Q8_TI(__Q8_IW) -#define INT40_MIN __Q8_BI(__Q8_IW) -#define UINT40_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW == 40 -#define INT40_MAX __Q8_TL -#define INT40_MIN __Q8_BL -#define UINT40_MAX __Q8_UL -#endif -#if __Q8_CW == 64 && defined(__Q8_SC) -#define INT64_MAX __Q8_TI(__Q8_CW) -#define INT64_MIN __Q8_BI(__Q8_CW) -#define UINT64_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW == 64 -#define INT64_MAX __Q8_TI(__Q8_SW) -#define INT64_MIN __Q8_BI(__Q8_SW) -#define UINT64_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW == 64 -#define INT64_MAX __Q8_TI(__Q8_IW) -#define INT64_MIN __Q8_BI(__Q8_IW) -#define UINT64_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW == 64 -#define INT64_MAX __Q8_TL -#define INT64_MIN __Q8_BL -#define UINT64_MAX __Q8_UL -#elif __Q8_QW == 64 -#define INT64_MAX __Q8_TQ -#define INT64_MIN __Q8_BQ -#define UINT64_MAX __Q8_UQ -#endif - -/* - 7.18.2.2 Limits of minimum-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. -*/ -#if __Q8_CW < __Q8_IW && defined(__Q8_SC) -#define INT_LEAST8_MAX __Q8_TI(__Q8_CW) -#define INT_LEAST8_MIN __Q8_BI(__Q8_CW) -#define UINT_LEAST8_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW < __Q8_IW -#define INT_LEAST8_MAX __Q8_TI(__Q8_SW) -#define INT_LEAST8_MIN __Q8_BI(__Q8_SW) -#define UINT_LEAST8_MAX __Q8_UI(__Q8_SW) -#else -#define INT_LEAST8_MAX __Q8_TI(__Q8_IW) -#define INT_LEAST8_MIN __Q8_BI(__Q8_IW) -#define UINT_LEAST8_MAX __Q8_UI(__Q8_IW) -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 16 && defined(__Q8_SC) -#define INT_LEAST16_MAX __Q8_TI(__Q8_CW) -#define INT_LEAST16_MIN __Q8_BI(__Q8_CW) -#define UINT_LEAST16_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW < __Q8_IW -#define INT_LEAST16_MAX __Q8_TI(__Q8_SW) -#define INT_LEAST16_MIN __Q8_BI(__Q8_SW) -#define UINT_LEAST16_MAX __Q8_UI(__Q8_SW) -#else -#define INT_LEAST16_MAX __Q8_TI(__Q8_IW) -#define INT_LEAST16_MIN __Q8_BI(__Q8_IW) -#define UINT_LEAST16_MAX __Q8_UI(__Q8_IW) -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 32 && defined(__Q8_SC) -#define INT_LEAST32_MAX __Q8_TI(__Q8_CW) -#define INT_LEAST32_MIN __Q8_BI(__Q8_CW) -#define UINT_LEAST32_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 32 -#define INT_LEAST32_MAX __Q8_TI(__Q8_SW) -#define INT_LEAST32_MIN __Q8_BI(__Q8_SW) -#define UINT_LEAST32_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= 32 -#define INT_LEAST32_MAX __Q8_TI(__Q8_IW) -#define INT_LEAST32_MIN __Q8_BI(__Q8_IW) -#define UINT_LEAST32_MAX __Q8_UI(__Q8_IW) -#else -#define INT_LEAST32_MAX __Q8_TL -#define INT_LEAST32_MIN __Q8_BL -#define UINT_LEAST32_MAX __Q8_UL -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 40 && defined(__Q8_SC) -#define INT_LEAST40_MAX __Q8_TI(__Q8_CW) -#define INT_LEAST40_MIN __Q8_BI(__Q8_CW) -#define UINT_LEAST40_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 40 -#define INT_LEAST40_MAX __Q8_TI(__Q8_SW) -#define INT_LEAST40_MIN __Q8_BI(__Q8_SW) -#define UINT_LEAST40_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= 40 -#define INT_LEAST40_MAX __Q8_TI(__Q8_IW) -#define INT_LEAST40_MIN __Q8_BI(__Q8_IW) -#define UINT_LEAST40_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= 40 -#define INT_LEAST40_MAX __Q8_TL -#define INT_LEAST40_MIN __Q8_BL -#define UINT_LEAST40_MAX __Q8_UL -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -#define INT_LEAST40_MAX __Q8_TQ -#define INT_LEAST40_MIN __Q8_BQ -#define UINT_LEAST40_MAX __Q8_UQ -#endif -#if __Q8_CW < __Q8_IW && __Q8_CW >= 64 && defined(__Q8_SC) -#define INT_LEAST64_MAX __Q8_TI(__Q8_CW) -#define INT_LEAST64_MIN __Q8_BI(__Q8_CW) -#define UINT_LEAST64_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW < __Q8_IW && __Q8_SW >= 64 -#define INT_LEAST64_MAX __Q8_TI(__Q8_SW) -#define INT_LEAST64_MIN __Q8_BI(__Q8_SW) -#define UINT_LEAST64_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= 64 -#define INT_LEAST64_MAX __Q8_TI(__Q8_IW) -#define INT_LEAST64_MIN __Q8_BI(__Q8_IW) -#define UINT_LEAST64_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= 64 -#define INT_LEAST64_MAX __Q8_TL -#define INT_LEAST64_MIN __Q8_BL -#define UINT_LEAST64_MAX __Q8_UL -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -#define INT_LEAST64_MAX __Q8_TQ -#define INT_LEAST64_MIN __Q8_BQ -#define UINT_LEAST64_MAX __Q8_UQ -#endif - -/* - 7.18.2.3 Limits of fastest minimum-width integer types - - The optional 40-bit type is supported by the TMS320C6xxx DSP. -*/ - -#define INT_FAST8_MAX __Q8_TI(__Q8_IW) -#define INT_FAST8_MIN __Q8_BI(__Q8_IW) -#define UINT_FAST8_MAX __Q8_UI(__Q8_IW) -#define INT_FAST16_MAX __Q8_TI(__Q8_IW) -#define INT_FAST16_MIN __Q8_BI(__Q8_IW) -#define UINT_FAST16_MAX __Q8_UI(__Q8_IW) -#if __Q8_IW >= 32 -#define INT_FAST32_MAX __Q8_TI(__Q8_IW) -#define INT_FAST32_MIN __Q8_BI(__Q8_IW) -#define UINT_FAST32_MAX __Q8_UI(__Q8_IW) -#else -#define INT_FAST32_MAX __Q8_TL -#define INT_FAST32_MIN __Q8_BL -#define UINT_FAST32_MAX __Q8_UL -#endif -#if __Q8_IW >= 40 -#define INT_FAST40_MAX __Q8_TI(__Q8_IW) -#define INT_FAST40_MIN __Q8_BI(__Q8_IW) -#define UINT_FAST40_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= 40 -#define INT_FAST40_MAX __Q8_TL -#define INT_FAST40_MIN __Q8_BL -#define UINT_FAST40_MAX __Q8_UL -#elif __Q8_QW >= 40 /* (will be 0 if not defined) */ -#define INT_FAST40_MAX __Q8_TQ -#define INT_FAST40_MIN __Q8_BQ -#define UINT_FAST40_MAX __Q8_UQ -#endif -#if __Q8_IW >= 64 -#define INT_FAST64_MAX __Q8_TI(__Q8_IW) -#define INT_FAST64_MIN __Q8_BI(__Q8_IW) -#define UINT_FAST64_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= 64 -#define INT_FAST64_MAX __Q8_TL -#define INT_FAST64_MIN __Q8_BL -#define UINT_FAST64_MAX __Q8_UL -#elif __Q8_QW >= 64 /* (will be 0 if not defined) */ -#define INT_FAST64_MAX __Q8_TQ -#define INT_FAST64_MIN __Q8_BQ -#define UINT_FAST64_MAX __Q8_UQ -#endif - -/* - 7.18.2.4 Limits of integer types - capable of holding object pointers -*/ - -#if defined(__Q8_PW) -#if __Q8_IW >= __Q8_PW -#define INTPTR_MAX __Q8_TI(__Q8_IW) -#define INTPTR_MIN __Q8_BI(__Q8_IW) -#define UINTPTR_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= __Q8_PW -#define INTPTR_MAX __Q8_TL -#define INTPTR_MIN __Q8_BL -#define UINTPTR_MAX __Q8_UL -#elif __Q8_QW >= __Q8_PW -#define INTPTR_MAX __Q8_TQ -#define INTPTR_MIN __Q8_BQ -#define UINTPTR_MAX __Q8_UQ -#elif __Q8_MW >= __Q8_PW -#define INTPTR_MAX __Q8_TM -#define INTPTR_MIN __Q8_BM -#define UINTPTR_MAX __Q8_UM -#endif -#endif - -/* - 7.18.2.5 Limits of greatest-width integer types -*/ - -#define INTMAX_MAX __Q8_TM -#define INTMAX_MIN __Q8_BM -#define UINTMAX_MAX __Q8_UM - -/* - 7.18.3 Limits of other integer types - - XXX -- These ought to be moved into along with - the corresponding type definitions. -*/ - -#if __Q8_CW >= __Q8_DW && defined(__Q8_SC) -#define PTRDIFF_MAX __Q8_TI(__Q8_CW) -#define PTRDIFF_MIN __Q8_BI(__Q8_CW) -#elif __Q8_SW >= __Q8_DW -#define PTRDIFF_MAX __Q8_TI(__Q8_SW) -#define PTRDIFF_MIN __Q8_BI(__Q8_SW) -#elif __Q8_IW >= __Q8_DW -#define PTRDIFF_MAX __Q8_TI(__Q8_IW) -#define PTRDIFF_MIN __Q8_BI(__Q8_IW) -#elif __Q8_LW >= __Q8_DW -#define PTRDIFF_MAX __Q8_TL -#define PTRDIFF_MIN __Q8_BL -#elif __Q8_QW >= __Q8_DW -#define PTRDIFF_MAX __Q8_TQ -#define PTRDIFF_MIN __Q8_BQ -#else -#define PTRDIFF_MAX __Q8_TM -#define PTRDIFF_MIN __Q8_BM -#endif - -#ifdef __Q8_AU - -#if __Q8_CW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_UL -#elif __Q8_QW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_UQ -#else -#define SIG_ATOMIC_MAX __Q8_UM -#endif - -#define SIG_ATOMIC_MIN 0 - -#else /* !defined(__Q8_AU) */ - -#if __Q8_CW >= __Q8_AW && defined(__Q8_SC) -#define SIG_ATOMIC_MAX __Q8_TI(__Q8_CW) -#define SIG_ATOMIC_MIN __Q8_BI(__Q8_CW) -#elif __Q8_SW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_TI(__Q8_SW) -#define SIG_ATOMIC_MIN __Q8_BI(__Q8_SW) -#elif __Q8_IW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_TI(__Q8_IW) -#define SIG_ATOMIC_MIN __Q8_BI(__Q8_IW) -#elif __Q8_LW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_TL -#define SIG_ATOMIC_MIN __Q8_BL -#elif __Q8_QW >= __Q8_AW -#define SIG_ATOMIC_MAX __Q8_TQ -#define SIG_ATOMIC_MIN __Q8_BQ -#else -#define SIG_ATOMIC_MAX __Q8_TM -#define SIG_ATOMIC_MIN __Q8_BM -#endif - -#endif /* defined(__Q8_AU) */ - -#if __Q8_CW >= __Q8_ZW -#define SIZE_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW >= __Q8_ZW -#define SIZE_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= __Q8_ZW -#define SIZE_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= __Q8_ZW -#define SIZE_MAX __Q8_UL -#elif __Q8_QW >= __Q8_ZW -#define SIZE_MAX __Q8_UQ -#else -#define SIZE_MAX __Q8_UM -#endif - -#ifdef __Q8_WU - -#if __Q8_CW >= __Q8_WW -#define WCHAR_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW >= __Q8_WW -#define WCHAR_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= __Q8_WW -#define WCHAR_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= __Q8_WW -#define WCHAR_MAX __Q8_UL -#elif __Q8_QW >= __Q8_WW -#define WCHAR_MAX __Q8_UQ -#else -#define WCHAR_MAX __Q8_UM -#endif - -#define WCHAR_MIN 0 - -#else /* !defined(__Q8_WU) */ - -#if __Q8_CW >= __Q8_WW && defined(__Q8_SC) -#define WCHAR_MAX __Q8_TI(__Q8_CW) -#define WCHAR_MIN __Q8_BI(__Q8_CW) -#elif __Q8_SW >= __Q8_WW -#define WCHAR_MAX __Q8_TI(__Q8_SW) -#define WCHAR_MIN __Q8_BI(__Q8_SW) -#elif __Q8_IW >= __Q8_WW -#define WCHAR_MAX __Q8_TI(__Q8_IW) -#define WCHAR_MIN __Q8_BI(__Q8_IW) -#elif __Q8_LW >= __Q8_WW -#define WCHAR_MAX __Q8_TL -#define WCHAR_MIN __Q8_BL -#elif __Q8_QW >= __Q8_WW -#define WCHAR_MAX __Q8_TQ -#define WCHAR_MIN __Q8_BQ -#else -#define WCHAR_MAX __Q8_TM -#define WCHAR_MIN __Q8_BM -#endif - -#endif /* defined(__Q8_WU) */ - -#ifdef __Q8_XU - -#if __Q8_CW >= __Q8_XW -#define WINT_MAX __Q8_UI(__Q8_CW) -#elif __Q8_SW >= __Q8_XW -#define WINT_MAX __Q8_UI(__Q8_SW) -#elif __Q8_IW >= __Q8_XW -#define WINT_MAX __Q8_UI(__Q8_IW) -#elif __Q8_LW >= __Q8_XW -#define WINT_MAX __Q8_UL -#elif __Q8_QW >= __Q8_XW -#define WINT_MAX __Q8_UQ -#else -#define WINT_MAX __Q8_UM -#endif - -#define WINT_MIN 0 - -#else /* !defined(__Q8_XU) */ - -#if __Q8_CW >= __Q8_XW && defined(__Q8_SC) -#define WINT_MAX __Q8_TI(__Q8_CW) -#define WINT_MIN __Q8_BI(__Q8_CW) -#elif __Q8_SW >= __Q8_XW -#define WINT_MAX __Q8_TI(__Q8_SW) -#define WINT_MIN __Q8_BI(__Q8_SW) -#elif __Q8_IW >= __Q8_XW -#define WINT_MAX __Q8_TI(__Q8_IW) -#define WINT_MIN __Q8_BI(__Q8_IW) -#elif __Q8_LW >= __Q8_XW -#define WINT_MAX __Q8_TL -#define WINT_MIN __Q8_BL -#elif __Q8_QW >= __Q8_XW -#define WINT_MAX __Q8_TQ -#define WINT_MIN __Q8_BQ -#else -#define WINT_MAX __Q8_TM -#define WINT_MIN __Q8_BM -#endif - -#endif /* defined(__Q8_XU) */ - -#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) - -/* - 7.18.4.1 Macros for minimum-width integer constants - - The optional 40-bit type is supported by the TMS320C6xxx DSP. - - This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC - 9899:1999 as initially published, the expansion was required - to be an integer constant of precisely matching type, which - is impossible to accomplish for the shorter types on most - platforms, because C99 provides no standard way to designate - an integer constant with width less than that of type int. - TC1 changed this to require just an integer constant - *expression* with *promoted* type. - - The trick used to get the right type is due to Clive Feather. -*/ - -#define INT8_C(c) (INT_LEAST8_MAX-INT_LEAST8_MAX+(c)) -#define UINT8_C(c) (UINT_LEAST8_MAX-UINT_LEAST8_MAX+(c)) -#define INT16_C(c) (INT_LEAST16_MAX-INT_LEAST16_MAX+(c)) -#define UINT16_C(c) (UINT_LEAST16_MAX-UINT_LEAST16_MAX+(c)) -#define INT32_C(c) (INT_LEAST32_MAX-INT_LEAST32_MAX+(c)) -#define UINT32_C(c) (UINT_LEAST32_MAX-UINT_LEAST32_MAX+(c)) -#ifdef INT_LEAST40_MAX -#define INT40_C(c) (INT_LEAST40_MAX-INT_LEAST40_MAX+(c)) -#define UINT40_C(c) (UINT_LEAST40_MAX-UINT_LEAST40_MAX+(c)) -#endif -#ifdef INT_LEAST64_MAX -#define INT64_C(c) (INT_LEAST64_MAX-INT_LEAST64_MAX+(c)) -#define UINT64_C(c) (UINT_LEAST64_MAX-UINT_LEAST64_MAX+(c)) -#endif - -/* - 7.18.4.2 Macros for greatest-width integer constants -*/ - -#define INTMAX_C(c) (INTMAX_MAX-INTMAX_MAX+(c)) -#define UINTMAX_C(c) (UINTMAX_MAX-UINTMAX_MAX+(c)) - -#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ diff --git a/src/init/c/util/wchar.c b/src/init/c/util/wchar.c deleted file mode 100644 index 95ed1d5..0000000 --- a/src/init/c/util/wchar.c +++ /dev/null @@ -1,1140 +0,0 @@ -/* - wchar -- extended multibyte and wide character utilities - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.24 of ISO/IEC 9899:1999 (E). - - This is a minimal implementation for environments where - internationalization is not considered important. - - It supports an encoding where all char codes are mapped - to the *same* code values within a wchar_t or wint_t, - so long as no other wchar_t codes are used by the program. - - This implementation is already compatible with Clive - Feather's proposed changes detailed in WG14/N898 (DR#212). - - XXX -- UNTESTED -- XXX -*/ - -#include -#include -#include -#include -#include -#ifdef __STDC__ -#include -#else -#include -#endif - -#include /* defines several __Q8_* symbols */ -#include -#include - -#ifndef EILSEQ -#define EILSEQ ERANGE -#endif - -#ifndef MB_CUR_MAX -#define MB_CUR_MAX 1 -#endif - -/* helper functions: */ - -static char x_format[BUFSIZ]; -static char x_s[BUFSIZ]; - -static bool -shrink(src, dst) - register __Q8_CONST wchar_t * __Q8_RESTRICT src; - register char * __Q8_RESTRICT dst; - { - register int i; - - for ( i = 0; i < BUFSIZ; ++i ) - if ( (dst[i] = src[i]) == 0 ) - return true; - - errno = EDOM; - return false; /* doesn't fit into buffer */ - } - -static bool -expand(src, dst) - register __Q8_CONST char * __Q8_RESTRICT src; - register wchar_t * __Q8_RESTRICT dst; - { - register int i; - - for ( i = 0; i < BUFSIZ; ++i ) - if ( (dst[i] = src[i]) == 0 ) - return true; - - errno = EDOM; - return false; /* doesn't fit into buffer */ - } - -/* - 7.24.2 Formatted wide character input/output functions -*/ - -/* VARARGS */ -int -fwprintf(__Q8_T(__Q8_FILE * __Q8_RESTRICT stream) - __Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - ) - __Q8_Dcl - { - __Q8_D(__Q8_FILE *stream) - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, __Q8_FILE *, stream) - __Q8_I(ap, wchar_t *, format) - - ret = vfwprintf(stream, format, ap); - - __Q8_End( ap ) - return ret; - } - -/* VARARGS */ -int -fwscanf(__Q8_T(__Q8_FILE * __Q8_RESTRICT stream) - __Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - )__Q8_Dcl - { - __Q8_D(__Q8_FILE *stream) - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, __Q8_FILE *, stream) - __Q8_I(ap, wchar_t *, format) - - ret = vfwscanf(stream, format, ap); - - __Q8_End( ap ) - return ret; - } - -/* VARARGS */ -int -swprintf(__Q8_T(wchar_t * __Q8_RESTRICT s) - __Q8_T(size_t n) - __Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - ) - __Q8_Dcl - { - __Q8_D(wchar_t *s) - __Q8_D(size_t n) - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, wchar_t *, s) - __Q8_I(ap, size_t, n) - __Q8_I(ap, wchar_t *, format) - - ret = vswprintf(s, n, format, ap); - - __Q8_End( ap ) - return ret; - } - -/* VARARGS */ -int -swscanf(__Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT s) - __Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - )__Q8_Dcl - { - __Q8_D(__Q8_CONST wchar_t *s) - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, wchar_t *, s) - __Q8_I(ap, wchar_t *, format) - - ret = vswscanf(s, format, ap); - - __Q8_End( ap ) - return ret; - } - -int -vfwprintf(stream, format, arg) - __Q8_FILE * __Q8_RESTRICT stream; - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - if ( ! shrink(format, x_format) ) - return -1; - - return vfprintf(stream, x_format, arg); - } - -int -vfwscanf(stream, format, arg) - __Q8_FILE * __Q8_RESTRICT stream; - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - if ( ! shrink(format, x_format) ) - return -1; - - return vfscanf(stream, x_format, arg); - } - -int -vswprintf(s, n, format, arg) - wchar_t * __Q8_RESTRICT s; - size_t n; - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - int ret; /* saved return value */ - - if ( n > sizeof x_s ) /* too dangerous to proceed */ - { - errno = EDOM; - return -1; - } - - if ( ! shrink(format, x_format) ) - return -1; - - ret = vsnprintf(x_s, n, x_format, arg); - - if ( ! expand(x_s, s) ) - return -1; - - return ret; - } - -int -vswscanf(s, format, arg) - __Q8_CONST wchar_t * __Q8_RESTRICT s; - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - int ret; /* saved return value */ - - if ( ! shrink(format, x_format) ) - return -1; - - ret = vsscanf(x_s, x_format, arg); - - if ( ! expand(x_s, s) ) /* Risky Business */ - return -1; - - return ret; - } - -int -vwprintf(format, arg) - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - return vfwprintf(stdout, format, arg); - } - -int -vwscanf(format, arg) - __Q8_CONST wchar_t * __Q8_RESTRICT format; - va_list arg; - { - return vfwscanf(stdin, format, arg); - } - -/* VARARGS */ -int -wprintf(__Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - )__Q8_Dcl - { - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, wchar_t *, format) - - ret = vwprintf(format, ap); - - __Q8_End( ap ) - return ret; - } - -/* VARARGS */ -int -wscanf(__Q8_T(__Q8_CONST wchar_t * __Q8_RESTRICT format) - __Q8_AList - ) __Q8_Dcl - { - __Q8_D(wchar_t *format) - __Q8_List( ap) - int ret; /* saved return value */ - - __Q8_Start(ap, format) - __Q8_I(ap, wchar_t *, format) - - ret = vwscanf(format, ap); - - __Q8_End( ap ) - return ret; - } - -/* - 7.24.3 Wide character input/output functions -*/ - -wint_t -fgetwc(stream) - __Q8_FILE *stream; - { - int ret; /* saved return value */ - - ret = getc(stream); /* faster than fgetc */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -wchar_t * -fgetws(s, n, stream) - wchar_t * __Q8_RESTRICT s; - int n; - __Q8_FILE * __Q8_RESTRICT stream; - { - char *ret; /* saved return value */ - - if ( n > sizeof x_s ) /* too dangerous to proceed */ - { - errno = EDOM; - return NULL; - } - - ret = fgets(x_s, n, stream); - - if ( ! expand(x_s, s) ) - return NULL; - - return ret == x_s ? s : NULL; - } - -wint_t -fputwc(c, stream) - wchar_t c; - __Q8_FILE *stream; - { - int ret; /* saved return value */ - - ret = putc(c, stream); /* faster than fputc */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -int -fputws(s, stream) - wchar_t * __Q8_RESTRICT s; - __Q8_FILE * __Q8_RESTRICT stream; - { - int ret; /* saved return value */ - - if ( ! shrink(s, x_s) ) - return -1; - - return fputs(x_s, stream); - } - -/*ARGSUSED*/ -int -fwide(stream, mode) - __Q8_FILE *stream; - int mode; - { - return -1; /* limited to byte orientation */ - } - -wint_t -getwc(stream) - __Q8_FILE *stream; - { - int ret; /* saved return value */ - - ret = getc(stream); /* faster than fgetc */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -wint_t -getwchar() - { - int ret; /* saved return value */ - - ret = getchar(); /* faster than fgetchar */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -wint_t -putwc(c, stream) - wchar_t c; - __Q8_FILE *stream; - { - int ret; /* saved return value */ - - ret = putc(c, stream); /* faster than fputc */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -wint_t -putwchar(c) - wchar_t c; - { - int ret; /* saved return value */ - - ret = putchar(c); /* faster than fputchar */ - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -wint_t -ungetwc(c, stream) - wchar_t c; - __Q8_FILE *stream; - { - int ret; /* saved return value */ - - ret = ungetc(c, stream); - return ret == EOF ? WEOF : ret; /* EOF, WEOF values may differ */ - } - -/* - 7.24.4 General wide string utilities -*/ - -double -wcstod(nptr, endptr) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - { - double ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0.0; - - ret = strtod(x_s, &x_end); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } - -float -wcstof(nptr, endptr) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - { - float ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0.0; - - ret = strtof(x_s, &x_end); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } - -#if !defined(__Q8_GT) -__Q8_GT -wcstold(nptr, endptr) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - { - __Q8_GT ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0.0; - - ret = strtold(x_s, &x_end); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } -#endif /* !defined(__Q8_GT) */ - -long -wcstol(nptr, endptr, base) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - int base; - { - long ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0; - - ret = strtol(x_s, &x_end, base); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } - -unsigned long -wcstoul(nptr, endptr, base) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - int base; - { - unsigned long ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0; - - ret = strtoul(x_s, &x_end, base); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } - -#if !defined(__Q8_QT) -__Q8_QT -wcstoll(nptr, endptr, base) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - int base; - { - __Q8_QT ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0; - - ret = strtoll(x_s, &x_end, base); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } - -unsigned __Q8_QT -wcstoull(nptr, endptr, base) - __Q8_CONST wchar_t * __Q8_RESTRICT nptr; - wchar_t ** __Q8_RESTRICT endptr; - int base; - { - unsigned __Q8_QT ret; /* saved return value */ - char *x_end; - - if ( ! shrink(nptr, x_s) ) - return 0; - - ret = strtoull(x_s, &x_end, base); - *endptr = (wchar_t *)nptr + (x_end - x_s); - return ret; - } -#endif /* !defined(__Q8_QT) */ - -/* The following don't map via shrink/expand because that's much too slow. */ - -wchar_t * -wcscpy(s1, s2) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL ) - return orig_s1; /* robust */ - - while ( (*s1++ = *s2++) != 0 ) - ; - - return orig_s1; - } - -wchar_t * -wcsncpy(s1, s2, n) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - register size_t n; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL || n == 0 ) - return orig_s1; /* robust */ - - for ( ; n > 0; --n ) - if ( (*s1++ = *s2++) == 0 ) - { - --n; /* not really necessary */ - break; - } - - for ( ; n > 0; --n ) - *s1++ = 0; - - return orig_s1; - } - -wchar_t * -wmemcpy(s1, s2, n) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - register size_t n; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL || n == 0 ) - return orig_s1; /* robust */ - - for ( ; n > 0; --n ) - *s1++ = *s2++; - - return orig_s1; - } - -wchar_t * -wmemmove(s1, s2, n) - register wchar_t *s1; - register __Q8_CONST wchar_t *s2; - register size_t n; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL || n == 0 ) - return orig_s1; /* robust */ - - /* XXX -- The following test works only within a flat address space! */ - if ( s2 >= s1 ) - for ( ; n > 0; --n ) - *s1++ = *s2++; - else { - s1 += n; - s2 += n; - - for ( ; n > 0; --n ) - *--s1 = *--s2; - } - - return orig_s1; - } - -wchar_t * -wcscat(s1, s2) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL ) - return orig_s1; - - while ( *s1 != 0 ) - ++s1; - - while ( (*s1++ = *s2++) != 0 ) - ; - - return orig_s1; - } - -wchar_t * -wcsncat(s1, s2, n) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - register size_t n; - { - wchar_t *orig_s1 = s1; - - if ( s1 == NULL || s2 == NULL || n == 0 ) - return orig_s1; /* robust */ - - while ( *s1 != 0 ) - ++s1; - - for ( ; n > 0; --n ) - if ( (*s1++ = *s2++) == 0 ) - return orig_s1; - - *s1 = 0; /* if orig. n == 0, this is redundant */ - return orig_s1; - } - -int -wcscmp(s1, s2) - register __Q8_CONST wchar_t *s1; - register __Q8_CONST wchar_t *s2; - { - if ( s1 == s2 ) - return 0; /* even for NULL pointers */ - - if ( (s1 != NULL) != (s2 != NULL) ) - return s2 == NULL ? 1 : -1; /* robust */ - - for ( ; *s1 == *s2; ++s1, ++s2 ) - if ( *s1 == 0 ) - return 0; - - return *s1 - *s2; - } - -int -wcscoll(s1, s2) - register __Q8_CONST wchar_t *s1; - register __Q8_CONST wchar_t *s2; - { - return wcscmp(s1, s2); - } - -int -wcsncmp(s1, s2, n) - register __Q8_CONST wchar_t *s1; - register __Q8_CONST wchar_t *s2; - size_t n; - { - if ( n == 0 || s1 == s2 ) - return 0; /* even for NULL pointers */ - - if ( (s1 != NULL) != (s2 != NULL) ) - return s2 == NULL ? 1 : -1; /* robust */ - - for ( ; n > 0; ++s1, ++s2, --n ) - if ( *s1 != *s2 ) - return *s1 - *s2; - else if ( *s1 == 0 ) - return 0; - - return 0; - } - -size_t -wcsxfrm(s1, s2, n) - register wchar_t * __Q8_RESTRICT s1; - register __Q8_CONST wchar_t * __Q8_RESTRICT s2; - register size_t n; - { - if ( s1 == NULL || s2 == NULL || n == 0 ) - { - if ( s1 != NULL ) - *s1 = 0; - - return 0; /* robust */ - } - - wcsncpy(s1, s2, n); - return wcslen(s1); /* not very efficient */ - } - -int -wmemcmp(s1, s2, n) - register __Q8_CONST wchar_t *s1; - register __Q8_CONST wchar_t *s2; - size_t n; - { - if ( n == 0 || s1 == s2 ) - return 0; /* even for NULL pointers */ - - if ( (s1 != NULL) != (s2 != NULL) ) - return s2 == NULL ? 1 : -1; /* robust */ - - for ( ; n > 0; ++s1, ++s2, --n ) - if ( *s1 != *s2 ) - return *s1 - *s2; - - return 0; - } - -wchar_t * -wcschr(s, c) - __Q8_CONST wchar_t *s; - wchar_t c; - { - if ( s != NULL ) - for ( ; *s != c; ++s ) - if ( *s == 0 ) - return NULL; - - return (wchar_t *)s; - } - -size_t -wcscspn(s1, s2) - __Q8_CONST wchar_t *s1; - __Q8_CONST wchar_t *s2; - { - register __Q8_CONST wchar_t *s1p; - register __Q8_CONST wchar_t *s2p; - - if ( s1 == NULL || s2 == NULL ) - return wcslen(s1); /* robust */ - - for ( s1p = s1; *s1p != 0 ; ++s1p ) - for ( s2p = s2; *s2p != 0; ++s2p ) - if ( *s2p == *s1p ) - return s1p - s1; - - return s1p - s1; - } - -wchar_t * -wcspbrk(s1, s2) - register __Q8_CONST wchar_t *s1; - __Q8_CONST wchar_t *s2; - { - register __Q8_CONST wchar_t *s2p; - - if ( s1 == NULL || s2 == NULL ) - return NULL; /* robust */ - - for ( ; *s1 != 0 ; ++s1 ) - for ( s2p = s2; *s2p != 0; ++s2p ) - if ( *s2p == *s1 ) - return (wchar_t *)s1; - - return NULL; - } - -wchar_t * -wcsrchr(s, c) - register __Q8_CONST wchar_t *s; - register wchar_t c; - { - register __Q8_CONST wchar_t *ret = NULL; - - if ( s != NULL ) - /* do-while is necessary to handle the case c==0 */ - do - if ( *s == c ) - ret = s; - while ( *s++ != 0 ); - - return (wchar_t *)ret; - } - -size_t -wcsspn(s1, s2) - __Q8_CONST wchar_t *s1; - __Q8_CONST wchar_t *s2; - { - register __Q8_CONST wchar_t *s1p; - register __Q8_CONST wchar_t *s2p; - - if ( s1 == NULL || s2 == NULL ) - return 0; /* robust */ - - for ( s1p = s1; *s1p != 0 ; ++s1p ) - for ( s2p = s2; *s2p != *s1p; ++s2p ) - if ( *s2p == 0 ) - return s1p - s1; - - return s1p - s1; - } - -/* - My usual strstr() (based on Sunday's variation of Boyer-Moore) - unfortunately requires an inordinately large shift table for - wide characters. In order not to trip you up should that - occasion arise, I substituted a fine-tuned brute-force search. - It's still much faster than most implementations one encounters. -*/ - -wchar_t * -wcsstr(s1, s2) - register __Q8_CONST wchar_t *s1; - __Q8_CONST wchar_t *s2; - { - register __Q8_CONST wchar_t *t; - register __Q8_CONST wchar_t *s2p = s2; - - if ( s2p == NULL || *s2p == 0 || s1 == NULL ) - return (wchar_t *)s1; /* robust special cases */ - - for ( ; *s1 != 0; ++s1 ) - { - if ( *s2p == *s1 ) /* quick initial-match test */ - { - /* Although it is tempting, we cannot omit the test - for 0 in the loop, because the match may occur - at the very end of s1[], in which case we'd keep - on going past the end of both arrays. - */ - for ( t = s1; *++s2p == *++t; ) - if ( *s2p == 0 ) /* match at end */ - return (wchar_t *)s1; - - if ( *s2p == 0 ) - return (wchar_t *)s1; /* match elsewhere */ - - s2p = s2; /* reset pattern for next iteration */ - } - } - - return NULL; /* no match (and s2 isn't empty) */ - } - -wchar_t * -wcstok(s1, s2, ptr) - register wchar_t * __Q8_RESTRICT s1; - __Q8_CONST wchar_t * __Q8_RESTRICT s2; - wchar_t ** __Q8_RESTRICT ptr; - { - register wchar_t *etok; - - if ( s1 != NULL ) - *ptr = s1; /* save for later continued use */ - else if ( (s1 = *ptr) == NULL ) /* try to continue scan */ - return NULL; /* no more tokens */ - - s1 += wcsspn(s1, s2); /* skip over separators */ - - if ( *s1 == 0 ) - return NULL; /* no more tokens; preserve ptr */ - - /* valid token starts at current s1 */ - - if ( (etok = wcspbrk(s1, s2)) == NULL ) /* find end of token */ - *ptr = NULL; /* this is the last token */ - else { - *etok = 0; /* terminate token wide string */ - *ptr = etok + 1; /* next time start just past token */ - } - - return s1; /* start of valid token */ - } - -wchar_t * -wmemchr(s, c, n) - register __Q8_CONST wchar_t *s; - register wchar_t c; - register size_t n; - { - if ( s != NULL ) - for ( ; n > 0; ++s, --n ) - if ( *s == c ) - return (wchar_t *)s; - - return NULL; - } - -size_t -wcslen(s) - register __Q8_CONST wchar_t *s; - { - __Q8_CONST wchar_t *orig_s = s; - - if ( s == NULL ) - return 0; - - while ( *s != 0 ) - ++s; - - return s - orig_s; - } - -wchar_t * -wmemset(s, c, n) - register wchar_t *s; - register wchar_t c; - register size_t n; - { - wchar_t *orig_s = s; - - if ( s != NULL ) - for ( ; n > 0; --n ) - *s++ = c; - - return orig_s; - } - -/* - 7.24.5 Wide character time conversion functions -*/ - -size_t -wcsftime(s, maxsize, format, timeptr) - wchar_t * __Q8_RESTRICT s; - size_t maxsize; - __Q8_CONST wchar_t * __Q8_RESTRICT format; - __Q8_CONST struct tm * __Q8_RESTRICT timeptr; - { - int ret; /* saved return value */ - - if ( maxsize > sizeof x_s ) /* too dangerous to proceed */ - { - errno = EDOM; - return 0; - } - - if ( ! shrink(format, x_format) ) - return 0; - - ret = strftime(x_s, maxsize, x_format, timeptr); - - if ( ! expand(x_s, s) ) - return 0; - - return ret; - } - -/* - 7.24.6 Extended multibyte/wide character conversion utilities - - In this *minimal implementation*, all single-byte values are valid, - except possibly for EOF on platforms where sizeof(char)==sizeof(int). -*/ - -wint_t -btowc(c) - int c; - { - if ( c == EOF || (unsigned char)c != (unsigned int)c ) /* knothole */ - return WEOF; - else - return (wint_t)(unsigned char)c; - } - -int -wctob(c) - wint_t c; - { /* knothole: */ - if ( c == WEOF || (unsigned char)c != (unsigned __Q8_MT)c ) - return EOF; - else - return (int)(unsigned char)c; - } - -int -mbsinit(ps) - __Q8_CONST mbstate_t *ps; - { - return 1; /* don't have shift states */ - } - -size_t -mbrlen(s, n, ps) - __Q8_CONST char * __Q8_RESTRICT s; - size_t n; - mbstate_t * __Q8_RESTRICT ps; - { - return mbrtowc((wchar_t *)NULL, s, n, ps); /* ps ignored */ - } - -size_t -mbrtowc(pwc, s, n, ps) - wchar_t * __Q8_RESTRICT pwc; - __Q8_CONST char * __Q8_RESTRICT s; - size_t n; - mbstate_t * __Q8_RESTRICT ps; /* ignored */ - { - if ( s == NULL ) - { - pwc = NULL; - s = (__Q8_CONST char *)""; - n = 1; - } - - if ( n == 0 ) - return (size_t)-2; - - if ( pwc != NULL ) - *pwc = (wchar_t)(unsigned char)*s; - - return *s == 0 ? 0 : 1; - } - -size_t -wcrtomb(s, wc, ps) - char * __Q8_RESTRICT s; - wchar_t wc; - mbstate_t * __Q8_RESTRICT ps; /* ignored */ - { - register int c; - char dummy; - - if ( s == NULL ) - { - s = &dummy; - wc = 0; - } - - if ( (c = wctob(wc)) == EOF ) - { - errno = EILSEQ; - return (size_t)-1; - } - - *(unsigned char *)s = (unsigned char)c; - return 1; - } - -size_t -mbsrtowcs(dst, src, len, ps) - wchar_t * __Q8_RESTRICT dst; - __Q8_CONST char ** __Q8_RESTRICT src; - size_t len; - mbstate_t * __Q8_RESTRICT ps; - { - register size_t ret; /* from mbrtowc */ - register size_t n = 0; /* # converted */ - - if ( src == NULL || *src == NULL ) /* undefined behavior */ - return 0; - - while ( n < len - && (ret = mbrtowc(dst, *src, dst == NULL ? MB_CUR_MAX : len - n, ps - ) /* ps ignored */ - ) != 0 - && ret != (size_t)-2 && ret != (size_t)-1 - ) { - ++dst; - - if ( *src != NULL ) - *src += ret; - - n += ret; - } - - if ( dst != NULL && n < len && ret == 0 ) - *src = (char *)NULL; - - return n; - } - -size_t -wcsrtombs(dst, src, len, ps) - char * __Q8_RESTRICT dst; - __Q8_CONST wchar_t ** __Q8_RESTRICT src; - size_t len; - mbstate_t * __Q8_RESTRICT ps; - { - register size_t ret; /* from mbrtowc */ - register size_t n = 0; /* # converted */ - - if ( src == NULL || *src == NULL ) /* undefined behavior */ - return 0; - - while ( n < len - && (ret = wcrtomb(dst, **src, ps)) != 0 /* ps ignored */ - && ret != (size_t)-2 && ret != (size_t)-1 - ) { - ++dst; - - if ( *src != NULL ) - *src += ret; - - n += ret; - } - - if ( dst != NULL && n < len && ret == 0 ) - *src = (wchar_t *)NULL; - - return n; - } diff --git a/src/init/c/util/wchar.h b/src/init/c/util/wchar.h deleted file mode 100644 index 629f1ac..0000000 --- a/src/init/c/util/wchar.h +++ /dev/null @@ -1,227 +0,0 @@ -/* - wchar.h -- extended multibyte and wide character utilities - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclause 7.24 of ISO/IEC 9899:1999 (E). - - Unfortunately, it is NOT QUITE CONFORMING, because it #includes - to obtain the definitions for wchar_t and size_t, - for WCHAR_MIN and WCHAR_MAX, for FILE, and - for struct tm. If you plan to include this header in - a conforming C implementation, you must fix this. (FILE should - *not* be defined by this header, although it is needed in the - declarations!) -*/ - -#if !defined(_WCHAR_H) && !defined(_INC_WCHAR) /* usual lock names */ -#define _WCHAR_H /* idempotency lock (section 7.1.2) */ -#define _INC_WCHAR - -#include /* XXX -- for wchar_t and size_t */ -#include /* XXX -- for FILE (def of __Q8_FILE) */ -#include /* XXX -- for struct tm */ - -#include /* defines the __Q8_* symbols */ -#include /* XXX -- for WCHAR_MIN and WCHAR_MAX */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - 7.24.1 Introduction -*/ - -#ifndef __Q8_MBSTATE_T_DEFINED -#define __Q8_MBSTATE_T_DEFINED /* idempotency lock */ -typedef __Q8_MBSTATE_T mbstate_t; -#endif -#ifndef __Q8_SIZE_T_DEFINED -#define __Q8_SIZE_T_DEFINED /* idempotency lock */ -/* typedef __Q8_SIZE_T size_t; /* XXX -- conflicts with native hdrs */ -#endif -#ifndef __Q8_STRUCT_TM_DEFINED -#define __Q8_STRUCT_TM_DEFINED /* idempotency lock */ -/* XXX -- need to work on this */ -#endif -#ifndef __Q8_WCHAR_T_DEFINED -#define __Q8_WCHAR_T_DEFINED /* idempotency lock */ -/* typedef __Q8_WCHAR_T wchar_t; /* XXX -- conflicts with native hdrs */ -#endif -#ifndef __Q8_WINT_T_DEFINED -#define __Q8_WINT_T_DEFINED /* idempotency lock */ -typedef __Q8_WINT_T wint_t; -#endif - -#ifndef NULL /* to protect against native defs */ -#define NULL __Q8_NULL -#endif - -#if 0 /* XXX -- these __Q8_* symbols are not yet defined */ -#ifndef WCHAR_MAX /* to protect against native defs */ -#define WCHAR_MAX __Q8_WCHAR_MAX -#endif - -#ifndef WCHAR_MIN /* to protect against native defs */ -#define WCHAR_MIN __Q8_WCHAR_MIN -#endif -#endif /* XXX */ - -#ifndef WEOF /* to protect against native defs */ -#define WEOF __Q8_WEOF -#endif - -/* - 7.24.2 Formatted wide character input/output functions -*/ - -extern int fwprintf __Q8_PARAMS((__Q8_FILE * __Q8_RESTRICT __stream, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, ...)); -extern int fwscanf __Q8_PARAMS((__Q8_FILE * __Q8_RESTRICT __stream, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, ...)); -extern int swprintf __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s, size_t __n, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, ...)); -extern int swscanf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __s, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, ...)); -extern int vfwprintf __Q8_PARAMS((__Q8_FILE * __Q8_RESTRICT __stream, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, - __va_list __arg)); -extern int vfwscanf __Q8_PARAMS((__Q8_FILE * __Q8_RESTRICT __stream, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, - __va_list __arg)); -extern int vswprintf __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s, size_t __n, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, - __va_list __arg)); -extern int vswscanf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __s, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, - __va_list __arg)); -extern int vwprintf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT - __format, __va_list __arg)); -extern int vwscanf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT - __format, __va_list __arg)); -extern int wprintf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT - __format, ...)); -extern int wscanf __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT - __format, ...)); - -/* - 7.24.3 Wide character input/output functions -*/ - -extern wint_t fgetwc __Q8_PARAMS((__Q8_FILE * __stream)); -extern wchar_t *fgetws __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s, int __n, - __Q8_FILE * __Q8_RESTRICT __stream)); -extern wint_t fputwc __Q8_PARAMS((wchar_t __c, __Q8_FILE * __stream)); -extern int fputws __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s, - __Q8_FILE * __Q8_RESTRICT __stream)); -extern int fwide __Q8_PARAMS((__Q8_FILE * __stream, int __mode)); -extern wint_t getwc __Q8_PARAMS((__Q8_FILE * __stream)); -extern wint_t getwchar __Q8_PARAMS((void)); -extern wint_t putwc __Q8_PARAMS((wchar_t __c, __Q8_FILE * __stream)); -extern wint_t putwchar __Q8_PARAMS((wchar_t __c)); -extern wint_t ungetwc __Q8_PARAMS((wint_t __c, __Q8_FILE * __stream)); - -/* - 7.24.4 General wide string utilities -*/ - -extern double wcstod __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr)); -extern float wcstof __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr)); -#ifdef __Q8_GT -extern __Q8_GT - wcstold __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr)); -#endif -extern long wcstol __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr, int __base)); -extern unsigned long - wcstoul __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr, int __base)); -#ifdef __Q8_QT -extern __Q8_QT - wcstoll __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr, int __base)); -extern unsigned __Q8_QT - wcstoull __Q8_PARAMS((__Q8_CONST wchar_t * __Q8_RESTRICT __nptr, - wchar_t ** __Q8_RESTRICT __endptr, int __base)); -#endif -extern wchar_t *wcscpy __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2)); -extern wchar_t *wcsncpy __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2, size_t __n)); -extern wchar_t *wmemcpy __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2, size_t __n)); -extern wchar_t *wmemmove __Q8_PARAMS((wchar_t * __s1, __Q8_CONST wchar_t * __s2, - size_t __n)); -extern wchar_t *wcscat __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2)); -extern wchar_t *wcsncat __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2, size_t __n)); -extern int wcscmp __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern int wcscoll __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern int wcsncmp __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2, size_t __n)); -extern size_t wcsxfrm __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2, size_t __n)); -extern int wmemcmp __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2, size_t __n)); -extern wchar_t *wcschr __Q8_PARAMS((__Q8_CONST wchar_t * __s, wchar_t __c)); -extern size_t wcscspn __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern wchar_t *wcspbrk __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern wchar_t *wcsrchr __Q8_PARAMS((__Q8_CONST wchar_t * __s, wchar_t __c)); -extern size_t wcsspn __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern wchar_t *wcsstr __Q8_PARAMS((__Q8_CONST wchar_t * __s1, - __Q8_CONST wchar_t * __s2)); -extern wchar_t *wcstok __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s1, - __Q8_CONST wchar_t * __Q8_RESTRICT __s2, - wchar_t ** __Q8_RESTRICT __ptr)); -extern wchar_t *wmemchr __Q8_PARAMS((__Q8_CONST wchar_t * __s, wchar_t __c, - size_t __n)); -extern size_t wcslen __Q8_PARAMS((__Q8_CONST wchar_t * __s)); -extern wchar_t *wmemset __Q8_PARAMS((wchar_t * __s, wchar_t __c, size_t __n)); - -/* - 7.24.5 Wide character time conversion functions -*/ - -extern size_t wcsftime __Q8_PARAMS((wchar_t * __Q8_RESTRICT __s, - size_t __maxsize, - __Q8_CONST wchar_t * __Q8_RESTRICT __format, - __Q8_CONST struct tm * __Q8_RESTRICT __timeptr)); - -/* - 7.24.6 Extended multibyte/wide character conversion utilities -*/ - -extern wint_t btowc __Q8_PARAMS((int __c)); -extern int wctob __Q8_PARAMS((wint_t __c)); -extern int mbsinit __Q8_PARAMS((__Q8_CONST mbstate_t *__ps)); -extern size_t mbrlen __Q8_PARAMS((__Q8_CONST char * __Q8_RESTRICT __s, - size_t __n, mbstate_t * __Q8_RESTRICT __ps)); -extern size_t mbrtowc __Q8_PARAMS((wchar_t * __Q8_RESTRICT __pwc, - __Q8_CONST char * __Q8_RESTRICT __s, size_t __n, - mbstate_t * __Q8_RESTRICT __ps)); -extern size_t wcrtomb __Q8_PARAMS((char * __Q8_RESTRICT __s, wchar_t __wc, - mbstate_t * __Q8_RESTRICT __ps)); -extern size_t mbsrtowcs __Q8_PARAMS((wchar_t * __Q8_RESTRICT __dst, - __Q8_CONST char ** __Q8_RESTRICT __src, size_t __len, - mbstate_t * __Q8_RESTRICT __ps)); -extern size_t wcsrtombs __Q8_PARAMS((char * __Q8_RESTRICT __dst, - __Q8_CONST wchar_t ** __Q8_RESTRICT __src, size_t __len, - mbstate_t * __Q8_RESTRICT __ps)); - -#ifdef __cplusplus - } -#endif - -#endif /* !defined(_WCHAR_H) && !defined(_INC_WCHAR) */ diff --git a/src/init/c/util/wctype.c b/src/init/c/util/wctype.c deleted file mode 100644 index e3ef300..0000000 --- a/src/init/c/util/wctype.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - wctype -- wide character classification and mapping utilities - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/11/05 gwyn@arl.mil - - Implements subclause 7.25 of ISO/IEC 9899:1999 (E). - - This particular implementation requires the matching . - - This is a minimal implementation for environments where - internationalization is not considered important. - - It supports an encoding where all char codes are mapped - to the *same* code values within a wchar_t or wint_t, - so long as no other wchar_t codes are used by the program. - - XXX -- UNTESTED -- XXX -*/ - -#include -#include -#include - -#include /* defines __Q8_CONST and __Q8_PARAMS */ - -/* - 7.25.2 Wide character classification utilities -*/ - -int -iswalnum(wc) - wint_t wc; - { - return isalnum((int)(unsigned char)wc); - } - -int -iswalpha(wc) - wint_t wc; - { - return isalpha((int)(unsigned char)wc); - } - -int -iswblank(wc) - wint_t wc; - { - return isblank((int)(unsigned char)wc); - } - -int -iswcntrl(wc) - wint_t wc; - { - return iscntrl((int)(unsigned char)wc); - } - -int -iswdigit(wc) - wint_t wc; - { - return isdigit((int)(unsigned char)wc); - } - -int -iswgraph(wc) - wint_t wc; - { - return isgraph((int)(unsigned char)wc); - } - -int -iswlower(wc) - wint_t wc; - { - return islower((int)(unsigned char)wc); - } - -int -iswprint(wc) - wint_t wc; - { - return isprint((int)(unsigned char)wc); - } - -int -iswpunct(wc) - wint_t wc; - { - return ispunct((int)(unsigned char)wc); - } - -int -iswspace(wc) - wint_t wc; - { - return isspace((int)(unsigned char)wc); - } - -int -iswupper(wc) - wint_t wc; - { - return isupper((int)(unsigned char)wc); - } - -int -iswxdigit(wc) - wint_t wc; - { - return isxdigit((int)(unsigned char)wc); - } - -/* - wctype() usually encodes properties as ORed bit combinations; - for this *minimal implementation* I can take a lazy approach. -*/ - -static struct - { - __Q8_CONST char *name; - int (*func)__Q8_PARAMS((int)); - } cmap[] = - { - "alnum", iswalnum, - "alpha", iswalpha, - "blank", iswblank, - "cntrl", iswcntrl, - "digit", iswdigit, - "graph", iswgraph, - "lower", iswlower, - "print", iswprint, - "punct", iswpunct, - "space", iswspace, - "upper", iswupper, - "xdigit", iswxdigit - }; -#define NCMAP (sizeof cmap / sizeof cmap[0]) - -int -iswctype(wc, desc) - wint_t wc; - wctype_t desc; - { - register int i; - - if ( desc <= 0 || desc > NCMAP ) /* undefined behavior */ - { - errno = EDOM; - return 0; /* a form of not having the property */ - } - - return cmap[desc-1].func(wc); - } - -wctype_t /* returns map index + 1 */ -wctype(property) - __Q8_CONST char *property; - { - register int i; - - for ( i = 0; i < NCMAP; ++i ) - if ( strcmp(property, cmap[i].name) == 0 ) - return i+1; - - return 0; /* indicates "not valid" */ - } - -/* - 7.25.3 Wide character case mapping utilities -*/ - -wint_t -towlower(wc) - wint_t wc; - { - return tolower((int)(unsigned char)wc); - } - -wint_t -towupper(wc) - wint_t wc; - { - return toupper((int)(unsigned char)wc); - } - -/* - For this *minimal implementation* I can take a lazy approach. -*/ - -static struct - { - __Q8_CONST char *name; - int (*func)__Q8_PARAMS((int)); - } tmap[] = - { - "lower", towlower, - "upper", towupper - }; -#define NTMAP (sizeof tmap / sizeof tmap[0]) - -wint_t -iswctrans(wc, desc) - wint_t wc; - wctrans_t desc; - { - register int i; - - if ( desc <= 0 || desc > NTMAP ) /* undefined behavior */ - { - errno = EDOM; - return 0; /* a form of not having the property */ - } - - return tmap[desc-1].func(wc); - } - -wctrans_t /* returns map index + 1 */ -wctrans(property) - __Q8_CONST char *property; - { - register int i; - - for ( i = 0; i < NTMAP; ++i ) - if ( strcmp(property, tmap[i].name) == 0 ) - return i+1; - - return 0; /* indicates "not valid" */ - } diff --git a/src/init/c/util/wctype.h b/src/init/c/util/wctype.h deleted file mode 100644 index 75b929c..0000000 --- a/src/init/c/util/wctype.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - wctype.h -- wide character classification and mapping utilities - - This source code has been placed into the PUBLIC DOMAIN by its author. - - last edit: 1999/08/20 gwyn@arl.mil - - Implements subclause 7.25 of ISO/IEC 9899:1999 (E). -*/ - -#if !defined(_WCTYPE_H) && !defined(_INC_WCTYPE) /* usual lock names */ -#define _WCTYPE_H /* idempotency lock (section 7.1.2) */ -#define _INC_WCTYPE - -#include /* defines the __Q8_* symbols */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - 7.25.1 Introduction -*/ - -#ifndef __Q8_WINT_T_DEFINED -#define __Q8_WINT_T_DEFINED /* idempotency lock */ -typedef __Q8_WINT_T wint_t; -#endif -#ifndef __Q8_WCTRANS_T_DEFINED -#define __Q8_WCTRANS_T_DEFINED /* idempotency lock */ -typedef unsigned int wctrans_t; /* this type works nearly everywhere */ -#endif -#ifndef __Q8_WCTYPE_T_DEFINED -#define __Q8_WCTYPE_T_DEFINED /* idempotency lock */ -typedef int wctype_t; /* this type works nearly everywhere */ -#endif - -#ifndef WEOF /* to protect against native defs */ -#define WEOF __Q8_WEOF -#endif - -/* - 7.25.2 Wide character classification utilities -*/ - -extern int iswalnum __Q8_PARAMS((wint_t __wc)); -extern int iswalpha __Q8_PARAMS((wint_t __wc)); -extern int iswblank __Q8_PARAMS((wint_t __wc)); -extern int iswcntrl __Q8_PARAMS((wint_t __wc)); -extern int iswdigit __Q8_PARAMS((wint_t __wc)); -extern int iswgraph __Q8_PARAMS((wint_t __wc)); -extern int iswlower __Q8_PARAMS((wint_t __wc)); -extern int iswprint __Q8_PARAMS((wint_t __wc)); -extern int iswpunct __Q8_PARAMS((wint_t __wc)); -extern int iswspace __Q8_PARAMS((wint_t __wc)); -extern int iswupper __Q8_PARAMS((wint_t __wc)); -extern int iswxdigit __Q8_PARAMS((wint_t __wc)); -extern int iswctype __Q8_PARAMS((wint_t __wc, wctype_t __desc)); -extern wctype_t wctype __Q8_PARAMS((__Q8_CONST char *__property)); - -/* - 7.25.3 Wide character case mapping utilities -*/ - -extern wint_t towlower __Q8_PARAMS((wint_t __wc)); -extern wint_t towupper __Q8_PARAMS((wint_t __wc)); -extern wint_t towctrans __Q8_PARAMS((wint_t __wc, wctrans_t __desc)); -extern wctrans_t - wctrans __Q8_PARAMS((__Q8_CONST char *__property)); - -#ifdef __cplusplus - } -#endif - -#endif /* !defined(_WCTYPE_H) && !defined(_INC_WCTYPE) */ diff --git a/src/init/cpp/bind.cpp b/src/init/cpp/bind.cpp deleted file mode 100644 index 8d1c8b6..0000000 --- a/src/init/cpp/bind.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/logging/logging.c b/src/logging/logging.c deleted file mode 100755 index e609780..0000000 --- a/src/logging/logging.c +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @author : Aidan Mullen (git@acm.contact) - * @file : logging - * @created : Sunday Mar 24, 2024 10:05:35 EDT - */ - -#include -#include -#include -#include - -#include "logging.h" - -#define VERSION "0.1.0-a.1" - -#define TIME_BUF 64 - -char *note; /* Store note for logged actions. */ -time_t cur; - -/* - * Currently copies version number into the version variable; the version - * number should be stored in a .INI file. - */ - -/* TODO: make struct for opening log file and appending. */ - -/* A new log file should be used for each day. */ - -/* - * ============= - * Log and Print - * ============= - */ - -void flog(char *note) -{ - FILE *logfile = fopen("log", "a"); - - /*char *timef = ctime(&cur);*/ - /*char *timen = strtok(ctime(&cur), "\r\n");*/ - - char stime[TIME_BUF]; /* Max length of date is 64 by default. */ - - /* strcspn method to remove new line will not work for some reason. */ - time(&cur); /* Store time in cur. */ - - /* ctime -> time char */ - - /* Custom time string. */ - - strftime(stime, TIME_BUF, "[ %a %Y-%m-%d %X ]: ", localtime(&cur)); - - /*timef[strcspn(timef, "\r\n")] = '\0';*/ - /*printf("[ %s ]: %s\n", timef, note); - fprintf(logfile, "[ %s ]: %s\n", timef, note);*/ - - printf("%s %s\n", stime, note); - fprintf(logfile, "%s %s\n", stime, note); - fclose(logfile); -} - -/* - * ======== - * Log Only - * ======== - */ - -void sflog(char *note) -{ - FILE *logfile = fopen("log", "a"); - - /* strcspn method to remove new line will not work for some reason. */ - time(&cur); /* Store time in cur. */ - /* ctime -> time char */ - fprintf(logfile, "[ %s ]: %s\n", ctime(&cur), note); - fclose(logfile); -} - -/* - * ========== - * Create Log - * ========== - */ - -void init_log(void) /* Will be used for logging in the future. */ -{ - FILE *logfile = fopen("log", "r"); - if (logfile == NULL) - { - printf("Creating new log...\n"); - fopen("log", "w"); - flog("New log created"); - } - flog("Logging started."); - /*flog(strncat("Version: ", VERSION, sizeof(VERSION)));*/ - flog(VERSION); - - fclose(logfile); -} - -/* --- end of LOGGING_C --- */ diff --git a/src/logging/logging.h b/src/logging/logging.h deleted file mode 100755 index 16f991b..0000000 --- a/src/logging/logging.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @author : Aidan Mullen (git@acm.contact) - * @file : logging - * @created : Sunday Mar 24, 2024 10:06:11 EDT - */ - -#ifndef LOGGING_H - -#define LOGGING_H - -char get_version(void); -void flog(char *note); -void sflog(char *note); -void init_log(void); - - -#endif - -/* --- end of LOGGING_H --- */ diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 8a9a69a..0000000 --- a/src/main.c +++ /dev/null @@ -1,127 +0,0 @@ -/** - * @author : Aidan Mullen - * @file : main - * @created : Friday May 03, 2024 18:54:44 EDT - */ - -#include "main.h" -#include - -/* This file is included in the repository since using a Git submodule would - * requried cloning the entire Godot source. */ -#include "./init/c/gdextension_interface.h" /* GDExtension header for Godot. */ - -/* - int main() - { - printf("Starting./n"); - return(0); - } - */ - -/* Boilerplate provided by examples. */ -/* Some lines are over 80 characters. */ - -typedef struct { - uint8_t godot_data_dont_touch_this[sizeof(void *)]; -} String; - -typedef struct { - uint8_t godot_data_dont_touch_this[sizeof(void *)]; -} StringName; - -typedef struct { - uint8_t godot_data_dont_touch_this[24]; -} Variant; - -static GDExtensionInterfaceStringNewWithUtf8Chars string_new_with_utf8_chars; -static GDExtensionInterfaceVariantGetPtrConstructor variant_get_ptr_constructor; -static GDExtensionInterfaceVariantGetPtrDestructor variant_get_ptr_destructor; -static GDExtensionInterfaceGetVariantFromTypeConstructor get_variant_from_type_constructor; -static GDExtensionInterfaceVariantGetPtrUtilityFunction variant_get_ptr_utility_function; -static GDExtensionInterfaceVariantDestroy variant_destroy; - -/* GDExtension API Pointers */ -static GDExtensionPtrConstructor construct_StringName_from_String; -static GDExtensionVariantFromTypeConstructorFunc construct_Variant_from_String; -static GDExtensionPtrDestructor destroy_String; -static GDExtensionPtrDestructor destroy_StringName; - -static StringName print_StringName; - -static GDExtensionPtrUtilityFunction print_function; - -StringName string_name; -GDExtensionConstTypePtr constructor_arguments[1] = { &string_name }; - -StringName construct_StringName_from_cstring(const char *text) { - String string; - string_new_with_utf8_chars(&string, text); - - construct_StringName_from_String(&string_name, constructor_arguments); - - destroy_String(&string); - - return string_name; -} - -Variant arg1; -GDExtensionConstVariantPtr args[1] = { &arg1 }; - -void print(const char *text) { - String string; - string_new_with_utf8_chars(&string, text); - - construct_Variant_from_String(&arg1, &string); - - print_function(NULL, args, 1); - - variant_destroy(&arg1); - destroy_String(&string); -} - -void initialize(void *userdata, GDExtensionInitializationLevel p_level) { - if (p_level != GDEXTENSION_INITIALIZATION_SCENE) { - return; - } - - construct_StringName_from_String = variant_get_ptr_constructor(GDEXTENSION_VARIANT_TYPE_STRING_NAME, 2); - construct_Variant_from_String = get_variant_from_type_constructor(GDEXTENSION_VARIANT_TYPE_STRING); - destroy_String = variant_get_ptr_destructor(GDEXTENSION_VARIANT_TYPE_STRING); - destroy_StringName = variant_get_ptr_destructor(GDEXTENSION_VARIANT_TYPE_STRING_NAME); - - print_StringName = construct_StringName_from_cstring("print"); - print_function = variant_get_ptr_utility_function(&print_StringName, 2648703342); - - print("Starting..."); -} - -void deinitialize(void *userdata, GDExtensionInitializationLevel p_level) { - if (p_level != GDEXTENSION_INITIALIZATION_SCENE) { - return; - } - - print("Exited."); - - destroy_StringName(&print_StringName); -} - -/* libsb object; called by Godot when it reads the libsb.gdextension file that - * provides a configuration using this name. */ - -GDExtensionBool libsb( - GDExtensionInterfaceGetProcAddress p_get_proc_address, - GDExtensionClassLibraryPtr p_library, - GDExtensionInitialization *r_initialization - ) -{ - r_initialization->initialize = &initialize; - r_initialization->deinitialize = &deinitialize; - string_new_with_utf8_chars = (GDExtensionInterfaceStringNewWithUtf8Chars) p_get_proc_address("string_new_with_utf8_chars"); - variant_get_ptr_constructor = (GDExtensionInterfaceVariantGetPtrConstructor) p_get_proc_address("variant_get_ptr_constructor"); - variant_get_ptr_destructor = (GDExtensionInterfaceVariantGetPtrDestructor) p_get_proc_address("variant_get_ptr_destructor"); - get_variant_from_type_constructor = (GDExtensionInterfaceGetVariantFromTypeConstructor) p_get_proc_address("get_variant_from_type_constructor"); - variant_get_ptr_utility_function = (GDExtensionInterfaceVariantGetPtrUtilityFunction) p_get_proc_address("variant_get_ptr_utility_function"); - variant_destroy = (GDExtensionInterfaceVariantDestroy) p_get_proc_address("variant_destroy"); - return 1; -} diff --git a/src/main.h b/src/main.h deleted file mode 100644 index 97f5cef..0000000 --- a/src/main.h +++ /dev/null @@ -1,11 +0,0 @@ -/** - * @author : Aidan Mullen - * @file : main - * @created : Friday May 03, 2024 18:55:06 EDT - */ - -#ifndef MAIN_H - -#define MAIN_H - -#endif /* end of include guard MAIN_H */