| /* |
| * Copyright 2016 WebAssembly Community Group participants |
| * |
| * 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 WABT_BINARY_WRITER_H_ |
| #define WABT_BINARY_WRITER_H_ |
| |
| #include "src/common.h" |
| #include "src/feature.h" |
| #include "src/opcode.h" |
| #include "src/stream.h" |
| |
| namespace wabt { |
| |
| struct Module; |
| struct Script; |
| |
| struct WriteBinaryOptions { |
| WriteBinaryOptions() = default; |
| WriteBinaryOptions(const Features& features, |
| bool canonicalize_lebs, |
| bool relocatable, |
| bool write_debug_names) |
| : features(features), |
| canonicalize_lebs(canonicalize_lebs), |
| relocatable(relocatable), |
| write_debug_names(write_debug_names) {} |
| |
| Features features; |
| bool canonicalize_lebs = true; |
| bool relocatable = false; |
| bool write_debug_names = false; |
| }; |
| |
| Result WriteBinaryModule(Stream*, const Module*, const WriteBinaryOptions&); |
| |
| void WriteType(Stream* stream, Type type, const char* desc = nullptr); |
| |
| void WriteStr(Stream* stream, |
| string_view s, |
| const char* desc, |
| PrintChars print_chars = PrintChars::No); |
| |
| void WriteOpcode(Stream* stream, Opcode opcode); |
| |
| void WriteLimits(Stream* stream, const Limits* limits); |
| |
| } // namespace wabt |
| |
| #endif /* WABT_BINARY_WRITER_H_ */ |