这篇教程C++ tb_assert_and_check_return_val函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中tb_assert_and_check_return_val函数的典型用法代码示例。如果您正苦于以下问题:C++ tb_assert_and_check_return_val函数的具体用法?C++ tb_assert_and_check_return_val怎么用?C++ tb_assert_and_check_return_val使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了tb_assert_and_check_return_val函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: tb_directory_create/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_bool_t tb_directory_create(tb_char_t const* path){ // check tb_assert_and_check_return_val(path, tb_false); // the absolute path tb_wchar_t full[TB_PATH_MAXN]; if (!tb_path_absolute_w(path, full, TB_PATH_MAXN)) return tb_false; // make it tb_bool_t ok = CreateDirectoryW(full, tb_null)? tb_true : tb_false; if (!ok) { // make directory tb_wchar_t temp[TB_PATH_MAXN] = {0}; tb_wchar_t const* p = full; tb_wchar_t* t = temp; tb_wchar_t const* e = temp + TB_PATH_MAXN - 1; for (; t < e && *p; t++) { *t = *p; if (*p == L'//' || *p == L'/') { // make directory if not exists if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(temp)) CreateDirectoryW(temp, tb_null); // skip repeat '//' or '/' while (*p && (*p == L'//' || *p == L'/')) p++; } else p++; } // make it again ok = CreateDirectoryW(full, tb_null)? tb_true : tb_false; } // ok? return ok;}
开发者ID:waruqi,项目名称:tbox,代码行数:42,
示例2: tb_wprintftb_long_t tb_wprintf(tb_wchar_t const* format, ...){ // check tb_check_return_val(format, 0); // format line tb_long_t size = 0; tb_wchar_t line[8192] = {0}; tb_vswprintf_format(line, 8191, format, &size); if (size >= 0 && size < 8192) line[size] = L'/0'; // wtoa tb_char_t text[8192] = {0}; size = tb_wtoa(text, line, 8191); tb_assert_and_check_return_val(size != -1, 0); // print it tb_print(text); // ok? return size;}
开发者ID:BailiShanghai,项目名称:tbox,代码行数:22,
示例3: tb_string_rtrimtb_char_t const* tb_string_rtrim(tb_string_ref_t string){ // check tb_assert_and_check_return_val(string, tb_null); // init tb_char_t* s = (tb_char_t*)tb_string_cstr(string); tb_size_t n = tb_string_size(string); tb_check_return_val(s && n, tb_null); // done tb_char_t* e = s + n - 1; while (e >= s && tb_isspace(*e)) e--; // strip it if (e >= s) tb_string_strip(string, e - s + 1); // clear it else tb_string_clear(string); // ok? return tb_string_cstr(string);}
开发者ID:richwu,项目名称:tbox,代码行数:22,
示例4: tb_object_dumptb_object_ref_t tb_object_dump(tb_object_ref_t object){ // check tb_assert_and_check_return_val(object, tb_null); // data tb_object_ref_t odata = tb_object_data(object, TB_OBJECT_FORMAT_XML); if (odata) { // data & size tb_byte_t const* data = (tb_byte_t const*)tb_object_data_getp(odata); tb_size_t size = tb_object_data_size(odata); if (data && size) { tb_char_t const* p = tb_strstr((tb_char_t const*)data, "?>"); tb_char_t const* e = (tb_char_t const*)data + size; tb_char_t b[4096 + 1]; if (p && p + 2 < e) { p += 2; while (p < e && *p && tb_isspace(*p)) p++; while (p < e && *p) { tb_char_t* q = b; tb_char_t const* d = b + 4096; for (; p < e && q < d && *p; p++, q++) *q = *p; *q = '/0'; tb_printf("%s", b); } tb_printf("/n"); } } // exit data tb_object_exit(odata); } return object;}
开发者ID:1060460048,项目名称:tbox,代码行数:39,
示例5: tb_database_sqlite3_result_row_iterator_nextstatic tb_size_t tb_database_sqlite3_result_row_iterator_next(tb_iterator_ref_t iterator, tb_size_t itor){ // check tb_database_sqlite3_result_t* result = (tb_database_sqlite3_result_t*)iterator; tb_assert(result); tb_assert_and_check_return_val(itor < result->count, result->count); // statement result? if (result->statement) { // step statement tb_int_t ok = sqlite3_step(result->statement); // end? if (ok != SQLITE_ROW) { // reset it if (SQLITE_OK != sqlite3_reset(result->statement)) { // the sqlite tb_database_sqlite3_t* sqlite = (tb_database_sqlite3_t*)iterator->priv; if (sqlite) { // save state sqlite->base.state = tb_database_sqlite3_state_from_errno(sqlite3_errcode(sqlite->database)); // trace tb_trace_e("statement: reset failed, error[%d]: %s", sqlite3_errcode(sqlite->database), sqlite3_errmsg(sqlite->database)); } } // tail return result->count; } } // next return itor + 1;}
开发者ID:ljx0305,项目名称:tbox,代码行数:39,
示例6: xm_io_isatty/* stdout: io.isatty() * stderr: io.isatty(io.stderr) * stdin: io.isatty(io.stdin) */tb_int_t xm_io_isatty(lua_State* lua){ // check tb_assert_and_check_return_val(lua, 0); // get file pointer FILE** fp = (FILE**)luaL_checkudata(lua, 1, LUA_FILEHANDLE); // no arguments? default: stdout tb_int_t answer = 1;#ifdef TB_CONFIG_OS_WINDOWS if (fp) answer = _isatty(_fileno(*fp));#else if (fp) answer = isatty(fileno(*fp));#endif // return answer lua_pushboolean(lua, answer); // ok return 1;}
开发者ID:waruqi,项目名称:xmake,代码行数:26,
示例7: tb_walk/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_size_t tb_walk(tb_iterator_ref_t iterator, tb_size_t head, tb_size_t tail, tb_walk_func_t func, tb_cpointer_t priv){ // check tb_assert_and_check_return_val(iterator && (tb_iterator_mode(iterator) & TB_ITERATOR_MODE_FORWARD) && func, 0); // null? tb_check_return_val(head != tail, 0); // walk tb_size_t count = 0; tb_for (tb_pointer_t, item, head, tail, iterator) { // done if (!func(iterator, item, priv)) break; // count++ count++; } // ok? return count;}
开发者ID:waruqi,项目名称:tbox,代码行数:25,
示例8: tb_zip_zlib_inittb_zip_ref_t tb_zip_zlib_init(tb_size_t action){ // make zip tb_zip_ref_t zip = (tb_zip_ref_t)tb_malloc0_type(tb_zip_zlib_t); tb_assert_and_check_return_val(zip, tb_null); // init zip zip->algo = TB_ZIP_ALGO_ZLIB; zip->action = (tb_uint16_t)action; // open zst switch (action) { case TB_ZIP_ACTION_INFLATE: { zip->spak = tb_zip_zlib_spak_inflate; // skip zlib header, only inflate raw data if (inflateInit2(&((tb_zip_zlib_t*)zip)->zst, -MAX_WBITS) != Z_OK) goto fail; } break; case TB_ZIP_ACTION_DEFLATE: { zip->spak = tb_zip_zlib_spak_deflate; if (deflateInit(&((tb_zip_zlib_t*)zip)->zst, Z_DEFAULT_COMPRESSION) != Z_OK) goto fail; } break; default: break; } // ok return zip;fail: if (zip) tb_free(zip); return tb_null;}
开发者ID:DonkeyWs,项目名称:tbox,代码行数:38,
示例9: tb_oc_number_sint64tb_sint64_t tb_oc_number_sint64(tb_object_ref_t object){ // check tb_oc_number_t* number = tb_oc_number_cast(object); tb_assert_and_check_return_val(number, 0); // sint64 switch (number->type) { case TB_OC_NUMBER_TYPE_UINT64: return number->v.u64; case TB_OC_NUMBER_TYPE_SINT64: return number->v.s64; case TB_OC_NUMBER_TYPE_UINT32: return number->v.u32; case TB_OC_NUMBER_TYPE_SINT32: return number->v.s32; case TB_OC_NUMBER_TYPE_UINT16: return number->v.u16; case TB_OC_NUMBER_TYPE_SINT16: return number->v.s16; case TB_OC_NUMBER_TYPE_UINT8: return number->v.u8; case TB_OC_NUMBER_TYPE_SINT8: return number->v.s8;#ifdef TB_CONFIG_TYPE_HAVE_FLOAT case TB_OC_NUMBER_TYPE_FLOAT: return (tb_sint64_t)number->v.f; case TB_OC_NUMBER_TYPE_DOUBLE: return (tb_sint64_t)number->v.d;#endif default: break; } tb_assert(0); return 0;}
开发者ID:ljx0305,项目名称:tbox,代码行数:38,
示例10: tb_thread_local_settb_bool_t tb_thread_local_set(tb_thread_local_ref_t local, tb_cpointer_t priv){ // check tb_assert(local); // have been not initialized? tb_assert_and_check_return_val(local->inited, tb_false); // free the previous data first if (local->free && tb_thread_local_has(local)) local->free(tb_thread_local_get(local)); // set it tb_bool_t ok = pthread_setspecific(((pthread_key_t*)local->priv)[0], priv) == 0; if (ok) { // mark exists ok = pthread_setspecific(((pthread_key_t*)local->priv)[1], (tb_pointer_t)tb_true) == 0; } // ok? return ok;}
开发者ID:siwuxian,项目名称:xmake,代码行数:23,
示例11: xm_machine_main_save_arguments/* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */static tb_bool_t xm_machine_main_save_arguments(xm_machine_impl_t* impl, tb_int_t argc, tb_char_t** argv){ // check tb_assert_and_check_return_val(impl && impl->lua && argc >= 1 && argv, tb_false); // put a new table into the stack lua_newtable(impl->lua); // save all arguments to the new table tb_int_t i = 0; for (i = 1; i < argc; i++) { // table_new[table.getn(table_new) + 1] = argv[i] lua_pushstring(impl->lua, argv[i]); lua_rawseti(impl->lua, -2, luaL_getn(impl->lua, -2) + 1); } // _ARGV = table_new lua_setglobal(impl->lua, "_ARGV"); // ok return tb_true;}
开发者ID:KISSMonX,项目名称:xmake,代码行数:26,
示例12: tb_thread_pool_task_waittb_long_t tb_thread_pool_task_wait(tb_thread_pool_ref_t pool, tb_thread_pool_task_ref_t task, tb_long_t timeout){ // check tb_thread_pool_job_t* job = (tb_thread_pool_job_t*)task; tb_assert_and_check_return_val(pool && job, -1); // wait it tb_hong_t time = tb_cache_time_spak(); tb_size_t state = TB_STATE_WAITING; while ( ((state = tb_atomic_get(&job->state)) != TB_STATE_FINISHED) && state != TB_STATE_KILLED && (timeout < 0 || tb_cache_time_spak() < time + timeout)) { // trace tb_trace_d("task[%p:%s]: wait: state: %s: ..", job->task.done, job->task.name, tb_state_cstr(state)); // wait some time tb_msleep(200); } // ok? return (state == TB_STATE_FINISHED || state == TB_STATE_KILLED)? 1 : 0;}
开发者ID:luxuan,项目名称:tbox,代码行数:23,
示例13: tb_vector_nremove_last_teststatic tb_size_t tb_vector_nremove_last_test(){ // init tb_vector_ref_t vector = tb_vector_init(TB_VECTOR_GROW_SIZE, tb_element_long()); tb_assert_and_check_return_val(vector, 0); tb_size_t n = 10000; tb_vector_ninsert_head(vector, (tb_pointer_t)0xf, n); tb_hong_t t = tb_mclock(); tb_vector_nremove_last(vector, n); t = tb_mclock() - t; // time tb_trace_i("tb_vector_nremove_last(%lu): %lld ms, size: %lu, maxn: %lu", n, t, tb_vector_size(vector), tb_vector_maxn(vector)); // check tb_assert(!tb_vector_size(vector)); // exit tb_vector_exit(vector); return n / ((tb_uint32_t)(t) + 1);}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:23,
示例14: tb_stodtb_double_t tb_stod(tb_char_t const* s){ // check tb_assert_and_check_return_val(s, 0); // skip space tb_char_t const* p = s; while (tb_isspace(*p)) p++; // has sign? if (*p == '-') p++; // is hex? if (*p++ == '0') { if (*p == 'x' || *p == 'X') return tb_s16tod(s); else if (*p == 'b' || *p == 'B') return tb_s2tod(s); else return tb_s8tod(s); } else return tb_s10tod(s);}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:23,
示例15: tb_ifaddrs_netlink_socket_recvstatic tb_long_t tb_ifaddrs_netlink_socket_recv(tb_long_t sock, tb_pointer_t data, tb_size_t size){ // check tb_assert_and_check_return_val(sock >= 0 && data && size, -1); // done struct msghdr packet; struct iovec iov = { data, size }; struct sockaddr_nl addr; while (1) { // init packet packet.msg_name = (tb_pointer_t)&addr; packet.msg_namelen = sizeof(addr); packet.msg_iov = &iov; packet.msg_iovlen = 1; packet.msg_control = tb_null; packet.msg_controllen = 0; packet.msg_flags = 0; // recv packet tb_long_t ok = recvmsg(sock, &packet, 0); // failed or continue if (ok < 0) { if (errno == EINTR) continue; return -2; } // buffer was too small if (packet.msg_flags & MSG_TRUNC) return -1; // ok return ok; }}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:37,
示例16: tb_semaphore_inittb_semaphore_ref_t tb_semaphore_init(tb_size_t init){ // check tb_assert_and_check_return_val(init <= TB_SEMAPHORE_VALUE_MAXN, tb_null); // done tb_bool_t ok = tb_false; tb_semaphore_impl_t* impl = tb_null; do { // make semaphore impl = tb_malloc0_type(tb_semaphore_impl_t); tb_assert_and_check_break(impl); // init semaphore impl->semaphore = CreateSemaphoreA(tb_null, (DWORD)init, TB_SEMAPHORE_VALUE_MAXN, tb_null); tb_assert_and_check_break(impl->semaphore && impl->semaphore != INVALID_HANDLE_VALUE); // init value impl->value = init; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (impl) tb_semaphore_exit((tb_semaphore_ref_t)impl); impl = tb_null; } // ok? return (tb_semaphore_ref_t)impl;}
开发者ID:1060460048,项目名称:tbox,代码行数:37,
示例17: tb_allocator_free_tb_bool_t tb_allocator_free_(tb_allocator_ref_t allocator, tb_pointer_t data __tb_debug_decl__){ // check tb_assert_and_check_return_val(allocator, tb_false); // enter tb_spinlock_enter(&allocator->lock); // trace tb_trace_d("free(%p): at %s(): %d, %s", data __tb_debug_args__); // free it tb_bool_t ok = tb_false; if (allocator->free) ok = allocator->free(allocator, data __tb_debug_args__); else if (allocator->large_free) ok = allocator->large_free(allocator, data __tb_debug_args__); // failed? dump it#ifdef __tb_debug__ if (!ok) { // trace tb_trace_e("free(%p) failed! at %s(): %lu, %s", data, func_, line_, file_); // dump data tb_pool_data_dump((tb_byte_t const*)data, tb_true, "[large_allocator]: [error]: "); // abort tb_abort(); }#endif // leave tb_spinlock_leave(&allocator->lock); // ok? return ok;}
开发者ID:siwuxian,项目名称:xmake,代码行数:37,
示例18: tb_s8tou64tb_uint64_t tb_s8tou64(tb_char_t const* s){ // check tb_assert_and_check_return_val(s, 0); // skip space while (tb_isspace(*s)) s++; // has sign? tb_int_t sign = 0; if (*s == '-') { sign = 1; s++; } // skip '0' while ((*s) == '0') s++; // compute number tb_uint64_t val = 0; while (*s) { tb_char_t ch = *s; if (tb_isdigit8(ch)) val = (val << 3) + (ch - '0'); else break; s++; } // is negative number? if (sign) val = ~val + 1; // the value return val;}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:37,
示例19: tb_oc_number_copystatic tb_object_ref_t tb_oc_number_copy(tb_object_ref_t object){ // check tb_oc_number_t* number = (tb_oc_number_t*)object; tb_assert_and_check_return_val(number, tb_null); // copy switch (number->type) { case TB_OC_NUMBER_TYPE_UINT64: return tb_oc_number_init_from_uint64(number->v.u64); case TB_OC_NUMBER_TYPE_SINT64: return tb_oc_number_init_from_sint64(number->v.s64); case TB_OC_NUMBER_TYPE_UINT32: return tb_oc_number_init_from_uint32(number->v.u32); case TB_OC_NUMBER_TYPE_SINT32: return tb_oc_number_init_from_sint32(number->v.s32); case TB_OC_NUMBER_TYPE_UINT16: return tb_oc_number_init_from_uint16(number->v.u16); case TB_OC_NUMBER_TYPE_SINT16: return tb_oc_number_init_from_sint16(number->v.s16); case TB_OC_NUMBER_TYPE_UINT8: return tb_oc_number_init_from_uint8(number->v.u8); case TB_OC_NUMBER_TYPE_SINT8: return tb_oc_number_init_from_sint8(number->v.s8);#ifdef TB_CONFIG_TYPE_HAVE_FLOAT case TB_OC_NUMBER_TYPE_FLOAT: return tb_oc_number_init_from_float(number->v.f); case TB_OC_NUMBER_TYPE_DOUBLE: return tb_oc_number_init_from_double(number->v.d);#endif default: break; } return tb_null;}
开发者ID:ljx0305,项目名称:tbox,代码行数:37,
示例20: tb_demo_transfer_done_funcstatic tb_bool_t tb_demo_transfer_done_func(tb_size_t state, tb_hize_t offset, tb_hong_t size, tb_hize_t save, tb_size_t rate, tb_cpointer_t priv){ // check tb_demo_context_t* context = (tb_demo_context_t*)priv; tb_assert_and_check_return_val(context && context->option, tb_false); // print verbose info if (context->verbose) { // percent tb_size_t percent = 0; if (size > 0) percent = (tb_size_t)((offset * 100) / size); else if (state == TB_STATE_CLOSED) percent = 100; // trace tb_printf("save: %llu bytes, rate: %lu bytes/s, percent: %lu%%, state: %s/n", save, rate, percent, tb_state_cstr(state)); } // failed or closed? exit wait if (state != TB_STATE_OK && context->event) tb_event_post(context->event); // ok? return (state == TB_STATE_OK)? tb_true : tb_false;}
开发者ID:1060460048,项目名称:tbox,代码行数:24,
示例21: tb_rfind_if/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_size_t tb_rfind_if(tb_iterator_ref_t iterator, tb_size_t head, tb_size_t tail, tb_predicate_ref_t pred, tb_cpointer_t value){ // check tb_assert_and_check_return_val(pred && iterator && (tb_iterator_mode(iterator) & TB_ITERATOR_MODE_REVERSE), tb_iterator_tail(iterator)); // null? tb_check_return_val(head != tail, tb_iterator_tail(iterator)); // find tb_size_t itor = tail; tb_bool_t find = tb_false; do { // the previous item itor = tb_iterator_prev(iterator, itor); // comp if ((find = pred(iterator, tb_iterator_item(iterator, itor), value))) break; } while (itor != head); // ok? return find? itor : tb_iterator_tail(iterator);}
开发者ID:ZuckerB,项目名称:tbox,代码行数:27,
示例22: tb_object_writ_to_urltb_long_t tb_object_writ_to_url(tb_object_ref_t object, tb_char_t const* url, tb_size_t format){ // check tb_assert_and_check_return_val(object && url, -1); // make stream tb_long_t writ = -1; tb_stream_ref_t stream = tb_stream_init_from_url(url); if (stream) { // ctrl stream if (tb_stream_type(stream) == TB_STREAM_TYPE_FILE) tb_stream_ctrl(stream, TB_STREAM_CTRL_FILE_SET_MODE, TB_FILE_MODE_RW | TB_FILE_MODE_BINARY | TB_FILE_MODE_CREAT | TB_FILE_MODE_TRUNC); // open and writ stream if (tb_stream_open(stream)) writ = tb_object_writ(object, stream, format); // exit stream tb_stream_exit(stream); } // ok? return writ;}
开发者ID:ahnan4arch,项目名称:tbox,代码行数:24,
示例23: tb_static_large_allocator_malloc_predstatic tb_static_large_data_head_t* tb_static_large_allocator_malloc_pred(tb_static_large_allocator_ref_t allocator, tb_size_t space){ // check tb_assert_and_check_return_val(allocator && allocator->data_head, tb_null); // walk the pred cache tb_size_t indx = tb_static_large_allocator_pred_index(allocator, space); tb_size_t size = tb_arrayn(allocator->data_pred); tb_static_large_data_pred_t* pred = allocator->data_pred; tb_static_large_data_head_t* data_head = tb_null; tb_static_large_data_head_t* pred_head = tb_null; for (; indx < size && !data_head; indx++) { // the pred data head pred_head = pred[indx].data_head; if (pred_head) { // find the free data from the pred data head data_head = tb_static_large_allocator_malloc_find(allocator, pred_head, 1, space);#ifdef __tb_debug__ // update the total count pred[indx].total_count++; // update the failed count if (!data_head) pred[indx].failed_count++;#endif } } // trace tb_trace_d("malloc: pred: %lu: %s", space, data_head? "ok" : "no"); // ok? return data_head;}
开发者ID:siwuxian,项目名称:xmake,代码行数:36,
示例24: tb_oc_number_doubletb_double_t tb_oc_number_double(tb_object_ref_t object){ // check tb_oc_number_t* number = tb_oc_number_cast(object); tb_assert_and_check_return_val(number, 0); // double switch (number->type) { case TB_OC_NUMBER_TYPE_DOUBLE: return number->v.d; case TB_OC_NUMBER_TYPE_FLOAT: return (tb_double_t)number->v.f; case TB_OC_NUMBER_TYPE_UINT8: return (tb_double_t)number->v.u8; case TB_OC_NUMBER_TYPE_SINT8: return (tb_double_t)number->v.s8; case TB_OC_NUMBER_TYPE_UINT16: return (tb_double_t)number->v.u16; case TB_OC_NUMBER_TYPE_SINT16: return (tb_double_t)number->v.s16; case TB_OC_NUMBER_TYPE_UINT32: return (tb_double_t)number->v.u32; case TB_OC_NUMBER_TYPE_SINT32: return (tb_double_t)number->v.s32; case TB_OC_NUMBER_TYPE_UINT64: return (tb_double_t)number->v.u64; case TB_OC_NUMBER_TYPE_SINT64: return (tb_double_t)number->v.s64; default: break; } tb_assert(0); return 0;}
开发者ID:ljx0305,项目名称:tbox,代码行数:36,
注:本文中的tb_assert_and_check_return_val函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ tb_check_break函数代码示例 C++ tb_assert_and_check_break函数代码示例 |