gmplgmniUtilityStatement

gmniUtility Statements Summary

gmniUtility statements are made accessible to command scripts via a gmNI event. See the discussion under gmNI Command for information on implementing gmniUtility statements. This page describes those available in gmBasic. Using a gmniUtility statement is exactly like using any one of the other utility statements with one additional step, the Runtime Dll that implements the statement has to be loaded using LoadRuntime statement.

AuditReferences gmniUtility Statement Summary

AuditReferences is a utility statement implemented by the ReferencesAudit runtime Dll. The compiler after it processes a subprogram, a property method, or an ASP page, scans the intermediate code produced and produces a sorted symbol reference list. For each symbol reference in the intermediate code the following six fields are saved:

Field Description of content
MAKES_REF The root offset of the subprogram, method, or page containing the reference to a symbol.
BEING_REFD The root offset of the symbol being referenced. This is the field upon which the reference list is sorted.
REC_NUMBER The text record number in the text buffer of the source statement that produced the reference. These text buffers are retained in the storage files produced by translation scripts. If the text buffer was edited via Fix statements then it is the edited version that is saved.
CODE_OFFSET The relative offset in the intermediate code of the actual symbol reference.
HOST_FILE The root offset of the information file containing the MAKES_REF code unit. This is the parent class, form, module, or page file.
TERMINAL If the reference to the symbol was terminal then True (1), else False (0). In a source code context an identifier like namespace.class.symbol has a terminal reference to symbol and nonterminal references to namespace and class. All three are retained.

This list is then used by the analyser to aid in its type inference decisions and in particular to trace argument values through subprogram calls. The AuditReferences report is a listing of the terminal references in this list.

The attributes of the AuditReferences statement are as follows:

Attribute Description
Storage This attribute specifies the full pathname of the storage file whose symbol references are to be audited.

The following command script produced this references report from the first VB6 project in the FMSTOCKS sample code.


   <gmBasic>
      <LoadRuntime dllName="ReferencesAudit.dll" />
      <Output filename="c:\gmBasic\AuditReferences.html" syntax="Html" />
      <AuditReferences Storage="fmstock1.vbi" />
   </gmBasic>
Note the use of Html syntax for the output file. This causes gmBasic to use Html annotations to write the table.

The columns in the report are as follows:

Column Description of content
Type If the MAKES_REF component is a control, then the type is GUI else the type is REF.
Member Name This is the identifier of the BEING_REFD symbol. Normally, this is simply the identifier associated with the symbol when it was initially stored in the symbol table. The special case has to do with properties that can have the Let, Get, and Set methods associated with then. When one of these methods is identified, it must be combined with the identifier of its parent property.
Member Class This is the class name of the BEING_REFD symbol. For symbols within library description files this is the name of the class or enumeration that contains the component. If the symbol is a variable, subprogram, constant, property, or enumeration, then this is the name associated with the code file that contains it. For higher level symbols within projects, this is the name of the project. For higher symbols in libraries, it is the library name.
Member Library This is the library name of the BEING_REFD symbol. For symbols within library description files this is the name of the library. For symbols within VB6 projects this is the name of the project. For any other symbols this is simply the identifier of the highest symbol in the tree above it but below the root.
Member Type This is the object type name of the BEING_REFD symbol. This is either an entry ObjectType enumeration in the language file, or a library reference type name, or a Basic built in class name, or the fully qualified identifier of the control if it is an external control class.
Loc Line If available, this is the line number in the source file of the reference.
Loc Text If available, this is the actual source statement that made the reference.
Loc Member This is the identifier of the MAKES_REF symbol. Normally, this is simply the identifier associated with the symbol when it was initially stored in the symbol table. The special case has to do with properties that can have the Let, Get, and Set methods associated with then. When one of these methods is identified, it must be combined with the identifier of its parent property.
Loc Path This is the pathname of the HOST_FILE component. For components within library description files the pathname is the hintpath of the library containing the component. For components within VB6 projects, this is the identifier of the file that contains the component. If no pathname can be found then it is simply blank.
Loc Name This is the class name of the MAKES_REF symbol. For symbols within library description files this is the name of the class or enumeration that contains the component. If the symbol is a variable, subprogram, constant, property, or enumeration, then this is the name associated with the code file that contains it. For higher level symbols within projects, this is the name of the project. For higher symbols in libraries, it is the library name.
Loc Type This is the file extension of the HOST_FILE component. For components within library description files it is the extension on the hintpath of the library containing the component. For components within VB6 projects, this is the extension the file that contains the component. If no extension can be found then it is simply blank.


