X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FSequenceToOffsetTable.h;h=fcda233dc913cfab82b0341591cfe0b8a628bc4e;hb=22bd64173981bf1251c4b3bfc684207340534ba3;hp=09dccbb1084affb3da75847eecdde3c8d9086de2;hpb=0d4e2ea00eac5d51a74a54dd504a8f34580041d7;p=oota-llvm.git diff --git a/utils/TableGen/SequenceToOffsetTable.h b/utils/TableGen/SequenceToOffsetTable.h index 09dccbb1084..fcda233dc91 100644 --- a/utils/TableGen/SequenceToOffsetTable.h +++ b/utils/TableGen/SequenceToOffsetTable.h @@ -17,10 +17,11 @@ #define TBLGEN_SEQUENCE_TO_OFFSET_TABLE_H #include "llvm/Support/raw_ostream.h" -#include #include -#include #include +#include +#include +#include namespace llvm { @@ -28,8 +29,8 @@ namespace llvm { /// Compute the layout of a table that contains all the sequences, possibly by /// reusing entries. /// -/// @param SeqT The sequence container. (vector or string). -/// @param Less A stable comparator for SeqT elements. +/// @tparam SeqT The sequence container. (vector or string). +/// @tparam Less A stable comparator for SeqT elements. template > class SequenceToOffsetTable { typedef typename SeqT::value_type ElemT; @@ -80,6 +81,8 @@ public: Seqs.erase(I); } + bool empty() const { return Seqs.empty(); } + /// layout - Computes the final table layout. void layout() { assert(Entries == 0 && "Can only call layout() once"); @@ -120,6 +123,19 @@ public: } }; +// Helper function for SequenceToOffsetTable. +static inline void printChar(raw_ostream &OS, char C) { + unsigned char UC(C); + if (isalnum(UC) || ispunct(UC)) { + OS << '\''; + if (C == '\\' || C == '\'') + OS << '\\'; + OS << C << '\''; + } else { + OS << unsigned(UC); + } +} + } // end namespace llvm #endif