summaryrefslogtreecommitdiff
path: root/rgo/include/rgo.h
blob: 56893d6f02b3158d23a0e956d14bbced7b2458e9 (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
/*
	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 <sus.h>

#if !defined(rgo_ver)
#define rgo_ver sus_typlit_u64(0x8)

#if defined(sus_lang_asm)
.extern rgo_fndbyte
.extern rgo_fndchr
.extern rgo_getbinver
.extern rgo_memcpy
.extern rgo_memeq
.extern rgo_memfill
.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);

#if defined(sus_lang_cxx)
}
#endif

#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
#endif

#endif