Wrapper works

This commit is contained in:
Victor Olin 2023-03-29 16:05:54 +02:00
parent 14026b1912
commit eae7d9c670
4 changed files with 44 additions and 24 deletions

View file

@ -76,13 +76,23 @@ static_lib:
static_lib_test: static_lib static_lib_test: static_lib
$(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -o tests/extern_lib.out tests/extern_lib.cpp lib/gcoll.a $(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -o tests/extern_lib.out tests/extern_lib.cpp lib/gcoll.a
<<<<<<< HEAD
static_lib_c: static_lib_c:
# remove old files # remove old files
rm -f lib/event.o lib/profiler.o lib/heap.o lib/gcoll.a tests/extern_lib.out rm -f lib/event.o lib/profiler.o lib/heap.o lib/gcoll.a tests/extern_lib.out
# compile object files # compile object files
=======
wrapper:
rm -f lib/event.o lib/profiler.o lib/heap.o lib/coll.a tests/wrapper.out
>>>>>>> 12816ea (Wrapper works)
$(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/event.o lib/event.cpp -fPIC $(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/event.o lib/event.cpp -fPIC
$(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/profiler.o lib/profiler.cpp -fPIC $(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/profiler.o lib/profiler.cpp -fPIC
$(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/heap.o lib/heap.cpp -fPIC $(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/heap.o lib/heap.cpp -fPIC
$(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/cheap.o lib/cheap.cpp -fPIC $(CC) $(STDFLAGS) $(WFLAGS) $(LIB_INCL) -O3 -g -c -o lib/cheap.o lib/cheap.cpp -fPIC
<<<<<<< HEAD
# create static library # create static library
ar r lib/gcoll.a lib/event.o lib/profiler.o lib/heap.o ar r lib/gcoll.a lib/event.o lib/profiler.o lib/heap.o
=======
ar rcs lib/gcoll.a lib/event.o lib/profiler.o lib/heap.o lib/cheap.o
clang -stdlib=libc++ $(WFLAGS) $(LIB_INCL) -o tests/wrapper.out tests/wrapper.c lib/gcoll.a -lstdc++
>>>>>>> 12816ea (Wrapper works)

View file

@ -7,7 +7,7 @@
extern "C" { extern "C" {
#endif #endif
#define DEBUG // #define DEBUG
#ifdef DEBUG #ifdef DEBUG
typedef struct cheap typedef struct cheap
@ -19,11 +19,11 @@ struct cheap;
typedef struct cheap cheap_t; typedef struct cheap cheap_t;
#endif #endif
cheap_t *cheap_the() noexcept; cheap_t *cheap_the();
void cheap_init() noexcept; void cheap_init();
void cheap_dispose() noexcept; void cheap_dispose();
void *cheap_alloc(unsigned long size) noexcept; void *cheap_alloc(unsigned long size);
void cheap_set_profiler(cheap_t *cheap, bool mode) noexcept; void cheap_set_profiler(cheap_t *cheap, bool mode);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -1,12 +1,15 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h>
#include "heap.hpp" #include "heap.hpp"
#include "cheap.h" #include "cheap.h"
#ifndef DEBUG
struct cheap struct cheap
{ {
void *obj; void *obj;
}; };
#endif
cheap_t *cheap_the() cheap_t *cheap_the()
{ {
@ -27,7 +30,9 @@ void cheap_init()
void cheap_dispose() void cheap_dispose()
{ {
std::cout << "In dispose\n";
GC::Heap::dispose(); GC::Heap::dispose();
std::cout << "Out dispose" << std::endl;
} }
void *cheap_alloc(unsigned long size) void *cheap_alloc(unsigned long size)

View file

@ -1,5 +1,6 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include "cheap.h" #include "cheap.h"
@ -18,23 +19,25 @@ void test_init()
printf("----- EXIT TEST_INIT --------------------------\n"); printf("----- EXIT TEST_INIT --------------------------\n");
} }
cheap_t *test_the() /* Uncomment ONLY if run with DEBUG defined in cheap.h */
{
printf("----- IN TEST_THE -----------------------------\n");
cheap_t *fst_heap = cheap_the(); // cheap_t *test_the()
// {
// printf("----- IN TEST_THE -----------------------------\n");
printf("Heap 1:\t%p\n", fst_heap->obj); // cheap_t *fst_heap = cheap_the();
cheap_t *snd_heap = cheap_the(); // printf("Heap 1:\t%p\n", fst_heap->obj);
printf("Heap 2:\t%p\n", snd_heap->obj); // cheap_t *snd_heap = cheap_the();
printf("----- EXIT TEST_THE ---------------------------\n"); // printf("Heap 2:\t%p\n", snd_heap->obj);
free(snd_heap); // printf("----- EXIT TEST_THE ---------------------------\n");
return fst_heap;
} // free(snd_heap);
// return fst_heap;
// }
void test_profiler(cheap_t *heap) void test_profiler(cheap_t *heap)
{ {
@ -71,20 +74,22 @@ void test_dispose()
printf("----- EXIT TEST_DISPOSE -----------------------\n"); printf("----- EXIT TEST_DISPOSE -----------------------\n");
} }
int main(int argc, char **argv) int main()
{ {
test_init(); test_init();
cheap_t *heap = test_the(); /* Uncomment ONLY if run with DEBUG defined in cheap.h */
// cheap_t *heap = test_the();
test_profiler(heap); // test_profiler(heap);
Object *o = test_alloc(); Object *o = test_alloc();
printf("Object size: %lu\n", sizeof(Object));
printf("Object:\n\tx: %d\n\ty: %d\n\tz: %d\n\tvel: %f\n", o->x, o->y, o->z, o->velocity); printf("Object:\n\tx: %d\n\ty: %d\n\tz: %d\n\tvel: %f\n", o->x, o->y, o->z, o->velocity);
test_dispose(); test_dispose();
free(heap); /* Sefault I don't understand, don't uncomment */
free(o); // free(heap);
// free(o);
return 0; return 0;
} }