summaryrefslogtreecommitdiff
path: root/rgo/include
diff options
context:
space:
mode:
Diffstat (limited to 'rgo/include')
-rw-r--r--rgo/include/rgo.h56
1 files changed, 34 insertions, 22 deletions
diff --git a/rgo/include/rgo.h b/rgo/include/rgo.h
index fe54e75..d05b4dd 100644
--- a/rgo/include/rgo.h
+++ b/rgo/include/rgo.h
@@ -4,51 +4,63 @@
If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
#include <sus.h>
#if !defined(rgo_ver)
-#define rgo_ver sus_typlit_u64(0x9)
+#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_getbinver
+.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
-sus_attr_alloc sus_attr_allocsz(0x2) sus_attr_hot sus_attr_nothrw void * __rgo_memdup( void const * sus_restr ptr, sus_typ_usz num);
-sus_attr_cold sus_attr_const sus_attr_nothrw sus_typ_u8 rgo_fastimpl( void);
-sus_attr_hot sus_attr_nothrw sus_typ_usz rgo_fndbyte( void const * sus_restr ptr, sus_typ_usz num,sus_typ_u8 byte);
-sus_attr_hot sus_attr_nothrw sus_typ_usz rgo_fndchr( char const * sus_restr str, char chr);
-sus_attr_cold sus_attr_nothrw sus_typ_u64 rgo_getbinver(void);
-sus_attr_hot sus_attr_nothrw void rgo_memcpy( void const * sus_restr in, sus_typ_usz num,void * sus_restr out);
-sus_attr_hot sus_attr_nothrw sus_typ_u8 rgo_memeq( void const * sus_restr lptr,sus_typ_usz num,void const * sus_restr rptr);
-sus_attr_hot sus_attr_nothrw void rgo_memfill( void * sus_restr ptr, sus_typ_usz num,sus_typ_u8 val);
-sus_attr_hot sus_attr_nothrw sus_typ_usz rgo_strcpy( char const * sus_restr in, char * sus_restr out);
-sus_attr_alloc sus_attr_hot sus_attr_nothrw char * rgo_strdup( char const * sus_restr str);
-sus_attr_hot sus_attr_nothrw sus_typ_u8 rgo_streq( char const * sus_restr lstr,char const * sus_restr rstr);
-sus_attr_hot sus_attr_nothrw void rgo_strfill( char * sus_restr lstr,char chr);
-sus_attr_hot sus_attr_nothrw sus_typ_usz rgo_strlen( char const * sus_restr str);
+extern bool const rgo_fastimpl;
-#if defined(sus_lang_cxx)
-}
-#endif
+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);
-#if defined(sus_lang_cxx)
-template<typename T> sus_attr_alloc sus_attr_allocsz(0x2) sus_attr_hot sus_attr_nothrw T * rgo_memdup(T const * sus_restr const _ptr,::sus_typ_usz const _num) -> T * {return static_cast<T *>(::__rgo_memdup(_ptr,_num));}
-#else
-#define rgo_memdup __rgo_memdup
#endif
+#if defined(sus_lang_cxx)
+}
#endif
#endif