llvm-project

Форк
0
84 строки · 1.5 Кб
1
include "config/public_api.td"
2

3
include "spec/stdc.td"
4
include "spec/posix.td"
5
include "spec/gpu_ext.td"
6
include "spec/gnu_ext.td"
7
include "spec/stdc_ext.td"
8
include "spec/llvm_libc_ext.td"
9

10
def AssertMacro : MacroDef<"assert"> {
11
  let Defn = [{
12
    #undef assert
13

14
    #ifdef NDEBUG
15
    #define assert(e) (void)0
16
    #else
17

18
    #define assert(e)  \
19
      ((e) ? (void)0 : __assert_fail(#e, __FILE__, __LINE__, __PRETTY_FUNCTION__))
20
    #endif
21
  }];
22
}
23

24
def StaticAssertMacro : MacroDef<"static_assert"> {
25
  let Defn = [{
26
    #ifndef __cplusplus
27
    #undef static_assert
28
    #define static_assert _Static_assert
29
    #endif
30
  }];
31
}
32

33
def AssertAPI : PublicAPI<"assert.h"> {
34
  let Macros = [
35
    AssertMacro,
36
    StaticAssertMacro,
37
  ];
38
}
39

40
def StringAPI : PublicAPI<"string.h"> {
41
  let Types = ["size_t"];
42
}
43

44
def StdlibAPI : PublicAPI<"stdlib.h"> {
45
  let Types = [
46
    "div_t",
47
    "ldiv_t",
48
    "lldiv_t",
49
    "size_t",
50
    "__bsearchcompare_t",
51
    "__qsortcompare_t",
52
    "__qsortrcompare_t",
53
    "__atexithandler_t",
54
  ];
55
}
56

57
def FenvAPI: PublicAPI<"fenv.h"> {
58
  let Types = ["fenv_t"];
59
}
60

61
def StdIOAPI : PublicAPI<"stdio.h"> {
62
  let Macros = [
63
    SimpleMacroDef<"_IOFBF", "0">,
64
    SimpleMacroDef<"_IOLBF", "1">,
65
    SimpleMacroDef<"_IONBF", "2">,
66
  ];
67
  let Types = [
68
    "FILE",
69
    "off_t",
70
    "size_t",
71
  ];
72
}
73

74
def IntTypesAPI : PublicAPI<"inttypes.h"> {
75
  let Types = ["imaxdiv_t"];
76
}
77

78
def TimeAPI : PublicAPI<"time.h"> {
79
  let Types = [
80
    "clock_t",
81
    "time_t",
82
    "struct timespec",
83
  ];
84
}
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.