Added gsdoc

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@6126 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2000-02-28 16:23:53 +00:00
parent 246656f800
commit 58a174bd62
9 changed files with 3123 additions and 0 deletions

View file

@ -1,3 +1,8 @@
Mon Feb 28 15:27:00 2000 Richard Frith-Macdonald <richard@brainstorm.co.uk>
Added GSDoc subdirectory to contain tool for converting gsdoc
documentation to HTML format.
Sun Feb 27 08:37:00 2000 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Headers/gnustep/base/NSPortMessage.m: use separate ivars for ports.

51
GSDoc/GNUmakefile Normal file
View file

@ -0,0 +1,51 @@
#
# Documentation tools makefile for GNUstep Base Library
# Copyright (C) 2000 Free Software Foundation, Inc.
#
# Written by: Richard Frith-Macdonald <richard@brainstorm.co.uk>
#
# This file is part of the GNUstep Base Library.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
# Install into the system root by default
GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_SYSTEM_ROOT)
GNUSTEP_MAKEFILES = $(GNUSTEP_SYSTEM_ROOT)/Makefiles
include $(GNUSTEP_MAKEFILES)/common.make
include ../Version
include ../config.mak
dtddir = $(GNUSTEP_RESOURCES)/DTDs
DTD_FILES = gsdoc-0_6_5.dtd
# The application to be compiled
TOOL_NAME = gsdoc
# The source files to be compiled
gsdoc_OBJC_FILES = gsdoc.m
DIST_FILES = GNUmakefile Makefile.preamble Makefile.postamble
-include Makefile.preamble
-include GNUmakefile.local
include $(GNUSTEP_MAKEFILES)/objc.make
include $(GNUSTEP_MAKEFILES)/tool.make
-include Makefile.postamble

97
GSDoc/GNUmakefile.local Normal file
View file

