tb_object_bplist_reader_func_t tb_object_bplist_reader_func(tb_size_t type) { // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_BPLIST); tb_assert_and_check_return_val(reader && reader->hooker, tb_null); // the func return (tb_object_bplist_reader_func_t)tb_hash_get(reader->hooker, (tb_pointer_t)type); }
tb_object_json_reader_func_t tb_object_json_reader_func(tb_char_t type) { // check tb_assert_and_check_return_val(type, tb_null); // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_JSON); tb_assert_and_check_return_val(reader && reader->hooker, tb_null); // the func return (tb_object_json_reader_func_t)tb_hash_map_get(reader->hooker, (tb_pointer_t)(tb_size_t)type); }
tb_object_xplist_reader_func_t tb_object_xplist_reader_func(tb_char_t const* type) { // check tb_assert_and_check_return_val(type, tb_null); // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_XPLIST); tb_assert_and_check_return_val(reader && reader->hooker, tb_null); // the func return (tb_object_xplist_reader_func_t)tb_hash_map_get(reader->hooker, type); }
tb_bool_t tb_object_json_reader_hook(tb_char_t type, tb_object_json_reader_func_t func) { // check tb_assert_and_check_return_val(type && func, tb_false); // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_JSON); tb_assert_and_check_return_val(reader && reader->hooker, tb_false); // hook it tb_hash_map_insert(reader->hooker, (tb_pointer_t)(tb_size_t)type, func); // ok return tb_true; }
tb_bool_t tb_object_xplist_reader_hook(tb_char_t const* type, tb_object_xplist_reader_func_t func) { // check tb_assert_and_check_return_val(type && func, tb_false); // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_XPLIST); tb_assert_and_check_return_val(reader && reader->hooker, tb_false); // hook it tb_hash_map_insert(reader->hooker, type, func); // ok return tb_true; }
tb_bool_t tb_object_bplist_reader_hook(tb_size_t type, tb_object_bplist_reader_func_t func) { // check tb_assert_and_check_return_val(func, tb_false); // the reader tb_object_reader_t* reader = tb_object_reader_get(TB_OBJECT_FORMAT_BPLIST); tb_assert_and_check_return_val(reader && reader->hooker, tb_false); // hook it tb_hash_set(reader->hooker, (tb_pointer_t)type, func); // ok return tb_true; }