# xware-net/v8file.net architecture

> Architecture diagram of the GitHub repository xware-net/v8file.net, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xware-net/v8file.net
- Repository: https://github.com/xware-net/v8file.net

## Overview

This repository combines a V8 file inspection/manipulation toolkit with a reusable fluent command-line parser and OLE property-set support. The principal visible workflow is a dump utility accepting command-line options, then using V8 storage/manipulation code to inspect or dump file contents. The tree and source index also show loading, structural models, and hierarchical tree support. No README was supplied, and several core files were not excerpted, so relationships beyond indexed references are omitted rather than inferred.

Main entry points: [`v8file.net/V8FileOLEStorage.cs`](https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileOLEStorage.cs) (OLE storage I/O), [`DumpV8File.net/Program.cs`](https://github.com/xware-net/v8file.net/blob/master/DumpV8File.net/Program.cs) (Dump utility), [`FluentCommandLineParser/FluentCommandLineParser.cs`](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/FluentCommandLineParser.cs) (Fluent parser), [`FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs`](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs) (Argument engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command-line parsing"]
  node_parser["Fluent parser"]
  node_engine["Argument engine"]
  node_optiontypes["Typed options"]
  node_parsed["Parsed options<br/>[ParsedOption.cs]"]
  node_result["Parser result"]
end

subgraph group_v8["V8 file processing"]
  node_manipulation["File manipulation"]
  node_storage["OLE storage I/O"]
  node_loader["V8 file loader<br/>[V8FileLoader.cs]"]
end

subgraph group_structure["V8 structures"]
  node_models["V8 models<br/>[MsStructs.cs]"]
  node_linkages["Element linkages<br/>[Linkages.cs]"]
  node_tableelems["Table elements<br/>[TableElems.cs]"]
  node_tree["Hierarchy tree<br/>[Tree.cs]"]
  node_treenode["Tree nodes<br/>[TreeNode.cs]"]
  node_nodecollection["Node collection"]
  node_extensions["Tree utilities<br/>[Extensions.cs]"]
end

subgraph group_ole["OLE properties"]
  node_properties["Property container"]
  node_propertystream["Property streams"]
  node_propertyfactory["Property factory<br/>[PropertyFactory.cs]"]
  node_typedproperty["Typed values"]
end

node_dump(("Dump utility<br/>[Program.cs]"))

node_dump -->|"configures options"| node_parser
node_dump -->|"uses storage I/O"| node_storage
node_dump -->|"invokes operations"| node_manipulation
node_parser -->|"delegates parsing"| node_engine
node_engine -->|"creates options"| node_parsed
node_engine -->|"returns parse result"| node_result
node_parser -->|"selects option parsers"| node_optiontypes
node_loader -->|"uses structures"| node_models
node_manipulation -->|"reads structures"| node_models
node_manipulation -->|"uses linkage data"| node_linkages
node_storage -->|"builds hierarchy"| node_tree
node_storage -->|"creates nodes"| node_treenode
node_storage -->|"reads properties"| node_properties
node_storage -->|"reads property streams"| node_propertystream
node_properties -->|"uses streams"| node_propertystream
node_properties -->|"handles typed values"| node_typedproperty
node_propertystream -->|"creates properties"| node_propertyfactory
node_propertyfactory -->|"creates typed values"| node_typedproperty
node_tree -->|"owns root node"| node_treenode
node_treenode -->|"exposes children"| node_nodecollection
node_extensions -->|"traverses descendants"| node_nodecollection

click node_dump "https://github.com/xware-net/v8file.net/blob/master/DumpV8File.net/Program.cs"
click node_parser "https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/FluentCommandLineParser.cs"
click node_engine "https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs"
click node_optiontypes "https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/OptionParsers/CommandLineOptionParserFactory.cs"
click node_parsed "https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/ParsedOption.cs"
click node_result "https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/ParserEngineResult.cs"
click node_manipulation "https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileManipulation.cs"
click node_storage "https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileOLEStorage.cs"
click node_loader "https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileLoader.cs"
click node_models "https://github.com/xware-net/v8file.net/blob/master/v8file.net/MsStructs.cs"
click node_linkages "https://github.com/xware-net/v8file.net/blob/master/v8file.net/Linkages.cs"
click node_tableelems "https://github.com/xware-net/v8file.net/blob/master/v8file.net/TableElems.cs"
click node_tree "https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/Tree.cs"
click node_treenode "https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/TreeNode.cs"
click node_nodecollection "https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/TreeNodeCollection.cs"
click node_extensions "https://github.com/xware-net/v8file.net/blob/master/v8file.net/Extensions.cs"
click node_properties "https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/OLEPropertiesContainer.cs"
click node_propertystream "https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/PropertySetStream.cs"
click node_propertyfactory "https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/PropertyFactory.cs"
click node_typedproperty "https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/Interfaces/ITypedPropertyValue.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_parser,node_engine,node_optiontypes,node_parsed,node_result toneBlue
class node_manipulation,node_storage,node_loader toneAmber
class node_models,node_linkages,node_tableelems,node_tree,node_treenode,node_nodecollection,node_extensions toneMint
class node_properties,node_propertystream,node_propertyfactory,node_typedproperty toneRose
class node_dump toneTeal
```

## Components

### Command-line parsing

- [Fluent parser](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/FluentCommandLineParser.cs): `FluentCommandLineParser/FluentCommandLineParser.cs`
- [Argument engine](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs): `FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs`
- [Typed options](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/OptionParsers/CommandLineOptionParserFactory.cs): `FluentCommandLineParser/Internals/Parsing/OptionParsers/CommandLineOptionParserFactory.cs`
- [Parsed options](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/ParsedOption.cs): `FluentCommandLineParser/Internals/Parsing/ParsedOption.cs`
- [Parser result](https://github.com/xware-net/v8file.net/blob/master/FluentCommandLineParser/Internals/Parsing/ParserEngineResult.cs): `FluentCommandLineParser/Internals/Parsing/ParserEngineResult.cs`

### V8 file processing

- [File manipulation](https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileManipulation.cs): `v8file.net/V8FileManipulation.cs`
- [OLE storage I/O](https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileOLEStorage.cs): `v8file.net/V8FileOLEStorage.cs`
- [V8 file loader](https://github.com/xware-net/v8file.net/blob/master/v8file.net/V8FileLoader.cs): `v8file.net/V8FileLoader.cs`

### V8 structures

- [V8 models](https://github.com/xware-net/v8file.net/blob/master/v8file.net/MsStructs.cs): `v8file.net/MsStructs.cs`
- [Element linkages](https://github.com/xware-net/v8file.net/blob/master/v8file.net/Linkages.cs): `v8file.net/Linkages.cs`
- [Table elements](https://github.com/xware-net/v8file.net/blob/master/v8file.net/TableElems.cs): `v8file.net/TableElems.cs`
- [Hierarchy tree](https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/Tree.cs): `v8file.net/Tree/Tree.cs`
- [Tree nodes](https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/TreeNode.cs): `v8file.net/Tree/TreeNode.cs`
- [Node collection](https://github.com/xware-net/v8file.net/blob/master/v8file.net/Tree/TreeNodeCollection.cs): `v8file.net/Tree/TreeNodeCollection.cs`
- [Tree utilities](https://github.com/xware-net/v8file.net/blob/master/v8file.net/Extensions.cs): `v8file.net/Extensions.cs`

### OLE properties

- [Property container](https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/OLEPropertiesContainer.cs): `OpenMcdf.Extensions/OLEProperties/OLEPropertiesContainer.cs`
- [Property streams](https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/PropertySetStream.cs): `OpenMcdf.Extensions/OLEProperties/PropertySetStream.cs`
- [Property factory](https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/PropertyFactory.cs): `OpenMcdf.Extensions/OLEProperties/PropertyFactory.cs`
- [Typed values](https://github.com/xware-net/v8file.net/blob/master/OpenMcdf.Extensions/OLEProperties/Interfaces/ITypedPropertyValue.cs): `OpenMcdf.Extensions/OLEProperties/Interfaces/ITypedPropertyValue.cs`

### Other components

- [Dump utility](https://github.com/xware-net/v8file.net/blob/master/DumpV8File.net/Program.cs): `DumpV8File.net/Program.cs`

## Connections

- Dump utility → Fluent parser: configures options (evidence: `DumpV8File.net/Program.cs`)
- Dump utility → OLE storage I/O: uses storage I/O (evidence: `DumpV8File.net/Program.cs`)
- Dump utility → File manipulation: invokes operations (evidence: `DumpV8File.net/Program.cs`)
- Fluent parser → Argument engine: delegates parsing (evidence: `FluentCommandLineParser/FluentCommandLineParser.cs`)
- Argument engine → Parsed options: creates options (evidence: `FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs`)
- Argument engine → Parser result: returns parse result (evidence: `FluentCommandLineParser/Internals/Parsing/CommandLineParserEngineMark2.cs`)
- Fluent parser → Typed options: selects option parsers (evidence: `FluentCommandLineParser/FluentCommandLineParser.cs`)
- V8 file loader → V8 models: uses structures (evidence: `v8file.net/MsStructs.cs`)
- File manipulation → V8 models: reads structures (evidence: `v8file.net/MsStructs.cs`)
- File manipulation → Element linkages: uses linkage data (evidence: `v8file.net/MsStructs.cs`)
- OLE storage I/O → Hierarchy tree: builds hierarchy (evidence: `v8file.net/V8FileOLEStorage.cs`)
- OLE storage I/O → Tree nodes: creates nodes (evidence: `v8file.net/V8FileOLEStorage.cs`)
- OLE storage I/O → Property container: reads properties (evidence: `v8file.net/V8FileOLEStorage.cs`)
- OLE storage I/O → Property streams: reads property streams (evidence: `v8file.net/V8FileOLEStorage.cs`)
- Property container → Property streams: uses streams (evidence: `OpenMcdf.Extensions/OLEProperties/OLEPropertiesContainer.cs`)
- Property container → Typed values: handles typed values (evidence: `OpenMcdf.Extensions/OLEProperties/OLEPropertiesContainer.cs`)
- Property streams → Property factory: creates properties (evidence: `OpenMcdf.Extensions/OLEProperties/PropertySetStream.cs`)
- Property factory → Typed values: creates typed values (evidence: `OpenMcdf.Extensions/OLEProperties/PropertyFactory.cs`)
- Hierarchy tree → Tree nodes: owns root node (evidence: `v8file.net/Tree/Tree.cs`)
- Tree nodes → Node collection: exposes children (evidence: `v8file.net/Tree/TreeNode.cs`)
- Tree utilities → Node collection: traverses descendants (evidence: `v8file.net/Extensions.cs`)
