/* 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 #if !defined(rgo_ver) #define rgo_ver sus_typlit_u64(0x9) #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 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(::__rgo_memdup(_ptr,_num));} #else #define rgo_memdup __rgo_memdup #endif #endif #endif