File: osinlines.h

package info (click to toggle)
intel-graphics-compiler 1.0.12504.6-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 83,912 kB
  • sloc: cpp: 910,147; lisp: 202,655; ansic: 15,197; python: 4,025; yacc: 2,241; lex: 1,570; pascal: 244; sh: 104; makefile: 25
file content (64 lines) | stat: -rw-r--r-- 1,669 bytes parent folder | download | duplicates (3)
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__