Provided by: gnustep-base-runtime_1.24.7-1build2_amd64 bug

NAME

       autogsdoc - GNUstep API documentation generator and XML->HTML converter

SYNOPSIS

       autogsdoc  [-Files  filename]  [-GenerateHtml  YES|no]  [-Clean  yes|NO]  [-CleanTemplates
       yes|NO] [-IgnoreDependencies yes|NO] [-MakeDependencies yes|NO] [-ShowDependencies yes|NO]
       [-HeaderDirectory  path]  [-DocumentationDirectory  path]  [-Declared  location] [-Project
       title]       [-Standards       yes|NO]       [-DocumentAllInstanceVariables        yes|NO]
       [-DocumentInstanceVariables  YES|no]  [-InstanceVariablesAtEnd yes|NO] [-ConstantsTemplate
       filename]  [-FunctionsTemplate  filename]  [-MacrosTemplate  filename]  [-TypedefsTemplate
       filename]  [-VariablesTemplate  filename] [-SystemProjects string] [-LocalProjects string]
       [-Projects dictString] [-Verbose yes|NO] [-Warn yes|NO] [-WordMap dictString] [files]

DESCRIPTION

       The autogsdoc tool is a command-line  utility  that  helps  developers  produce  reference
       documentation  for  GNUstep  APIs.  It also enables developers to write and maintain other
       documentation in XML and have it converted to HTML.  In detail, autogsdoc will:

       - Extract special comments  describing  the  public  interfaces  of  classes,  categories,
         protocols,  functions,  and  macros  from  Objective  C  source  code  (header files and
         optionally source files) into GSDoc XML files.

       - Convert GSDoc XML files, whether generated from  source  code  or  written  manually  by
         developers, into HTML.

       - Construct indices based on GSDoc XML file sets, and convert those to HTML as well.

       The  most  common  usage  this is to run the command with one or more header file names as
       arguments ... the tool will automatically parse corresponding source  files  in  the  same
       directory  as  the headers (or the current directory, or the directory specified using the
       DocumentationDirectory default), and produce GSDoc and HTML files  as  output.   For  best
       results  this  mode  should  be run from the directory containing the source files.  (Note
       that since C is a subset of Objective C, this tool can operate to document  functions  and
       other C structures in plain C source.)

       GSDoc files may also be given directly in addition or by themselves, and will be converted
       to HTML.  See the GSDoc HTML documentation or the gsdoc(7) man page for information on the
       GSDoc format.

       Finally,  HTML files may be given on the command line.  Cross-references to other parts of
       code documentation found within them will be rewritten based  on  what  is  found  in  the
       project currently.

SOURCE CODE MARKUP

       The  source  code parser will automatically produce GSDoc documents listing the methods in
       the classes found in the source files, and it will include text from  specially  formatted
       comments from the source files.

       Any comment beginning with slash and two asterisks rather than the common slash and single
       asterisk, is taken to be GSDoc markup, to be use as the description of the class or method
       following it.  This comment text is reformatted and then inserted into the output.
       Where multiple comments are associated with the same item, they are joined together with a
       line break (<br/>) between each if necessary.

       The tool can easily be used to document programs as well as libraries, simply by giving it
       the  name  of the source file containing the main() function of the program - it takes the
       special comments from that function and  handles  them  specially,  inserting  them  as  a
       section  at  the end of the first chapter of the document (it creates the first chapter if
       necessary).

       Options are described in the section Arguments and Defaults below.

