The Pubnub C-core library. It's home is on https://github.com/pubnub/c_core, this is a copy
Dependents: Pubnub_c_core_mbed2_pal Pubnub_c_core_mbed2_pal Pubnub_c_core_mbed2_pal2
pubnub_assert_std.cpp@0:d13755cfb705, 2016-11-10 (annotated)
- Committer:
- sveljko
- Date:
- Thu Nov 10 22:20:11 2016 +0000
- Revision:
- 0:d13755cfb705
Initial commit of Pubnub C-core
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sveljko | 0:d13755cfb705 | 1 | /* -*- c-file-style:"stroustrup"; indent-tabs-mode: nil -*- */ |
sveljko | 0:d13755cfb705 | 2 | #include "pubnub_assert.h" |
sveljko | 0:d13755cfb705 | 3 | |
sveljko | 0:d13755cfb705 | 4 | #include <stdlib.h> |
sveljko | 0:d13755cfb705 | 5 | #include <stdio.h> |
sveljko | 0:d13755cfb705 | 6 | |
sveljko | 0:d13755cfb705 | 7 | |
sveljko | 0:d13755cfb705 | 8 | static pubnub_assert_handler_t m_handler; |
sveljko | 0:d13755cfb705 | 9 | |
sveljko | 0:d13755cfb705 | 10 | |
sveljko | 0:d13755cfb705 | 11 | void pubnub_assert_set_handler(pubnub_assert_handler_t handler) |
sveljko | 0:d13755cfb705 | 12 | { |
sveljko | 0:d13755cfb705 | 13 | if (handler == NULL) { |
sveljko | 0:d13755cfb705 | 14 | handler = pubnub_assert_handler_abort; |
sveljko | 0:d13755cfb705 | 15 | } |
sveljko | 0:d13755cfb705 | 16 | m_handler = handler; |
sveljko | 0:d13755cfb705 | 17 | } |
sveljko | 0:d13755cfb705 | 18 | |
sveljko | 0:d13755cfb705 | 19 | |
sveljko | 0:d13755cfb705 | 20 | void pubnub_assert_failed(char const *s, char const *file, long line) |
sveljko | 0:d13755cfb705 | 21 | { |
sveljko | 0:d13755cfb705 | 22 | if (m_handler == NULL) { |
sveljko | 0:d13755cfb705 | 23 | m_handler = pubnub_assert_handler_abort; |
sveljko | 0:d13755cfb705 | 24 | } |
sveljko | 0:d13755cfb705 | 25 | m_handler(s, file, line); |
sveljko | 0:d13755cfb705 | 26 | } |
sveljko | 0:d13755cfb705 | 27 | |
sveljko | 0:d13755cfb705 | 28 | |
sveljko | 0:d13755cfb705 | 29 | static void report(char const *s, char const *file, long line) |
sveljko | 0:d13755cfb705 | 30 | { |
sveljko | 0:d13755cfb705 | 31 | printf("Pubnub assert failed '%s', file '%s', line %ld\n", s, file, line); |
sveljko | 0:d13755cfb705 | 32 | } |
sveljko | 0:d13755cfb705 | 33 | |
sveljko | 0:d13755cfb705 | 34 | |
sveljko | 0:d13755cfb705 | 35 | void pubnub_assert_handler_loop(char const *s, char const *file, long line) |
sveljko | 0:d13755cfb705 | 36 | { |
sveljko | 0:d13755cfb705 | 37 | report(s, file, line); |
sveljko | 0:d13755cfb705 | 38 | for (;;) continue; |
sveljko | 0:d13755cfb705 | 39 | } |
sveljko | 0:d13755cfb705 | 40 | |
sveljko | 0:d13755cfb705 | 41 | |
sveljko | 0:d13755cfb705 | 42 | void pubnub_assert_handler_abort(char const *s, char const *file, long line) |
sveljko | 0:d13755cfb705 | 43 | { |
sveljko | 0:d13755cfb705 | 44 | report(s, file, line); |
sveljko | 0:d13755cfb705 | 45 | abort(); |
sveljko | 0:d13755cfb705 | 46 | } |
sveljko | 0:d13755cfb705 | 47 | |
sveljko | 0:d13755cfb705 | 48 | void pubnub_assert_handler_printf(char const *s, char const *file, long line) |
sveljko | 0:d13755cfb705 | 49 | { |
sveljko | 0:d13755cfb705 | 50 | report(s, file, line); |
sveljko | 0:d13755cfb705 | 51 | } |