1 /* Copyright 2017 Mozilla Foundation 2 * 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 //! A simple event-driven library for parsing WebAssembly binary files 17 //! (or streams). 18 //! 19 //! The parser library reports events as they happend and only stores 20 //! parsing information for a brief period of time, making it very fast 21 //! and memory-efficient. The event-driven model, however, has some drawbacks. 22 //! If you need random access to the entire WebAssembly data-structure, 23 //! this is not the right library for you. You could however, build such 24 //! a data-structure using this library. 25 26 pub use crate::binary_reader::BinaryReader; 27 pub use crate::binary_reader::Range; 28 use crate::binary_reader::SectionHeader; 29 30 pub use crate::parser::ElemSectionEntryTable; 31 pub use crate::parser::LocalName; 32 pub use crate::parser::NameEntry; 33 pub use crate::parser::Parser; 34 pub use crate::parser::ParserInput; 35 pub use crate::parser::ParserState; 36 pub use crate::parser::RelocEntry; 37 pub use crate::parser::WasmDecoder; 38 39 pub use crate::primitives::BinaryReaderError; 40 pub use crate::primitives::BrTable; 41 pub use crate::primitives::CustomSectionKind; 42 pub use crate::primitives::ExternalKind; 43 pub use crate::primitives::FuncType; 44 pub use crate::primitives::GlobalType; 45 pub use crate::primitives::Ieee32; 46 pub use crate::primitives::Ieee64; 47 pub use crate::primitives::ImportSectionEntryType; 48 pub use crate::primitives::LinkingType; 49 pub use crate::primitives::MemoryImmediate; 50 pub use crate::primitives::MemoryType; 51 pub use crate::primitives::NameType; 52 pub use crate::primitives::Naming; 53 pub use crate::primitives::Operator; 54 pub use crate::primitives::RelocType; 55 pub use crate::primitives::ResizableLimits; 56 pub use crate::primitives::Result; 57 pub use crate::primitives::SectionCode; 58 pub use crate::primitives::TableType; 59 pub use crate::primitives::Type; 60 pub use crate::primitives::TypeOrFuncType; 61 pub use crate::primitives::V128; 62 63 pub use crate::validator::validate; 64 pub use crate::validator::validate_function_body; 65 pub use crate::validator::ValidatingOperatorParser; 66 pub use crate::validator::ValidatingParser; 67 pub use crate::validator::ValidatingParserConfig; 68 69 pub use crate::module_resources::WasmFuncType; 70 pub use crate::module_resources::WasmGlobalType; 71 pub use crate::module_resources::WasmMemoryType; 72 pub use crate::module_resources::WasmModuleResources; 73 pub use crate::module_resources::WasmTableType; 74 pub use crate::module_resources::WasmType; 75 76 pub(crate) use crate::module_resources::{wasm_func_type_inputs, wasm_func_type_outputs}; 77 78 pub use crate::operators_validator::OperatorValidatorConfig; 79 80 pub use crate::readers::CodeSectionReader; 81 pub use crate::readers::CustomSectionContent; 82 pub use crate::readers::Data; 83 pub use crate::readers::DataKind; 84 pub use crate::readers::DataSectionReader; 85 pub use crate::readers::Element; 86 pub use crate::readers::ElementItem; 87 pub use crate::readers::ElementItems; 88 pub use crate::readers::ElementItemsReader; 89 pub use crate::readers::ElementKind; 90 pub use crate::readers::ElementSectionReader; 91 pub use crate::readers::Export; 92 pub use crate::readers::ExportSectionReader; 93 pub use crate::readers::FunctionBody; 94 pub use crate::readers::FunctionSectionReader; 95 pub use crate::readers::Global; 96 pub use crate::readers::GlobalSectionReader; 97 pub use crate::readers::Import; 98 pub use crate::readers::ImportSectionReader; 99 pub use crate::readers::InitExpr; 100 pub use crate::readers::LinkingSectionReader; 101 pub use crate::readers::LocalsReader; 102 pub use crate::readers::MemorySectionReader; 103 pub use crate::readers::ModuleReader; 104 pub use crate::readers::Name; 105 pub use crate::readers::NameSectionReader; 106 pub use crate::readers::NamingReader; 107 pub use crate::readers::OperatorsReader; 108 pub use crate::readers::ProducersField; 109 pub use crate::readers::ProducersFieldValue; 110 pub use crate::readers::ProducersFieldValuesReader; 111 pub use crate::readers::ProducersSectionReader; 112 pub use crate::readers::Reloc; 113 pub use crate::readers::RelocSectionReader; 114 pub use crate::readers::Section; 115 pub use crate::readers::SectionContent; 116 pub use crate::readers::SectionIterator; 117 pub use crate::readers::SectionIteratorLimited; 118 pub use crate::readers::SectionReader; 119 pub use crate::readers::SectionWithLimitedItems; 120 pub use crate::readers::TableSectionReader; 121 pub use crate::readers::TypeSectionReader; 122 123 mod binary_reader; 124 mod limits; 125 mod module_resources; 126 mod operators_validator; 127 mod parser; 128 mod primitives; 129 mod readers; 130 mod tests; 131 mod validator; 132