@ -0,0 +1,97 @@
#
# GNUmakefile.local for the GNUstep package
#
#
# Flags dealing with compiling and linking
#
TOPLEV = /var/data0/core
ifeq ($(BACK_PROJ),)
BACK_PROJ = xgps
endif
ifneq ($(EXTENSIONS_VERSION),)
_PKG = extensions
endif
ifneq ($(GNUSTEP_BASE_VERSION),)
_PKG = base
endif
ifneq ($(GNUSTEP_GUI_VERSION),)
_PKG = p_gui
endif
ifneq ($(GNUSTEP_XRAW_VERSION),)
_PKG = xraw
endif
ifneq ($(GNUSTEP_XDPS_VERSION),)
_PKG = xdps
endif
ifneq ($(GNUSTEP_XGPS_VERSION),)
_PKG = xgps
endif
ifneq ($(GDL_VERSION),)
_PKG = db
endif
ifeq ($(_PKG),)
_PKG = guile
endif
# Additional flags to pass to the C compiler
#ADDITIONAL_CFLAGS +=
# Additional LDFLAGS to pass to the linker
#ADDITIONAL_LDFLAGS +=
# Additional include directories the compiler should search
# Additional library directories the linker should search
ifeq ($(findstring $(_PKG), extensions p_gui $(BACK_PROJ) db guile),$(_PKG))
ifeq ($(FOUNDATION_LIB), gnu)
ADDITIONAL_INCLUDE_DIRS += -I$(TOPLEV)/base/Headers/gnustep \
-I$(TOPLEV)/base/Headers \
-I$(TOPLEV)/base/Source/$(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS)
ADDITIONAL_LIB_DIRS += -L$(TOPLEV)/base/Source/$(GNUSTEP_OBJ_DIR)
endif
ifeq ($(FOUNDATION_LIB), fd)
ADDITIONAL_INCLUDE_DIRS += -I$(TOPLEV)/libFoundation
ADDITIONAL_LIB_DIRS += \
-L$(TOPLEV)/libFoundation/Foundation/$(GNUSTEP_OBJ_DIR)
endif
endif
ifeq ($(findstring $(_PKG), p_gui $(BACK_PROJ) db guile),$(_PKG))
ADDITIONAL_INCLUDE_DIRS += -I$(TOPLEV)/extensions
ADDITIONAL_LIB_DIRS += -L$(TOPLEV)/extensions/extensions/$(GNUSTEP_OBJ_DIR)
endif
ifeq ($(findstring $(_PKG), $(BACK_PROJ) db guile),$(_PKG))
ADDITIONAL_INCLUDE_DIRS += -I$(TOPLEV)/gui/Headers
ADDITIONAL_LIB_DIRS += -L$(TOPLEV)/gui/Model/$(GNUSTEP_OBJ_DIR) \
-L$(TOPLEV)/gui/Source/$(GNUSTEP_OBJ_DIR)
endif
ifeq ($(findstring $(_PKG), p_gui guile),$(_PKG))
ADDITIONAL_INCLUDE_DIRS += -I$(TOPLEV)/$(BACKPROJ)/Headers
ADDITIONAL_LIB_DIRS += -L$(TOPLEV)/$(BACK_PROJ)/Source/$(GNUSTEP_OBJ_DIR)
endif
GNUSTEP_HEADERS_FND_FLAG =
GNUSTEP_HEADERS_GUI_FLAG =
GNUSTEP_HEADERS_TARGET_FLAG =
GNUSTEP_USER_HEADERS_FLAG =
GNUSTEP_LOCAL_HEADERS_FLAG =
# not used when building the core:
GNUSTEP_SYSTEM_HEADERS = /nowhere/Headers
GNUSTEP_USER_LIBRARIES_FLAG =
GNUSTEP_USER_TARGET_LIBRARIES_FLAG =
GNUSTEP_LOCAL_LIBRARIES_FLAG =
GNUSTEP_LOCAL_TARGET_LIBRARIES_FLAG =
# not used when building the core:
GNUSTEP_SYSTEM_LIBRARIES = /nowhere
GNUSTEP_SYSTEM_TARGET_LIBRARIES = /nowhere
ifeq ($(POSTGRES95_DATABASE),yes)
POSTGRES95_CFLAGS = -I/usr/include/postgresql
POSTGRES95_LDFLAGS = -lpq
ADDITIONAL_INCLUDE_DIRS += $(POSTGRES95_CFLAGS)
endif

58
GSDoc/Makefile.postamble Normal file
View file

@ -0,0 +1,58 @@
#
# Makefile.postamble
#
# Project specific makefile rules
#
# Uncomment the targets you want.
# The double colons (::) are important, do not make them single colons
# otherwise the normal makefile rules will not be performed.
#
# Things to do before compiling
# before-all::
# Things to do after compiling
# after-all::
# Things to do before installing
before-install::
$(MKDIRS) $(dtddir)
# Things to do after installing
after-install::
for file in $(DTD_FILES); do \
$(INSTALL_DATA) $$file $(dtddir)/$$file ; \
done
# Things to do before uninstalling
# before-uninstall::
# Things to do after uninstalling
# after-uninstall::
# Things to do before cleaning
# before-clean::
# Things to do after cleaning
# after-clean::
# Things to do before distcleaning
# before-distclean::
# Things to do after distcleaning
# after-distclean::
# Things to do before checking
# before-check::
# Things to do after checking
# after-check::
regenerate:
copy-dist: $(DIST_FILES)
mkdir ../snap/Tools
for f in $(DIST_FILES); do \
cp $$f ../snap/Tools ; \
done

64
GSDoc/Makefile.preamble Normal file
View file