AuditDefinitions gmniUtility Statement Summary

AuditDefinitions is a utility statement implemented by the ReferencesAudit runtime Dll. It uses the same sorted symbol reference list as is used by the AuditReferences statement, but in a very different way. Its purpose is to detect how often user code symbols are used and in particular which user symbols are never used. The AuditDefinitions report is driven by a full traversal of the symbol table, though only source code symbols are included in the report. For each symbol, the symbol reference list is used to count its terminal references. This count along with the information about the symbol are then reported.

The attributes of the AuditDefinitions statement are as follows:

Attribute Description
Storage This attribute specifies the full pathname of the storage file whose symbol definitions are to be audited.

The following command script produced this definitions report from the first VB6 project in the FMSTOCKS sample code.


   <gmBasic>
      <LoadRuntime dllName="ReferencesAudit.dll" />
      <Output filename="c:\gmBasic\AuditDefinitions.html" syntax="Html" />
      <AuditDefinitions Storage="fmstock1.vbi" />
   </gmBasic>
Note the use of Html syntax for the output file. This causes gmBasic to use Html annotations to write the table.

The columns in the report are as follows:

Column Description of content
Type This is DEF:n where n is the nesting level of the symbol in the symbol table.
Member Name This is the identifier of the symbol. Normally, this is simply the identifier associated with the symbol when it was initially stored in the symbol table. The special case has to do with properties that can have the Let, Get, and Set methods associated with then. When one of these methods is identified, it must be combined with the identifier of its parent property.
Member Class This is the class name of the symbol. For symbols within library description files this is the name of the class or enumeration that contains the component. If the symbol is a variable, subprogram, constant, property, or enumeration, then this is the name associated with the code file that contains it. For higher level symbols within projects, this is the name of the project. For higher symbols in libraries, it is the library name.
Member Library This is the library name of the symbol. For symbols within library description files this is the name of the library. For symbols within VB6 projects this is the name of the project. For any other symbols this is simply the identifier of the highest symbol in the tree above it but below the root.
Member Type This is the object type name of the symbol. This is either an entry ObjectType enumeration in the language file, or a library reference type name, or a Basic built in class name, or the fully qualified identifier of the control if it is an external control class.
Num Refer This is the number of terminal references to the symbol. It may be zero.
Loc Text This is a declaration of the symbol. For variables, subprograms, property methods, and constants it is the Context flags associated with the symbol, followed by the symbol type, and the local identifier. For subprograms this is followed by a list of the argument types and calling status. For non quantity symbols it is simply the identifier.
Loc Path This is the pathname of the symbol. For components within library description files the pathname is the hintpath of the library containing the component. For components within VB6 projects, this is the identifier of the file that contains the component. If no pathname can be found then it is simply blank.
Loc Name This is the library name of the symbol. For symbols within library description files this is the name of the library. For symbols within VB6 projects this is the name of the project. For any other symbols this is simply the identifier of the highest symbol in the tree above it but below the root.
Loc Type This is the file extension of the symbol. For components within library description files it is the extension on the hintpath of the library containing the component. For components within VB6 projects, this is the extension the file that contains the component. If no extension can be found then it is simply blank.


AuditExternals gmniUtility Statement Summary

