/* * Copyright (C) 2016 The Android Open Source Project * * 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 AAPT_FLATTEN_TABLEPROTOSERIALIZER_H #define AAPT_FLATTEN_TABLEPROTOSERIALIZER_H #include "Diagnostics.h" #include "ResourceTable.h" #include "Source.h" #include "proto/ProtoHelpers.h" #include #include #include namespace aapt { class CompiledFileOutputStream { public: explicit CompiledFileOutputStream(google::protobuf::io::ZeroCopyOutputStream* out); void WriteLittleEndian32(uint32_t value); void WriteCompiledFile(const pb::CompiledFile* compiledFile); void WriteData(const BigBuffer* buffer); void WriteData(const void* data, size_t len); bool HadError(); private: DISALLOW_COPY_AND_ASSIGN(CompiledFileOutputStream); void ensureAlignedWrite(); google::protobuf::io::CodedOutputStream mOut; }; class CompiledFileInputStream { public: explicit CompiledFileInputStream(const void* data, size_t size); bool ReadLittleEndian32(uint32_t* outVal); bool ReadCompiledFile(pb::CompiledFile* outVal); bool ReadDataMetaData(uint64_t* outOffset, uint64_t* outLen); private: DISALLOW_COPY_AND_ASSIGN(CompiledFileInputStream); void ensureAlignedRead(); google::protobuf::io::CodedInputStream mIn; }; std::unique_ptr serializeTableToPb(ResourceTable* table); std::unique_ptr deserializeTableFromPb(const pb::ResourceTable& pbTable, const Source& source, IDiagnostics* diag); std::unique_ptr serializeCompiledFileToPb(const ResourceFile& file); std::unique_ptr deserializeCompiledFileFromPb(const pb::CompiledFile& pbFile, const Source& source, IDiagnostics* diag); } // namespace aapt #endif /* AAPT_FLATTEN_TABLEPROTOSERIALIZER_H */