diff options
author | 2016-02-16 12:20:45 +0000 | |
---|---|---|
committer | 2016-02-16 15:59:24 +0000 | |
commit | 257337638463d01bcf627c60de42861d775fefec (patch) | |
tree | 8ec571adbfb4ba24f96dd6a5e27368c2f459d1a9 /third_party/ijar/mapped_file.h | |
parent | 0e5be36548843677b1982b2f7e96d33265cc36ea (diff) |
Encapsulate file mapping in preparation for providing a Windows implementation.
Progress on #276.
--
MOS_MIGRATED_REVID=114740700
Diffstat (limited to 'third_party/ijar/mapped_file.h')
-rw-r--r-- | third_party/ijar/mapped_file.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/third_party/ijar/mapped_file.h b/third_party/ijar/mapped_file.h new file mode 100644 index 0000000000..ea0ee824e0 --- /dev/null +++ b/third_party/ijar/mapped_file.h @@ -0,0 +1,82 @@ +// Copyright 2015 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef INCLUDED_THIRD_PARTY_IJAR_MAPPED_FILE_H +#define INCLUDED_THIRD_PARTY_IJAR_MAPPED_FILE_H + +#include "third_party/ijar/common.h" + +namespace devtools_ijar { + +class MappedInputFileImpl; +class MappedOutputFileImpl; + +// A memory mapped input file. +class MappedInputFile { + private: + MappedInputFileImpl *impl_; + + protected: + const char* errmsg_; + bool opened_; + u1* buffer_; + size_t length_; + + public: + MappedInputFile(const char* name); + virtual ~MappedInputFile(); + + // If opening the file succeeded or not. + bool Opened() const { return opened_; } + + // Description of the last error that happened. + const char* Error() const { return errmsg_; } + + // The mapped contents of the file. + u1* Buffer() const { return buffer_ ; } + + // The length of the file. + size_t Length() const { return length_; } + + // Unmap a given number of bytes from the beginning of the file. + void Discard(size_t bytes); + int Close(); +}; + +class MappedOutputFile { + private: + MappedOutputFileImpl *impl_; + + protected: + const char* errmsg_; + bool opened_; + u1* buffer_; + + public: + MappedOutputFile(const char* name, u8 estimated_size); + virtual ~MappedOutputFile(); + + // If opening the file succeeded or not. + bool Opened() const { return opened_; } + + // Description of the last error that happened. + const char* Error() const { return errmsg_; } + + // The mapped contents of the file. + u1* Buffer() const { return buffer_; } + int Close(int size); +}; + +} // namespace devtools_ijar +#endif |