diff options
author | Marc Laukien <marc@zeroc.com> | 2004-11-23 16:59:52 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2004-11-23 16:59:52 +0000 |
commit | 9f3365d304864e08b2abc6699fb1c21cb28fca5f (patch) | |
tree | 9c1f014875108d80c05ceda1748addfc9209cee9 /cpp/include/IcePatch2/Util.h | |
parent | made isFinished more robust (diff) | |
download | ice-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.h | 98 |
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 |