...

Text file src/github.com/bytedance/sonic/native/test/xassert.h

Documentation: github.com/bytedance/sonic/native/test

     1/*
     2 * Copyright 2022 ByteDance Inc.
     3 *
     4 * Licensed under the Apache License, Version 2.0 (the "License");
     5 * you may not use this file except in compliance with the License.
     6 * You may obtain a copy of the License at
     7 *
     8 *     http://www.apache.org/licenses/LICENSE-2.0
     9 *
    10 * Unless required by applicable law or agreed to in writing, software
    11 * distributed under the License is distributed on an "AS IS" BASIS,
    12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13 * See the License for the specific language governing permissions and
    14 * limitations under the License.
    15 */
    16
    17#ifndef XASSERT_H
    18#define XASSERT_H
    19
    20
    21#ifndef DEBUG
    22    #define xassert(expr)     ((void)0)
    23#else
    24    #include "xprintf.h"
    25    #define xassert(expr) \
    26    ((expr)	\
    27    ? ((void)0)						\
    28    : _xassert(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__))
    29
    30static void* raise = 0;
    31static void xabort() {
    32    *(int*)(raise) = 1;
    33}
    34static void _xassert(const char *assertion, const char *file, 
    35    const unsigned line, const char *func) {
    36    xprintf("%s:%u: %s Assertion `%s' failed.\n",
    37		      file, line, func ? func : "?", assertion);
    38    xabort();
    39}
    40#endif // DEBUG
    41
    42#endif // XASSERT_H

View as plain text