AuditExternals is a utility statement implemented by the ReferencesAudit runtime Dll. It produces the same report format as the AuditReferences report, but only shows components in external libraries. Most importantly, the sorted references list is produced from the analysed code and not the simple compiled code and the range of application is greatly expanded. In addition to subprograms, property methods, and pages, the code in constants, enumeration entry values, and controls. is also searched. The report also includes the specific COM events that have event handlers in a given compilation unit. Finally, the references themselves are expanded to include things like sysRS!PropertyName = "Node Count" as a field reference; default item methods in collection classes when the code simply shows an COL.Item reference; and references to components in the MigrationSupport library that were hiding under operations codes.

The attributes of the AuditExternals statement are as follows:

Attribute Description
Storage This attribute specifies the full pathname of the storage file whose external symbol references are to be audited.

The following command script produced this externals report from the first VB6 project in the FMSTOCKS sample code.


   <gmBasic>
      <LoadRuntime dllName="ReferencesAudit.dll" />
      <Output filename="c:\gmBasic\AuditExternals.html" syntax="Html" />
      <AuditExternals Storage="fmstock1.vbi" />
   </gmBasic>
Note the use of Html syntax for the output file. This causes gmBasic to use Html annotations to write the table.

See the description of AuditReferences for a description of the content of the columns.

Document gmniUtility Statement Summary

The users of the Promula tools and the system that underlies them need to know exactly what technology is included and how that technology can be used. This question can be answered explicitly by giving a complete specification of the code base that incorporates that technology and a complete specification of the tool and its user language. The problem is that the these are all extendable by the user; therefore, the documentation must also be extendable by the user. In addition users will be adding their own packages to the user environment and these packages must be documented as well.

Once defined, the documentation specification is authored into an HTML form that can be viewed using a browser. The actual view consists of tabs across the top of the screen. Each tab has a set of pages that are listed in the left column of the screen. Each page can have a set of topics that are listed under a Table of Contents at the top in the right column of the screen. Finally, each topic can have a set of subtopics associated with it that are listed at the bottom of the text for the topic.

This topic describes the use of the documentation capability and the code base that implements it.

Documentation Commands

There are seven commands processed within a documentation specification:

Command Description of use
Documentation Identifies and begins a set of documents
Document Identifies and describes a document within the set
Page Identifies and describes a page within a document
Topic Identifies and describes a topic within a page
Code Identifies and loads source code documentation within a page
Subtopic Identifies and describes a subtopic within a topic
Content Contains the text content of a topic or subtopic

Once defined, the documentation specification is authored into an HTML form.

Documentation Command

The Documentation command begins the specification of a documentation set. It is recognized by the main entry point of the Document tool itself. All other commands within this set are only recognized by the documentation command processor.

The attributes of the Documentation command are as follows:

Attribute Description
id The identifier of the symbol used to contain this documentation. It is required. It is stored at the primary index level in the user storage area and must be unique relative to any other symbols stored at that level.
filename This is the name of the file that is to receive the authored HTML documented. Note that this is a bundled file, as are most output files produced by this tool set. If no output filename is specified, then the HTML is written to the standard output file.

The following shows the script file that created an early version of this documentation set.


 <Documentation id="pBasic" filename="docum.bnd"/>
    <Include Filename="Introduction.xml"/>
    <Include Filename="CommandLine.xml"/>
    <Include Filename="Configuration.xml"/>
    <Include Filename="Prototypes.xml"/>
    <Include Filename="Runtime.xml"/>
    <Include Filename="lpslib.xml" />
    <Include Filename="imslib.xml" />
 </Documentation>

To review topics discussed elsewhere as well, the initial tag Documentation is accepted by the main entry point of the Document capability. It identifies the overall purpose of this specification file. Obviously, the closing tag must match it. Also all the included files must also use the same initial and closing tag. This ties these files together and reduces the likelihood that one of the included files might be used in the wrong context.

This file is processed in the same manner as any other "XML script". Below is the listing of the "make.bat" file in the "source" subdirectory of the documentation being viewed that processes the above.


  del *.bnd
  CodeDoc pBasic.xml site=c:\gmTools\site

