authorgravatar for codroid@gmail.comhryx <codroid@gmail.com> 2019-05-26 17:05:49-07:00
committergravatar for codroid@gmail.comhryx <codroid@gmail.com> 2019-05-26 17:05:49-07:00
logc79b8aeaef860528da645b956f21c8d95d05880d
treed6e3dd85bee6a0c94f09eac6813ecfad9c2c393b
parent99f0b28d3946a1110df235bb8d3b1918afc08df8
signaturelock-open Commit is signed but in an unrecognized format.

var decl: threadlocal


4 files changed, 24 insertions(+), 6 deletions(-)

src-self-hosted/clang.zig+7
......@@ -870,3 +870,10 @@ pub const ZigClangDeclStmt_const_decl_iterator = [*c]const *struct_ZigClangDecl;
870870
871871pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;
872872pub extern fn ZigClangDeclStmt_decl_end(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;
873
874pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind;
875pub const ZigClangVarDecl_TLSKind = extern enum {
876 None,
877 Static,
878 Dynamic,
879};
src-self-hosted/translate_c.zig+4-6
......@@ -381,12 +381,10 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe
381381 .Var => {
382382 const var_decl = @ptrCast(*const ZigClangVarDecl, it.*);
383383
384 // TODO:
385 // const thread_local_token = if (ZigClangVarDecl_getTLSKind() == .None)
386 // null
387 // else
388 // try appendToken(c, .Keyword_threadlocal, "threadlocal");
389 const thread_local_token: ?ast.TokenIndex = null;
384 const thread_local_token = if (ZigClangVarDecl_getTLSKind(var_decl) == .None)
385 null
386 else
387 try appendToken(c, .Keyword_threadlocal, "threadlocal");
390388 const qual_type = ZigClangVarDecl_getType(var_decl);
391389 const mut_token = if (ZigClangQualType_isConstQualified(qual_type))
392390 try appendToken(c, .Keyword_const, "const")
src/zig_clang.cpp+5
......@@ -1459,6 +1459,11 @@ const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *self) {
14591459 return casted->getDeclKindName();
14601460}
14611461
1462enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) {
1463 auto casted = reinterpret_cast<const clang::VarDecl *>(self);
1464 return (ZigClangVarDecl_TLSKind)casted->getTLSKind();
1465}
1466
14621467ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) {
14631468 const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl);
14641469 return bitcast(record_decl->getLocation());
src/zig_clang.h+8
......@@ -733,6 +733,12 @@ enum ZigClangStringLiteral_StringKind {
733733 ZigClangStringLiteral_StringKind_UTF32,
734734};
735735
736enum ZigClangVarDecl_TLSKind {
737 ZigClangVarDecl_TLSKind_None,
738 ZigClangVarDecl_TLSKind_Static,
739 ZigClangVarDecl_TLSKind_Dynamic,
740};
741
736742ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangSourceManager_getSpellingLoc(const struct ZigClangSourceManager *,
737743 struct ZigClangSourceLocation Loc);
738744ZIG_EXTERN_C const char *ZigClangSourceManager_getFilename(const struct ZigClangSourceManager *,
......@@ -792,6 +798,8 @@ ZIG_EXTERN_C const char *ZigClangDecl_getName_bytes_begin(const struct ZigClangD
792798ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl);
793799ZIG_EXTERN_C const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *decl);
794800
801ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl);
802
795803ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b);
796804
797805ZIG_EXTERN_C const struct ZigClangTypedefNameDecl *ZigClangTypedefType_getDecl(const struct ZigClangTypedefType *);