ELFSectionHeaderTable.h revision 58611fc8193e7386698178f167a2e0cbdd6a4f6f
161dfca9e892597db79889addb7a3abf54cd50588Logan Chien#ifndef ELF_SECTION_HEADER_TABLE_H 261dfca9e892597db79889addb7a3abf54cd50588Logan Chien#define ELF_SECTION_HEADER_TABLE_H 361dfca9e892597db79889addb7a3abf54cd50588Logan Chien 458611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien#include "ELFTypes.h" 558611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien 61f100419d794fa433336190aa47bb0862f93f978TDYa#include <llvm/ADT/OwningPtr.h> 7921465005aca46a100d137c9608a0aedd846e290Logan Chien 861dfca9e892597db79889addb7a3abf54cd50588Logan Chien#include <vector> 9541763d9f2395cf4170d6f8fad0b58098f35c70cTDYa#include <string> 1061dfca9e892597db79889addb7a3abf54cd50588Logan Chien 11a9ab5889e842a49ff16d06594efe96b0210fe1f7Logan Chientemplate <unsigned Bitwidth> 128ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chienclass ELFSectionHeaderTable { 1358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chienpublic: 1458611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELF_TYPE_INTRO_TO_TEMPLATE_SCOPE(Bitwidth); 1558611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien 1661dfca9e892597db79889addb7a3abf54cd50588Logan Chienprivate: 1758611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien std::vector<ELFSectionHeaderTy *> table; 1861dfca9e892597db79889addb7a3abf54cd50588Logan Chien 1961dfca9e892597db79889addb7a3abf54cd50588Logan Chienprivate: 2061dfca9e892597db79889addb7a3abf54cd50588Logan Chien ELFSectionHeaderTable() { 2161dfca9e892597db79889addb7a3abf54cd50588Logan Chien } 2261dfca9e892597db79889addb7a3abf54cd50588Logan Chien 2361dfca9e892597db79889addb7a3abf54cd50588Logan Chienpublic: 24bafb650811e8bcf6fbc014face6e127502869e68Logan Chien ~ELFSectionHeaderTable(); 25bafb650811e8bcf6fbc014face6e127502869e68Logan Chien 2661dfca9e892597db79889addb7a3abf54cd50588Logan Chien template <typename Archiver> 2758611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien static ELFSectionHeaderTableTy *read(Archiver &AR, ELFObjectTy *owner); 2861dfca9e892597db79889addb7a3abf54cd50588Logan Chien 2958611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFSectionHeaderTy const *operator[](size_t i) const { 308ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien return table[i]; 318ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien } 328ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien 3358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFSectionHeaderTy *operator[](size_t i) { 348ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien return table[i]; 358ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien } 36af521b05a143c96604dbb7488e155c5248e34462Logan Chien 3758611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFSectionHeaderTy const *getByName(const std::string &str) const; 3858611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFSectionHeaderTy *getByName(const std::string &str); 39541763d9f2395cf4170d6f8fad0b58098f35c70cTDYa 408ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien void print() const; 4161dfca9e892597db79889addb7a3abf54cd50588Logan Chien}; 4261dfca9e892597db79889addb7a3abf54cd50588Logan Chien 43bafb650811e8bcf6fbc014face6e127502869e68Logan Chien#include "impl/ELFSectionHeaderTable.hxx" 448ec15a3ebbf0037872574d364881f7c0c8533eacLogan Chien 4561dfca9e892597db79889addb7a3abf54cd50588Logan Chien#endif // ELF_SECTION_HEADER_TABLE_H 46