api-docs/io-utils: Doxygen docs for I/O utilities, primitives, and stragglers#422
Merged
Conversation
Wires up Doxygen XML generation + Breathe Sphinx extension so that C++ API documentation from header comments renders in the existing Sphinx/readthedocs site at docs/api.rst. - docs/Doxyfile: Doxygen config (XML-only output, internal headers excluded) - docs/conf.py: runs Doxygen as subprocess, adds breathe extension - docs/api.rst: stub C++ API reference page (expanded by subsequent PRs) - docs/index.rst: replace external cxx-api link with internal api.rst - docs/requirements.txt: add breathe >= 4.35 - .readthedocs.yaml: add apt_packages: [doxygen] - .gitignore: exclude docs/_doxygen/ (generated) Builds on prior work in project-gemmi#402 (Paul Emsley / pemsley). Co-authored-by: C. Vonrhein / CV-GPhL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
'\0' (null char) means skip expansion; avoid misleading 'non-null' wording. Co-authored-by: C. Vonrhein / CV-GPhL
Adds three sections: I/O and Filesystem Utilities, Low-level Primitives, and Miscellaneous, covering all 22 headers documented in PR 10. Co-authored-by: C. Vonrhein / CV-GPhL
conf.py runs Doxygen when available (which it is on VS2022 workers) and conditionally loads breathe when the XML output dir exists. Without breathe installed, the Sphinx build fails with an ImportError. Co-authored-by: C. Vonrhein / CV-GPhL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Doxygen
///API documentation to 22 headers covering I/O infrastructure,low-level primitives, and miscellaneous utilities:
I/O and filesystem:
dirwalk.hpp— directory traversal with PDB code expansion, type-alias walkersfileutil.hpp— file open helpers, byte-swap utilities,CharArraybufferfstream.hpp— RAII file stream wrappers with UTF-8 path supportgz.hpp— gzip stream (GzStream,MaybeGzipped)input.hpp— unified input source abstraction (AnyStream,FileStream,MemoryStream,BasicInput)glob.hpp— glob pattern matchinglogger.hpp— severity-level callback loggerpdb_id.hpp— PDB code validation and path expansionUtilities:
util.hpp— 50+ string and container helpers (split, join, trim, case-insensitive compare, vector ops)span.hpp— span and mutable-vector-span view typesiterator.hpp— bidirectional iterator policies (stride, indirect, unique, grouping, filter)fail.hpp—fail(),sys_fail(),unreachable()error utilitiesatof.hpp— fast locale-independent float parsing (fast_float wrapper)atox.hpp— string-to-integer and character classification helpersversion.hpp—GEMMI_VERSIONconstantStragglers:
addends.hpp— anomalous scattering correction addendsbond_idx.hpp— bond index for topology queriesdsn6.hpp— DSN6/BRIX electron density map readerenumstr.hpp— enum↔string conversion helperssprintf.hpp—snprintf_z,sprintf_z,to_str,to_chars_zwrappersstats.hpp—Variance,Covariance,Correlation,DataStatspymol_select.hpp— PyMOL selection language compiler and atom selectordocs/api.rstupdated with three new sections.Test plan
@paramnames verified against actual C++ signaturesGEMMI_DLLmacros removedpsimplimplementation namespace not exposed in public docs (only baseNodeclass documented)🤖 Generated with Claude Code