ELFSectionStrTab.h revision 58611fc8193e7386698178f167a2e0cbdd6a4f6f
155b5e7c242e599b88f5727352758808461483000Logan Chien#ifndef ELF_SECTION_STRTAB_H 255b5e7c242e599b88f5727352758808461483000Logan Chien#define ELF_SECTION_STRTAB_H 355b5e7c242e599b88f5727352758808461483000Logan Chien 458611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien#include "ELFTypes.h" 555b5e7c242e599b88f5727352758808461483000Logan Chien#include "ELFSection.h" 655b5e7c242e599b88f5727352758808461483000Logan Chien 7921465005aca46a100d137c9608a0aedd846e290Logan Chien#include <vector> 855b5e7c242e599b88f5727352758808461483000Logan Chien 9a9ab5889e842a49ff16d06594efe96b0210fe1f7Logan Chientemplate <unsigned Bitwidth> 1055b5e7c242e599b88f5727352758808461483000Logan Chienclass ELFSectionStrTab : public ELFSection<Bitwidth> { 1158611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chienpublic: 1258611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELF_TYPE_INTRO_TO_TEMPLATE_SCOPE(Bitwidth); 1358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien 1455b5e7c242e599b88f5727352758808461483000Logan Chienprivate: 1558611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFSectionHeaderTy const *section_header; 1655b5e7c242e599b88f5727352758808461483000Logan Chien std::vector<char> buf; 1755b5e7c242e599b88f5727352758808461483000Logan Chien 1855b5e7c242e599b88f5727352758808461483000Logan Chienprivate: 1955b5e7c242e599b88f5727352758808461483000Logan Chien ELFSectionStrTab() { } 2055b5e7c242e599b88f5727352758808461483000Logan Chien 2155b5e7c242e599b88f5727352758808461483000Logan Chienpublic: 2255b5e7c242e599b88f5727352758808461483000Logan Chien template <typename Archiver> 2358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien static ELFSectionStrTab *read(Archiver &AR, ELFSectionHeaderTy const *sh); 2455b5e7c242e599b88f5727352758808461483000Logan Chien 258e233aace27dd4c658db39ddd223bdc21121a4f2Logan Chien virtual void print() const; 2655b5e7c242e599b88f5727352758808461483000Logan Chien 2755b5e7c242e599b88f5727352758808461483000Logan Chien char const *operator[](size_t index) const { 2855b5e7c242e599b88f5727352758808461483000Logan Chien return &*buf.begin() + index; 2955b5e7c242e599b88f5727352758808461483000Logan Chien } 3055b5e7c242e599b88f5727352758808461483000Logan Chien}; 3155b5e7c242e599b88f5727352758808461483000Logan Chien 328e233aace27dd4c658db39ddd223bdc21121a4f2Logan Chien#include "impl/ELFSectionStrTab.hxx" 338e233aace27dd4c658db39ddd223bdc21121a4f2Logan Chien 3455b5e7c242e599b88f5727352758808461483000Logan Chien#endif // ELF_SECTION_STRTAB_H 35