@ -0,0 +1,64 @@
#
# Copyright (C) 2000 Free Software Foundation, Inc.
#
# Written by: Richard Frith-Macdonald <richard@brainstorm.co.uk>
#
# This file is part of the GNUstep Base Library.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
#
#
# Makefile.preamble
#
# Project specific makefile variables, and additional
#
# Do not put any Makefile rules in this file, instead they should
# be put into Makefile.postamble.
#
#
# Flags dealing with compiling and linking
#
# Additional flags to pass to the preprocessor
#ADDITIONAL_CPPFLAGS +=
# Additional flags to pass to the Objective-C compiler
#ADDITIONAL_OBJCFLAGS +=
# Additional flags to pass to the C compiler
#ADDITIONAL_CFLAGS +=
# Additional include directories the compiler should search
ADDITIONAL_INCLUDE_DIRS += -I/usr/include/gnome-xml \
-I../Headers/gnustep -I../Headers \
-I../Source/$(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS)
# Additional LDFLAGS to pass to the linker
#ADDITIONAL_LDFLAGS +=
# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS += -L../Source/$(GNUSTEP_OBJ_DIR)
# Additional libraries for XML parsing
ADDITIONAL_TOOL_LIBS += -lxml -lz
#
# Flags dealing with installing and uninstalling
#
# Additional directories to be created during installation
#ADDITIONAL_INSTALL_DIRS +=

34
GSDoc/README Normal file
View file

@ -0,0 +1,34 @@
28-Feb-2000
GSDoc should probably be part of the 'Tools' directory of gstep-base,
but it depends on a version of the nome XML parsing library this is
probably not available on most machines.
Before doing anything else - you need to install the Gnome xml parser library!
I build gsdoc using the latest CVS source of version 1.8.6 of the parser.
You can get this via CVS from -
cvs -d :pserver:anonymous@dev.w3.org:/sources/public login
Password - 'anonymous'
cvs -d :pserver:anonymous@dev.w3.org:/sources/public checkout XML
Older versions of the library may work - but I doubt it.
Newer versions may also fail - try using the -D 28-Feb-2000 flag with CVS
to get the version I used.
Once you have built and installed the xml parser library, you can build
gsdoc and install it.
Run gsdoc giving it the name of a gsdoc file as an argument, and it will
produce an html output file.
This is an alpha release of the software - please send fixes and improvements
to rfm@gnu.org
Volunteers to write gsdoc->info or gsdoc->TeX or any other translators are
very welcome.

408
GSDoc/gnustep.gsdoc Normal file
View file

