Added "Emitter" functor to allow easy emitting of elements of a container
authorTed Kremenek <kremenek@apple.com>
Wed, 5 Dec 2007 00:13:07 +0000 (00:13 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 5 Dec 2007 00:13:07 +0000 (00:13 +0000)
using std::for_each.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44589 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Bitcode/Serialize.h

index 7b6d8226a089e0f9b725ee48808d63528228d4d7..b0b39de3b79d356523658e4bde7e1d463ff1e9be 100644 (file)
@@ -37,6 +37,17 @@ public:
   template <typename T>
   inline void Emit(const T& X) { SerializeTrait<T>::Emit(*this,X); }
   
+  template <typename T>
+  struct Emitter {
+    Serializer &S;
+    
+    Emitter(Serializer& s) : S(s) {}
+    void operator()(const T& x) const { S.Emit(x); }
+  };
+  
+  template <typename T>
+  Emitter<T> MakeEmitter() { return Emitter<T>(*this); }
+  
   void EmitInt(uint64_t X);
   void EmitSInt(int64_t X);