diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-31 17:02:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-31 17:02:00 +0000 |
commit | ed47a0409b187d5dcd2bddfd054326fc809d00ae (patch) | |
tree | 1eb72cbdff0013882e33b1981147868c8613ef5c /include/llvm/MC/MCSection.h | |
parent | 23b6ecffe1ee5992cc1e057850bb1f36bc237ac0 (diff) | |
download | external_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.zip external_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.tar.gz external_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.tar.bz2 |
split MCSection stuff out to its own .cpp file, add a new
MCSectionWithKind subclass of MCSection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77684 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCSection.h')
-rw-r--r-- | include/llvm/MC/MCSection.h | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h index 024bc6c..3223858 100644 --- a/include/llvm/MC/MCSection.h +++ b/include/llvm/MC/MCSection.h @@ -17,24 +17,45 @@ #include <string> #include "llvm/ADT/StringRef.h" -namespace llvm { +// FIXME: HORRIBLE HACK: major layering violation to get an enum. +#include "llvm/Target/TargetLoweringObjectFile.h" +namespace llvm { + class MCContext; + /// MCSection - Instances of this class represent a uniqued identifier for a /// section in the current translation unit. The MCContext class uniques and /// creates these. class MCSection { std::string Name; - private: MCSection(const MCSection&); // DO NOT IMPLEMENT void operator=(const MCSection&); // DO NOT IMPLEMENT - MCSection(const StringRef &_Name, MCContext &Ctx); + protected: + MCSection(const StringRef &Name, MCContext &Ctx); public: + virtual ~MCSection(); - static MCSection *Create(const StringRef &_Name, MCContext &Ctx); + static MCSection *Create(const StringRef &Name, MCContext &Ctx); const std::string &getName() const { return Name; } }; + /// MCSectionWithKind - This is used by targets that use the SectionKind enum + /// to classify their sections. + class MCSectionWithKind : public MCSection { + SectionKind Kind; + MCSectionWithKind(const StringRef &Name, SectionKind K, MCContext &Ctx) + : MCSection(Name, Ctx), Kind(K) {} + public: + + static MCSectionWithKind *Create(const StringRef &Name, SectionKind K, + MCContext &Ctx); + + SectionKind getKind() const { return Kind; } + }; + + + } // end namespace llvm #endif |