Review the header's doc comments and publish an API reference - #33
Merged
Conversation
The doc comments in libcmutils.h were nearly complete but had three kinds of problem, and there was nowhere for the result to be read. Fixed 21 gaps. The whole CMUTIL_HttpClient interface was undocumented - the typedef, all seven methods and the constructor - which is the type the REST client was just built on. Socket::SetSilent and ServerSocket::SetSilent had no comment and the matching `silent` argument of both listener constructors was undocumented; Thread::GetId, Thread::GetName and XmlNode::GetName were missing a @PARAM; CMUTIL_GetMem and CMUTIL_RWLockCreate were missing a @return; the private and public key typedefs and the four platform shims had nothing at all. Fixed 58 markup errors. "@typedef Name Description" appeared 57 times, but Doxygen's @typedef takes a declaration, not a name and a description: each one created a phantom symbol and left the real type undocumented, which is why nine enums - CMMemOper, CMLogLevel, CMSocketResult among them - had no documentation at all. They are plain @brief now, since a comment sitting on the entity already names it. Three @struct commands had the same problem, and one <code> tag was never closed. Grouped the API. 6,300 lines of header rendered as one flat list; it is now eighteen subjects, keeping the header's declaration order so a type is followed by its methods and then its constructor. Added @file and a @mainpage covering the two things to know first - that an object is a struct of function pointers reached through CMCall, and the CMUTIL_Init/CMUTIL_Clear lifecycle - plus a group for the CMCall macros, which the main page points at and which belonged to no group. doc/ holds the Doxyfile, a README describing the topics and the pitfall above, and a CMake "docs" target that appears only when doxygen is installed and is never part of "all". EXTRACT_ALL stays off with every documentation warning on, so a gap is reported in doc/doxygen.log rather than published as a blank page. The log is empty. The Docs workflow publishes both halves of the Pages site on every push that touches them: the README landing page at / and the reference at /api/. Nothing generated is committed. It fails if doxygen writes anything to the log. _config.yml now excludes the source tree, which Jekyll had been mirroring onto the site. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Folded into the v0.6.4 release (no version bump — the tag moves once this merges).
Doc comment review
src/libcmutils.hwas nearly complete but had three kinds of problem.21 gaps. The whole
CMUTIL_HttpClientinterface was undocumented — the typedef, all seven methods and the constructor — which is the type the REST client was just built on. AlsoSocket::SetSilent,ServerSocket::SetSilentand the matchingsilentargument of both listener constructors; a missing@paramonThread::GetId,Thread::GetNameandXmlNode::GetName; a missing@returnonCMUTIL_GetMemandCMUTIL_RWLockCreate; the key typedefs and the four platform shims.58 markup errors.
@typedef Name Descriptionappeared 57 times, but Doxygen's@typedeftakes a declaration, not a name and a description. Each one created a phantom symbol and left the real type undocumented — which is why nine enums (CMMemOper,CMLogLevel,CMSocketResult, …) had no documentation at all. They are plain@briefnow, since a comment sitting on the entity already names it. Three@structcommands had the same problem, plus one unclosed<code>tag.No structure. 6,300 lines rendered as one flat list. Now eighteen subjects, keeping the header's declaration order so a type is followed by its methods and then its constructor. Added
@file, a@mainpagecovering theCMCallconvention and theCMUTIL_Init/CMUTIL_Clearlifecycle, and a group for theCMCallmacros — which the main page points at and which belonged to no group.doc/
doc/Doxyfiledoc/CMakeLists.txtdocstarget that appears only when doxygen is installed, never part ofalldoc/README.md@typedefpitfall aboveEXTRACT_ALLstays off with every documentation warning on, so a gap is reported indoc/doxygen.lograther than published as a blank page. The log is empty.Publishing
Pages is currently
build_type: legacy, serving the Jekyll-rendered README frommaster:/. The new Docs workflow keeps that landing page at/and adds the reference at/api/, building both on every push that touches them. Nothing generated is committed, and the job fails if doxygen writes anything to the log._config.ymlnow excludes the source tree — Jekyll had been mirroringsrc/,test/andsamples/onto the site.Verification
docstarget verified end to end; configures quietly when doxygen is absent🤖 Generated with Claude Code