; This file is a format file for the "autoduck" tool.
; Autoduck is an unsupported tool from the MS Developers Network CD's.
; It extracts marked up documentation in C source, and generates .hlp and .doc
; files.

; Following tags are used:
[constant]
.output=both
.define=MARK_HAMMOND,Mark Hammond (mhammond@skippinet.com.au)
.define=hang,\pard\plain \fi-1134\li1134\sa120\nowidctlpar\widctlpar\adjustright \fs22\cgrid


[extension]

; Filename extension types
; .ext=<extension_text>, c|asm|bas

.ext=cpp,c
.ext=h,c
.ext=d,c

[file]
; ********************************************
; Help file headers
; ********************************************
.output=help
.pre={\rtf1\ansi \deff0\deflang1024

{\fonttbl
{\f0\froman Times New Roman;}
{\f1\froman Symbol;}
{\f2\fswiss Arial;}
{\f3\froman Times Roman;}
{\f4\fnil Univers;}
{\f5\fnil Univers Medium Condensed;}
{\f6\fnil Univers Condensed;}
{\f7\fswiss LetterGothic;}
{\f8\fdecor ZapfDingbats;}
{\f9\fnil Lucida Stars;}
{\f10\fswiss Helvetica-Narrow;}
{\f11\fswiss CB Univers 67 CondensedBold;}
{\f12\froman Times;}
{\f13\fmodern Letter Gothic MS;}
{\f14\fswiss C Univers 57 Condensed;}
{\f15\fnil MSIcons;}
{\f16\fswiss Arial Narrow;}
{\f17\fmodern Courier;}
{\f18\fnil Wingdings;}
}

{\colortbl;
\red0\green0\blue0;
\red0\green0\blue255;
\red0\green255\blue255;
\red0\green255\blue0;
\red255\green0\blue255;
\red255\green0\blue0;
\red255\green255\blue0;
\red255\green255\blue255;
\red0\green0\blue127;
\red0\green127\blue127;
\red0\green127\blue0;
\red127\green0\blue127;
\red127\green0\blue0;
\red127\green127\blue0;
\red127\green127\blue127;
\red192\green192\blue192;
}

{\stylesheet
{$(header)header;}
{$(heading_4)heading 4;}
{$(heading_3)heading 3;}
{$(heading_2)heading 2;}
{$(heading_1)heading 1;}
{$(normal)Normal;}
{$(ex)Ex;}
{$(header_rule)header rule;}
{$(rh1)Rh1;}
{$(rmh)Rmh;}
{$(term1)Term1;}
{$(term2)Term2;}
{$(def1)Def1;}
{$(def2)Def2;}
{$(rule)Rule;}
{$(indexlink)Index Link;}
{$(table_text)Table Text;}
}

$(reset)$(heading_1)
$${\footnote $$ Contents}
+{\footnote + Contents:0000} 
$(title) Contents\par 

$(reset)$(normal)To display a list of topics by category, click any 
of the contents entries below. To display an alphabetical list of 
topics, choose the Index button.\par 

$(reset)$(heading_3)Python Objects\par 
$(reset)$(indexlink){\uldb Modules}{\v ctx_commod}\par 
$(reset)$(indexlink){\uldb Objects}{\v ctx_comobj}\par 
$(reset)\sl-240 \fs21\lang1033 \par 

$(reset)$(heading_3)Overviews and other documentation\par 
$[index:topic]
$(reset)$(indexlink){\uldb Constants}{\v ctx_constants}\par 
$(reset)\sl-240 \fs21\lang1033 \par 
$(reset)\sl-240 \fs21\lang1033 \par 
$(reset)$(normal)Help file built: $!d\par
$(reset)\sl-240 \fs21\lang1033 \par 
$(reset)$(normal)\fs16{\ul About this Help File}{\v abouthelp}\par 
\par 

\page 

$(reset)$(heading_3)
#{\footnote \pard\plain \f2\fs20 # abouthelp}
$${\footnote \pard\plain \f2\fs20 $$ About this Help File} About this Help File
\par \trowd \trgaph108\trleft-108 
\cellx5580 \pard\plain \li144\ri144\sa160\sl240\slmult0\intbl \f2\fs20 
The sources for this Help file were generated by Autoduck, the source 
code documentation tool that generates Print or Help files from tagged 
comments in C, C++, Assembly, and Basic source files.  This tool was once 
available on the Microsoft Developers Network CD's, and is now distributed 
in the BuidTools archive.\par 

Help files generated by $(MARK_HAMMOND).\cell \row 

\page 

$(reset)$(heading_1)
#{\footnote # ctx_commod}
$${\footnote $$ Contents: Modules}
+{\footnote + Contents:0000} 
Modules\par 

$[index:module]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_comobj}
$${\footnote $$ Contents: Objects}
+{\footnote + Contents:0000} 
Objects\par 

