summaryrefslogtreecommitdiff
path: root/libs/c/include/stdarg.h
blob: 4ace4037fb762b8422c24c33f31e5499bc9fe4d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef _C_STDARG_H
#define _C_STDARG_H

extern "C" {
typedef char *va_list;

#define __std(ref) ::std::ref
#define __fourbytealign(n) ((((unsigned long) (n)) + 3U) & ~3U)
#define __va_start(parm) ((__std(va_list))((char *) ((unsigned long) (&parm) & ~3U) + __fourbytealign(sizeof(parm))))

#define va_start(ap, parm) ((ap) = __va_start(parm))
#define va_arg(ap, type) (*(type *) ((ap += __fourbytealign(sizeof(type))) - __fourbytealign(sizeof(type))))
#define va_end(ap) ((void) 0)
}

#if defined(__cplusplus)
namespace std {
    using ::va_list;
};

using std::va_list;
#endif

#endif