Overview
Comment: | Add refpool. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
8ec09e82ac241bb8ed7de05fcc7a294d |
User & Date: | js on 2012-04-22 13:09:52 |
Other Links: | manifest | tags |
Context
2012-04-22
| ||
13:18 | Don't install tests. check-in: e5f3d00d30 user: js tags: trunk | |
13:09 | Add refpool. check-in: 8ec09e82ac user: js tags: trunk | |
12:50 | Add -Werror and -pipe if when using GCC. check-in: b18f80cc04 user: js tags: trunk | |
Changes
Modified src/Makefile from [93ec1092c3] to [5cb56e5531].
1 2 3 4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | - - - - - + + + + + + | SHARED_LIB = ${LIB_PREFIX}corefw${LIB_SUFFIX} LIB_MAJOR = 0 LIB_MINOR = 0 |
Modified src/object.c from [997da41042] to [3d2cb3ed1b].
︙ | |||
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | + + | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include <stdlib.h> #include <assert.h> #include "object.h" #include "refpool.h" void* cfw_new(CFWClass *class, ...) { CFWObject *obj; if ((obj = malloc(class->size)) == NULL) |
︙ | |||
46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | if (!class->ctor(obj, args)) { cfw_unref(obj); return NULL; } va_end(args); } return obj; } void* cfw_new_p(CFWClass *class, ...) { CFWObject *obj; assert(class != cfw_refpool); if ((obj = malloc(class->size)) == NULL) return NULL; obj->cls = class; obj->ref_cnt = 1; if (class->ctor != NULL) { va_list args; va_start(args, class); if (!class->ctor(obj, args)) { cfw_unref(obj); return NULL; } va_end(args); } if (!cfw_refpool_add(obj)) { cfw_unref(obj); return NULL; } return obj; } void* cfw_ref(void *ptr) { |
︙ |
Modified src/object.h from [dc1cf1f6a1] to [07013e8446].
︙ | |||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | + | typedef struct CFWObject { CFWClass *cls; int ref_cnt; } CFWObject; extern CFWClass *cfw_object; extern void* cfw_new(CFWClass*, ...); extern void* cfw_new_p(CFWClass*, ...); extern void* cfw_ref(void*); extern void cfw_unref(void*); extern void cfw_free(void*); extern bool cfw_equal(void*, void*); extern uint32_t cfw_hash(void*); extern void* cfw_copy(void*); |
︙ |
Added src/refpool.c version [e46baebb14].
Added src/refpool.h version [c6422a47ca].
Modified tests/tests.c from [0544ff8a52] to [a4028e5ce6].
︙ | |||
23 24 25 26 27 28 29 30 31 32 33 | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | + - + | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include <stdio.h> #include "object.h" #include "refpool.h" #include "string.h" #include "array.h" #include "map.h" |
︙ | |||
53 54 55 56 57 58 59 | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | - + + - - - + - - - - + + + + - - + - + - + - + + - - + + - - + + - + - - - + + + + + - - - + + + - + - + - | fputs("}\n", stdout); } int main() { |