$[index:pyobject,object]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_commeth}
$${\footnote $$ Contents: Object and Module Methods}
+{\footnote + Contents:0000} 
Object and Module Methods\par 

$[index:method,pymethod,pyvirtual]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_comprop}
$${\footnote $$ Contents: Object and Module Properties}
+{\footnote + Contents:0000} 
Object and Module Properties\par 

$[index:property]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_comevent}
$${\footnote $$ Contents: Object Events}
+{\footnote + Contents:0000} 
Object Events\par 

$[index:event]
\page 

$(reset)$(heading_1)
#{\footnote # ctx_Classes}
$${\footnote $$ Contents: Classes and Class Members}
+{\footnote + Contents:0000} 
Classes and Class Members\par 

$[index:class,mfunc,mdata]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_Functions}
$${\footnote $$ Contents: Functions}
+{\footnote + Contents:0000} 
Functions\par 

$[index:func,cb]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_Messages}
$${\footnote $$ Contents: Messages}
+{\footnote + Contents:0000} 
Messages\par 

$[index:msg]

\par \page 

$(reset)$(heading_1)
#{\footnote # ctx_Types}
$${\footnote $$ Contents: Structures and Enums}
+{\footnote + Contents:0000} 
Structures and Enums\par 

$[index:struct,enum]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_overviews}
$${\footnote $$ Contents: Overviews}
+{\footnote + Contents:0000} 
Overviews\par 

$[index:topic]

\page 

$(reset)$(heading_1)
#{\footnote # ctx_constants}
$${\footnote $$ Contents: Constants}
+{\footnote + Contents:0000} 
Constants\par 

$[index:const]

\page 

.post=}

[text]
; Reference to a virtual

