summaryrefslogtreecommitdiff
path: root/cpp/include/IcePatch2/Util.h
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-11-23 16:59:52 +0000
committerMarc Laukien <marc@zeroc.com>2004-11-23 16:59:52 +0000
commit9f3365d304864e08b2abc6699fb1c21cb28fca5f (patch)
tree9c1f014875108d80c05ceda1748addfc9209cee9 /cpp/include/IcePatch2/Util.h
parentmade isFinished more robust (diff)
downloadice-9f3365d304864e08b2abc6699fb1c21cb28fca5f.tar.bz2
ice-9f3365d304864e08b2abc6699fb1c21cb28fca5f.tar.xz
ice-9f3365d304864e08b2abc6699fb1c21cb28fca5f.zip
IcePatch2
Diffstat (limited to 'cpp/include/IcePatch2/Util.h')
-rw-r--r--cpp/include/IcePatch2/Util.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/cpp/include/IcePatch2/Util.h b/cpp/include/IcePatch2/Util.h
new file mode 100644
index 00000000000..097392c1cc3
--- /dev/null
+++ b/cpp/include/IcePatch2/Util.h
@@ -0,0 +1,98 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_PATCH2_UPDATE_H
+#define ICE_PATCH2_UPDATE_H
+
+#include <Ice/Ice.h>
+#include <IcePatch2/FileInfo.h>
+
+namespace IcePatch2
+{
+
+ICEPATCH2_API std::string bytesToString(const Ice::ByteSeq&);
+ICEPATCH2_API Ice::ByteSeq stringToBytes(const std::string&);
+
+ICEPATCH2_API std::string normalize(const std::string&);
+
+ICEPATCH2_API std::string getSuffix(const std::string&);
+ICEPATCH2_API std::string getWithoutSuffix(const std::string&);
+ICEPATCH2_API bool ignoreSuffix(const std::string&);
+
+ICEPATCH2_API std::string getBasename(const std::string&);
+ICEPATCH2_API std::string getDirname(const std::string&);
+
+ICEPATCH2_API void remove(const std::string&);
+ICEPATCH2_API void removeRecursive(const std::string&);
+
+ICEPATCH2_API Ice::StringSeq readDirectory(const std::string&);
+ICEPATCH2_API void createDirectoryRecursive(const std::string&);
+
+ICEPATCH2_API void compressToFile(const std::string&, const Ice::ByteSeq&, Ice::Int);
+ICEPATCH2_API void uncompressToFile(const std::string&, const Ice::ByteSeq&, Ice::Int);
+
+struct FileInfoCompare : public std::binary_function<const FileInfo&, const FileInfo&, bool>
+{
+ bool
+ operator()(const FileInfo& lhs, const FileInfo& rhs)
+ {
+ if(lhs.path < rhs.path)
+ {
+ return true;
+ }
+ else if(rhs.path < lhs.path)
+ {
+ return false;
+ }
+
+ return lhs.checksum < rhs.checksum;
+
+ //
+ // We don't take the size int account, as it might not be set
+ // if no compressed file is available.
+ //
+ }
+};
+
+ICEPATCH2_API void getFileInfoSeq(const std::string&, FileInfoSeq&, bool, bool);
+ICEPATCH2_API void saveFileInfoSeq(const std::string&, const FileInfoSeq&);
+ICEPATCH2_API void loadFileInfoSeq(const std::string&, FileInfoSeq&);
+
+ICEPATCH2_API std::ostream& operator<<(std::ostream&, const FileInfo&);
+ICEPATCH2_API std::istream& operator>>(std::istream&, FileInfo&);
+
+struct FileTree2
+{
+ FileInfoSeq files;
+ Ice::ByteSeq checksum;
+};
+
+typedef std::vector<FileTree2> FileTree2Seq;
+
+struct FileTree1
+{
+ FileTree2Seq nodes;
+ Ice::ByteSeq checksum;
+};
+
+typedef std::vector<FileTree1> FileTree1Seq;
+
+struct FileTree0
+{
+ FileTree1Seq nodes;
+ Ice::ByteSeq checksum;
+};
+
+ICEPATCH2_API void getFileTree2(const FileInfoSeq&, FileTree2&);
+ICEPATCH2_API void getFileTree1(const FileInfoSeq&, FileTree1&);
+ICEPATCH2_API void getFileTree0(const FileInfoSeq&, FileTree0&);
+
+}
+
+#endif