private ImportEntry(string module_str, string field_str, WebAssemblyExternalKind kind, object type) { this.module_str = module_str ?? throw new ArgumentException(nameof(module_str)); this.field_str = field_str ?? throw new ArgumentException(nameof(field_str)); this.kind = kind; this.type = type ?? throw new ArgumentException(nameof(type)); }
public ExportEntry(string field_str, WebAssemblyExternalKind kind, uint index) { this.field_str = field_str ?? throw new ArgumentException(nameof(field_str)); this.index = index; if (!Enum.IsDefined(typeof(WebAssemblyExternalKind), kind)) { throw new ArgumentException(nameof(kind)); } this.kind = kind; }
public ImportEntry(BinaryReader reader) { uint module_len = LEB128.ReadUInt32(reader); if (module_len > int.MaxValue) { throw new NotImplementedException($"String longer than {int.MaxValue} bytes not supported."); } module_str = Encoding.UTF8.GetString(reader.ReadBytes((int)module_len)); uint field_len = LEB128.ReadUInt32(reader); if (field_len > int.MaxValue) { throw new NotImplementedException($"String longer than {int.MaxValue} bytes not supported."); } field_str = Encoding.UTF8.GetString(reader.ReadBytes((int)field_len)); byte tmp_kind = reader.ReadByte(); if (!Enum.IsDefined(typeof(WebAssemblyExternalKind), tmp_kind)) { throw new Exception($"File is invalid. Expected 0, 1, 2, or 3, received '{tmp_kind}'."); } kind = (WebAssemblyExternalKind)tmp_kind; switch (kind) { case WebAssemblyExternalKind.Function: type = LEB128.ReadUInt32(reader); break; case WebAssemblyExternalKind.Table: var table_tmp = new TableType(reader); type = table_tmp; break; case WebAssemblyExternalKind.Memory: var memory_tmp = new MemoryType(reader); type = memory_tmp; break; case WebAssemblyExternalKind.Global: var global_tmp = new GlobalType(reader); type = global_tmp; break; } }
public ExportEntry(BinaryReader reader) { uint field_len = LEB128.ReadUInt32(reader); if (field_len > int.MaxValue) { throw new NotImplementedException($"String longer than {int.MaxValue} bytes not supported."); } field_str = Encoding.UTF8.GetString(reader.ReadBytes((int)field_len)); var tmp_kind = reader.ReadByte(); if (!Enum.IsDefined(typeof(WebAssemblyExternalKind), tmp_kind)) { throw new Exception($"File is invalid. Expected byte 0, 1, 2, or 3, received '{tmp_kind}'."); } kind = (WebAssemblyExternalKind)tmp_kind; index = LEB128.ReadUInt32(reader); }