| 100 | } |
| 101 | |
| 102 | ssize_t getFieldOffset(const clang::Decl* decl) |
| 103 | { |
| 104 | const clang::FieldDecl* fd = llvm::dyn_cast<clang::FieldDecl>(decl); |
| 105 | if (!fd || fd->isInvalidDecl()) { |
| 106 | return -1; |
| 107 | } |
| 108 | |
| 109 | const clang::RecordDecl* parent = fd->getParent(); |
| 110 | if (!parent || parent->isInvalidDecl() || !cxxDeclIndependent(parent)) { |
| 111 | return -1; |
| 112 | } |
| 113 | |
| 114 | const clang::ASTRecordLayout &layout = decl->getASTContext().getASTRecordLayout(parent); |
| 115 | return layout.getFieldOffset(fd->getFieldIndex()); |
| 116 | } |
| 117 | |
| 118 | } |
| 119 |
no test coverage detected