void pair_dump(const pair_t * pair) {
    printf("(");
    object_dump(pair->first);
    printf(", ");
    object_dump(pair->second);
    printf(")");
}
예제 #2
0
파일: table.c 프로젝트: def44/mate
int table_dump(struct table *t) {
	int i;
	struct table_entry *r;
	struct object *key_object, *value_object;

	if (t == NULL) {
		fprintf(stderr, "mvm: table not initialized!\n");
		mvm_halt();
	}

	fprintf(stderr, "num_entries = %d\n", t->num_entries);
	fprintf(stderr, "load_factor = %f\n", t->load_factor);
	fprintf(stderr, "current_capacity = %d\n", t->current_capacity);

	for (i = 0; i < t->current_capacity; i++) {
		fprintf(stderr, "bucket %d =\n", i);

		for (r = t->buckets[i]; r != NULL; r = r->next) {
			key_object = heap_fetch_object(heap, r->key);
			value_object = heap_fetch_object(heap, r->value);

			fprintf(stderr, "               (");
			object_dump(key_object, 0);
			fprintf(stderr, ", ");
			object_dump(value_object, 0);
			fprintf(stderr, ")\n");
		}
	}

	return 0;
}
예제 #3
0
void object_dump(__int8 *instance, int *object_descriptor, BYTESTREAMPROC bsp) {
	assert(bsp != NULL); 

	size_t	embed	= 0; 

	if (instance == NULL) return; 
	if (object_descriptor == NULL) return; 

	while (*object_descriptor != FE_EOO) {
		_dump_dword(object_descriptor[0], bsp); 
		switch (object_descriptor[0]) {
		case FE_BASIC: 
			instance += object_descriptor[1]; 
			_dump_dword(object_descriptor[1], bsp); 
			_dump_binary(instance, object_descriptor[1], bsp); 
			object_descriptor += 2; 
			break; 
		case FE_ASZ: 
			while (*instance) {
				bsp(*instance); 
				instance++; 
			}
			object_descriptor++; 
			break; 
		case FE_WSZ: 
			while (*(__int16 *)instance) {
				_dump_word(*(__int16 *)instance, bsp); 
				instance += 2; 
			}
			object_descriptor++; 
			break; 
		case FE_EMBED: 
			_dump_dword(object_descriptor[1]/*no used*/, bsp); 
			embed	= object_size(instance, object_descriptor); 
			object_dump(instance, (int *)(object_descriptor[1]), bsp); 
			instance	+= embed; 
			object_descriptor	+= 2; 
			break; 
		case FE_TRACE: 
			_dump_dword(object_descriptor[1]/*no used*/, bsp); 
			_dump_dword((int)(__int8 *)*(int *)instance/*no used*/, bsp); 
			if ((__int8 *)*(int *)instance != NULL) {
				object_dump((__int8 *)*(int *)instance, (int *)(object_descriptor[1]), bsp); 
			}
			instance	+= sizeof(int); 
			object_descriptor += 2; 
			break; 
		default: 
			assert(false); 
			object_descriptor++; 
			break; 
		}
	}
	_dump_dword(FE_EOO, bsp); 
}
예제 #4
0
void test_ui_sdl_grath()
{
    Sdl_Graph *sdl_grath;
	allocator_t *allocator = allocator_get_default_alloc();
    char *set_str;
    cjson_t *root, *e, *s;
    char buf[2048];

    root = cjson_create_object();{
        cjson_add_item_to_object(root, "Sdl_Graph", e = cjson_create_object());{
            cjson_add_string_to_object(e, "name", "alan");
        }
    }

    set_str = cjson_print(root);

    sdl_grath = OBJECT_NEW(allocator, Sdl_Graph,set_str);

    object_dump(sdl_grath, "Sdl_Graph", buf, 2048);
    dbg_str(DBG_DETAIL,"Sdl_Graph dump: %s",buf);

    object_destroy(sdl_grath);

    free(set_str);

}
예제 #5
0
파일: button.c 프로젝트: a1an1in/libcutils
void test_ui_button()
{
    Subject *subject;
	allocator_t *allocator = allocator_get_default_alloc();
    char *set_str;
    char buf[2048];

    set_str = gen_button_setting_str();

    subject = OBJECT_NEW(allocator, Button,set_str);

    object_dump(subject, "Button", buf, 2048);
    dbg_str(DBG_DETAIL,"Button dump: %s",buf);

    free(set_str);

}
예제 #6
0
void test_ui_component()
{
    Subject *subject;
	allocator_t *allocator = allocator_get_default_alloc();
    char *set_str;
    cjson_t *root, *e, *s;
    char buf[2048];

    root = cjson_create_object();{
        cjson_add_item_to_object(root, "Component", e = cjson_create_object());{
            cjson_add_item_to_object(e, "Subject", s = cjson_create_object());{
                cjson_add_number_to_object(s, "x", 1);
                cjson_add_number_to_object(s, "y", 25);
                cjson_add_number_to_object(s, "width", 5);
                cjson_add_number_to_object(s, "height", 125);
            }
            cjson_add_string_to_object(e, "name", "alan");
        }
    }

    set_str = cjson_print(root);

    /*
     *subject = OBJECT_ALLOC(allocator,Component);
     *object_set(subject, "Component", set_str);
     *dbg_str(DBG_DETAIL,"x=%d y=%d width=%d height=%d",subject->x,subject->y,subject->width,subject->height);
     */

    subject = OBJECT_NEW(allocator, Component,set_str);

    /*
     *dbg_str(DBG_DETAIL,"x=%d y=%d width=%d height=%d",subject->x,subject->y,subject->width,subject->height);
     *dbg_str(DBG_DETAIL,"component nane=%s",((Component *)subject)->name);
     *subject->move(subject);
     */

    object_dump(subject, "Component", buf, 2048);
    dbg_str(DBG_DETAIL,"Component dump: %s",buf);

    free(set_str);

}
예제 #7
0
void test_ui_sdl_window()
{
    Window *window;
	Graph *g;
	allocator_t *allocator = allocator_get_default_alloc();
    char *set_str;
    char buf[2048];

    set_str = gen_window_setting_str();

    window  = OBJECT_NEW(allocator, Sdl_Window,set_str);
	g       = window->graph;

    object_dump(window, "Sdl_Window", buf, 2048);
    dbg_str(DBG_DETAIL,"Window dump: %s",buf);

	dbg_str(DBG_DETAIL,"render draw test");
	g->render_draw_image(g,0,0,window->background);
	g->render_present(g);

    sleep(2);
	g->render_clear(g);
	g->render_set_color(g,0xff,0x0,0xff,0xff);
	g->render_draw_line(g,20,0,50,50);
	g->render_set_color(g,0xff,0x0,0x0,0xff);
	g->render_draw_rect(g,20,20,100,100);
	/*
	 *g->render_fill_rect(g,20,20,100,100);
	 */
	g->render_present(g);
	sleep(5);

    object_destroy(window);

    free(set_str);

}
예제 #8
0
파일: map.c 프로젝트: a1an1in/libcutils
void test_obj_map()
{
    Map *map;
	allocator_t *allocator = allocator_get_default_alloc();
    char *set_str;
    cjson_t *root, *e, *s;
    char buf[2048];

    root = cjson_create_object();{
        cjson_add_item_to_object(root, "Map", e = cjson_create_object());{
            cjson_add_string_to_object(e, "name", "alan");
        }
    }

    set_str = cjson_print(root);

    map = OBJECT_NEW(allocator, Map,set_str);

    object_dump(map, "Map", buf, 2048);
    dbg_str(OBJ_DETAIL,"Map dump: %s",buf);

    free(set_str);

}
예제 #9
0
int main(int argc, const char *args[])
{
    if (argc != 3)
    {
        printf("USAGE: %s [i|s|r] file\n", args[0]);
        return -1;
    }

    char mode = args[1][0];
    simple_stream_s s;
    ast_node_t n;
    interp_s __interp;
    interp_t interp = &__interp;
    object_t prog;
    
    switch (mode)
    {
    case 'i':
    case 's':

        simple_stream_open(&s, fopen(args[2], "r"));

        n = ast_simple_parse_char_stream((stream_in_f)simple_stream_in, &s);

        simple_stream_close(&s);

        if (n != NULL)
        {            

            if (mode == 'i')
            {
                ast_dump(n, stdout);
                ast_free(n);
                
                break;
            }
            
            ast_syntax_parse(n, 0);
            sematic_symref_analyse(n);
            
            ast_dump(n, stdout);
            ast_free(n);
        }

        break;

    case 'r':

        interp_initialize(interp, 16);
        
        simple_stream_open(&s, fopen(args[2], "r"));

        prog = interp_eval(interp, (stream_in_f)simple_stream_in, &s, NULL);

        simple_stream_close(&s);

        if (prog != NULL) interp_apply(interp, prog, 0, NULL);
        
        int       ex_argc = 0;
        object_t *ex_args;
        object_t  ex_ret = NULL;
        int i;

        object_t __me = interp_object_new(interp);
        __me->string = xstring_from_cstr("SEE interpreter", -1);
        OBJECT_TYPE_INIT(__me, OBJECT_TYPE_STRING);
        interp_protect(interp, __me);
        
        while (1)
        {
            int r = interp_run(interp, ex_ret, &ex_argc, &ex_args);
            if (r <= 0) break;
            
            switch (r)
            {
            case VM_EXTERNAL_CALL:
                ex_ret = OBJECT_NULL;
                /* An example for handling external calls: display */
                if (OBJECT_TYPE(ex_args[0]) == OBJECT_TYPE_STRING)
                {
                    if (xstring_equal_cstr(ex_args[0]->string, "display", -1))
                    {
                        for (i = 1; i != ex_argc; ++ i)
                        {
                            object_dump(ex_args[i], stdout);
                        }
                        printf("\n");
                    }
                }

                /* The caller should unprotect the ex arguments by themself */
                for (i = 0; i != ex_argc; ++ i)
                    interp_unprotect(interp, ex_args[i]);

                break;

            case VM_EXTERNAL_CONSTANT:
                /* An example for handling external constant. */
                /* remember that we should never create objects from
                 * heap for the external constant */
                if (xstring_equal_cstr(interp->ex->exp->constant.name, "#answer-to-the-universe", -1))
                    ex_ret = INT_BOX(42);
                else ex_ret = OBJECT_NULL;
                
                break;

            case VM_EXTERNAL_LOAD:
                /* Handling external load */
                ex_ret = OBJECT_NULL;
                if (xstring_equal_cstr(interp->ex->exp->load.name, "me", -1))
                {
                    ex_ret = __me;
                }
                break;

            case VM_EXTERNAL_STORE:
                /* Handler external store */
                ex_ret = OBJECT_NULL;
                if (xstring_equal_cstr(interp->ex->exp->store.name, "me", -1))
                {
                    fprintf(stderr, "Setting ``me'' is impossible\n");
                    fprintf(stderr, "VALUE: \n");
                    object_dump(interp->ex->value, stderr);
                    fprintf(stderr, "\n");
                }
                break;
                
            default:
                ex_ret = OBJECT_NULL;
                break;
            }
        }
        interp_uninitialize(interp);

        break;
        
    default:

        printf("ERROR OPTION\n");
        return -1;
    }

    return 0;
}