summaryrefslogtreecommitdiff
path: root/rgo/include/rgo.h
blob: d05b4dd4c95d705f6efded6cbb633e3957203c59 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
	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 <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <sus.h>

#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