EXTRA MARKUP

       There are some cases where special extra processing is  performed,  predominantly  in  the
       first  comment  found in the source file, from which various chunks of GSDoc markup may be
       extracted and placed into appropriate locations in the output document -

       AutogsdocSource:
           In any line where AutogsdocSource: is found, the remainder of the line is taken  as  a
           source  file  name  to  be  used  instead  of  making the assumption that each .h file
           processed uses a .m file of the same name.  You may supply  multiple  AutogsdocSource:
           lines  where  a header file declares items which are defined in multiple source files.
           If a file name is absolute, it is used just as supplied. If on the other hand, it is a
           relative  path,  the software looks for the source file first relative to the location
           of the header file, and if not found there, relative to the current directory in which
           autogsdoc  is  running,  and  finally  relative  to  the  directory  specified  by the
           DocumentationDirectory default.

       <abstract>
           An abstract of the content of the document ... placed in the head of the GSDoc output.

       <author>
           A description of the author of the code - may be repeated to handle the case  where  a
           document  has multiple authors.  Placed in the head of the GSDoc output.  As an aid to
           readability of the source, some special additional processing is performed related  to
           the  document  author  -  Any line of the form 'Author: name <email-address>', or 'By:
           name <email-address>', or  'Author:  name'  or  'By:  name'  will  be  recognised  and
           converted to an author element, possibly containing an email element.

       <back>
           Placed  in the GSDoc output just before the end of the body of the document - intended
           to be used for appendices, index etc..

       <chapter>
           Placed immediately before any generated class documentation ...  intended to  be  used
           to  provide  overall  description  of  how  the  code  being  documented  works.   Any
           documentation for the main() function of a program is inserted as a section at the end
           of this chapter.

       <copy>
           Copyright  of  the content of the document ... placed in the head of the GSDoc output.
           As an aid to  readability  of  the  source,  some  special  additional  processing  is
           performed - Any line of the form 'Copyright (C) text' will be recognised and converted
           to a copy element.

       <date>
           Date of the revision of the document ... placed in the head of the GSDoc  output.   If
           this  is  omitted  the  tool  will  try to construct a value from the RCS Date tag (if
           available).

       <front>
           Inserted into the document at the start of  the  body  ...  intended  to  provide  for
           introduction or contents pages etc.

       <title>
           Title  of the document ... placed in the head of the GSDoc output.  If this is omitted
           the tool will generate a (probably poor) title of its own - so you should include this
           markup manually.

       <version>
           Version  identifier  of  the  document ... placed in the head of the GSDoc output.  If
           this is omitted the tool will try to construct a value from the RCS Revision  tag  (if
           available).

       NB The markup just described may be used within class, category, or protocol documentation
       ... if so, it is extracted and wrapped round the rest of the documentation for  the  class
       as  the  class's chapter.  The rest of the class documentation is normally inserted at the
       end of the chapter, but may instead be substituted in  in  place  of  the  <unit>  pseudo-
       element within the <chapter> element.

METHOD MARKUP

       In  comments  being used to provide text for a method description, the following markup is
       removed from the text and handled specially -

       <init>
           The method is marked as being the designated initialiser for the class.

       <override-subclass>
           The method is marked as being one which subclasses must  override  (e.g.  an  abstract
           method).

       <override-never>
           The method is marked as being one which subclasses should NOT override.

       <standards>
           The  markup  is removed from the description and placed after it in the GSDoc output -
           so that the method is described as conforming (or not  conforming)  to  the  specified
           standards.

AUTOMATED MARKUP

       Generally, the text in comments is reformatted to standardise and indent it nicely ... the
       reformatting is not performed on any text inside an <example> element.  When the  text  is
       reformatted,  it  is  broken into whitespace separated “words” which are then subjected to
       some extra processing ...

           Certain well known constants such as YES, NO, and  nil  are  enclosed  in  <code>  ...
           </code> markup.

           The  names  of  method  arguments within method descriptions are enclosed in <var> ...
           </var> markup.

           Method names (beginning with a plus or minus) are  enclosed  in  <ref...>  ...  </ref>
           markup.   E.g.  "-init"  (without  the  quotes)  would be wrapped in a GSDoc reference
           element to point to the init method of the current class or, if only one  known  class
           had  an  init  method, it would refer to the method of that class.  Note the fact that
           the method name must be surrounded by whitespace to be  recognized  (though  a  comma,
           fullstop, or semicolon at the end of the specifier will act like whitespace).

           Method  specifiers  including  class names (beginning and ending with square brackets)
           are enclosed in <ref...> ... </ref> markup.  e.g.  '[NSObject-init]',  will  create  a
           reference  to  the  init  method  of  NSObject (either the class proper, or any of its
           categories), while '[(NSCopying)-copyWithZone:]', creates a reference to a  method  in
           the  NSCopying  protocol.  Note that no spaces must appear between the square brackets
           in these specifiers.  Protocol names are enclosed in round brackets  rather  than  the
           customary  angle  brackets,  because  GSDoc  is  an XML language, and XML treats angle
           brackets specially.

           Function names (ending with '()') other than 'main()' are  enclosed  in  <ref...>  ...
           </ref>  markup.   E.g.  "NSLogv()"  (without  the  quotes) would be wrapped in a GSDoc
           reference element to point to the documentation of the NSLog function.  Note the  fact
           that  the function name must be surrounded by whitespace (though a comma, fullstop, or
           semicolon at the end of the specifier will also act as a whitespace terminator).