.tag=vm, help, 2
.format={\uldb $1.$2}{\v #1__#2_virtual} virtual method
;.if=exists($1__$2_virtual)

;.tag=vm, help, 2
;.format={\b $1::$2} virtual method

; default: both fields, 
; example: <ov IFoo.Bar> output with "IFoo.Bar" in bold
; Leave it commented - generates an error, which is better then
; bolding.
;.tag=vm, both, 2
;.format={\b $1::$2} virtual method


;-------------------------------------------
; Topics
;-------------------------------------------
[topic]
; ***********************************************************
; Overview Topics
; ***********************************************************

.tag=topic, doc, 2, 5, $1
.pre=\pard\plain $(heading_1)$1\par 
\pard\plain $(normal)$2\par 

.tag=topic, help, 2, 5, $1
.pre=\page \pard\plain $(heading_1)
##{\footnote ## #1}
$${\footnote $$ $1}
K{\footnote K $1}
+{\footnote + overviews:0000} 
$1\par 
\pard\plain $(normal)$2\par 

;
; ***********************************************************
; Contents topics
; ***********************************************************

.tag=Contents1, doc, 2, 0, __aaa$1
.pre=$(reset)$(heading_1)$1\par 
$(reset)$(indexlink)$2\par 

.tag=contents1, help, 2, 0, __aaa$1
.pre=\pard\plain $(heading_1)
##{\footnote ## #1}
$${\footnote $$ $1}
K{\footnote K $1}
+{\footnote + Contents:0000} 
$1\par 
$(reset)$(indexlink)$2\par 

.tag=Contents2, doc, 2, 0, _aaa$1
.pre=$(reset)$(heading_1)$1\par 
$(reset)$(indexlink)$2\par 

.tag=contents2, help, 2, 0, _aaa$1
.pre=\page $(reset)$(heading_1)
##{\footnote ## #1}
$${\footnote $$ $1}
K{\footnote K $1}
+{\footnote + Contents:0000} 
$1\par 
$(reset)$(indexlink)$2\par 

.tag=module, help, 2, 20, $1
.pre=\page 
##{\footnote ## #1}
$${\footnote $$ $1}
K{\footnote K Python modules; modules; $1}
+{\footnote + Python:0000} 
$(reset)$(heading_1)$1 Module\par
$(reset)$(normal)$2\par 

.tag=object, help, 2, 20, $1
.pre=\page 
##{\footnote ## #1}
$${\footnote $$ $1}
K{\footnote K Python objects; objects; $1}
+{\footnote + Python:0000} 
$(reset)$(heading_1)$1 Object\par
$(reset)$(normal)$2\par 

.tag=pymethod, both, 4, 1, $2.$3
.context=$2::$3_meth
.order=pyparm pyparmalt1 pyparmalt2 pyparmalt3 rvalue comm ex xref pyseemfc pyseeapi pyundocmfc
.pre=\page 
##{\footnote ## #2__#3_meth}
$${\footnote $$ $2::$3}
K{\footnote K Object Methods; methods; $3; $2 object}
+{\footnote + OM:0000} 
$(reset)$(heading_1){\uldb $2}{\v #2}.$3\par
$[pymethod]
$(reset)$(normal)$4\par 

.tag=pyvirtual, both, 4, 1, $2.$3
.context=$2::$3_virtual
.order=pyparm pyparmalt1 pyparmalt2 pyparmalt3 rvalue comm ex xref pyseemfc pyseeapi pyundocmfc
.pre=\page 
##{\footnote ## #2__#3_virtual}
$${\footnote $$ $2::$3 virtual}
K{\footnote K object virtuals; virtuals; $3; $2 object}
+{\footnote + OM:0000} 
$(reset)$(heading_1)$3 ({\uldb $2}{\v #2} Virtual)\par
$[pyvirtual]
$(reset)$(normal)$4\par 

; Constants

.tag=const, doc, 3, 30, $2
.parsesource=constant
.pre=$(reset)$(rule)\par 
$(reset)$(heading_1)$2 constant\par 
$(reset)$(normal){\b const $1.$2;}\par 
$(reset)$(normal)$3\par 

.tag=const, help, 3, 30, $2
.parsesource=constant
.pre=\page $(reset)$(heading_1)
##{\footnote ## #2}
$${\footnote $$ $2}
K{\footnote K constants; $2}
+{\footnote + constants:0000} 
$2 constant\par 
$(reset)$(normal){\b const $1.$2;}\par 
$(reset)$(normal)$3\par 

.tag=property, help, 4, 20, $2.$3
.context=$2::$3_prop
.pre=\page 
##{\footnote ## $!c}
$${\footnote $$ $!n Property}
K{\footnote K object properties; properties; $2 object; $3}
+{\footnote + OLE:0000} 
$(reset)$(heading_1){\uldb $2}{\v #2}.$3\par 
$(reset)$(rmh)Data Type\par 
$(reset)$(normal){\b $1}\par 
$(reset)$(rmh)Description\par 
$(reset)$(normal)$4\par 


;-------------------------------------------
; Paragraphs
;-------------------------------------------
[paragraph]

; Parameters
.tag=pymeth, both, 2, 2
.if=exists($object.1)
.pre=$(reset)$(rmh)Methods\par 
.format=$(reset)$(term1){\uldb $1}{\v #object.1__#1_meth}\par
$(reset)$(def1)$2\par

.tag=pymeth, both, 2, 2
.if=exists($module.1)
.pre=$(reset)$(rmh)Methods\par 
.format=$(reset)$(term1){\uldb $1}{\v #module.1__#1_meth}\par
$(reset)$(def1)$2\par

; Parameters
.tag=pymethod, both, 4, 1
.format=$(reset)$(term1){\i $1 $2::$3}\par 
$(reset)$(def1)$2 $4\par

; tuple item
; @tupleitem tuple_index|name|type|description
.tag=tupleitem, both, 4, 1
.pre=$(reset)$(rmh)Items\par 
.format=$(reset)$(term1)[$1] {\i $2} : $3\par
$(reset)$(def1)$4\par 

; flags
.tag=flagh, both, 2, 2
.format=$(reset)\trowd \trgaph72\trleft-72 \cellx3078\cellx7038 
\intbl$(table_text){\b\fs18 $1\cell $2\cell }\pard \intbl \row 

.tag=flag, both, 2, 2
.format=$(reset)\intbl$(table_text){\fs18 $1\cell $2\cell }\par \intbl \row 
.post=$(reset)\li240\sa0\sl240 \f2\fs20\lang1033 \par 


; used to specify base classes for Python objects
; in an "@object" topic we actually show the base class.

.tag=base, help, 2, 1
.pre=$(reset)$(rmh)Based On\par 
;;;;;;.format=$(reset)$(normal){\uldb $2}{\v $2_int}\par 
.format=$(reset)$(normal){\uldb $2}{\v $2}\par 
;.if=exists($2_int), tagexists(object)

;.tag=base, both, 2, 1
;.pre=$(reset)$(rmh)Based On\par 
;.format=$(reset)$(normal){\b $2}\par 
;.if=tagexists(object)


; Parameters
.tag=pyvirtual, both, 4, 1
.format=$(reset)$(term1){\i $1 $2::$3}\par 
$(reset)$(def1)$2 $4\par

.tag=pyparm, both, 4, 1
.pre=$(reset)$(rmh)Parameters\par 
.format=$(reset)$(term1){\i $2} : $1\par
$(reset)$(def1)$4\par 
.if=fieldempty(3)

.tag=pyparm, both, 4, 1
.pre=$(reset)$(rmh)Parameters\par 
.format=$(reset)$(term1){\i $2=$3} : $1\par
$(reset)$(def1)$4\par 

.tag=pyparmalt1, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2=$3}\par 
$(reset)$(def1)$4\par 
.if=exists($3)

.tag=pyparmalt1, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2}\par 
$(reset)$(def1)$4\par 

.tag=pyparmalt2, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2=$3}\par 
$(reset)$(def1)$4\par 
.if=exists($3)

.tag=pyparmalt2, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2}\par 
$(reset)$(def1)$4\par 

.tag=pyparmalt3, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2=$3}\par 
$(reset)$(def1)$4\par 
.if=exists($3)

.tag=pyparmalt3, both, 4, 1
.pre=$(reset)$(rmh)Alternative Parameters\par 
.format=$(reset)$(term1){\i $2}\par 
$(reset)$(def1)$4\par 

.tag=pyseemfc, both, 2, 1
.pre=$(reset)$(rmh)MFC References\par 
.format=$(reset)$(term1){$1::$2}\par 

.tag=pyseeapi, both, 1, 1
.pre=$(reset)$(rmh)Win32 API References\par 
.format=$(reset)$(term1){$1}\par 

.tag=pyundocmfc, both, 2, 1
.pre=$(reset)$(rmh)Undocumented MFC References\par 
.format=$(reset)$(term1){$1::$2}\par 

.tag=xref, both, 1, 1
.pre=$(reset)$(rmh)See Also\par 
.format=$(reset)$(term1){$1}\par 

;Properties
;link type and name

.tag=prop, help, 3, 1
.pre=$(reset)$(rmh)Properties\par 
.format=$(reset)$(term1){\uldb $1}{\v #1} {\uldb $2}{\v #object.1__#2_prop}\par 
$(reset)$(def1)$3\par 
.if=exists($1),exists($object.1::$2_prop)

;link name only

.tag=prop, help, 3, 1
.pre=$(reset)$(rmh)Properties\par 
.format=$(reset)$(term1){\b $1} {\uldb $2}{\v #object.1__#2_prop}\par 
$(reset)$(def1)$3\par 
.if=exists($object.1::$2_prop)

; link type only

.tag=prop, help, 3, 1
.pre=$(reset)$(rmh)Properties\par 
.format=$(reset)$(term1){\uldb $1}{\v #1} {\b $2}\par 
$(reset)$(def1)$3\par 
.if=exists($1)

;-------------------------------------------
; Diagrams
;-------------------------------------------
[diagram]
; **** Python Method ********

.tag=pymethod, both, pyparm
.pre=\pard \plain $(normal){\b $3( }
.post={\b )}\par
.formatfirst={\i $2 }
.format={\i, $2 }
.if=fieldempty(1)

.tag=pymethod, both, pyparm
.pre=\pard \plain $(normal)$1 = {\b $3( }
.post={\b )}\par
.formatfirst={\i $2}
.format={\i, $2 }

.tag=pyvirtual, both, pyparm
.pre=\pard \plain $(normal){\b $3( }
.post={\b )}\par
.formatfirst={\i $2 }
.format={\i, $2 }


