Changeset f1e42c1 for src/examples/gc_no_raii
- Timestamp:
- May 12, 2016, 10:14:36 AM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- bf5a70da
- Parents:
- 273080f
- Location:
- src/examples/gc_no_raii
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/examples/gc_no_raii/src/gc.h
r273080f rf1e42c1 2 2 3 3 #include "gcpointers.h" 4 #include "internal/collector.h" 4 5 5 // forall( dtype T ) 6 // gcpointer_t gcmalloc() 7 // { 8 // 9 // } 6 forall(otype T) 7 static inline gcpointer(T) gcmalloc() 8 { 9 gcpointer(T) test; 10 // ctor(&test, gc_allocate(sizeof(T))); 11 // gc_conditional_collect(); 12 return test; 13 } -
src/examples/gc_no_raii/src/gcpointers.c
r273080f rf1e42c1 84 84 85 85 //Logical operators 86 intgcpointer_equal(gcpointer_t* this, gcpointer_t* rhs)86 bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs) 87 87 { 88 88 return this->ptr == rhs->ptr; 89 89 } 90 90 91 intgcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs)91 bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs) 92 92 { 93 93 return this->ptr != rhs->ptr; 94 94 } 95 95 96 intgcpointer_null(gcpointer_t* this)96 bool gcpointer_null(gcpointer_t* this) 97 97 { 98 98 return this->ptr == (intptr_t)NULL; -
src/examples/gc_no_raii/src/gcpointers.h
r273080f rf1e42c1 1 1 #pragma once 2 2 3 #include <stdbool.h> 3 4 #include <stdint.h> 4 5 … … 10 11 11 12 void gcpointer_ctor(gcpointer_t* this); 12 void gcpointer_ctor(gcpointer_t* ptr, int null);13 13 void gcpointer_ctor(gcpointer_t* this, void* address); 14 14 void gcpointer_ctor(gcpointer_t* this, gcpointer_t* other); 15 16 15 void gcpointer_dtor(gcpointer_t* this); 17 18 16 gcpointer_t* gcpointer_assign(gcpointer_t* this, gcpointer_t* rhs); 19 17 20 18 //Logical operators 21 int gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs); 22 int gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs); 23 int gcpointer_null(gcpointer_t* this); 19 bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs); 20 bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs); 21 bool gcpointer_null(gcpointer_t* this); 22 23 forall(otype T) 24 struct gcpointer 25 { 26 gcpointer_t internal; 27 }; 28 29 forall(otype T) 30 static inline void ctor(gcpointer(T)* this) 31 { 32 gcpointer_ctor(&this->internal); 33 } 34 35 // forall(otype T) 36 // static inline void ctor(gcpointer(T)* this, int null) 37 // { 38 // gcpointer_ctor(&this->internal, NULL); 39 // } 40 41 forall(otype T) 42 static inline void ctor(gcpointer(T)* this, void* address) 43 { 44 gcpointer_ctor(&this->internal, address); 45 } 46 47 forall(otype T) 48 static inline void ctor(gcpointer(T)* this, gcpointer(T)* other) 49 { 50 gcpointer_ctor(&this->internal, other); 51 } 52 53 forall(otype T) 54 static inline void dtor(gcpointer(T)* this) 55 { 56 gcpointer_dtor(&this->internal); 57 } 58 59 forall(otype T) 60 static inline gcpointer(T)* ?=?(gcpointer(T)* this, gcpointer(T)* rhs) 61 { 62 gcpointer_assign(&this->internal, &rhs->internal); 63 return this; 64 } 65 66 forall(otype T) 67 static inline T *?(gcpointer(T) this) 68 { 69 return *(T*)this.internal.ptr; 70 } 71 72 //Logical operators 73 forall(otype T) 74 static inline int ?!=?(gcpointer(T) this, gcpointer(T) rhs) 75 { 76 return this.internal.ptr != rhs.internal.ptr; 77 } 78 79 forall(otype T) 80 static inline int ?==?(gcpointer(T) this, gcpointer(T) rhs) 81 { 82 return !(this == rhs); 83 } 84 85 forall(otype T) 86 extern struct gcpointer(T) 0; -
src/examples/gc_no_raii/src/test_include.c
r273080f rf1e42c1 2 2 #define xstr(s) sstr(s) 3 3 #define sstr(s) #s 4 #error "test" # xstr(TEST_FILE.c) 5 #include "test" # xstr(TEST_FILE.c) 4 #include xstr(../test/TEST_FILE.c) -
src/examples/gc_no_raii/src/vector.h
r273080f rf1e42c1 1 1 #pragma once 2 2 3 #include <stdbool.h> 3 4 #include <stdlib> 4 5 -
src/examples/gc_no_raii/test/badlll.c
r273080f rf1e42c1 6 6 int val; 7 7 }; 8 9 typedef gcpointer(List_t) LLL; 10 11 #define MAX (1024 * 1024) 12 13 LLL buildLLL(int sz) 14 { 15 int i; 16 LLL ll0, lll, llc; 17 ctor(&ll0); 18 ctor(&lll); 19 ctor(&llc); 20 21 ll0 = gcmalloc(); 22 ll0->val = 0; 23 lll = ll0; 24 25 return ll0; 26 }
Note: See TracChangeset
for help on using the changeset viewer.