The "docum.bnd" file, specified on the Documentation command, contains the individual html files making up the authored documentation in bundled form. Note that the site= command-line switch specifies the pathname to which the actual documentation will be deployed. Thus, the first few cat commands in this file look as follows.


 cat >c:\gmTools\Site\pBasic.html <<'!)(!'
 cat >c:\gmTools\Site\border_left.html <<'!)(!'
 cat >c:\gmTools\Site\Introduction_Header.html <<'!)(!'

The unbundling or "deployment" of the documentation is performed by the deployment tool. In this case the actual tool invocation would be as follows.


 deploy docum.bnd REPLACE

The above is the listing of the "makesite.bat" file in the source subdirectory of the documentation being viewed. ubtopic>

btopic title="Document Command"> ntent> The <b>Document</b> command is by far the most complex command within the documentation specification. The attributes of this command are as follows: <p/><table> <tr><td><b>Attribute </b></td><td><b>Description</b> </td></tr><tr><td>id </td><td>The identifier of the symbol used to contain this document </td></tr><tr><td>label </td><td>The label to be used in the main tab that accesses this document </td></tr><tr><td>title </td><td>The title of the document to be used in the head section of html pages created for this document </td></tr><tr><td>tooltip </td><td>The tooltip to be shown when the tag for this document is addressed by the mouse. </td></tr><tr><td>href </td><td>The html filename for the frameset "index" file which begins the display of this document. </td></tr><tr><td>header </td><td>The html filename for the header tab display that is used when this document is active. </td></tr><tr><td>body </td><td>The html filename of the initial content to be displayed when this document is activated. </td></tr><tr><td>navigation </td><td>The html filename of the navigation file displayed on the left side that allows the pages within the document to be selected and viewed. </td></tr><tr><td>type </td><td>The type of the navigation selection entries to be used. </td></tr><tr><td>width, height </td><td>The height and width of the navigation selection entries. </td></tr><tr><td>styleSheet </td><td>The filename of the styleSheet to be used with the html pages within this document. </td></tr></table><br/>To make this discussion a bit simpler below is the actual <b>document</b> command which introduced this document. <p/> </p><ac:macro ac:name="code"><ac:parameter ac:name="language">none</ac:parameter><ac:parameter ac:name="theme">Eclipse</ac:parameter><ac:parameter ac:name="linenumbers">true</ac:parameter><ac:plain-text-body><![CDATA[ <Document id="document" label="Documentation" title="Deployimng Documentation" tooltip="Description of Documentation Production" href="Document_Index.html" header="Document_Header.html" body="Document_Body.html" navigation="Document_Navigation.html" type="buttons" height="36" width="120" stylesheet="promula.css" >

To begin, notice that the colored tab of the current display is "Documentation" which is the label specified above. The labels on the other tabs are the labels of the other documents in this set. The order of the tabs is the order in which the documents were defined within the documentation. The browser reports the filename being viewed as "Document_Index.html" which is the href attribute above. Placing the mouse over the Document tab displays the tooltip "Description of Documentation Production" which is the tooltip. The left side of the display contains a series of "buttons" which are 36 pixels high. The left side display overall is 120 pixels wide -- all as specified above. The actual button labels are obtained from the page commands that are contained within this document. They are described below.

In general, documentation is viewed as a two-dimensional display, where the documents make up the first dimension across the top and the pages within the document make up the second dimension down the left side.

As with the Documentation command note that documents themselves contain no explicit content. They are organizational units.

In addition to the navigation type buttons there is the navigation type anchors. This type simply uses simple strings that can be selected. It is used when there are a large number of pages within a given document. ubtopic>

btopic title="Page Command"> ntent> The <b>Page</b> command is the final organizational command within the documentation specification. The attributes of this command are as follows: <p/><table> <tr><td><b>Attribute </b></td><td><b>Description</b> </td></tr><tr><td>label </td><td>The label of the page as displayed in the left side navigation buttons or entries. </td></tr><tr><td>href </td><td>The html filename of the file containing the content of the topics introduced within this page. </td></tr></table><br/>The page labels are displayed in the navigation column in the order in which they are defined. By convention the <b>href</b> of the first page should be the same as the <b>body</b> specified by the parent document. </content> ubtopic> <p/> btopic title="Topic Command"> ntent><![CDATA[ The <b>Topic</b> command is the primary command for entering content into the documentation specification. The attributes of this command are as follows: <p/><table> <tr><td><b>Attribute </b></td><td><b>Description</b> </td></tr><tr><td>title </td><td>Specifies the title for the topic which precedes it as a label and which is used to form a link at the top of the page. </td></tr><tr><td>name </td><td>Specifies a name for the topic. This attribute is currently deprecated. </td></tr><tr><td>anchor </td><td>An alternative identifier to be used in forming link references to this topic on the page. </td></tr></table><br/>Within the topic the actual content is entered via a <b>content</b> command. The topic may also contain subtopics, it more that one content is to be associated with the topic. These are entered with the <b>subtopic</b> command. </content> ubtopic> <p/> btopic title="Subtopic Command"> ntent><![CDATA[ The <b>Subtopic</b> command is the secondary command for entering content into the documentation specification. It allows multiple content blocks to be associated with a topic. The attributes of this command are as follows: <p/><table> <tr><td><b>Attribute </b></td><td><b>Description</b> </td></tr><tr><td>title </td><td>Specifies the title for the subtopic which precedes it as a label and which is used to form a link at the bottom of the content display of the containing content. </td></tr></table><br/>Within the subtopic the actual content is entered via a <b>content</b> command. </content> ubtopic> <p/> btopic title="Code Command"> ntent><![CDATA[ The <b>Code</b> command enters one or more topics into the document. The content of these topics is taken from the documentation embedded within external source files. Its attribute is as follows: <p/><table> <tr><td><b>Attribute </b></td><td><b>Description</b> </td></tr><tr><td>dir </td><td>Specifies the path containing the referenced source files. </td></tr></table><br/>As an example of this the first block below enters all of the documentation in the files listed in the \gmTools\codedoc subdirectory that pertain to the documentation capability. <p/> </p><ac:macro ac:name="code"><ac:parameter ac:name="language">none</ac:parameter><ac:parameter ac:name="theme">Eclipse</ac:parameter><ac:parameter ac:name="linenumbers">true</ac:parameter><ac:plain-text-body><![CDATA[ <code dir="\gmTools\codedoc"> authordocumentation.c authorhtmlsource.c ... </code>

There is no limit on the number of source code files that may be included in a give Code command.

Though they vary somewhat depending upon the implementation language each source code entry-point description contains the following parts:

  1. Title -- Short description
  2. Synopsis
  3. Description of Service
  4. Properties of Service
  5. Return Value of Service
Generally each entry-point is assumed to provide some service to the user. Each does something. The arguments that must be provided by the caller of the service ascribe properties to that service. Within the functional view taken here, services have properties just like objects.

The title part gives a brief description of what the entry-point is. These title sections also appear in the table of contents. Hopefully, the descriptions are sufficiently clear that a developer looking for some capability can at least find possible candidates by browsing the table of contents.

The synopsis part shows exactly how the entry-point is called -- it's type it's argument types, and what include files or packages are needed to validate its reference. This part also has a brief description of each argument. This is also the only part of the entry-point description that is language specific.

The description part attempts to explain exactly what service the entry-point provides. These can be very long or can be very short, when the service performed is obvious from its short description. In general, each description is made as complete as possible with as little cross-referencing as possible. Again the assumption is made that this documentation is primarily intended for reference. It is not the great American novel.

The properties part describes exactly what characteristics each entry-point argument has with relation to the service being performed. These descriptions are made as complete as necessary and are made as implementation language independent as possible. Ideally, all language specific information about the entry-point is restricted to the synopsis but we can do no better than to strive towards ideals.

Finally, the return part describes what values, if any, are returned to the caller by the entry-point as a result of performing the service.

These entry-point descriptions are bound by /doc/ **** records. ubtopic>

btopic title="Content Command"> ntent> his command has no attributes. It contains text with optional marginal nnotations. Each line of the text is simply entered from the margin to the nd of the record. The margin annotation itself is the record associated nformation. Note the width of the margin is always the number of blanks t the front of the first record. If there are no blanks then there are no argin annotations for the text. Text is stored as a starting record number nd a record count. <p/> he two margin characters that are recognized are '|' and '/'. The bar indicates hat the lines are to be entered into the HTML page exactly as they are ntered in a fixed font. The slash when associated with a line forces a line reak. <p/> n addition to annotations, text is also searched for lines ending in a colon. uch lines are assumed to introduce lists of some sort that receive special TML tags to make them standout. There are four types -- Ordered_text, able_list, unordered_list, and unordered text. <p/> rdered_text is initiated when the first line non-blank line following a line nding in a colon begins with a numeric character. The entries may have ultiple lines which are identified via a secondary margin. <p/> able_list is initiated when the second line after a line ending in a colon tarts with a minus sign. The entries may have multiple lines which are dentified via a secondary margin. <p/> Unordered_list is initiated after a line ending in a colon and neither of the above criteria are met and there are no blank lines in the list range. <p/> Unordered_text is initiated after a line ending in a colon and none of the above apply. </content> ubtopic> btopic title="Tool specific Processing"> ntent><![CDATA[ hough the documentation capability uses the text processing and information torage services of <b>IMSLIB</b>, the tool itself contains the logic needed o load the documentation structures into the current storage area, to rocess the documentation embedded in the source codes files, and to produce he terminal level Html for the text components when the documentation is uthored. </content> ubtopic> btopic title="Documentation Storage Structures Used"> ntent> re are four structures used by the documentation component: <p/><table> <tr><td><b>ame </b></td><td><b>Description of use</b> </td></tr><tr><td>Document </td><td>Describes a document within the documentation </td></tr><tr><td>DocPage </td><td>Controls a set of topics or a set of documents </td></tr><tr><td>DocTopic </td><td>Contains the actual text on some topic </td></tr><tr><td>DocCode </td><td>Contains code documentation taken from code comments </td></tr></table><br/> tDocument and tDocPage structures are navigational. They contain information ut how the documentation should be identified, organized, and formatted. They tain no actual textual content. <p/> tDocTopic structure and tDocCode which extends it contain the actual content the documentation. This content can be a main topic, a subtopic, or derived e documentation. <br/> <H2>The tDocument Structure</H2> The <b>tDocument</b> structure retains the information supplied by the <b>Document</b> command. The tDocument symbols in the storage area are classified by the <b>id</b> attribute of the command. The remaining properties correspond on a one-to-one basis with the other command attributes. The properties are as follows: <p/><table> <tr><td><b>Property </b></td><td><b>Description</b> </td></tr><tr><td>label </td><td>This integer property contains the offset in storage of the label to be used in the main tab that accesses this document </td></tr><tr><td>title </td><td>This integer property contains the offset in storage </td></tr><tr><td>title </td><td>of the title of the document to be used in the head section of html pages created for this document </td></tr><tr><td>styleSheet </td><td>This integer property contains the offset in storage of the filename of the styleSheet to be used with the html pages within this document </td></tr><tr><td>tooltip </td><td>This integer property contains the offset in storage of the tooltip to be shown when the tag for this document is addressed by the mouse. </td></tr><tr><td>href </td><td>This integer property contains the offset in storage of the html filename for the frameset "index" file which begins the display of this document. </td></tr><tr><td>header </td><td>This integer property contains the offset in storage of the html filename for the header tab display that is used when this document is active. </td></tr><tr><td>body </td><td>This integer property contains the offset in storage of the html filename of the initial content to be displayed when this document is activated. </td></tr><tr><td>navigation </td><td>This integer property contains the offset in storage of the html filename of the navigation file displayed on the left side that allows the pages within the document to be selected and viewed. </td></tr><tr><td>type </td><td>This integer property contains a code indicating the type of display to be used for the navigation page -- anchor string (1) or buttons (2). </td></tr><tr><td>width </td><td>This integer property contains the width in pixels to be allowed for the navigation page. </td></tr><tr><td>height </td><td>This integer property contains the height in pixels to be allowed for any buttons on the navigation page. </td></tr></table><br/>The child structures of the <b>tDocument</b> structure are all <b>tDocPage</b> structures. <br/> <H2>The tDocPage Structure</H2> The <b>tDocPage</b> structure forms the navigational glue around which content is eventually presented in a structured way. This structure is used both as the single parent of the <b>tDocument</b> structures and as their children. Its single property is as follows: <p/><table> <tr><td><b>Property </b></td><td><b>Description</b> </td></tr><tr><td>href </td><td>This integer property contains the offset in storage of the html filename of the file containing the content of the topics introduced within this page. </td></tr></table><br/>The child structures of the <b>tDocPage</b> structure are all <b>tDocTopic</b> structures. <br/> <H2>The tDocTopic Structure</H2> The <b>tDocTopic</b> structure is used to contain the content to be shown. It is created by the <b>Topic</b>, <b>Subtopic</b>, and <b>Code</b> commands. Its properties as are follows: <p/><table> <tr><td><b>Property </b></td><td><b>Description</b> </td></tr><tr><td>content </td><td>This integer property contains the root address of the variable information stream containing the actual content records. </td></tr><tr><td>refType </td><td>This integer property contains a code indicating the type of the content -- topic (1), subtopic (2), or code documentation (3). </td></tr><tr><td>anchor </td><td>This integer property contains the offset in storage of the anchor string to be used in authoring on-page subtopic links. </td></tr><tr><td>name </td><td>This integer property contains the offset in storage of a name to be associated with the topic text. </td></tr></table><br/>The child structures of the <b>tDocTopic</b> structure are all <b>tDocTopic</b> structures containing subtopics. <br/> <H2>The tCodeDoc Structure</H2> The <b>tCodeDoc</b> structure extends the <b>tDocTopic</b> structure to partition the text content it its logical parts. Its additional properties are all line numbers or counts within the text content as follows: <p/><table> <tr><td><b>Property </b></td><td><b>Description</b> </td></tr><tr><td>includename </td><td>Include name </td></tr><tr><td>includedesc </td><td>Include description </td></tr><tr><td>servtype </td><td>Record number of service return type </td></tr><tr><td>nProperty </td><td>Number of service properties </td></tr><tr><td>proptype[DOC_MAX_PROP] </td><td>Record number property type description </td></tr><tr><td>propname[DOC_MAX_PROP] </td><td>Record number of property name </td></tr><tr><td>proplabel[DOC_MAX_PROP] </td><td>Record number of property label </td></tr><tr><td>description </td><td>Record number of description of service </td></tr><tr><td>nDescription </td><td>Number of lines in description </td></tr><tr><td>propdesc[DOC_MAX_PROP] </td><td>Record number of property description </td></tr><tr><td>nPropdesc[DOC_MAX_PROP] </td><td>Number of lines of property description </td></tr><tr><td>returnvalue; </td><td>Record number, return value description </td></tr><tr><td>nReturnvalue; </td><td>Number lines, return value description </td></tr></table><br/><br/> </body> </div></div><div class="cell aside"><div class="innerCell"><ac:macro ac:name="panel"><ac:parameter ac:name="bgColor">CCFFFF</ac:parameter><ac:parameter ac:name="title">Table of Contents</ac:parameter><ac:rich-text-body><p><ac:macro ac:name="toc" /></p></ac:rich-text-body></ac:macro></div></div></div></div> </html>