aboutsummaryrefslogtreecommitdiff
path: root/src/zig_clang.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-05-09 16:52:30 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-05-09 16:52:30 -0400
commiteea2de108d686e36996ff698feec4c0c6574cb15 (patch)
tree238da60d56e039179a277d90cbc5344ef172db6a /src/zig_clang.cpp
parent214625587c66f07f2dd54670258143637058f490 (diff)
downloadzig-eea2de108d686e36996ff698feec4c0c6574cb15.tar.gz
zig-eea2de108d686e36996ff698feec4c0c6574cb15.zip
translate-c: progress on self-hosted function prototypes
See #1964
Diffstat (limited to 'src/zig_clang.cpp')
-rw-r--r--src/zig_clang.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp
index 0231d03418..079cfd96e3 100644
--- a/src/zig_clang.cpp
+++ b/src/zig_clang.cpp
@@ -1193,6 +1193,49 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBuiltinFn == clang::B
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeARCUnbridgedCast == clang::BuiltinType::ARCUnbridgedCast, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArraySection == clang::BuiltinType::OMPArraySection, "");
+void ZigClang_detect_enum_CallingConv(clang::CallingConv x) {
+ switch (x) {
+ case clang::CC_C:
+ case clang::CC_X86StdCall:
+ case clang::CC_X86FastCall:
+ case clang::CC_X86ThisCall:
+ case clang::CC_X86VectorCall:
+ case clang::CC_X86Pascal:
+ case clang::CC_Win64:
+ case clang::CC_X86_64SysV:
+ case clang::CC_X86RegCall:
+ case clang::CC_AAPCS:
+ case clang::CC_AAPCS_VFP:
+ case clang::CC_IntelOclBicc:
+ case clang::CC_SpirFunction:
+ case clang::CC_OpenCLKernel:
+ case clang::CC_Swift:
+ case clang::CC_PreserveMost:
+ case clang::CC_PreserveAll:
+ case clang::CC_AArch64VectorCall:
+ break;
+ }
+}
+
+static_assert((clang::CallingConv)ZigClangCallingConv_C == clang::CC_C, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86StdCall == clang::CC_X86StdCall, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86FastCall == clang::CC_X86FastCall, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86ThisCall == clang::CC_X86ThisCall, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86VectorCall == clang::CC_X86VectorCall, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86Pascal == clang::CC_X86Pascal, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_Win64 == clang::CC_Win64, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86_64SysV == clang::CC_X86_64SysV, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_X86RegCall == clang::CC_X86RegCall, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_AAPCS == clang::CC_AAPCS, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_AAPCS_VFP == clang::CC_AAPCS_VFP, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_IntelOclBicc == clang::CC_IntelOclBicc, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_SpirFunction == clang::CC_SpirFunction, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_OpenCLKernel == clang::CC_OpenCLKernel, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_Swift == clang::CC_Swift, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_PreserveMost == clang::CC_PreserveMost, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_PreserveAll == clang::CC_PreserveAll, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang::CC_AArch64VectorCall, "");
+
static_assert(sizeof(ZigClangSourceLocation) == sizeof(clang::SourceLocation), "");
static ZigClangSourceLocation bitcast(clang::SourceLocation src) {
@@ -1693,3 +1736,18 @@ enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBu
auto casted = reinterpret_cast<const clang::BuiltinType *>(self);
return (ZigClangBuiltinTypeKind)casted->getKind();
}
+
+bool ZigClangFunctionType_getNoReturnAttr(const struct ZigClangFunctionType *self) {
+ auto casted = reinterpret_cast<const clang::FunctionType *>(self);
+ return casted->getNoReturnAttr();
+}
+
+enum ZigClangCallingConv ZigClangFunctionType_getCallConv(const struct ZigClangFunctionType *self) {
+ auto casted = reinterpret_cast<const clang::FunctionType *>(self);
+ return (ZigClangCallingConv)casted->getCallConv();
+}
+
+struct ZigClangQualType ZigClangFunctionType_getReturnType(const struct ZigClangFunctionType *self) {
+ auto casted = reinterpret_cast<const clang::FunctionType *>(self);
+ return bitcast(casted->getReturnType());
+}