Hsu.Formats.Abstractions
2026.7.13
dotnet add package Hsu.Formats.Abstractions --version 2026.7.13
NuGet\Install-Package Hsu.Formats.Abstractions -Version 2026.7.13
<PackageReference Include="Hsu.Formats.Abstractions" Version="2026.7.13" />
<PackageVersion Include="Hsu.Formats.Abstractions" Version="2026.7.13" />
<PackageReference Include="Hsu.Formats.Abstractions" />
paket add Hsu.Formats.Abstractions --version 2026.7.13
#r "nuget: Hsu.Formats.Abstractions, 2026.7.13"
#:package Hsu.Formats.Abstractions@2026.7.13
#addin nuget:?package=Hsu.Formats.Abstractions&version=2026.7.13
#tool nuget:?package=Hsu.Formats.Abstractions&version=2026.7.13
Hsu.Formats.Abstractions
Core abstractions shared by all Hsu.Formats packages.
What this package contains
- parser contracts
- conversion contracts
- format-model marker interfaces
- memory-image abstractions
- shared exception types
Core Interfaces
| Interface | Purpose |
|---|---|
IFormatModel |
Marker interface for every parsed model |
IFormatParser |
Synchronous CanParse(Stream) + Parse(Stream) contract |
IAsyncFormatParser |
Async parsing entry point layered on top of IFormatParser |
IFilePathParser |
Parser variant that needs file-path context (for example include resolution) |
IFormatConverter<TSource, TTarget> |
Strongly typed conversion contract |
IMemoryImage |
Memory-image contract exposing IReadOnlyList<MemorySegment> |
Domain Marker Interfaces
These markers group models by problem domain rather than by concrete file type:
ITraceLogINetworkDescriptionICalibrationDescriptionIDiagnosticDescription
Memory Model
MemorySegment is the shared building block for firmware-like formats.
AddressislongDatais the raw byte payloadEndAddressis derived fromAddress + Data.Length
This is why firmware-format code in the repo consistently uses 64-bit address arithmetic.
Exceptions
Shared exceptions currently include:
FormatParseExceptionFormatConversionException
Use them when surfacing structured parse/conversion failures from library code.
Usage
Implement a parser
using Hsu.Formats;
public sealed class MyParser : IFormatParser
{
public bool CanParse(Stream stream)
{
var peek = new byte[4];
int n = stream.Read(peek, 0, peek.Length);
stream.Seek(-n, SeekOrigin.Current);
return n >= 2 && peek[0] == 0xCA && peek[1] == 0xFE;
}
public IFormatModel Parse(Stream stream)
{
throw new NotImplementedException();
}
}
Implement a converter
using Hsu.Formats;
public sealed class MyConverter : IFormatConverter<SourceModel, TargetModel>
{
public bool CanConvert() => true;
public bool CanConvert(Type source, Type target) =>
source == typeof(SourceModel) && target == typeof(TargetModel);
public TargetModel Convert(SourceModel source)
{
throw new NotImplementedException();
}
public object Convert(object source) => Convert((SourceModel)source);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Hsu.Formats.Abstractions:
| Package | Downloads |
|---|---|
|
Hsu.Formats.Trace
Trace/log and Ethernet capture format support for Hsu.Formats: ASC, BLF, TRC, PCAP, and PCAPNG parsers, models, and writers. |
|
|
Hsu.Formats.Firmware
Firmware format support for Hsu.Formats: BIN, HEX, S19, ELF, MOT, and VBF parsers, models, and writers. |
|
|
Hsu.Formats.Dataset
Dataset and calibration format support for Hsu.Formats: A2L, DBC, ODX, and AUTOSAR XML (ARXML) parsers, models, and writers. |
|
|
Hsu.Formats.Replay
Replay engine for Hsu.Formats: schedules recorded CAN and Ethernet logs and emits them over an Ethernet (UDP) transport, preserving the original inter-frame timing. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.7.13 | 359 | 7/13/2026 |
| 2026.5.11-preview.100100 | 94 | 5/11/2026 |
| 2026.5.7 | 344 | 5/7/2026 |
| 2026.4.20 | 368 | 4/20/2026 |