Publish Help Text for MATLAB Interface to C++ Library
When you publish an interface, the clibgen.generateLibraryDefinition function inserts C++ header file comments and
other default text about classes and functions. The doc function displays
this text to the user. You can disable inserting C++ comments or modify the text by editing
the library definition file.
Automatically Use C++ Comments for Help Text
If these public constructs contain C++ comments, then MATLAB® appends the comments to the default MATLAB descriptions.
Functions and arguments
Member functions and arguments
Classes and structs
Data members
Enumerations and enumerants
Template functions and template methods of a class
MATLAB reads Doxygen style, C++ comments, but is not a Doxygen parser. For example,
MATLAB processes Doxygen @brief and @details
commands to add content to a class or function description. MATLAB reads @param and @return commands to
augment argument descriptions. MATLAB uses the content of @code commands to provide code
examples. Within any Doxygen command, MATLAB ignores formatting tags. For example, a Doxygen parser displays
word as shown in this tag <b>word</b> in bold
font. MATLAB simply includes the text <b>word</b> in the help.
MATLAB does not display html tags <code>,
</code>, <p>,
</p>, and <br>.
By default, MATLAB copies C++ comments from library header and source files into the
Description and, if available, DetailedDescription
arguments for these methods. Enumerations optionally have
EnumerantDescriptions arguments. You can review and edit the content by
using the library definition file.
The Description, DetailedDescription, and
EnumerantDescriptions arguments take string values. You can manually update the
text in these values. For example, there might be more content in the
.hpp file than MATLAB includes by default. Or you might want to include
code examples for your use case.
If you do not want to copy C++ comments from the header and source files, then call
clibgen.generateLibraryDefinition with the GenerateDocumentationFromHeaderFiles argument set to false. You can still enter text in the
Description argument in the definition file.
Manually Update Help Text
This example uses the interface built in Header-Only HPP File. For another examples, see Modify Library Help.
If you created the interface, move to the folder with the
defineschool.m file and school folder with the
interface library. Alternatively, create the interface:
copyfile(fullfile(matlabroot,"extern","examples","cpp_interface","school.hpp"),".","f") clibgen.generateLibraryDefinition("school.hpp") build(defineschool) addpath("school") summary(defineschool)
The default help text for class Person is Representation of
C++ class Person. To display the help, type:
doc clib.schoolClasses contained in clib.school: Person - clib.school.Person Representation of C++ class Person Teacher - clib.school.Teacher Representation of C++ class Teacher Student - clib.school.Student Representation of C++ class Student
To modify this text, edit defineschool.m. Search for the text
Representation of C++ class Person.
Modify the "Description" value. Change:
"clib.school.Person Representation of C++ class Person."to:
"clib.school.Person Class defined by name and age."Save the file.
To rebuild the library, restart MATLAB. Navigate to the folder containing defineschool.m. Delete
the existing interface file.
delete school\*.dllBuild the interface and update the path.
build(defineschool)
addpath school
Display the updated help.
doc clib.schoolClasses contained in clib.school: Person - clib.school.Person Class defined by name and age Teacher - clib.school.Teacher Representation of C++ class Teacher Student - clib.school.Student Representation of C++ class Student
Compare Generated Help With Header File Comments
The example described in Modify Library Help shows generated
help for the XMLPlatformUtils.Initialize method in the Apache® Xerces-C++ XML parser library. This content comes from the Apache Xerces project, https://xerces.apache.org, and is
licensed under the Apache 2.0 license, https://www.apache.org/licenses/LICENSE-2.0.
MATLAB uses C++ comments in the PlatformUtils.hpp file.
/** @name Initialization and Panic methods */
//@{
/** Perform per-process parser initialization
*
* Initialization <b>must</b> be called first in any client code.
*
* @param locale The locale to use for messages.
*
* The locale is set if the Initialize() is invoked for the very first time,
* to ensure that each and every message loader, in the process space, share
* the same locale.
*
* All subsequent invocations of Initialize(), with a different locale, have
* no effect on the message loaders, either instantiated, or to be instantiated.
*
* To set to a different locale, client application needs to Terminate() (or
* multiple Terminate() in the case where multiple Initialize() have been invoked
* before), followed by Initialize(new_locale).
*
* The default locale is "en_US".
*
* @param nlsHome User specified location where MsgLoader retrieves error message files.
* the discussion above with regard to locale, applies to nlsHome as well.
*
* @param panicHandler Application's panic handler, application owns this handler.
* Application shall make sure that the plugged panic handler persists
* through the call to XMLPlatformUtils::Terminate().
*
* @param memoryManager Plugged-in memory manager which is owned by the
* application. Applications must make sure that the
* plugged-in memory manager persist through the call to
* XMLPlatformUtils::Terminate()
*/
static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale
, const char* const nlsHome = 0
, PanicHandler* const panicHandler = 0
, MemoryManager* const memoryManager = 0);
After building the interface in the example, display the MATLAB help for the Initialize method.
help clib.MyXercesLibrary.xercesc_3_1.XMLPlatformUtils.Initialize clib.MyXercesLibrary.xercesc_3_1.XMLPlatformUtils.Initialize Method of C++ class xercesc_3_1::XMLPlatformUtils.
Perform per-process parser initialization
This content is from the external library documentation.
Initialization <b>must</b> be called first in any client code.
Inputs
locale read-only string
locale The locale to use for messages.
nlsHome read-only string
nlsHome User specified location where MsgLoader retrieves error message files.
the discussion above with regard to locale, applies to nlsHome as well.
panicHandler clib.MyXercesLibrary.xercesc_3_1.PanicHandler
panicHandler Application's panic handler, application owns this handler.
Application shall make sure that the plugged panic handler persists
through the call to XMLPlatformUtils::Terminate().
memoryManager clib.MyXercesLibrary.xercesc_3_1.MemoryManager
memoryManager Plugged-in memory manager which is owned by the
application. Applications must make sure that the
plugged-in memory manager persist through the call to
XMLPlatformUtils::Terminate()
See Also
clibgen.generateLibraryDefinition | build