/* Copyright 2022 Gabriel Jensen. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include #include #include #include #if !defined(rgo_ver) #define rgo_ver rgo_typlit_u64(0xA) #define rgo_typlit_s10(_lit) ((int_least16_t)( _lit)) #define rgo_typlit_s20(_lit) ((int_least32_t)( _lit)) #define rgo_typlit_s40(_lit) ((int_least64_t)( _lit)) #define rgo_typlit_s8( _lit) ((int_least8_t)( _lit)) #define rgo_typlit_u10(_lit) ((uint_least16_t)(_lit)) #define rgo_typlit_u20(_lit) ((uint_least32_t)(_lit)) #define rgo_typlit_u40(_lit) ((uint_least64_t)(_lit)) #define rgo_typlit_u8( _lit) ((uint_least8_t)( _lit)) #define rgo_typlit_usz(_lit) ((size_t)( _lit)) #if defined(sus_lang_asm) .extern rgo_fndbyte .extern rgo_fndchr .extern rgo_memcmp .extern rgo_memcpy .extern rgo_memeq .extern rgo_memfill .extern rgo_strcmp .extern rgo_strcpy .extern rgo_streq .extern rgo_strfill .extern rgo_strlen #else #if defined(sus_lang_cxx) extern "C" { #endif extern bool const rgo_fastimpl; sus_attr_alloc sus_attr_allocsz(0x2) sus_attr_hot sus_attr_nothrw void * rgo_memdup( void const * ptr, size_t num); sus_attr_hot sus_attr_nothrw size_t rgo_fndbyte( void const * ptr, size_t num, uint_least8_t byte); sus_attr_hot sus_attr_nothrw size_t rgo_fndchr( char const * str, char chr); sus_attr_hot sus_attr_nothrw int_least8_t rgo_memcmp( void const * lstr,size_t num, void const * rstr); sus_attr_hot sus_attr_nothrw void rgo_memcpy( void const * in, size_t num, void * out); sus_attr_hot sus_attr_nothrw bool rgo_memeq( void const * lptr,size_t num, void const * rptr); sus_attr_hot sus_attr_nothrw void rgo_memfill( void * ptr, size_t num, uint_least8_t val); sus_attr_hot sus_attr_nothrw int_least8_t rgo_strcmp( char const * lstr,char const * rstr); sus_attr_hot sus_attr_nothrw size_t rgo_strcpy( char const * in, char * out); sus_attr_alloc sus_attr_hot sus_attr_nothrw char * rgo_strdup( char const * str); sus_attr_hot sus_attr_nothrw bool rgo_streq( char const * lstr,char const * rstr); sus_attr_hot sus_attr_nothrw void rgo_strfill( char * lstr,char chr); sus_attr_hot sus_attr_nothrw size_t rgo_strlen( char const * str); #endif #if defined(sus_lang_cxx) } #endif #endif