ARGUMENTS AND DEFAULTS

       The tool accepts certain user defaults (which can of course be  supplied  as  command-line
       arguments by prepending '-' before the default name and giving the value afterwards, as in
       -Clean YES):

       Clean
           If this boolean value is set to YES, then rather than  generating  documentation,  the
           tool  removes  all  GSDoc files generated in the project, and all html files generated
           from them  (as  well  as  any  which  would  be  generated  from  GSDoc  files  listed
           explicitly),  and  finally removes the project index file.  The only exception to this
           is that template GSDoc files (i.e. those  specified  using  "-ConstantsTemplate  ...",
           "-FunctionsTemplate  ..."   arguments  etc)  are not deleted unless the CleanTemplates
           flag is set.

       CleanTemplates
           This flag specifies whether template GSDoc files are to be removed  along  with  other
           files  when  the Clean option is specified.  The default is for them not to be removed
           ... since these templates may have been produced manually and just had  data  inserted
           into them.

       ConstantsTemplate
           Specify  the  name  of  a  template  document into which documentation about constants
           should be inserted from all files in the project.  This is useful if constants in  the
           source  code  are  scattered  around  many  files, and you need to group them into one
           place.  You are responsible for ensuring that the basic template document (into  which
           individual  constant documentation is inserted) contains all the other information you
           want, but as a convenience autogsdoc will generate a simple template  (which  you  may
           then  edit)  for  you  if  the file does not exist.  Insertion takes place immediately
           before the back element (or if that does not exist, immediately before the end of  the
           body element) in the template.

       Declared
           Specify  where  headers are to be documented as being found.  The actual name produced
           in the documentation is formed by appending the last component of the header file name
           to  the value of this default.  If this default is not specified, the full name of the
           header file (as supplied on  the  command  line),  with  the  HeaderDirectory  default
           prepended,  is  used.   A typical usage of this might be '"-Declared Foundation"' when
           generating documentation for the GNUstep base  library.   This  would  result  in  the
           documentation saying that NSString is declared in 'Foundation/NSString.h'

       DocumentAllInstanceVariables
           This flag permits you to generate documentation for all instance variables.  Normally,
           only those explicitly declared 'public' or 'protected' will be documented.

       DocumentInstanceVariables
           This flag permits you to turn off documentation  for  instance  variables  completely.
           Normally,  explicitly  declared  'public'  or  'protected'  instance variables will be
           documented.

       InstanceVariablesAtEnd
           This flag, if set, directs the HTML generator to place instance variable documentation
           at the end of the class, instead of the beginning.  This is useful if you use a lot of
           protected instance variables which are only going  to  be  of  secondary  interest  to
           general users of the class.

       DocumentationDirectory
           May be used to specify the directory in which generated documentation is to be placed.
           If this is not set, output is placed in the current directory.  This directory is also
           used  as  a last resort to locate source files (not headers), and more importantly, it
           is used as the first and only resort to locate any .gsdoc files that are passed in  on
           the  command line.  Any path information given for these files is removed and they are
           searched  for  in  'DocumentationDirectory'  (even  though  they  may  not  have  been
           autogenerated).

       Files
           Specifies  the name of a file containing a list of file names as a property list array
           (name1,name2,...)  format.  If this is present, filenames in the program argument list
           are ignored and the names in this file are used as the list of names to process.

       FunctionsTemplate
           Specify  the  name  of  a  template  document into which documentation about functions
           should be inserted from all files in the project.  This is useful if  function  source
           code is scattered around many files, and you need to group it into one place.  You are
           responsible for ensuring that the  basic  template  document  (into  which  individual
           function  documentation  is inserted) contains all the other information you want, but
           as a convenience autogsdoc will generate a simple template (which you may  then  edit)
           for you if the file does not exist.  Insertion takes place immediately before the back
           element (or if that does not exist, immediately before the end of the body element) in
           the template.

       GenerateHtml
           May be used to specify if HTML output is to be generated.  Defaults to YES.

       HeaderDirectory
           May  be used to specify the directory to be searched for header files.  When supplied,
           this value is prepended to relative header names, otherwise the relative header  names
           are interpreted relative to the current directory.  Header files specified as absolute
           paths are not influenced by this default.

       IgnoreDependencies
           A boolean value which may be used to specify  that  the  program  should  ignore  file
           modification  times and regenerate files anyway.  Provided for use in conjunction with
           the 'make' system, which is expected to manage dependency checking itsself.

       LocalProjects
           This value is used to control the automatic inclusion of local external projects  into
           the  indexing  system for generation of cross-references in final document output.  If
           set to 'None', then no local project  references  are  done,  otherwise,  the  'Local'
           GNUstep  documentation  directory  is  recursively searched for files with a '.igsdoc'
           extension, and the indexing information from those files is used.  The value  of  this
           string  is  also used to generate the filenames in the cross reference ... if it is an
           empty string, the path to use is assumed to be a file in the same directory where  the
           igsdoc file was found, otherwise it is used as a prefix to the name in the index.  NB.
           Local projects with the same name as the project currently being documented  will  not
           be  included  by this mechanism.  If you wish to include such projects, you must do so
           explicitly using -Projects ...

       MacrosTemplate
           Specify the name of a template document into which documentation about  macros  should
           be  inserted from all files in the project.  This is useful if macro code is scattered
           around many files, and you need to group it into one place.  You are  responsible  for
           ensuring  that  the basic template document (into which individual macro documentation
           is inserted) contains all the  other  information  you  want,  but  as  a  convenience
           autogsdoc  will  generate  a  simple template (which you may then edit) for you if the
           file does not exist.  Insertion takes place immediately before the back element (or if
           that does not exist, immediately before the end of the body
            element) in the template.

       MakeDependencies
           A  filename  to be used to output dependency information for make.  This will take the
           form of listing all header and source files known for the project as  dependencies  of
           the project name (see 'Project').

       Project
           May  be  used to specify the name of this project ... determines the name of the index
           reference file produced as part of the documentation to provide  information  enabling
           other projects to cross-reference to items in this project.

       Projects
           This  value  may  be  supplied  as  a  dictionary  containing  the paths to the igsdoc
           index/reference files used by external projects, along with values to be used  to  map
           the  filenames  found  in  the indexes.  For example, if a project index (igsdoc) file
           says that the class 'Foo' is found in the file 'Foo', and  the  path  associated  with
           that  project index is '/usr/share/doc/proj', Then generated html output may reference
           the class as being in '/usr/share/doc/prj/Foo.html' .  Note that a dictionary  may  be
           given  on  the  command  line  by  using the standard PropertyList format (not the XML
           format of OS X), using semicolons as  line-separators,  and  enclosing  it  in  single
           quotes.

       ShowDependencies
           A  boolean  value which may be used to specify that the program should log which files
           are being regenerated because of their dependencies on other files.

       Standards
           A boolean value used to specify whether the program should  insert  information  about
           standards   complience  into  the  documentation.   This  should  only  be  used  when
           documenting the GNUstep libraries and tools themselves as it  assumes  that  the  code
           being  documented  is part of GNUstep and possibly complies with the OpenStep standard
           or implements MacOS-X compatible methods.

       SystemProjects
           This value is used to control the automatic inclusion of system external projects into
           the  indexing  system for generation of cross-references in final document output.  If
           set to 'None', then no system project references are  done,  otherwise,  the  'System'
           GNUstep  documentation  directory  is  recursively searched for files with a '.igsdoc'
           extension, and the indexing information from those files is used.  The value  of  this
           string  is  also used to generate the filenames in the cross reference ... if it is an
           empty string, the path to use is assumed to be a file in the same directory where  the
           igsdoc file was found, otherwise it is used as a prefix to the name in the index.  NB.
           System projects with the same name as the project currently being documented will  not
           be  included  by this mechanism.  If you wish to include such projects, you must do so
           explicitly using -Projects ...

       TypedefsTemplate
           Specify the name of a template document into which documentation about typedefs should
           be  inserted  from all files in the project.  This is useful if typedef source code is
           scattered around many files, and you need  to  group  it  into  one  place.   You  are
           responsible  for  ensuring  that  the  basic  template document (into which individual
           typedef documentation is inserted) contains all the other information you want, but as
           a  convenience autogsdoc will generate a simple template (which you may then edit) for
           you if the file does not exist.  Insertion takes place  immediately  before  the  back
           element (or if that does not exist, immediately before the end of the body element) in
           the template.

       Up  A string used to supply the name to be used in the  'up'  link  from  generated  GSDoc
           documents.   This should normally be the name of a file which contains an index of the
           contents of a project.  If this is missing or set to an empty  string,  then  no  'up'
           link will be provided in the documents.

       VariablesTemplate
           Specify  the  name  of  a  template  document into which documentation about variables
           should be inserted from all files in the project.  This is useful if  variable  source
           code is scattered around many files, and you need to group it into one place.  You are
           responsible for ensuring that the  basic  template  document  (into  which  individual
           variable  documentation  is inserted) contains all the other information you want, but
           as a convenience autogsdoc will generate a simple template (which you may  then  edit)
           for you if the file does not exist.  Insertion takes place immediately before the back
           element (or if that does not exist, immediately before the end of the body element) in
           the template.

       Verbose
           A  boolean  used  to  specify  whether  you  want  verbose  debug/warning output to be
           produced.

       Warn
           A boolean used to specify whether you want standard warning  output  (e.g.  report  of
           undocumented methods) produced.

       WordMap
           This  value is a dictionary used to map identifiers/keywords found in the source files
           to other words.  Generally you will not have to use this, but it is sometimes  helpful
           to  avoid  the  parser  being  confused  by the use of C preprocessor macros.  You can
           effectively redefine the macro to something less confusing.  The  value  you  map  the
           identifier  to  must  be  one  of - Another identifier, An empty string - the value is
           ignored, Two slashes ('//') - the rest of the line is ignored.  Note that a dictionary
           may  be  given  on the command line by using the standard PropertyList format (not the
           XML format of OS X), using semicolons as line-separators, and enclosing it  in  single
           quotes.

