summaryrefslogtreecommitdiff
path: root/src/libms/libms.c
blob: 1705ebe1d532e43590ffa50bda390e0764e6b505 (plain)
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
#include "libms/libms.h"

static void *(*MSB_ALLOC_FUNC)(size_t size);
static void (*MSB_FREE_FUNC)(void *arg);

void LMS_SetMemFuncs(void *(*alloc)(size_t size), void (*free)(void *ptr)) {
    MSB_ALLOC_FUNC = alloc;
    MSB_FREE_FUNC = free;
}

// internal
void *LMSi_Malloc(size_t size) {
    return (MSB_ALLOC_FUNC)(size);
}

void LMSi_Free(void *ptr) {
    return (MSB_FREE_FUNC)(ptr);
}

int LMSi_MemCmp(const void *p1, const void *p2, int n) {
    for (int i = 0; i < n; i++) {
        if (((const char *)p1)[i] != ((const char *)p2)[i]) {
            return 0;
        }
    }

    return 1;
}

void LMSi_MemCopy(void *p1, const void *p2, int n) {
    for (int i = 0; i < n; i++) {
        ((char *)p1)[i] = ((const char *)p2)[i];
    }
}