duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

rc_util.h (1445B)


      1 #ifndef RC_UTIL_H
      2 #define RC_UTIL_H
      3 
      4 #include "rc_export.h"
      5 
      6 #include <stddef.h>
      7 #include <stdint.h>
      8 
      9 RC_BEGIN_C_DECLS
     10 
     11 /**
     12  * A block of memory for variable length data (like strings and arrays).
     13  */
     14 typedef struct rc_buffer_chunk_t {
     15   /* The current location where data is being written */
     16   uint8_t* write;
     17   /* The first byte past the end of data where writing cannot occur */
     18   uint8_t* end;
     19   /* The first byte of the data */
     20   uint8_t* start;
     21   /* The next block in the allocated memory chain */
     22   struct rc_buffer_chunk_t* next;
     23 }
     24 rc_buffer_chunk_t;
     25 
     26 /**
     27  * A preallocated block of memory for variable length data (like strings and arrays).
     28  */
     29 typedef struct rc_buffer_t {
     30   /* The chunk data (will point at the local data member) */
     31   struct rc_buffer_chunk_t chunk;
     32   /* Small chunk of memory pre-allocated for the chunk */
     33   uint8_t data[256];
     34 }
     35 rc_buffer_t;
     36 
     37 void rc_buffer_init(rc_buffer_t* buffer);
     38 void rc_buffer_destroy(rc_buffer_t* buffer);
     39 uint8_t* rc_buffer_reserve(rc_buffer_t* buffer, size_t amount);
     40 void rc_buffer_consume(rc_buffer_t* buffer, const uint8_t* start, uint8_t* end);
     41 void* rc_buffer_alloc(rc_buffer_t* buffer, size_t amount);
     42 char* rc_buffer_strcpy(rc_buffer_t* buffer, const char* src);
     43 char* rc_buffer_strncpy(rc_buffer_t* buffer, const char* src, size_t len);
     44 
     45 uint32_t rc_djb2(const char* input);
     46 
     47 void rc_format_md5(char checksum[33], const uint8_t digest[16]);
     48 
     49 RC_END_C_DECLS
     50 
     51 #endif /* RC_UTIL_H */