INTER-DOCUMENT LINKAGE

       The  'Up'  default  is  used to specify the name of a document which should be used as the
       'up' link for any other documents used. This name must not include a  path  or  extension.
       Generally, the document referred to by this default should be a hand-edited GSDoc document
       which should have a <em>back</em> section containing a project index. e.g.

       <?xml version="1.0"?>
       <!DOCTYPE gsdoc PUBLIC "-//GNUstep//DTD gsdoc 1.0.3//EN"
                               "http://www.gnustep.org/gsdoc-1_0_3.xml">
       <gsdoc base="index">
         <head>
           <title>My project reference</title>
           <author name="my name"></author>
         </head>
         <body>
           <chapter>
             <heading>My project reference</heading>
           </chapter>
           <back>
             <index scope="project" type="title" />
           </back>
         </body>
       </gsdoc>

FILES

       Source: .h, .m, .c
       GSDoc:  .gsdoc
       Index:  .igsdoc
       HTML:   .html

BUGS

       Several GSDoc elements are not rendered properly into  HTML  yet.   These  are:  <prjref>,
       <EOEntity>, <EOModel>.

DIAGNOSTICS

       Error  messages  and  warnings can come from each of the stages of the pipeline: top-level
       control, source parsing, GSDoc parsing, and indexing.

SEE ALSO

       gsdoc(7), GNUstep(7)

HISTORY

       Autogsdoc combined the capabilities of two earlier tools,  'autodoc'  and  'gsdoc',  which
       performed  the  source->GSDoc  and  GSDoc->HTML  translations respectively.  These earlier
       tools and the GSDoc format were developed for GNUstep  based  on  the  earlier  GDML  SGML
       language.

       This manual page first appeared in gnustep-base 1.9.2 (March 2004).

AUTHORS

       autogsdoc was written by Richard Frith-Macdonald <rfm@gnu.org>

       This manual page added by Adrian Robert <arobert@cogsci.ucsd.edu>.