Browse Source

add example c99 library mimicking the structures of the pEpEngine in a minimal way.

heck-rework
heck 3 years ago
parent
commit
9ab1fe5d75
  1. 28
      examples/libc99/libc99.c
  2. 37
      examples/libc99/libc99.h
  3. 27
      examples/libc99/makefile

28
examples/libc99/libc99.c

@ -0,0 +1,28 @@
#include "libc99.h"
#include <stdlib.h>
#include <string.h>
Test_struct1* new_test_struct(int c_int, Test_enum c_enum, const char* c_str)
{
Test_struct1* result = calloc(1, sizeof(Test_struct1));
if (result) {
result->c_int = c_int;
result->c_enum = c_enum;
if (c_str) {
result->c_str = strdup(c_str);
if (result->c_str == NULL) {
free_test_struct(result);
return NULL;
}
}
}
return result;
}
void free_test_struct(Test_struct1* c_struct)
{
if (c_struct) {
free(c_struct->c_str);
free(c_struct);
}
}

37
examples/libc99/libc99.h

@ -0,0 +1,37 @@
// We are testing wrappers for the c-datatypes:
// * integral e.g (int) here
// * enum
// * c-string
// * struct
// Those are all considered POD-types
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
ONE,
TWO,
THREE
} Test_enum;
typedef struct {
int c_int;
Test_enum c_enum;
char* c_str;
} Test_struct1;
typedef struct {
int c_int;
Test_enum c_enum;
char* c_str;
Test_struct1* c_struct1;
} Test_struct2;
Test_struct1* new_test_struct(int c_int, Test_enum c_enum, const char* c_str);
void free_test_struct(Test_struct1* c_struct);
#ifdef __cplusplus
}
#endif

27
examples/libc99/makefile

@ -0,0 +1,27 @@
LIB_STATIC=libc99.a
LIB_DYN=libc99.so
CFLAGS+=-std=c99 -g -UNDEBUG
SRCS+=$(wildcard *.c)
OBJS_C+=$(SRCS:.c=.o)
.PHONY: all lib_static lib_dyn clean
all: lib_static lib_dyn
lib_static: $(LIB_STATIC)
lib_dyn: $(LIB_DYN)
$(LIB_STATIC): $(OBJS_C)
$(AR) -rc $@ $^
$(LIB_DYN): $(OBJS_C)
$(CC) $(CFLAGS) -shared -o $@ $^
clean:
rm -f $(LIB_STATIC)
rm -f $(LIB_DYN)
rm -f $(OBJS_C)
Loading…
Cancel
Save