00001 #ifndef FILEREADOUTFORMAT_METADATASTRINGS_H 00002 #define FILEREADOUTFORMAT_METADATASTRINGS_H 00003 00004 /* 00005 * MetadataStrings.h 00006 * FileReadoutFormat 00007 * 00008 * Created by Simon Patton on 7/18/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 00013 #include <vector> 00014 #include <string> 00015 #include "FileReadoutFormat/FileBuffer.h" 00016 00017 namespace DybDaq { 00018 00019 class MetadataStrings : public FileBuffer { 00020 00021 public: 00022 00023 typedef std::pair<std::string, std::string> MetadataString; 00024 typedef std::vector<const MetadataString* > MetadataStringPtrList; 00025 00029 MetadataStrings(const MetadataStringPtrList& metadataStrings, 00030 const FileTraits& traits); 00031 00035 MetadataStrings(const DybDaq::ByteBuffer& byteBuffer, 00036 const FileTraits& traits); 00037 00041 virtual ~MetadataStrings(); 00042 00046 virtual bool isMarked(unsigned int marker) const; 00047 00051 const MetadataStringPtrList& metadataStrings() const; 00052 00057 virtual unsigned int gather(OutputBufferList& outputBuffers) const; 00058 00059 protected: 00060 00064 virtual unsigned int formatComponent() const; 00065 00066 private: 00067 00071 MetadataStrings(); 00072 00076 MetadataStrings(MetadataStrings& rhs); 00077 00081 MetadataStrings& operator=(MetadataStrings& rhs); 00082 00086 void setMetadataStrings(const MetadataStringPtrList& metadataStrings); 00087 00091 static std::string readString(const char* buffer); 00092 00096 static unsigned int calculateStringsLength(const MetadataStringPtrList& metadataStrings); 00097 00101 static unsigned int writeString(const std::string& value, 00102 char* buffer); 00103 00107 mutable MetadataStringPtrList* m_strings; 00108 00112 char* m_stringBuffer; 00113 }; 00114 00115 } 00116 00117 #endif // FILEREADOUTFORMAT_METADATASTRINGS_H