How jbeder/yaml-cpp works
yaml-cpp is a C++ YAML 1.2 parsing and emitting library. Its main workflow accepts an input stream, scans tokens, parses each document into events, and builds a navigable Node graph; clients can convert node values to C++ types and emit nodes back as YAML. The graph also shows the event-based parser extension point and the separate graph-builder adapter. Source excerpts confirm parser dispatch and event semantics; some Node/emitter wiring is inferred from the public API and tree, so uncertain links are omitted.
Main entry points: parser.cpp Parser · singledocparser.cpp Document parser · node.h Node API · graphbuilder.h Graph adapter API
Components 17
Parsing
- Parser
src/parser.cpp - Directive handling
src/directives.cpp - Scanner
src/scanner.cpp - Document parser
src/singledocparser.cpp - Event handler API
include/yaml-cpp/eventhandler.h
Node model
- Node builder
src/nodebuilder.cpp - Node API
include/yaml-cpp/node/node.h - Node storage
src/node_data.cpp - Type conversion
include/yaml-cpp/node/convert.h
Emission
- Node events
src/nodeevents.cpp - Emit API
include/yaml-cpp/node/emit.h - YAML emitter
src/emitter.cpp
Extensions
- Graph builder
src/contrib/graphbuilder.cpp - Graph adapter API
include/yaml-cpp/contrib/graphbuilder.h
Other components
- C++ client
- YAML input
- YAML output
Connections 19
- C++ client → Parser: loads stream
- YAML input → Scanner: provides bytes
- Parser → Scanner: reads tokens
- Parser → Directive handling: parses directives
- Parser → Document parser: dispatches document
- Document parser → Scanner: consumes tokens
- Document parser → Event handler API: emits events
- Node builder → Event handler API: handles events
- Node builder → Node storage: creates nodes
- Node API → Node storage: accesses graph
- C++ client → Node API: reads or edits
- Node API → Type conversion: converts values
- C++ client → Emit API: requests emission
- Emit API → Node events: traverses nodes
- Node events → YAML emitter: dispatches events
- YAML emitter → YAML output: writes YAML
- C++ client → Graph adapter API: requests graph
- Graph adapter API → Parser: reads documents
- Graph adapter API → Graph builder: adapts callbacks