1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2019-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#pragma once
#ifndef __OSINLINES_H__
#define __OSINLINES_H__
#ifdef _MSC_VER
/*****************************************************************************\
compile-time ASSERT
\*****************************************************************************/
#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
#endif // _MSC_VER
#if defined(__GNUC__)
#include <assert.h>
#include <stdarg.h>
#include <stdio.h>
#include <UFO/portable_compiler.h>
/*****************************************************************************\
String manipulation.
\*****************************************************************************/
inline int _vsnprintf(
char *buffer,
size_t count,
const char *msg,
va_list args)
{
va_list args_cpy;
// Copy `args' to prevent internal pointer modification from vsnprintf
va_copy(args_cpy, args);
int len = vsnprintf(buffer, count, msg, args_cpy);
va_end(args_cpy);
return len;
}
inline int _vscprintf(const char *msg, va_list args)
{
char c;
va_list args_cpy;
// Copy `args' to prevent internal pointer modification from vsnprintf
va_copy(args_cpy, args);
int len = vsnprintf(&c, 1, msg, args_cpy);
va_end(args_cpy);
return len;
}
//from windows stdlib.h (not available by default in gcc)
void *_aligned_malloc(size_t _Size, size_t _Alignment);
void _aligned_free(void * _Memory);
#endif // __GNUC__
#endif //__OSINLINES_H__
|