这篇教程C++ tb_assert_and_check_break函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中tb_assert_and_check_break函数的典型用法代码示例。如果您正苦于以下问题:C++ tb_assert_and_check_break函数的具体用法?C++ tb_assert_and_check_break怎么用?C++ tb_assert_and_check_break使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了tb_assert_and_check_break函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: tb_dns_cache_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_bool_t tb_dns_cache_init(){ // enter tb_spinlock_enter(&g_lock); // done tb_bool_t ok = tb_false; do { // init hash if (!g_cache.hash) g_cache.hash = tb_hash_init(tb_align8(tb_isqrti(TB_DNS_CACHE_MAXN) + 1), tb_item_func_str(tb_false), tb_item_func_mem(sizeof(tb_dns_cache_addr_t), tb_null, tb_null)); tb_assert_and_check_break(g_cache.hash); // ok ok = tb_true; } while (0); // leave tb_spinlock_leave(&g_lock); // failed? exit it if (!ok) tb_dns_cache_exit(); // ok? return ok;}
开发者ID:DonkeyWs,项目名称:tbox,代码行数:30,
示例2: tb_aicp_dns_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_aicp_dns_ref_t tb_aicp_dns_init(tb_aicp_ref_t aicp){ // check tb_assert_and_check_return_val(aicp, tb_null); // done tb_bool_t ok = tb_false; tb_aicp_dns_impl_t* impl = tb_null; do { // make impl impl = tb_malloc0_type(tb_aicp_dns_impl_t); tb_assert_and_check_break(impl); // init aicp impl->aicp = aicp; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (impl) tb_aicp_dns_exit((tb_aicp_dns_ref_t)impl); impl = tb_null; } // ok? return (tb_aicp_dns_ref_t)impl;}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:36,
示例3: tb_sort_int_test_perf/* ////////////////////////////////////////////////////////////////////////////////////// * test */static tb_void_t tb_sort_int_test_perf(tb_size_t n){ __tb_volatile__ tb_size_t i = 0; // init data tb_long_t* data = (tb_long_t*)tb_nalloc0(n, sizeof(tb_long_t)); tb_assert_and_check_return(data); // init iterator tb_array_iterator_t array_iterator; tb_iterator_ref_t iterator = tb_array_iterator_init_long(&array_iterator, data, n); // make for (i = 0; i < n; i++) data[i] = tb_random_range(TB_MINS16, TB_MAXS16); // sort tb_hong_t time = tb_mclock(); tb_sort_all(iterator, tb_null); time = tb_mclock() - time; // time tb_trace_i("tb_sort_int_all: %lld ms", time); // check for (i = 1; i < n; i++) tb_assert_and_check_break(data[i - 1] <= data[i]); // free tb_free(data);}
开发者ID:ljx0305,项目名称:tbox,代码行数:32,
示例4: tb_small_pool_item_checkstatic tb_bool_t tb_small_pool_item_check(tb_pointer_t data, tb_cpointer_t priv){ // check tb_fixed_pool_ref_t fixed_pool = (tb_fixed_pool_ref_t)priv; tb_assert_return_val(fixed_pool && data, tb_false); // done tb_bool_t ok = tb_false; do { // the data head tb_pool_data_head_t* data_head = &(((tb_pool_data_head_t*)data)[-1]); tb_assertf_break(data_head->debug.magic == TB_POOL_DATA_MAGIC, "invalid data: %p", data); // the data space tb_size_t space = tb_fixed_pool_item_size(fixed_pool); tb_assert_and_check_break(space >= data_head->size); // check underflow tb_assertf_break(space == data_head->size || ((tb_byte_t*)data)[data_head->size] == TB_POOL_DATA_PATCH, "data underflow"); // ok ok = tb_true; } while (0); // continue? return ok;}
开发者ID:1060460048,项目名称:tbox,代码行数:29,
示例5: tb_mutex_inittb_mutex_ref_t tb_mutex_init(){ // done tb_bool_t ok = tb_false; tb_spinlock_ref_t lock = tb_null; do { // make lock lock = tb_malloc0_type(tb_spinlock_t); tb_assert_and_check_break(lock); // init lock if (!tb_spinlock_init(lock)) break; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it tb_free(lock); lock = tb_null; } // ok? return (tb_mutex_ref_t)lock;}
开发者ID:waruqi,项目名称:tbox,代码行数:30,
示例6: tb_semaphore_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_semaphore_ref_t tb_semaphore_init(tb_size_t init){ // done tb_bool_t ok = tb_false; sem_t* semaphore = tb_null; do { // make semaphore semaphore = tb_malloc0_type(sem_t); tb_assert_and_check_break(semaphore); // init if (sem_init(semaphore, 0, init) < 0) break; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (semaphore) tb_free(semaphore); semaphore = tb_null; } // ok? return (tb_semaphore_ref_t)semaphore;}
开发者ID:ljx0305,项目名称:tbox,代码行数:33,
示例7: tb_object_dictionary_init_basestatic tb_object_dictionary_t* tb_object_dictionary_init_base(){ // done tb_bool_t ok = tb_false; tb_object_dictionary_t* dictionary = tb_null; do { // make dictionary dictionary = tb_malloc0_type(tb_object_dictionary_t); tb_assert_and_check_break(dictionary); // init dictionary if (!tb_object_init((tb_object_ref_t)dictionary, TB_OBJECT_FLAG_NONE, TB_OBJECT_TYPE_DICTIONARY)) break; // init base dictionary->base.copy = tb_object_dictionary_copy; dictionary->base.cler = tb_object_dictionary_cler; dictionary->base.exit = tb_object_dictionary_exit; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (dictionary) tb_object_exit((tb_object_ref_t)dictionary); dictionary = tb_null; } // ok? return dictionary;}
开发者ID:keeplive,项目名称:tbox,代码行数:35,
示例8: tb_thread_pool_task_post_listtb_size_t tb_thread_pool_task_post_list(tb_thread_pool_ref_t pool, tb_thread_pool_task_t const* list, tb_size_t size){ // check tb_thread_pool_impl_t* impl = (tb_thread_pool_impl_t*)pool; tb_assert_and_check_return_val(impl && list, 0); // init the post size tb_size_t post_size = 0; // enter tb_spinlock_enter(&impl->lock); // done tb_size_t ok = 0; if (!impl->bstoped) { for (ok = 0; ok < size; ok++) { // post task tb_thread_pool_job_t* job = tb_thread_pool_jobs_post_task(impl, &list[ok], &post_size); tb_assert_and_check_break(job); } } // leave tb_spinlock_leave(&impl->lock); // post the workers if (ok && post_size) tb_thread_pool_worker_post(impl, post_size); // ok? return ok;}
开发者ID:luxuan,项目名称:tbox,代码行数:33,
示例9: tb_ifaddrs_itortb_iterator_ref_t tb_ifaddrs_itor(tb_ifaddrs_ref_t ifaddrs, tb_bool_t reload){ // check tb_list_ref_t interfaces = (tb_list_ref_t)ifaddrs; tb_assert_and_check_return_val(interfaces, tb_null); // uses the cached interfaces? tb_check_return_val(reload, (tb_iterator_ref_t)interfaces); // clear interfaces first tb_list_clear(interfaces); // done tb_long_t sock = -1; do { // make sock sock = tb_ifaddrs_netlink_socket_init(); tb_assert_and_check_break(sock >= 0); // load ipaddr if (!tb_ifaddrs_interface_load(interfaces, sock, RTM_GETADDR)) break; // load hwaddr if (!tb_ifaddrs_interface_load(interfaces, sock, RTM_GETLINK)) break; } while (0); // exit sock if (sock >= 0) close(sock); sock = -1; // ok? return (tb_iterator_ref_t)interfaces;}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:35,
示例10: tb_object_data_init_basestatic tb_object_data_t* tb_object_data_init_base(){ // done tb_bool_t ok = tb_false; tb_object_data_t* data = tb_null; do { // make data data = tb_malloc0_type(tb_object_data_t); tb_assert_and_check_break(data); // init data if (!tb_object_init((tb_object_ref_t)data, TB_OBJECT_FLAG_NONE, TB_OBJECT_TYPE_DATA)) break; // init base data->base.copy = tb_object_data_copy; data->base.cler = tb_object_data_cler; data->base.exit = tb_object_data_exit; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (data) tb_object_exit((tb_object_ref_t)data); data = tb_null; } // ok? return data;}
开发者ID:luxuan,项目名称:tbox,代码行数:35,
示例11: tb_oc_number_init_basestatic tb_oc_number_t* tb_oc_number_init_base(){ // done tb_bool_t ok = tb_false; tb_oc_number_t* number = tb_null; do { // make number number = tb_malloc0_type(tb_oc_number_t); tb_assert_and_check_break(number); // init number if (!tb_object_init((tb_object_ref_t)number, TB_OBJECT_FLAG_NONE, TB_OBJECT_TYPE_NUMBER)) break; // init base number->base.copy = tb_oc_number_copy; number->base.exit = tb_oc_number_exit; number->base.clear = tb_oc_number_clear; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (number) tb_object_exit((tb_object_ref_t)number); number = tb_null; } // ok? return number;}
开发者ID:ljx0305,项目名称:tbox,代码行数:35,
示例12: tb_dns_looker_donetb_bool_t tb_dns_looker_done(tb_char_t const* name, tb_ipaddr_ref_t addr){ // check tb_assert_and_check_return_val(name && addr, tb_false); // try to lookup it from cache first if (tb_dns_cache_get(name, addr)) return tb_true; // init looker tb_dns_looker_ref_t looker = tb_dns_looker_init(name); tb_check_return_val(looker, tb_false); // spak tb_long_t r = -1; while (!(r = tb_dns_looker_spak(looker, addr))) { // wait r = tb_dns_looker_wait(looker, TB_DNS_LOOKER_TIMEOUT); tb_assert_and_check_break(r >= 0); } // exit tb_dns_looker_exit(looker); // ok return r > 0? tb_true : tb_false;}
开发者ID:waruqi,项目名称:tbox,代码行数:27,
示例13: tb_memory_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_bool_t tb_memory_init(tb_allocator_ref_t allocator, tb_byte_t* data, tb_size_t size){ // done tb_bool_t ok = tb_false; do { // init page if (!tb_page_init()) break; // init the native memory if (!tb_native_memory_init()) break; // init the allocator g_allocator = allocator; // init the large pool data g_large_pool_data = data; g_large_pool_size = size; // init the pool tb_assert_and_check_break(tb_pool()); // ok ok = tb_true; } while (0); // failed? exit it if (!ok) tb_memory_exit(); // ok? return ok;}
开发者ID:KeplerGods,项目名称:tbox,代码行数:36,
示例14: tb_object_json_reader_func_null/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */static tb_object_ref_t tb_object_json_reader_func_null(tb_object_json_reader_t* reader, tb_char_t type){ // check tb_assert_and_check_return_val(reader && reader->stream, tb_null); // init data tb_static_string_t data; tb_char_t buff[256]; if (!tb_static_string_init(&data, buff, 256)) return tb_null; // done tb_object_ref_t null = tb_null; do { // append character tb_static_string_chrcat(&data, type); // walk tb_bool_t failed = tb_false; while (!failed && tb_stream_left(reader->stream)) { // need one character tb_byte_t* p = tb_null; if (!tb_stream_need(reader->stream, &p, 1) && p) { failed = tb_true; break; } // the character tb_char_t ch = *p; // append character if (tb_isalpha(ch)) tb_static_string_chrcat(&data, ch); else break; // skip it tb_stream_skip(reader->stream, 1); } // failed? tb_check_break(!failed); // check tb_assert_and_check_break(tb_static_string_size(&data)); // trace tb_trace_d("null: %s", tb_static_string_cstr(&data)); // null? if (!tb_stricmp(tb_static_string_cstr(&data), "null")) null = tb_object_null_init(); } while (0); // exit data tb_static_string_exit(&data); // ok? return null;}
开发者ID:richwu,项目名称:tbox,代码行数:63,
示例15: tb_object_datatb_object_ref_t tb_object_data(tb_object_ref_t object, tb_size_t format){ // check tb_assert_and_check_return_val(object, tb_null); // done tb_object_ref_t odata = tb_null; tb_size_t maxn = 4096; tb_byte_t* data = tb_null; do { // make data data = data? (tb_byte_t*)tb_ralloc(data, maxn) : tb_malloc_bytes(maxn); tb_assert_and_check_break(data); // writ object to data tb_long_t size = tb_object_writ_to_data(object, data, maxn, format); // ok? make the data object if (size >= 0) odata = tb_object_data_init_from_data(data, size); // failed? grow it else maxn <<= 1; } while (!odata); // exit data if (data) tb_free(data); data = tb_null; // ok? return odata;}
开发者ID:1060460048,项目名称:tbox,代码行数:32,
示例16: tb_aiop_addotb_aioo_ref_t tb_aiop_addo(tb_aiop_ref_t aiop, tb_socket_ref_t sock, tb_size_t code, tb_cpointer_t priv){ // check tb_aiop_impl_t* impl = (tb_aiop_impl_t*)aiop; tb_assert_and_check_return_val(impl && impl->rtor && impl->rtor->addo && sock, tb_null); tb_assert(tb_aiop_have(aiop, code)); // done tb_bool_t ok = tb_false; tb_aioo_ref_t aioo = tb_null; do { // init aioo aioo = tb_aiop_aioo_init(impl, sock, code, priv); tb_assert_and_check_break(aioo); // addo aioo if (!impl->rtor->addo(impl->rtor, (tb_aioo_impl_t*)aioo)) break; // ok ok = tb_true; } while (0); // failed? remove aioo if (!ok && aioo) { tb_aiop_aioo_exit(impl, aioo); aioo = tb_null; } // ok? return aioo;}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:34,
示例17: tb_demo_stream_transfer_pool_main/* ////////////////////////////////////////////////////////////////////////////////////// * main */ tb_int_t tb_demo_stream_transfer_pool_main(tb_int_t argc, tb_char_t** argv){#if TB_DEMO_TEST_AICP // done do { // init event g_event = tb_event_init(); tb_assert_and_check_break(g_event); // init tasks tb_char_t** p = &argv[2]; for (; p && *p; p++) { // done transfer if (!tb_transfer_pool_done(tb_transfer_pool(), argv[1], *p, 0, 0, tb_demo_transfer_done_func, tb_null, *p)) break; } } while (0); // wait transfer while (g_event && tb_transfer_pool_size(tb_transfer_pool()) && tb_event_wait(g_event, -1) > 0); // exit event if (g_event) tb_event_exit(g_event); g_event = tb_null;#else tb_char_t** p = &argv[2]; for (; p && *p; p++) tb_transfer_done_url(argv[1], *p, 0, tb_demo_transfer_done_func, *p);#endif return 0;}
开发者ID:1060460048,项目名称:tbox,代码行数:35,
示例18: tb_lo_scheduler_io_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_lo_scheduler_io_ref_t tb_lo_scheduler_io_init(tb_lo_scheduler_t* scheduler){ // done tb_bool_t ok = tb_false; tb_lo_scheduler_io_ref_t scheduler_io = tb_null; do { // init io scheduler scheduler_io = tb_malloc0_type(tb_lo_scheduler_io_t); tb_assert_and_check_break(scheduler_io); // save scheduler scheduler_io->scheduler = (tb_lo_scheduler_t*)scheduler; // init poller scheduler_io->poller = tb_poller_init(tb_null); tb_assert_and_check_break(scheduler_io->poller);#ifndef TB_CONFIG_MICRO_ENABLE // init timer and using cache time scheduler_io->timer = tb_timer_init(TB_SCHEDULER_IO_TIMER_GROW, tb_true); tb_assert_and_check_break(scheduler_io->timer); // init ltimer and using cache time scheduler_io->ltimer = tb_ltimer_init(TB_SCHEDULER_IO_LTIMER_GROW, TB_LTIMER_TICK_S, tb_true); tb_assert_and_check_break(scheduler_io->ltimer);#endif // start the io loop coroutine if (!tb_lo_coroutine_start((tb_lo_scheduler_ref_t)scheduler, tb_lo_scheduler_io_loop, scheduler_io, tb_null)) break; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit io scheduler if (scheduler_io) tb_lo_scheduler_io_exit(scheduler_io); scheduler_io = tb_null; } // ok? return scheduler_io;}
开发者ID:waruqi,项目名称:tbox,代码行数:50,
示例19: tb_aiop_ptor_addo/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */static tb_bool_t tb_aiop_ptor_addo(tb_aicp_ptor_impl_t* ptor, tb_aico_impl_t* aico){ // check tb_aiop_ptor_impl_t* impl = (tb_aiop_ptor_impl_t*)ptor; tb_assert_and_check_return_val(impl && impl->aiop && aico, tb_false); // the aiop aico tb_aiop_aico_t* aiop_aico = (tb_aiop_aico_t*)aico; // init impl aiop_aico->impl = impl; // done tb_bool_t ok = tb_false; switch (aico->type) { case TB_AICO_TYPE_SOCK: { // check tb_assert_and_check_break(aico->handle); // ok ok = tb_true; } break; case TB_AICO_TYPE_FILE: { // check tb_assert_and_check_break(aico->handle); // file: addo ok = tb_aicp_file_addo(impl, aico); } break; case TB_AICO_TYPE_TASK: { // ok ok = tb_true; } break; default: break; } // ok? return ok;}
开发者ID:RockyShi,项目名称:tbox,代码行数:50,
示例20: tb_dns_looker_init/* ////////////////////////////////////////////////////////////////////////////////////// * interfaces */tb_dns_looker_ref_t tb_dns_looker_init(tb_char_t const* name){ // check tb_assert_and_check_return_val(name, tb_null); // must be not address tb_assert(!tb_ipaddr_ip_cstr_set(tb_null, name, TB_IPADDR_FAMILY_NONE)); // done tb_bool_t ok = tb_false; tb_dns_looker_t* looker = tb_null; do { // make looker looker = tb_malloc0_type(tb_dns_looker_t); tb_assert_and_check_return_val(looker, tb_null); // dump server// tb_dns_server_dump(); // get the dns server list looker->maxn = tb_dns_server_get(looker->list); tb_check_break(looker->maxn && looker->maxn <= tb_arrayn(looker->list)); // init name if (!tb_static_string_init(&looker->name, (tb_char_t*)looker->data, TB_DNS_NAME_MAXN)) break; tb_static_string_cstrcpy(&looker->name, name); // init rpkt if (!tb_static_buffer_init(&looker->rpkt, looker->data + TB_DNS_NAME_MAXN, TB_DNS_RPKT_MAXN)) break; // init family looker->family = TB_IPADDR_FAMILY_IPV4; // init sock looker->sock = tb_socket_init(TB_SOCKET_TYPE_UDP, looker->family); tb_assert_and_check_break(looker->sock); // init itor looker->itor = 1; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (looker) tb_dns_looker_exit((tb_dns_looker_ref_t)looker); looker = tb_null; } // ok? return (tb_dns_looker_ref_t)looker;}
开发者ID:waruqi,项目名称:tbox,代码行数:60,
示例21: tb_small_pool_nalloc0_tb_pointer_t tb_small_pool_nalloc0_(tb_small_pool_ref_t pool, tb_size_t item, tb_size_t size __tb_debug_decl__){ // check tb_small_pool_impl_t* impl = (tb_small_pool_impl_t*)pool; tb_assert_and_check_return_val(impl && impl->large_pool && size, tb_null); tb_assert_and_check_return_val(item * size <= TB_SMALL_POOL_DATA_SIZE_MAXN, tb_null); // disable small pool for debug#ifdef TB_SMALL_POOL_DISABLE return tb_large_pool_nalloc0(impl->large_pool, item, size, tb_null);#endif // done tb_pointer_t data = tb_null; do { // the fixed pool tb_fixed_pool_ref_t fixed_pool = tb_small_pool_find_fixed(impl, item * size); tb_assert_and_check_break(fixed_pool); // done data = tb_fixed_pool_malloc0_(fixed_pool __tb_debug_args__); tb_assert_and_check_break(data); // the data head tb_pool_data_head_t* data_head = &(((tb_pool_data_head_t*)data)[-1]); tb_assert_abort(data_head->debug.magic == TB_POOL_DATA_MAGIC);#ifdef __tb_debug__ // fill the patch bytes if (data_head->size > (item * size)) tb_memset_((tb_byte_t*)data + (item * size), TB_POOL_DATA_PATCH, data_head->size - (item * size));#endif // update size data_head->size = item * size; } while (0); // check tb_assertf_abort(data, "nalloc(%lu, %lu) failed!", item, size); // ok? return data;}
开发者ID:1060460048,项目名称:tbox,代码行数:44,
示例22: tb_aico_open_sock_from_typetb_bool_t tb_aico_open_sock_from_type(tb_aico_ref_t aico, tb_size_t type){ // check tb_aico_impl_t* impl = (tb_aico_impl_t*)aico; tb_aicp_impl_t* aicp_impl = (tb_aicp_impl_t*)impl->aicp; tb_assert_and_check_return_val(impl && aicp_impl && aicp_impl->ptor && aicp_impl->ptor->addo, tb_false); // done tb_bool_t ok = tb_false; tb_socket_ref_t sock = tb_null; do { // closed? tb_assert_and_check_break(tb_atomic_get(&impl->state) == TB_STATE_CLOSED); tb_assert_and_check_break(!impl->type && !impl->handle); // init sock sock = tb_socket_init(type); tb_assert_and_check_break(sock); // bind type and handle impl->type = TB_AICO_TYPE_SOCK; impl->handle = (tb_handle_t)sock; // addo aico ok = aicp_impl->ptor->addo(aicp_impl->ptor, impl); tb_assert_and_check_break(ok); // opened tb_atomic_set(&impl->state, TB_STATE_OPENED); } while (0); // failed? if (!ok) { // exit it if (sock) tb_socket_exit(sock); sock = tb_null; } // ok? return ok;}
开发者ID:1060460048,项目名称:tbox,代码行数:44,
示例23: tb_aico_open_file_from_pathtb_bool_t tb_aico_open_file_from_path(tb_aico_ref_t aico, tb_char_t const* path, tb_size_t mode){ // check tb_aico_impl_t* impl = (tb_aico_impl_t*)aico; tb_aicp_impl_t* aicp_impl = (tb_aicp_impl_t*)impl->aicp; tb_assert_and_check_return_val(impl && path && aicp_impl && aicp_impl->ptor && aicp_impl->ptor->addo, tb_false); // done tb_bool_t ok = tb_false; tb_file_ref_t file = tb_null; do { // closed? tb_assert_and_check_break(tb_atomic_get(&impl->state) == TB_STATE_CLOSED); tb_assert_and_check_break(!impl->type && !impl->handle); // init file file = tb_file_init(path, mode | TB_FILE_MODE_ASIO); tb_assert_and_check_break(file); // bind type and handle impl->type = TB_AICO_TYPE_FILE; impl->handle = (tb_handle_t)file; // addo aico ok = aicp_impl->ptor->addo(aicp_impl->ptor, impl); tb_assert_and_check_break(ok); // opened tb_atomic_set(&impl->state, TB_STATE_OPENED); } while (0); // failed? if (!ok) { // exit it if (file) tb_file_exit(file); file = tb_null; } // ok? return ok;}
开发者ID:1060460048,项目名称:tbox,代码行数:44,
示例24: tb_aiop_rtor_epoll_initstatic tb_aiop_rtor_impl_t* tb_aiop_rtor_epoll_init(tb_aiop_impl_t* aiop){ // check tb_assert_and_check_return_val(aiop && aiop->maxn, tb_null); // done tb_bool_t ok = tb_false; tb_aiop_rtor_epoll_impl_t* impl = tb_null; do { // make impl impl = tb_malloc0_type(tb_aiop_rtor_epoll_impl_t); tb_assert_and_check_break(impl); // init base impl->base.aiop = aiop; impl->base.code = TB_AIOE_CODE_EALL | TB_AIOE_CODE_CLEAR | TB_AIOE_CODE_ONESHOT; impl->base.exit = tb_aiop_rtor_epoll_exit; impl->base.cler = tb_aiop_rtor_epoll_cler; impl->base.addo = tb_aiop_rtor_epoll_addo; impl->base.delo = tb_aiop_rtor_epoll_delo; impl->base.post = tb_aiop_rtor_epoll_post; impl->base.wait = tb_aiop_rtor_epoll_wait; // init epoll impl->epfd = epoll_create(aiop->maxn); tb_assert_and_check_break(impl->epfd > 0); // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (impl) tb_aiop_rtor_epoll_exit((tb_aiop_rtor_impl_t*)impl); impl = tb_null; } // ok? return (tb_aiop_rtor_impl_t*)impl;}
开发者ID:ahnan4arch,项目名称:tbox,代码行数:44,
示例25: gb_mesh_face_list_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */gb_mesh_face_list_ref_t gb_mesh_face_list_init(tb_element_t element){ // check tb_assert_and_check_return_val(element.data && element.dupl && element.repl, tb_null); // done tb_bool_t ok = tb_false; gb_mesh_face_list_impl_t* impl = tb_null; do { // make list impl = tb_malloc0_type(gb_mesh_face_list_impl_t); tb_assert_and_check_break(impl); // init element impl->element = element; // init pool, item = face + data impl->pool = tb_fixed_pool_init(tb_null, GB_MESH_FACE_LIST_GROW, sizeof(gb_mesh_face_t) + element.size, tb_null, gb_mesh_face_exit, (tb_cpointer_t)impl); tb_assert_and_check_break(impl->pool); // init head tb_list_entry_init_(&impl->head, 0, sizeof(gb_mesh_face_t) + element.size, tb_null); // init order impl->order = GB_MESH_ORDER_INSERT_TAIL; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (impl) gb_mesh_face_list_exit((gb_mesh_face_list_ref_t)impl); impl = tb_null; } // ok? return (gb_mesh_face_list_ref_t)impl;}
开发者ID:cdrr,项目名称:gbox,代码行数:46,
注:本文中的tb_assert_and_check_break函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ tb_assert_and_check_return_val函数代码示例 C++ tassert函数代码示例 |