ACE Documentation Tools
This directory
contains versions of the freely available OSE tools used to generate the ACE
man
and HTML
documentation. These tools were originally written by Graham Dumpleton and later
modified by Karlheinz Dorn.
We are
very grateful to Graham and Karlheinz for these tools. You can obtain
the ACE documentation-generation tools in the ACE
release.
Modified Version of the OSE Documentation Tools
The primary goal of Karlheinz's modifications was to create a
class.hxx and class.cxx file (for each class,
struct, union included within the original ACE header file) from the
ACE *.h header files by collecting the comments from that file and
feeding them into the newly created files, but keeping the ACE *.h
file untouched.
This helps when making product documentation using commercial
documentation tools (e.g., George,
doc++,
etc.) by feeding in these newly created files with a customizable
layout. The modifications are an upgrade to the original OSE-tools,
but many bug-fixes are also done for the OSE-tool files (some are
listed below).
Incidentally, the classinfo tools in OSE have evolved independently
since the copies in ACE were made and they support new features not
supported in the ACE version of the tools. Certain subtle changes
were also made in the ACE copies for indicating sections,
etc., which makes them different from the OSE documentation.
For more information please contact Graham Dumpleton, who heads
the OSE project.
Karlheinz's extensions make it easy to include new ACE versions into
commercial documentations without doing any painful modifications of
the deltas within a frozen ACE-version or directly within ACE source
files when a new release arises.
The following changes were made to the original OSE tools:
- The vendor headers can be suppressed within the hiding.fmt file,
so it is possible to generate class.cxx and
class.hxx files consisting only of pure class description
(hxx) and pure prototypes (cxx). Look at the vendor.fmt file and
change the field vendor in replacing it with your company
identifying line.
- Added a new script class2hxxcxx for making a class.hxx file for each
class, struct, union included in an ACE *.h file as well as a *.cxx
file that includes the correct prototypes for all classes within that
*.h file.
- Added new script info2headsrc for creating a class.hxx file for each
class, struct, union included in an ACE *.h file as well as a class.cxx
file that includes the correct prototypes for that class.
- added a new script class2hxxcxxsingle for the feature listed above.
- added a new format file named "hiding.fmt" to control more fine grained output
of a class in separating/suppressing PUBLIC, PROTECTED, PRIVATE parts of a
class, struct, union for output explicitly.
- added a new format file named "vendor.fmt" to control vendor specific
compilation-unit headers as well as class and method headers for the newly
created class.hxx and class.cxx files. The information for these headers
is collected from the headers and comments of the according ACE *.h files.
- changed info2doc and info2src for the features listed above.
- added the ability for handling multiline ENUMs properly (class2info,info2doc).
- added the ability for handling operator functions properly (info2src).
- added the ability for handling template functions properly (info2src).
- added the ability for handling nested classes, structs, unions properly
by introducing gawk-function recursion within info2doc (class2info,
info2doc, info2src).
- added the ability for handling default values properly (info2src).
Known Bugs
Some bugs inherited from the original OSE-tools are remaining. So the
developer of the *.h files should the following keep in mind:
- do not write multiline inheritance!
INCORRECT:
class x :
public y
{
}
CORRECT:
class x : public y
{
}
- do not write multiline templates!
INCORRECT:
template <class t,
class>
class x
{
}
CORRECT:
template <class t, class u>
class x
{
}
Other documentation tools are available at the following URLs:
Back to the ACE home page.