1 #include "Alignment/Geners/interface/IOException.hh"
7 #include "Alignment/Geners/interface/CompressedIO.hh"
8 #include "Alignment/Geners/interface/IOException.hh"
9 #include "Alignment/Geners/interface/Reference.hh"
10 #include "Alignment/Geners/interface/stringArchiveIO.hh"
13 static const char default_suffix[] =
".gssaz";
17 const std::size_t lenSuffix = strlen(
suffix);
18 const std::size_t len = strlen(
filename);
19 bool suffixMatches = len >= lenSuffix;
20 for (std::size_t
i = 0;
i < lenSuffix && suffixMatches; ++
i)
30 std::ofstream of(
filename, std::ios_base::binary);
32 const_cast<StringArchive &>(ar).flush();
33 status = write_item(of, ar);
41 std::ifstream is(
filename, std::ios_base::binary);
43 throw IOOpeningFailure(
"gs::readStringArchive",
filename);
44 CPP11_auto_ptr<StringArchive> ar = read_item<StringArchive>(is);
50 const unsigned inCompressionMode,
52 const unsigned minSizeToCompress,
53 const unsigned bufSize) {
55 if (inCompressionMode > CStringStream::BZIP2)
56 throw gs::IOInvalidArgument(
57 "In gs::writeCompressedStringArchive: "
58 "compression mode argument out of range");
59 const CStringStream::CompressionMode
m = static_cast<CStringStream::CompressionMode>(inCompressionMode);
62 std::ofstream of(
filename, std::ios_base::binary);
64 const_cast<StringArchive &>(ar).flush();
73 std::ifstream is(
filename, std::ios_base::binary);
75 throw IOOpeningFailure(
"gs::readCompressedStringArchive",
filename);
76 CPP11_auto_ptr<StringArchive> ar = read_compressed_item<StringArchive>(is);
81 Reference<StringArchive> ref(arch,
id);
83 std::ostringstream os;
84 os <<
"In gs::loadStringArchiveFromArchive: "
85 <<
"StringArchive item with id " <<
id <<
" not found";
86 throw gs::IOInvalidArgument(os.str());
88 CPP11_auto_ptr<StringArchive>
p = ref.get(0);