bound methods via blocks

This commit is contained in:
Loic Nageleisen 2013-02-01 10:52:56 +01:00
parent 0191e7acf1
commit d0281df615

32
main.c
View file

@ -5,16 +5,13 @@
struct Post_s {
char *author;
char *body;
void (^init)();
void (^printf)();
void (^dealloc)();
};
typedef struct Post_s Post;
Post *Post_alloc() {
Post *new = malloc(sizeof(Post));
new->author = malloc(255);
new->body = malloc(1024);
return new;
}
void Post_init(Post *self) {
*self->author = '\0';
*self->body = '\0';
@ -25,14 +22,31 @@ void Post_printf(Post *self) {
}
void Post_dealloc(Post *self) {
Block_release(self->dealloc);
Block_release(self->printf);
Block_release(self->init);
free(self->body);
free(self->author);
free(self);
}
Post *Post_alloc() {
Post *new = malloc(sizeof(Post));
new->author = malloc(255);
new->body = malloc(1024);
new->init = Block_copy( ^ { Post_init(new); });
new->printf = Block_copy( ^ { Post_printf(new); });
new->dealloc = Block_copy( ^ { Post_dealloc(new); });
return new;
}
int main(void) {
Post *post = Post_alloc();
Post_printf(post);
Post_dealloc(post);
post->init();
post->printf();
post->dealloc();
return 0;
}