예제 #1
0
파일: debug.c 프로젝트: shenzhe/bspd
void debug_value(BSP_VALUE *val)
{
    if (!val)
    {
        fprintf(stderr, "\n\033[1;37m === [NOTHING TO DEBUG] ===\033[0m\n\n");

        return;
    }

    fprintf(stderr, "\n\033[1;37m=== [Debug Value] === < START > ===\033[0m\n");
    _dump_value(val, 0);
    fprintf(stderr, "\033[1;37m=== [Debug Value] === < END > ===\033[0m\n\n");

    return;
}
예제 #2
0
파일: debugger.c 프로젝트: drnp/bsp
static void _dump_object(BSP_OBJECT *obj, int layer)
{
    if (!obj)
    {
        return;
    }

    int i;
    BSP_VALUE *val;
    reset_object(obj);
    switch (obj->type)
    {
        case OBJECT_TYPE_SINGLE : 
            // Single
            fprintf(stderr, "\033[1;37mObject type : [SINGLE]\033[0m\n");
            val = object_get_single(obj);
            _dump_value(val, layer);
            break;
        case OBJECT_TYPE_ARRAY : 
            // Array
            fprintf(stderr, "\033[1;37mObject type : [ARRAY]\033[0m\n");
            size_t idx = 0;
            for (idx = 0; idx < object_size(obj); idx ++)
            {
                for (i = 0; i <= layer; i ++)
                {
                    fprintf(stderr, "\t");
                }
                fprintf(stderr, "\033[1;35m%lld\033[0m\t=> ", (long long int) idx);
                val = object_get_array(obj, idx);
                _dump_value(val, layer);
            }
            fprintf(stderr, "\n");
            break;
        case OBJECT_TYPE_HASH : 
            // Dict
            fprintf(stderr, "\033[1;37mObject type : [HASH]\033[0m\n");
            val = curr_item(obj);
            BSP_STRING *key;
            while (val)
            {
                key = curr_hash_key(obj);
                for (i = 0; i <= layer; i ++)
                {
                    fprintf(stderr, "\t");
                }
                if (key)
                {
                    fprintf(stderr, "\033[1;33m");
                    write(STDERR_FILENO, STR_STR(key), STR_LEN(key));
                    fprintf(stderr, "\033[0m");
                }
                else
                {
                    fprintf(stderr, "### NO KEY ###");
                }
                fprintf(stderr, "\t=> ");
                _dump_value(val, layer);
                next_item(obj);
                val = curr_item(obj);
            }
            fprintf(stderr, "\n");
            break;
        case OBJECT_TYPE_UNDETERMINED : 
        default : 
            // Null
            fprintf(stderr, "\033[1;36mObject type : [UNKNOWN]\033[0m\n");
            break;
    }

    return;
}
예제 #3
0
파일: debug.c 프로젝트: shenzhe/bspd
static void _dump_object(BSP_OBJECT *obj, int layer)
{
    if (!obj)
    {
        return;
    }

    int i;
    size_t idx, total;
    BSP_VALUE *val;
    BSP_STRING *key;
    bsp_object_reset(obj);
    switch (obj->type)
    {
        case BSP_OBJECT_SINGLE : 
            // Single
            fprintf(stderr, "\033[1;37mObject type : [SINGLE]\033[0m\n");
            val = bsp_object_value_single(obj);
            _dump_value(val, layer);
            break;
        case BSP_OBJECT_ARRAY : 
            // Array
            fprintf(stderr, "\033[1;37mObject type : [ARRAY]\033[0m\n");
            total = bsp_object_size(obj);
            for (idx = 0; idx < total; idx ++)
            {
                for (i = 0; i <= layer; i ++)
                {
                    fprintf(stderr, "    ");
                }

                fprintf(stderr, "\033[1;35m%lld\033[0m\t=> ", (long long int) idx);
                val = bsp_object_value_array(obj, idx);
                _dump_value(val, layer);
            }

            fprintf(stderr, "\n");
            break;
        case BSP_OBJECT_HASH : 
            // Hash
            fprintf(stderr, "\033[1;37mObject type : [HASH]\033[0m\n");
            val = bsp_object_curr(obj, (void **) &key);
            while (val && key)
            {
                for (i = 0; i <= layer; i ++)
                {
                    fprintf(stderr, "    ");
                }

                fprintf(stderr, "\033[1;33m");
                write(STDERR_FILENO, STR_STR(key), STR_LEN(key));
                fprintf(stderr, "\033[0m => ");
                _dump_value(val, layer);
                bsp_object_next(obj);
                val = bsp_object_curr(obj, (void **) &key);
            }

            fprintf(stderr, "\n");
            break;
        case BSP_OBJECT_UNDETERMINED : 
        default : 
            // NullS
            fprintf(stderr, "\033[1;36mObject type : [UNKNOWN]\033[0m\n");
            break;
    }

    return;
}