@ -0,0 +1,408 @@
<?xml version="1.0"?>
<!DOCTYPE gsdoc PUBLIC "-//GNUstep//DTD gsdoc 0.6.5//EN" "http://www.gnustep.org/gsdoc-0_6_5.xml">
<gsdoc base="gnustep">
<head>
<title>GNUstep Time Zone Reference</title>
<author name="Yoo C. Chung">
<email address="wacko@laplace.snu.ac.kr"/>
<url url="http://plaza.snu.ac.kr/~wacko/"/>
<desc>
A person who has very little spare time, and spends it on
stuff like GNUstep, anime fanfics, and games.
</desc>
</author>
<author name="Skuld">
<email address="skuld@yggdrasil.heaven.org"/>
<url url="http://yggdrasil.heaven.org/skuld/"/>
<desc>
The goddess of the future, who will watch and guide me in my
hunt for bugs. May all bow before her divinity.
</desc>
</author>
<version>0.1</version>
<date>6 June, 1997</date>
<abstract>
This documents the interface to the time zone classes in the
GNUstep Base Library.
</abstract>
</head>
<body>
<front>
<contents/>
<chapter>
<heading>Preface</heading>
<p>
This documents the interface to the time zone classes.
These classes are needed for proper adjustment of the local
time in each geographical region.
</p>
<p>
This is also an example, as well as a test case, of the new
GNUstep Documentation Markup Language (GDML).
</p>
</chapter>
</front>
<chapter>
<heading>The Time Zone Management Classes</heading>
<p>
The classes <code>NSTimeZone</code> and <code>NSTimeZoneDetail</code>
are used to manage time zones. They are declared in
<file>Foundation/NSDate.h</file>.
</p>
<p>
<code>NSTimeZone</code> is used to specify the time zone region,
while <code>NSTimeZoneDetail</code> is used to actually obtain the
difference in seconds from UTC<footnote>Universal
Coordinated Time.</footnote> that a time zone has for a certain date.
</p>
<class name="NSTimeZone" super="NSObject">
<desc>
<p>
The world is divided into separate time zones because
the sun rises at different times. We really should all
move underground and match our clocks. However,
since this is currently not the case, our computers need
a way to find the offset from a single agreed upon time
and use that in local time calculations.
</p>
<p>
To make things even worse, there is this evil thing
called daylight saving time, which is usually used for
the purpose of utilizing as much of the sun as possible
while it is still up. (Really, everyone should stay in
their rooms and play with their computers, but for some
reason they don't &dots;)
</p>
<p>
Therefore we need an object that knows about a time zone
so that the appropriate object that knows all about
offsets from UTC and whether it's daylight saving time
for a certain date can be obtained. <code>NSTimeZone</code>
is a class that can create such objects.
</p>
</desc>
<method factory="yes" type="NSTimeZoneDetail*">
<sel>defaultTimeZone</sel>
<desc>
Returns the time zone detail (see <ref type="class"
id="NSTimeZoneDetail"/>) for the current time.
</desc>
</method>
<method factory="yes" type="NSTimeZone*">
<sel>localTimeZone</sel>
<desc>
Returns the time zone for the local region. The local
region is either specified with the <code>TZ</code>
environment variable, or is specified at compile time,
with the former taking precedence.
</desc>
</method>
<method factory="yes" type="NSTimeZone*">
<sel>timeZoneForSecondsFromGMT:</sel>
<arg type="int">seconds</arg>
<desc>
Returns a time zone which is always <var>seconds</var>
seconds off from UTC. (In OpenStep the offset is from
GMT<footnote>Greenwich Mean Time.</footnote>, but using UTC makes
more sense.)
</desc>
</method>
<method factory="yes" type="NSTimeZoneDetail*">
<sel>timeZoneWithAbbreviation:</sel>
<arg type="NSString*">abbreviation</arg>
<desc>
Returns a time zone detail for which the time zone
abbreviation is <var>abbreviation</var>. Note that there can
be many time zone details for a single abbreviation.
</desc>
</method>
<method factory="yes" type="NSTimeZone*">
<sel>timeZoneWithName:</sel>
<arg type="NSString*">aTimeZoneName</arg>
<desc>
Returns a time zone for the geographical region
specified by <var>aTimeZoneName</var>.
</desc>
</method>
<method type="NSTimeZoneDetail*">
<sel>timeZoneDetailForDate:</sel>
<arg type="NSDate*">date</arg>
<desc>
Returns the appropriate time zone detail for the time
zone and the given date <var>date</var>.
</desc>
</method>
<method factory="yes" type="void">
<sel>setDefaultTimeZone:</sel>
<arg type="NSTimeZone*">aTimeZone</arg>
<desc>
Set the default time zone used for time calculation to
the time zone specified by the string <var>aTimeZone</var>.
</desc>
</method>
<method factory="yes" type="NSDictionary*">
<sel>abbreviationDictionary</sel>
<desc>
Returns a dictionary that maps a time zone abbreviation
to a single arbitrary time zone name.
</desc>
</method>
<method factory="yes" type="NSDictionary*">
<sel>abbreviationMap</sel>
<desc>
<p>
Returns a dictionary that maps a time zone
abbreviation to an array that holds all the time zone
names that use the abbreviation.
</p>
<p>
This is a GNU extension, and is not defined by
OpenStep.
</p>
</desc>
</method>
<method type="NSString*">
<sel>timeZoneName</sel>
<desc>
Returns the name for the time zone.
</desc>
</method>
<method factory="yes" type="NSArray*">
<sel>timeZoneArray</sel>
<desc>
<p>
Returns an array containing 24 arrays that in turn
contain the time zone names that are grouped according
to the offset from UTC. For example, a time zone that
has an offset of 5 hours (or -19 hours) goes into the
fifth array in the array.
</p>
<p>
Note that OpenStep groups them by latitudinal region,
and the exact details of the grouping is not
specified.
</p>
</desc>
</method>
<method type="NSArray*">
<sel>timeZoneDetailArray</sel>
<desc>
This returns an array containing all the possible time
zone details for the time zone.
</desc>
</method>
<standard>OpenStep GNU</standard>
</class>
<class name="NSTimeZoneDetail" super="NSTimeZone">
<desc>
<p>
A time zone doesn't know the actual offset from UTC that
a certain region has, since the offset is not always the
same because of changes in time rules and such. Since
the details are different for different dates,
<code>NSTimeZone</code> must return an object that details the
time zone for a specific date. <code>NSTimeZoneDetail</code>
is the class for such objects.
</p>
<p>
It is from <code>NSTimeZoneDetail</code> that we obtain the
actual offsets from UTC. In addition, we can obtain the
time zone abbreviation (which is also dependent on the
date) and whether the time zone uses daylight saving
time for the date on which the time zone detail was
created.
</p>
</desc>
<method type="BOOL">
<sel>isDaylightSavingTimeZone</sel>
<desc>
If the time zone detail describes a time zone for which
the date the detail was created for is daylight saving
time, return <code>YES</code>, else return <code>NO</code>.
</desc>
</method>
<method type="NSString*">
<sel>timeZoneAbbreviation</sel>
<desc>
Returns the abbreviation for the time zone detail.
</desc>
</method>
<method type="int">
<sel>timeZoneSecondsFromGMT</sel>
<desc>
<p>
Returns the offset from UTC for local time in seconds.
</p>
<p>
Note that OpenStep specifies an offset from GMT to be
returned, but using UTC makes more sense.
</p>
</desc>
</method>
<standard>OpenStep GNU</standard>
</class>
</chapter>
<back>
<chapter>
<heading>Afterword</heading>
<p>
Hopefully, this document shows that GDML is indeed useful
for writing documentation for GNUstep.
</p>
<p>
Even if it is not, it should still be useful since it
documents the interface to the time zone classes, and should
easily be converted to other text markup formats.
</p>
<p>
Please send any questions about the DTD or this document to
<email address="wacko@laplace.snu.ac.kr"/>.
</p>
<p>
And by the way, I've tried out the time zone implementation
in the GNUstep Base Library and it seems to work for the
following time zone regions:
</p>
<list>
<item>Asia/Seoul</item>
<item>US/Eastern</item>
<item>America/Los_Angeles</item>
</list>
<p>
And here's a small incomplete class definition with somewhat
longer method names.
</p>
<class name="NSObject">
<conform>NSObject</conform>
<conform>NSCoding</conform>
<conform>NSCopying</conform>
<desc>
A superclass of all classes.
</desc>
<method>
<sel>perform:</sel>
<arg type="sel">aSelector </arg>
<sel>withObject:</sel>
<arg>object1</arg>
<sel>withObject:</sel>
<arg>object2</arg>
<desc>
This should really go into a protocol definition, but I
wanted to show a class definition with protocols.
</desc>
</method>
<method type="NSString*">
<sel>stringWithFormat:</sel>
<arg type="NSString*">format</arg>
<vararg/>
<desc>
This is not in <code>NSObject</code>, but I wanted to show the
use of a variable argument list.
</desc>
</method>
</class>
<p>
And here's an example:
</p>
<example>
int
function (void *ptr)
{
return realloc(ptr, 100);
}
</example>
<p>
And here is a macro definition:
</p>
<macro name="MAX">
<arg>a</arg>
<arg>b</arg>
<desc>
Return the larger between <var>a</var> and <var>b</var>.
</desc>
<standard>GNU</standard>
</macro>
<macro name="NS_DURING">
<desc>
Start an exception handling domain.
</desc>
</macro>
<p>
And here is a type definition:
</p>
<type name="NSTimeInterval">
<typespec>double</typespec>
<desc>
Used to save intervals between certain times in seconds.
</desc>
</type>
<p>
And here is a function definition:
</p>
<function name="NSZoneMalloc" type="void*">
<arg type="NSZone*">zone</arg>
<arg type="size_t">size</arg>
<desc>
Allocate <var>size</var> bytes from the dynamic memory
allocation zone <var>zone</var>.
</desc>
<standard>OpenStep GNU</standard>
</function>
</chapter>
<index type="class"/>
</back>
</body>
</gsdoc>

421
GSDoc/gsdoc-0_6_5.dtd Normal file
View file

@ -0,0 +1,421 @@
<!--
XML Document Type Definition for GNUstep Documentation Markup
Language (gsdoc).
Written by Richard Frith-Macdonald
Based on GDML by 1997 Yoo C. Chung
This is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.
This document is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General
Public License along with this software; if not, write to the
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
02139, USA.
-->
<!--
gsdoc is an XML language - Typical usage:
<?xml version="1.0"?>
<!DOCTYPE gsdoc PUBLIC "-//GNUstep//DTD gsdoc 0.6.5//EN"
"http://www.gnustep.org/gsdoc.xml">
<gsdoc base="myDocName">
</gsdoc>
-->
<!--***** Character entities. *****-->
<!-- General purpose characters for gsdoc. -->
<!ENTITY copy "&#38;copy;"> <!-- copyright symbol -->
<!ENTITY tm "&#38;trade;"> <!-- trademark symbol -->
<!ENTITY dots "&#38;dots;"> <!-- ellipsis (...) -->
<!ENTITY nbsp "&#38;nbsp;"> <!-- non breakable space -->
<!ENTITY amp "&#38;#38;"> <!-- ampersand -->
<!ENTITY apos "&#39;"> <!-- apos -->
<!ENTITY quot "&#34;"> <!-- quotation mark (") -->
<!ENTITY lt "&#38;#60;"> <!-- lesser than symbol -->
<!ENTITY gt "&#62;"> <!-- greater than symbol -->
<!--***** Entity declarations. *****-->
<!-- Boolean values for attributes -->
<!ENTITY % boolean "(yes|no)">
<!-- Entity for phrase elements. -->
<!ENTITY % phrase "var | em | code | strong | file | site">
<!-- Entity for cross references. -->
<!ENTITY % xref "ref | uref | url | email">
<!-- Entity for anchors. -->
<!ENTITY % anchor "label | entry">
<!-- Entity for text level elements. -->
<!ENTITY % text "#PCDATA | %xref; | %anchor; | %phrase; | footnote">
<!-- Entity for definition elements. -->
<!ENTITY % def "class|category|protocol|function|macro|type|variable">
<!-- Entity for list elements. -->
<!ENTITY % list "list | enum | deflist | qalist">
<!-- Entity for block elements like paragraphs. -->
<!ENTITY % block "%def; | %list; | p | example | embed">
<!--**********-->
<!-- Used for describing something. -->
<!ELEMENT desc (%text; | %list; | p | example | embed)*>
<!-- A footnote. -->
<!ELEMENT footnote (%text;)*>
<!--***** Phrase elements. *****-->
<!-- The content is a metasyntactic variable name. -->
<!ELEMENT var (%text;)*>
<!-- Emphasize the content. -->
<!ELEMENT em (%text;)*>
<!-- The content is too important that simple emphasizing isn't
enough. -->
<!ELEMENT strong (%text;)*>
<!-- The content is either a name for code (e.g. class names), or a
relatively short code fragment. -->
<!ELEMENT code (%text;)*>
<!-- The content is a file name. -->
<!ELEMENT file (#PCDATA)*>
<!-- The content is a fully qualified domain name on the Internet. -->
<!ELEMENT site (#PCDATA)*>
<!--***** List elements. *****-->
<!-- An item in a list. -->
<!ELEMENT item (%text; | %block;)*>
<!-- An enumerated list. -->
<!ELEMENT enum (item+)>
<!-- A ordinary, unnumbered list. -->
<!ELEMENT list (item+)>
<!-- A term to defined in a definition list. -->
<!ELEMENT term (%text;)*>
<!-- A definition list. -->
<!ELEMENT deflist (term, desc)+>
<!-- A question for a question and answer list. -->
<!ELEMENT question (%text;)*>
<!-- An answer for a question and answer list. -->
<!ELEMENT answer (%block;)*>
<!-- A question and answer list. -->
<!ELEMENT qalist (question, answer)+>
<!--**********-->
<!--***** Cross references. *****-->
<!-- A reference.
ID of the reference.
TYPE of reference, if implied, a reference to a label.
CLASS specific class for a method
-->
<!ELEMENT ref EMPTY>
<!ATTLIST ref
id CDATA #REQUIRED
type (class|protocol|method|function|type|macro|variable|label) "label"
class CDATA #IMPLIED
>
<!-- An e-mail address. -->
<!ELEMENT email EMPTY>
<!ATTLIST email
address CDATA #IMPLIED
>
<!-- A URL. -->
<!ELEMENT url EMPTY>
<!ATTLIST url
url CDATA #IMPLIED
>
<!-- A reference to a URL.
The text contained appears in the output unless
-->
<!ELEMENT uref (%text;)*>
<!ATTLIST uref
url CDATA #REQUIRED
>
<!--***** Anchors. *****-->
<!-- An anchor for a general reference.
The text contained appears in the ouput.
-->
<!ELEMENT label (%text;)*>
<!ATTLIST label
id CDATA #REQUIRED
>
<!-- An entry for the general index.
The text that is contained appears in the index, and never in
the text itself.
-->
<!ELEMENT entry (%text;)*>
<!ATTLIST entry
id CDATA #REQUIRED
>
<!--***** Argument elements. *****-->
<!-- An argument. -->
<!ELEMENT arg (#PCDATA)*>
<!ATTLIST arg
type CDATA #IMPLIED
>
<!-- Denotes that the rest of the arguments is a variable list,
like in printf().
-->
<!ELEMENT vararg EMPTY>
<!--***** Method elements. *****-->
<!-- A component for a method selector. -->
<!ELEMENT sel (#PCDATA)*>
<!-- A method. If there is no DESC, it is understood that the element
is used to override some information from the same method in the
superclass.
If factory not set, instance method
-->
<!ELEMENT method (((sel, arg?), (sel, arg)*, vararg?), desc?)>
<!ATTLIST method
type CDATA #IMPLIED
factory %boolean; "no"
init %boolean; "no"
override (subclass|never) #IMPLIED
role (alloc|init|dealloc|copy|mcopy) #IMPLIED
>
<!--***** Elements for definitions of classes, functions, etc. *****-->
<!-- A standard that something is compliant with. -->
<!ELEMENT standard (%text;)*>
<!-- Show what header file something lives in. -->
<!ELEMENT declared (#PCDATA)*>
<!-- A macro definition. -->
<!ELEMENT macro ((arg*, vararg?), declared?, desc?, standard*)>
<!ATTLIST macro
id CDATA #IMPLIED
name CDATA #REQUIRED
>
<!ELEMENT typespec (#PCDATA)*>
<!-- A type definition. -->
<!ELEMENT type (typespec, declared?, desc?, standard*)>
<!ATTLIST type
id CDATA #IMPLIED
name CDATA #REQUIRED
>
<!-- Variable definition.
VALUE may be set for a constant or a default value
-->
<!ELEMENT variable (declared?, desc?, standard*)>
<!ATTLIST variable
id CDATA #IMPLIED
name CDATA #REQUIRED
type CDATA #REQUIRED
value CDATA #IMPLIED
role (except|defaults|notify|key) #IMPLIED
>
<!-- A function definition. -->
<!ELEMENT function ((arg*, vararg?), declared?, desc?, standard*)>
<!ATTLIST function
id CDATA #IMPLIED
name CDATA #REQUIRED
type CDATA #REQUIRED
>
<!-- Protocol definition. -->
<!ELEMENT protocol (declared?, desc?, method*, standard*)>
<!ATTLIST protocol
id CDATA #IMPLIED
name CDATA #REQUIRED
>
<!-- Category definition. -->
<!ELEMENT category (declared?, desc?, method*, standard*)>
<!ATTLIST category
id CDATA #IMPLIED
name CDATA #REQUIRED
class CDATA #REQUIRED
>
<!-- Show a protocol a class conforms to. -->
<!ELEMENT conform (#PCDATA)*>
<!ELEMENT class (declared?, conform*, desc?, method*, standard*)>
<!ATTLIST class
id CDATA #IMPLIED
name CDATA #REQUIRED
super CDATA #IMPLIED
>
<!--***** Elements for ordinary block level elements. *****-->
<!-- A paragraph. -->
<!ELEMENT p (%text;)*>
<!-- An example. -->
<!ELEMENT example (#PCDATA)*>
<!ATTLIST example
id CDATA #IMPLIED
caption CDATA #IMPLIED
>
<!-- An embedded object. If it is of a type that the SGML processor
cannot handle, then use the content, which is ignored otherwise.
refer - method of referring to object (default is file)
src - the reference to the object
type - Internet media type of the objec
title - optional title describing object
-->
<!ELEMENT embed (%block;)*>
<!ATTLIST embed
id CDATA #IMPLIED
refer (file|url) #IMPLIED
src CDATA #REQUIRED
type CDATA #IMPLIED
title CDATA #IMPLIED
>
<!--***** Elements for document structure such as chapters. *****-->
<!-- A heading for chapters, sections, ... -->
<!ELEMENT heading (%text;)*>
<!-- A subsubsection. -->
<!ELEMENT subsubsect (heading, (%block;)*)>
<!ATTLIST subsubsect
id CDATA #IMPLIED
>
<!-- A subsection. -->
<!ELEMENT subsect (heading, (%block;)*, subsubsect*)>
<!ATTLIST subsect
id CDATA #IMPLIED
>
<!-- A section. -->
<!ELEMENT section (heading, (%block;)*, subsect*)>
<!ATTLIST section
id CDATA #IMPLIED
>
<!-- A chapter. -->
<!ELEMENT chapter (heading, (%block;)*, section*)>
<!ATTLIST chapter
id CDATA #IMPLIED
>
<!--***** Elements that make searching for things easier. *****-->
<!-- Table of contents. -->
<!ELEMENT contents EMPTY>
<!-- Index -->
<!ELEMENT index EMPTY>
<!ATTLIST index
type (class|protocol|method|function|type|macro|variable|label) "label"
>
<!--***** Elements that describe the document itself. *****-->
<!-- Copyright of the document. -->
<!ELEMENT copy (%text;)*>
<!-- An abstract. -->
<!ELEMENT abstract (%text;)*>
<!-- The version of the document. -->
<!ELEMENT version (%text;)*>
<!-- The date the document was written. -->
<!ELEMENT date (%text;)*>
<!-- An author. -->
<!ELEMENT author (email?, url?, desc?)>
<!ATTLIST author
name CDATA #REQUIRED
>
<!-- The title of the document. -->
<!ELEMENT title (%text;)*>
<!--***** The topmost structures for the document body. *****-->
<!-- Unnumbered parts appearing in the front, such as a preface. -->
<!ELEMENT front (contents?, chapter*)>
<!-- Unnumbered parts appearing in the back, such as an afterword or
indices.
-->
<!ELEMENT back (chapter*, index?)>
<!--***** The topmost structures for the document. *****-->
<!-- The head containing general information about the document. -->
<!ELEMENT head (title, author+, version?, date?, abstract?, copy?)>
<!-- The main part of the document. -->
<!ELEMENT body (front?, chapter+, back?)>
<!--**********-->
<!-- The entire document. -->
<!ELEMENT gsdoc (head, body)>
<!ATTLIST gsdoc
base CDATA #IMPLIED
next CDATA #IMPLIED
prev CDATA #IMPLIED
up CDATA #IMPLIED
>

1985
GSDoc/gsdoc.m Normal file

File diff suppressed because it is too large Load diff