Removing the old doc stuff

svn path=/trunk/gtk-sharp/; revision=11503
This commit is contained in:
Duncan Mak 2003-02-12 01:50:42 +00:00
parent 23747622f0
commit a5f48e2588
14 changed files with 0 additions and 18439 deletions

View File

@ -1,15 +0,0 @@
This is the makeshift doc generator until NDoc works.
Stylistic matters are of very little concern, but the docs should
still be XHTML conformant.
The build system is multi-stage, it effectively works like this:
* Original docs (built by mcs for now): glib-sharp-docs.xml, ...
* netdoc_pp.pl preprocesses these into a cleaner format:
glib-sharp-docs-stage1.xml, ...
* introspect.exe adds type information from the assembly at hand:
glib-sharp-docs-stage2.xml, ...
* netdoc.xsl (via xsltproc) translates this xml file into XHTML:
glib-sharp-docs.html
Plans for the future are listed in TODO.

View File

@ -1,23 +0,0 @@
Short-term within the doc scripts:
* Determine why some properties are not listing their types properly.
(see: introspect.cs:160)
* In introspect.cs, import introspection functions from gobject, use these
to retrieve things like enum field descriptions
* have makefile.win32 reference the csc-generated docs instead
of the local copies stored here (since mcs doesn't generate docs)
* generate summary page(s)
Short-term within gtksharp/generator/codegen.exe:
* Once struct and boxed field generation is working again,
generate docs for these fields.
Long-term:
* Per Arneng has written an HTML generator for the ECMA doc format
that looks very nice. We may want to use this format for stage 1 & 2
and use his generator instead of the XSLT step.
The generator is at: http://hus11.rsn.bth.se/~pure/sharpdoc.tar.gz
* Get NDoc working and use that instead:
* on windows, NDoc breaks because there are no dllimport-compatible
windows dlls for gtk+/glib/etc.
* on linux, I'm not even sure if NDoc compiles yet. Also, mcs does
not generate doc.xml files yet.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,519 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>glib-sharp</name>
</assembly>
<members>
<member name="T:GtkSharp.SignalCallback">
<summary>
SignalCallback Class
</summary>
<remarks>
Base Class for GSignal to C# event marshalling.
</remarks>
</member>
<member name="M:GtkSharp.SignalCallback.#ctor(GLib.Object,System.EventHandler)">
<summary>
SignalCallback Constructor
</summary>
<remarks>
Initializes instance data.
</remarks>
</member>
<member name="T:GLib.Boxed">
<summary>
Boxed Class
</summary>
<remarks>
An abstract base class to derive structures and marshal them.
</remarks>
</member>
<member name="M:GLib.Boxed.#ctor(System.IntPtr)">
<summary>
Boxed Constructor
</summary>
<remarks>
Constructs a Boxed type from a raw ref.
</remarks>
</member>
<member name="M:GLib.Boxed.FromNative(System.IntPtr)">
<summary>
FromNative Method
</summary>
<remarks>
Gets a Boxed type from a raw IntPtr.
</remarks>
</member>
<member name="P:GLib.Boxed.Handle">
<summary>
Handle Property
</summary>
<remarks>
Gets a marshallable IntPtr.
</remarks>
</member>
<member name="P:GLib.Boxed.Raw">
<summary>
Raw Property
</summary>
<remarks>
Gets or sets a marshallable IntPtr.
</remarks>
</member>
<member name="T:GtkSharp.SignalArgs">
<summary>
SignalArgs Class
</summary>
<remarks>
Arguments and return value for signals.
</remarks>
</member>
<member name="M:GtkSharp.SignalArgs.#ctor">
<summary>
SignalArgs Constructor
</summary>
<remarks>
Creates a SignalArgs object with no return value and
no arguments.
</remarks>
</member>
<member name="M:GtkSharp.SignalArgs.#ctor(System.Object)">
<summary>
SignalArgs Constructor
</summary>
<remarks>
Creates a SignalArgs object with a return value and
no arguments.
</remarks>
</member>
<member name="M:GtkSharp.SignalArgs.#ctor(System.Object,System.Object[])">
<summary>
SignalArgs Constructor
</summary>
<remarks>
Creates a SignalArgs object with a return value and
a list of arguments.
</remarks>
</member>
<member name="P:GtkSharp.SignalArgs.Args">
<summary>
Args Property
</summary>
<remarks>
A list of arguments.
</remarks>
</member>
<member name="P:GtkSharp.SignalArgs.RetVal">
<summary>
RetVal Property
</summary>
<remarks>
The return value.
</remarks>
</member>
<member name="T:GLib.TimeoutHandler">
<summary>
TimeoutHandler Delegate
</summary>
<remarks>
Delegate used for Timeouts in the GLib main loop. Return
true to restart the timeout. Returning false clears the
timeout.
</remarks>
</member>
<member name="T:GLib.Timeout">
<summary>
Timeout Class
</summary>
<remarks>
Allows the installation of Timeout Handlers on the GLib main
loop.
</remarks>
</member>
<member name="T:GLib.TypeFundamentals">
<summary>
TypeFundamentals enumeration
</summary>
<remarks>
The built-in types available in GLib.
</remarks>
</member>
<member name="T:GLib.Object">
<summary>
Object Class
</summary>
<remarks>
Wrapper class for GObject.
</remarks>
</member>
<member name="M:GLib.Object.GetObject(System.IntPtr)">
<summary>
GetObject Shared Method
</summary>
<remarks>
Used to obtain a CLI typed object associated with a
given raw object pointer. This method is primarily
used to wrap object references that are returned
by either the signal system or raw class methods that
return GObject references.
</remarks>
<returns>
The wrapper instance.
</returns>
</member>
<member name="M:GLib.Object.#ctor">
<summary>
Object Constructor
</summary>
<remarks>
Dummy constructor needed for derived classes.
</remarks>
</member>
<member name="M:GLib.Object.#ctor(System.IntPtr)">
<summary>
Object Constructor
</summary>
<remarks>
Creates an object from a raw object reference.
</remarks>
</member>
<member name="M:GLib.Object.Equals(System.Object)">
<summary>
Equals Method
</summary>
<remarks>
Checks equivalence of two Objects.
</remarks>
</member>
<member name="M:GLib.Object.GetHashCode">
<summary>
GetHashCode Method
</summary>
<remarks>
Calculates a hashing value.
</remarks>
</member>
<member name="M:GLib.Object.GetData(System.String)">
<summary>
GetData Method
</summary>
<remarks>
Accesses arbitrary data storage on the Object.
</remarks>
</member>
<member name="M:GLib.Object.SetData(System.String,System.Object)">
<summary>
SetData Method
</summary>
<remarks>
Stores arbitrary data on the Object.
</remarks>
</member>
<member name="M:GLib.Object.GetProperty(System.String,GLib.Value)">
<summary>
GetProperty Method
</summary>
<remarks>
Accesses a Value Property.
</remarks>
</member>
<member name="M:GLib.Object.SetProperty(System.String,GLib.Value)">
<summary>
SetProperty Method
</summary>
<remarks>
Accesses a Value Property.
</remarks>
</member>
<member name="P:GLib.Object.Raw">
<summary>
Raw Property
</summary>
<remarks>
The raw GObject reference associated with this wrapper.
Only subclasses of Object can access this read/write
property. For public read-only access, use the
Handle property.
</remarks>
</member>
<member name="P:GLib.Object.Handle">
<summary>
Handle Property
</summary>
<remarks>
The raw GObject reference associated with this object.
Subclasses can use Raw property for read/write
access.
</remarks>
</member>
<member name="P:GLib.Object.EventList">
<summary>
EventList Property
</summary>
<remarks>
A list object containing all the events for this
object indexed by the Gtk+ signal name.
</remarks>
</member>
<member name="T:GLib.SList">
<summary>
SList Class
</summary>
<remarks>
Wrapper class for GSList.
</remarks>
</member>
<member name="P:GLib.SList.Handle">
<summary>
Handle Property
</summary>
<remarks>
A raw GSList reference for marshaling situations.
</remarks>
</member>
<member name="T:GLib.Value">
<summary>
Value Class
</summary>
<remarks>
An arbitrary data type similar to a CORBA Any which is used
to get and set properties on Objects.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.IntPtr,System.String)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value corresponding to the type of the
specified property.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.Boolean)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified boolean.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(GLib.Boxed)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified boxed type.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.Double)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified double.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.Single)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified float.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.Int32)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified integer.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(GLib.Object)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified object.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.IntPtr)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified pointer.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.String)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified string.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.UInt32)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified uint.
</remarks>
</member>
<member name="M:GLib.Value.#ctor(System.IntPtr,System.String,GLib.EnumWrapper)">
<summary>
Value Constructor
</summary>
<remarks>
Constructs a Value from a specified enum wrapper.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.Boolean">
<summary>
Value to Boolean Conversion
</summary>
<remarks>
Extracts a bool from a Value. Note, this method
will produce an exception if the Value does not hold a
boolean value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~GLib.Boxed">
<summary>
Value to Boxed Conversion
</summary>
<remarks>
Extracts a boxed type from a Value. Note, this method
will produce an exception if the Value does not hold a
boxed type value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.Double">
<summary>
Value to Double Conversion
</summary>
<remarks>
Extracts a double from a Value. Note, this method
will produce an exception if the Value does not hold a
double value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.Single">
<summary>
Value to Float Conversion
</summary>
<remarks>
Extracts a float from a Value. Note, this method
will produce an exception if the Value does not hold a
float value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.Int32">
<summary>
Value to Integer Conversion
</summary>
<remarks>
Extracts an int from a Value. Note, this method
will produce an exception if the Value does not hold a
integer value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~GLib.Object">
<summary>
Value to Object Conversion
</summary>
<remarks>
Extracts an object from a Value. Note, this method
will produce an exception if the Value does not hold a
object value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~GLib.UnwrappedObject">
<summary>
Value to Unresolved Object Conversion
</summary>
<remarks>
Extracts an object from a Value without looking up its wrapping
class.
Note, this method will produce an exception if the Value does
not hold a object value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.IntPtr">
<summary>
Value to Pointer Conversion
</summary>
<remarks>
Extracts a pointer from a Value. Note, this method
will produce an exception if the Value does not hold a
pointer value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.String">
<summary>
Value to String Conversion
</summary>
<remarks>
Extracts a string from a Value. Note, this method
will produce an exception if the Value does not hold a
string value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~System.UInt32">
<summary>
Value to Unsigned Integer Conversion
</summary>
<remarks>
Extracts an uint from a Value. Note, this method
will produce an exception if the Value does not hold a
unsigned integer value.
</remarks>
</member>
<member name="M:GLib.Value.op_Explicit(GLib.Value)~GLib.EnumWrapper">
<summary>
Value to Enum Conversion
</summary>
<remarks>
Extracts an enum from a Value. Note, this method
will produce an exception if the Value does not hold an
enum value.
</remarks>
</member>
<member name="P:GLib.Value.Handle">
<summary>
Handle Property
</summary>
<remarks>
Read only. Accesses a pointer to the raw GValue.
</remarks>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>Gtk# documentation</title>
</head>
<body>
Documentation on the following assemblies is available:
<ul><a href="glib-sharp-docs.html">glib</a></ul>
<ul><a href="atk-sharp-docs.html">atk</a></ul>
<ul><a href="pango-sharp-docs.html">pango</a></ul>
<ul><a href="gdk-sharp-docs.html">gdk</a></ul>
<ul><a href="gtk-sharp-docs.html">gtk</a></ul>
<ul><a href="gnome-sharp-docs.html">gnome</a></ul>
<p align="right"><i>Last updated Wednesday, June 25 2002</i></p>
<p align="right"><i>Rachel Hestilow <a href="mailto:hestilow@ximian.com">(hestilow at ximian.com)</a></i></p>
</body>
</html>

View File

@ -1,301 +0,0 @@
// introspect.cs: Add introspectable information to a docs file.
//
// Author: Rachel Hestilow <hestilow@ximian.com>
//
// (c) 2002 Rachel Hestilow
namespace GtkSharp.DocGeneration {
using System;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Xml;
public class Introspect {
Hashtable assemblies = new Hashtable ();
Hashtable primitives = new Hashtable ();
XmlDocument doc;
string current_ns;
public Introspect (XmlDocument doc) {
this.doc = doc;
primitives["System.Boolean"] = "bool";
primitives["System.Byte"] = "byte";
primitives["System.Char"] = "char";
primitives["System.Decimal"] = "decimal";
primitives["System.Double"] = "double";
primitives["System.Int16"] = "int16";
primitives["System.Int32"] = "int";
primitives["System.Int64"] = "int64";
primitives["System.Object"] = "object";
primitives["System.SByte"] = "sbyte";
primitives["System.Single"] = "single";
primitives["System.String"] = "string";
primitives["System.UInt16"] = "uint16";
primitives["System.UInt32"] = "uint";
primitives["System.UInt64"] = "uint64";
primitives["System.Void"] = "void";
/* FIXME: mcs does not support Assembly.GetReferencedAssemblies*/
foreach (string asm in new string[] {"glib", "atk", "pango", "gdk", "gtk", "gnome"}) {
string key = asm + "-sharp";
assemblies[key] = Assembly.Load (key);
}
}
public Type LookupType (string typename)
{
foreach (Assembly assembly in assemblies.Values) {
Type type = assembly.GetType (typename);
if (type != null)
return type;
}
return Type.GetType (typename);
}
public string StringifyType (Type type)
{
string full = type.ToString ();
bool isArray;
if (full.EndsWith ("[]")) {
full = full.Substring (0, full.Length - 2);
isArray = true;
} else
isArray = false;
if (type.IsArray) Console.WriteLine ("hi " + full);
if (primitives.Contains (full)) {
string ret = (string) primitives[full];
if (isArray || type.IsArray) ret += "[]";
return ret;
} else {
if (String.Compare (full, 0, current_ns, 0, current_ns.Length) == 0) {
full = full.Substring (current_ns.Length + 1);
}
return full;
}
}
public void FixArgs (XmlElement method_node, Type type, Assembly asm, string method_name, string orig, bool isCtor)
{
XmlNode args_node = doc.CreateNode ("element", "arguments", "");
method_node.AppendChild (args_node);
if (orig == "") return;
string[] args = orig.Split (',');
Type[] signature = new Type[args.Length];
int i = 0;
foreach (string arg in args) {
string fix = arg.Trim ('@');
signature[i] = LookupType (fix);
i++;
}
MethodBase method = null;
MethodBase[] methods;
if (isCtor)
{
MemberInfo[] bases = type.FindMembers (MemberTypes.Constructor | MemberTypes.Method, BindingFlags.Public | BindingFlags.Instance, Type.FilterName, ".ctor");
ArrayList ctors = new ArrayList ();
foreach (MemberInfo info in bases) {
if (info.MemberType == MemberTypes.Constructor)
ctors.Add (info);
}
methods = new MethodBase[ctors.Count];
ctors.CopyTo (methods);
}
else
methods = type.GetMethods ();
foreach (MethodBase m in methods) {
if (m.GetParameters () == null)
continue;
if (m.Name != method_name)
continue;
if (m.GetParameters ().Length != signature.Length)
continue;
bool valid = true;
for (i = 0; i < signature.Length; i++) {
// FIXME: cludge
string t1 = m.GetParameters ()[i].ParameterType.FullName;
t1 = t1.Trim ('&');
if (t1 != signature[i].FullName) {
valid = false;
break;
}
}
if (!valid) continue;
method = m;
break;
}
i = 0;
foreach (ParameterInfo p in method.GetParameters ()) {
string modifiers = "";
// FIXME: another mono bug...this is always false
if (p.IsOut || p.IsRetval)
modifiers += "out ";
XmlElement arg_node = (XmlElement) doc.CreateNode ("element", "argument", "");
args_node.AppendChild (arg_node);
arg_node.SetAttribute ("modifiers", modifiers);
if (p.ParameterType.IsArray) { Console.WriteLine (p.ParameterType); }
arg_node.SetAttribute ("type", StringifyType (p.ParameterType));
arg_node.SetAttribute ("name", p.Name);
i++;
}
}
public void FixProperty (XmlElement prop, Assembly asm, Type type)
{
PropertyInfo[] props = type.GetProperties (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
string prop_name = prop.GetAttribute ("name");
PropertyInfo pinfo = null;
foreach (PropertyInfo i in props) {
if (i.Name == prop_name) {
pinfo = i;
break;
}
}
// FIXME: mono bug: why is PropertyType sometimes null?
if (pinfo.PropertyType != null)
prop.SetAttribute ("type", StringifyType (pinfo.PropertyType));
else
prop.SetAttribute ("type", "[unknown]");
}
public void FixMethod (XmlElement method, Assembly asm, Type type)
{
MethodInfo[] methods = type.GetMethods (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
string method_name = method.GetAttribute ("name");
string op = "op_Explicit -> ";
if (String.Compare (method_name, 0, op, 0, op.Length) == 0) {
method.SetAttribute ("type", StringifyType (LookupType (method_name.Substring (op.Length))));
method.SetAttribute ("name", "op_Explicit");
return;
}
FixArgs (method, type, asm, method_name, method.GetAttribute ("args"), false);
MethodInfo minfo = null;
foreach (MethodInfo i in methods) {
if (i.Name == method_name) {
minfo = i;
break;
}
}
method.SetAttribute ("type", StringifyType (minfo.ReturnType));
}
public void FixConstructor (XmlElement method, Assembly asm, Type type)
{
string method_name = method.GetAttribute ("name");
FixArgs (method, type, asm, ".ctor", method.GetAttribute ("args"), true);
}
public bool BaseClassImplements (Type type, Type target)
{
if (type.BaseType == Type.GetType ("System.Object"))
return false;
foreach (Type iface in type.BaseType.GetInterfaces ()) {
if (iface == target)
return true;
}
return BaseClassImplements (type.BaseType, target);
}
public void FixClass (XmlElement klass, string ns)
{
current_ns = ns;
string asm = klass.GetAttribute ("assembly");
Assembly assembly;
if (assemblies.Contains (asm))
assembly = (Assembly) assemblies[asm];
else {
assembly = Assembly.Load (asm);
assemblies[asm] = assembly;
}
Type type = LookupType (ns + "." + klass.GetAttribute ("name"));
if (type.BaseType != null && type.BaseType != Type.GetType ("System.Object") && type.BaseType != Type.GetType ("System.Enum"))
klass.SetAttribute ("base", StringifyType (type.BaseType));
Type[] unfiltered = type.GetInterfaces ();
ArrayList ifaces = new ArrayList ();
if (unfiltered != null && unfiltered.Length > 0) {
foreach (Type iface in unfiltered) {
if (type.BaseType == null || !BaseClassImplements (type, iface))
ifaces.Add (iface);
}
}
if (ifaces.Count > 0) {
XmlNode implements = doc.CreateNode ("element", "implements", "");
klass.AppendChild (implements);
foreach (Type iface in ifaces) {
XmlNode iface_node = doc.CreateNode ("element", "interface", "");
implements.AppendChild (iface_node);
XmlText text = (XmlText) doc.CreateNode ("text", "", "");
text.Value = StringifyType (iface);
iface_node.AppendChild (text);
}
}
foreach (XmlNode member in klass.ChildNodes) {
switch (member.Name) {
case "property":
FixProperty ((XmlElement) member, assembly, type);
break;
case "method":
FixMethod ((XmlElement) member, assembly, type);
break;
case "constructor":
FixConstructor ((XmlElement) member, assembly, type);
break;
default:
break;
}
}
}
public static int Main (string[] args)
{
if (args.Length != 2) {
Console.WriteLine ("usage: introspect <infile> <outfile>");
return 0;
}
XmlDocument doc = new XmlDocument ();
try {
doc.Load (args[0]);
} catch (XmlException e) {
Console.WriteLine ("Failed to load {0}", args[0]);
return 1;
}
Introspect introspector = new Introspect (doc);
XmlElement root = doc.DocumentElement;
foreach (XmlNode ns in root.ChildNodes) {
if (ns.Name != "namespace") continue;
XmlElement ns_elem = (XmlElement) ns;
foreach (XmlNode klass in ns.ChildNodes) {
if (klass.Name != "class") continue;
introspector.FixClass ((XmlElement) klass, ns_elem.GetAttribute ("name"));
}
}
FileStream stream = new FileStream (args[1], FileMode.Create, FileAccess.Write);
doc.Save (stream);
return 0;
}
}
}

View File

@ -1,10 +0,0 @@
include makefile.common
MCS=mcs
RUNTIME=mono
$(stage2_files): %stage2.xml: %stage1.xml introspect.exe
$(RUNTIME) introspect.exe $< $@
introspect.exe: introspect.cs
$(MCS) -o introspect.exe -r System.Xml introspect.cs

View File

@ -1,20 +0,0 @@
TARGETS = glib pango atk gdk gtk gnome
output_files = $(TARGETS:=-sharp-docs.html)
input_files = $(TARGETS:=-sharp-docs.xml)
stage1_files = $(TARGETS:=-sharp-docs-stage1.xml)
stage2_files = $(TARGETS:=-sharp-docs-stage2.xml)
all: $(output_files)
stage1: $(stage1_files)
clean:
rm -f $(output_files) $(stage1_files) $(stage2_files) introspect.exe
$(stage1_files): %-docs-stage1.xml: %-docs.xml netdoc_pp.pl $(input_files)
./netdoc_pp.pl $< > $@
$(output_files): %.html: %-stage2.xml netdoc.xsl
xsltproc netdoc.xsl $< > $@

View File

@ -1,10 +0,0 @@
include makefile.common
ROOT=/cygdrive/$(subst \,/,$(subst :\,/,$(SYSTEMROOT)))
CSC=$(ROOT)/microsoft.net/framework/v1.0.3705/csc.exe
$(stage2_files): %stage2.xml: %stage1.xml introspect.exe
./introspect $< $@
introspect.exe: introspect.cs
$(CSC) /out:introspect.exe introspect.cs

View File

@ -1,187 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="doc">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title><xsl:value-of select="@assembly"/>.dll documentation</title></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="namespace">
<b><xsl:value-of select="@name"/></b><br />
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="class">
<a><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></a>
<ul><xsl:value-of select="@name"/>
<xsl:apply-templates select="summary"/>
<xsl:if test="boolean(remarks)">
<xsl:apply-templates select="remarks"/>
<br />
</xsl:if>
<xsl:if test="@base != ''">
<ul><u>Inherits from:</u><xsl:text> </xsl:text>
<xsl:call-template name="maybeLink">
<xsl:with-param name="klass">
<xsl:value-of select="@base"/>
</xsl:with-param>
</xsl:call-template>
</ul>
<br />
</xsl:if>
<xsl:if test="boolean(implements)">
<ul><u>Implements</u></ul>
<xsl:apply-templates select="./implements"/>
<br />
</xsl:if>
<xsl:if test="boolean(constructor)">
<ul><u>Constructors</u></ul>
<xsl:apply-templates select="./constructor"/>
<br />
</xsl:if>
<xsl:if test="boolean(method)">
<ul><u>Methods</u></ul>
<xsl:apply-templates select="./method"/>
<br />
</xsl:if>
<xsl:if test="boolean(property)">
<ul><u>Properties</u></ul>
<xsl:apply-templates select="./property"/>
<br />
</xsl:if>
<xsl:if test="boolean(event)">
<ul><u>Events</u></ul>
<xsl:apply-templates select="./event"/>
<br />
</xsl:if>
<xsl:if test="boolean(field)">
<ul><u>Fields</u></ul>
<xsl:apply-templates select="./field"/>
<br />
</xsl:if>
</ul>
</xsl:template>
<xsl:template match="constructor">
<ul><xsl:value-of select="@name"/> <xsl:apply-templates select="arguments"/><xsl:apply-templates select="summary"/><xsl:apply-templates select="remarks"/></ul>
</xsl:template>
<xsl:template match="method">
<ul>
<xsl:call-template name="maybeLink">
<xsl:with-param name="klass">
<xsl:value-of select="@type"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:apply-templates select="arguments"/><xsl:apply-templates select="summary"/><xsl:apply-templates select="remarks"/></ul>
</xsl:template>
<xsl:template match="property">
<ul>
<xsl:call-template name="maybeLink">
<xsl:with-param name="klass">
<xsl:value-of select="@type"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:apply-templates/></ul>
</xsl:template>
<xsl:template match="event|field">
<ul><xsl:value-of select="@name"/><xsl:apply-templates/></ul>
</xsl:template>
<xsl:template match="summary">
- <font size="-1"><i><xsl:apply-templates/></i></font>
</xsl:template>
<xsl:template match="remarks">
<ul><xsl:apply-templates/></ul>
</xsl:template>
<xsl:template match="implements">
<ul><xsl:apply-templates/></ul>
</xsl:template>
<xsl:template match="interface">
<xsl:call-template name="maybeLink">
<xsl:with-param name="klass">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template name="maybeLink">
<xsl:param name="klass"/>
<!-- FIXME: handle arrays better -->
<xsl:variable name="is_primitive" select="boolean($klass = 'bool' or $klass = 'byte' or $klass = 'char' or $klass = 'decimal' or $klass = 'double' or $klass = 'int16' or $klass = 'int' or $klass = 'int64' or $klass = 'object' or $klass = 'sbyte' or $klass = 'single' or $klass = 'string' or $klass = 'uint16' or $klass = 'uint' or $klass = 'uint64' or $klass = 'void' or contains ($klass, '[]') or $klass = '[unknown]')"/>
<xsl:choose>
<xsl:when test="contains($klass, '.')">
<xsl:variable name="ns" select="substring-before ($klass, '.')"/>
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:choose>
<xsl:when test="$ns = 'GLib' or $ns = 'Atk' or $ns = 'Pango' or $ns = 'Gdk' or $ns = 'Gtk' or $ns = 'Gnome'">
<a><xsl:attribute name="href"><xsl:value-of select="translate($ns, $ucletters, $lcletters)"/>-sharp-docs.html#<xsl:value-of select="substring-after ($klass, '.')"/></xsl:attribute><xsl:value-of select="$klass"/></a>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$klass"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="boolean($is_primitive)">
<xsl:value-of select="$klass"/>
</xsl:when>
<xsl:otherwise>
<a><xsl:attribute name="href">#<xsl:value-of select="$klass"/></xsl:attribute><xsl:value-of select="$klass"/></a>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="arguments">
(<xsl:if test="count(*) != 0">
<xsl:call-template name="argument-iteration">
<xsl:with-param name="needs_comma" select="boolean(0)"/>
<xsl:with-param name="i" select="1"/>
<xsl:with-param name="args" select="*"/>
</xsl:call-template>
</xsl:if>)
</xsl:template>
<xsl:template name="argument-iteration">
<xsl:param name="needs_comma"/>
<xsl:param name="i"/>
<xsl:param name="args"/>
<xsl:if test="boolean($needs_comma)"><xsl:text>, </xsl:text></xsl:if>
<xsl:apply-templates select="$args[$i]"/>
<xsl:if test="$i != count($args)">
<xsl:call-template name="argument-iteration">
<xsl:with-param name="needs_comma" select="boolean(1)"/>
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="args" select="$args"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="argument">
<xsl:value-of select="@modifiers"/>
<xsl:call-template name="maybeLink">
<xsl:with-param name="klass">
<xsl:value-of select="@type"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,226 +0,0 @@
#!/usr/bin/perl -w
#
# netdoc_pp.pl: .NET documentation preprocessor
#
# Author: Rachel Hestilow <hestilow@ximian.com>
#
# <c> 2002 Rachel Hestilow
die "Usage: netdoc_pp.pl <infile1> ...\n" if not $ARGV[0];
use XML::LibXML;
my $parser = new XML::LibXML;
my (%namespaces, $assembly);
use Class::Struct;
struct( Klass => {
assembly => '$',
ctors => '%',
methods => '%',
props => '%',
events => '%',
fields => '%',
data => '@',
});
foreach $file (@ARGV) {
my $doc = $parser->parse_file ($file);
my $node;
for ($node = $doc->documentElement->firstChild; $node; $node = $node->nextSibling ()) {
if ($node->nodeName eq "assembly") {
$assembly = parseAssembly ($node);
} elsif ($node->nodeName eq "members") {
%namespaces = parseMembers ($node, $assembly);
}
}
}
generate ($assembly, %namespaces);
sub parseMembers {
my ($members, $assembly) = @_;
my %namespaces = ();
for ($member = $members->firstChild; $member; $member = $member->nextSibling ()) {
next if $member->nodeName ne "member";
my @attrs = $member->attributes;
my $name = $attrs[0]->value;
die "Invalid member $name\n" if not ($name =~ /^([TMPEF]):([\w\.]+)\.([\w\#]+)(\((.*)\))?(\~([\w\.]+))?$/);
my ($type, $ns, $mname, $args, $op) = ($1, $2, $3, $5, $7);
my ($klasses, $klass);
my @data = ('', '', '');
$mname .= " -> $op" if $op;
if ($type eq 'T') {
$klass = Klass->new (assembly => $assembly);
if (not $namespaces{$ns}) {
$klasses = {};
$namespaces{$ns} = $klasses;
} else {
$klasses = $namespaces{$ns};
}
${$klasses}{$mname} = $klass;
} else {
my $klass_name = $ns;
if ($ns =~ /(.+)\.(.+)/) {
$ns = $1;
$klass_name = $2;
}
if (not $namespaces{$ns}) {
$klasses = {};
$namespaces{$ns} = $klasses;
} else {
$klasses = $namespaces{$ns};
}
$klass = ${$klasses}{$klass_name};
if (not $klass) {
$klass = Klass->new (assembly => $assembly);
${$klasses}{$klass_name} = $klass;
}
}
my $subnode;
for ($subnode = $member->firstChild; $subnode; $subnode= $subnode->nextSibling ()) {
my $ind;
if ($subnode->nodeName eq "summary") {
$ind = 1;
} elsif ($subnode->nodeName eq "remarks") {
$ind = 2;
} else {
next;
}
if ($subnode->textContent) {
$data[$ind] = $subnode->textContent;
$data[$ind] =~ s/^([\n\s])+//;
$data[$ind] =~ s/([\n\s])+$//;
}
}
if ($type eq "T") {
my $d;
foreach $d (@data) {
$d = "" if not $d;
push @{$klass->data}, $d;
}
} elsif ($type eq "M") {
if ($mname eq "#ctor") {
$args = "" if not $args;
${$klass->ctors}{$args} = \@data;
} else {
$args = "" if not $args;
$data[0] = $args;
${$klass->methods}{$mname} = \@data;
}
} elsif ($type eq "P") {
${$klass->props}{$mname} = \@data;
} elsif ($type eq "E") {
${$klass->events}{$mname} = \@data;
} elsif ($type eq "F") {
${$klass->fields}{$mname} = \@data;
}
}
return %namespaces;
}
sub parseAssembly
{
my ($parent) = @_;
for ($node = $parent->firstChild; $node; $node = $node->nextSibling ()) {
next if $node->nodeName ne 'name';
return $node->textContent;
}
}
sub addComments {
my ($doc, $node, @data) = @_;
if (not ($data[1] =~ /^\s*$/)) {
$elem = $doc->createElement ("summary");
$node->appendChild ($elem);
$elem->appendChild (XML::LibXML::Text->new ($data[1]));
}
$elem = $doc->createElement ("remarks");
$node->appendChild ($elem);
$elem->appendChild (XML::LibXML::Text->new ($data[2]));
}
sub generate {
my ($asm, %namespaces) = @_;
my $doc = XML::LibXML::Document->new ();
my $root = $doc->createElement ('doc');
$doc->setDocumentElement ($root);
print STDERR "asm $asm\n";
$root->setAttribute ('assembly', $asm);
my ($ns, $ns_elem);
foreach $ns (sort keys %namespaces) {
$ns_elem = $doc->createElement ('namespace');
$ns_elem->setAttribute ('name', $ns);
$root->appendChild ($ns_elem);
my ($klass_name, $klass, $klass_elem, $klasses);
$klasses = $namespaces{$ns};
foreach $klass_name (sort keys %$klasses)
{
$klass = ${$klasses}{$klass_name};
$klass_elem = $doc->createElement ('class');
$klass_elem->setAttribute ('name', $klass_name);
$klass_elem->setAttribute ('assembly', $klass->assembly);
my ($elem, $ctor, $prop, $method, $event);
if ($klass->data and @{$klass->data}) {
addComments ($doc, $klass_elem, @{$klass->data});
}
foreach $ctor (sort keys %{$klass->ctors}) {
$elem = $doc->createElement ('constructor');
$elem->setAttribute ('name', $klass_name);
$elem->setAttribute ('args', $ctor);
my @data = @{${$klass->ctors}{$ctor}};
addComments ($doc, $elem, @data);
$klass_elem->appendChild ($elem);
}
foreach $method (sort keys %{$klass->methods}) {
$elem = $doc->createElement ('method');
$method =~ s/\#/\./g;
$elem->setAttribute ('name', $method);
my @data = @{${$klass->methods}{$method}};
$elem->setAttribute ('args', $data[0]);
addComments ($doc, $elem, @data);
$klass_elem->appendChild ($elem);
}
foreach $prop (sort keys %{$klass->props}) {
$elem = $doc->createElement ('property');
$elem->setAttribute ('name', $prop);
my @data = @{${$klass->props}{$prop}};
addComments ($doc, $elem, @data);
$klass_elem->appendChild ($elem);
}
foreach $event (sort keys %{$klass->events}) {
$elem = $doc->createElement ('event');
$elem->setAttribute ('name', $event);
my @data = @{${$klass->events}{$event}};
addComments ($doc, $elem, @data);
$klass_elem->appendChild ($elem);
}
foreach $field (sort keys %{$klass->fields}) {
$elem = $doc->createElement ('field');
$elem->setAttribute ('name', $field);
my @data = @{${$klass->fields}{$field}};
addComments ($doc, $elem, @data);
$klass_elem->appendChild ($elem);
}
$ns_elem->appendChild ($klass_elem);
}
}
print $doc->toString();
}

View File

@ -1,814 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>pango-sharp</name>
</assembly>
<members>
<member name="T:Pango.FontsetSimple">
<summary> FontsetSimple Class</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Fontset">
<summary> Fontset Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.Fontset.GetFont(System.UInt32)">
<summary> GetFont Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Fontset.Metrics">
<summary> Metrics Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.FontsetSimple.Size">
<summary> Size Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.FontsetSimple.Append(Pango.Font)">
<summary> Append Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.XFontCache">
<summary> XFontCache Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Layout">
<summary> Layout Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.Layout.#ctor(Pango.Context)">
<summary> Layout Constructor </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetLogAttrs(Pango.LogAttr,System.Int32)">
<summary> GetLogAttrs Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.IndexToPos(System.Int32,Pango.Rectangle)">
<summary> IndexToPos Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.Copy">
<summary> Copy Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.SetMarkup(System.String,System.Int32)">
<summary> SetMarkup Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.XyToIndex(System.Int32,System.Int32,System.Int32,System.Int32)">
<summary> XyToIndex Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetExtents(Pango.Rectangle,Pango.Rectangle)">
<summary> GetExtents Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.SetText(System.String,System.Int32)">
<summary> SetText Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.SetMarkupWithAccel(System.String,System.Int32,System.String,System.String)">
<summary> SetMarkupWithAccel Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetSize(System.Int32,System.Int32)">
<summary> GetSize Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.MoveCursorVisually(System.Boolean,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
<summary> MoveCursorVisually Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetLine(System.Int32)">
<summary> GetLine Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.ContextChanged">
<summary> ContextChanged Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetPixelSize(System.Int32,System.Int32)">
<summary> GetPixelSize Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetCursorPos(System.Int32,Pango.Rectangle,Pango.Rectangle)">
<summary> GetCursorPos Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Layout.GetPixelExtents(Pango.Rectangle,Pango.Rectangle)">
<summary> GetPixelExtents Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Tabs">
<summary> Tabs Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.SingleParagraphMode">
<summary> SingleParagraphMode Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Indent">
<summary> Indent Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Wrap">
<summary> Wrap Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Text">
<summary> Text Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Alignment">
<summary> Alignment Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.LineCount">
<summary> LineCount Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Iter">
<summary> Iter Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Lines">
<summary> Lines Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Width">
<summary> Width Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Attributes">
<summary> Attributes Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Context">
<summary> Context Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Justify">
<summary> Justify Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.Spacing">
<summary> Spacing Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Layout.FontDescription">
<summary> FontDescription Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.FontFamily">
<summary> FontFamily Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.FontFamily.ListFaces(Pango.FontFace,System.Int32)">
<summary> ListFaces Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.FontFamily.Name">
<summary> Name Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.OTTableType">
<summary> OTTableType enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.OTTableType.Gsub">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.OTTableType.Gpos">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.FontMap">
<summary> FontMap Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.FontMap.ListFamilies(Pango.FontFamily,System.Int32)">
<summary> ListFamilies Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.FontMap.LoadFont(Pango.Context,Pango.FontDescription)">
<summary> LoadFont Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.Win32FontCache">
<summary> Win32FontCache Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.FontMask">
<summary> FontMask enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Family">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Style">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Variant">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Weight">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Stretch">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.FontMask.Size">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Variant">
<summary> Variant enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Variant.Normal">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Variant.SmallCaps">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Style">
<summary> Style enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Style.Normal">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Style.Oblique">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Style.Italic">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.IndicScript">
<summary> IndicScript Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.LogAttr">
<summary> LogAttr Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Item">
<summary> Item Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrFontDesc">
<summary> AttrFontDesc Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.GlyphGeometry">
<summary> GlyphGeometry Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.TabAlign">
<summary> TabAlign enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.TabAlign.Left">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Weight">
<summary> Weight enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Ultralight">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Light">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Normal">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Bold">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Ultrabold">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Weight.Heavy">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.GlyphString">
<summary> GlyphString Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.GlyphInfo">
<summary> GlyphInfo Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.GlyphVisAttr">
<summary> GlyphVisAttr Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.IntSet">
<summary> IntSet Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.LayoutRun">
<summary> LayoutRun Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.LayoutIter">
<summary> LayoutIter Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Underline">
<summary> Underline enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Underline.None">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Underline.Single">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Underline.Double">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Underline.Low">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.LayoutLine">
<summary> LayoutLine Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.MapEntry">
<summary> MapEntry Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.IncludedModule">
<summary> IncludedModule Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Map">
<summary> Map Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.TabArray">
<summary> TabArray Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Rectangle">
<summary> Rectangle Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Stretch">
<summary> Stretch enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.UltraCondensed">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.ExtraCondensed">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.Condensed">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.SemiCondensed">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.Normal">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.SemiExpanded">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.Expanded">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.ExtraExpanded">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Stretch.UltraExpanded">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.WrapMode">
<summary> WrapMode enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.WrapMode.Word">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.WrapMode.Char">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Alignment">
<summary> Alignment enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Alignment.Left">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Alignment.Center">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Alignment.Right">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Analysis">
<summary> Analysis Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrClass">
<summary> AttrClass Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrColor">
<summary> AttrColor Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrFloat">
<summary> AttrFloat Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrIterator">
<summary> AttrIterator Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrInt">
<summary> AttrInt Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrLanguage">
<summary> AttrLanguage Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.CoverageLevel">
<summary> CoverageLevel enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.CoverageLevel.None">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.CoverageLevel.Fallback">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.CoverageLevel.Approximate">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.CoverageLevel.Exact">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrList">
<summary> AttrList Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrShape">
<summary> AttrShape Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrString">
<summary> AttrString Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.AttrType">
<summary> AttrType enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Invalid">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Language">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Family">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Style">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Weight">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Variant">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Stretch">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Size">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.FontDesc">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Foreground">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Background">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Underline">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Strikethrough">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Rise">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Shape">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.AttrType.Scale">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Attribute">
<summary> Attribute Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Color">
<summary> Color Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Context">
<summary> Context Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.Context.#ctor">
<summary> Context Constructor </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Context.ListFamilies(Pango.FontFamily,System.Int32)">
<summary> ListFamilies Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Context.LoadFont(Pango.FontDescription)">
<summary> LoadFont Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Context.BaseDir">
<summary> BaseDir Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Context.FontDescription">
<summary> FontDescription Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.Context.FontMap">
<summary> FontMap Property </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.Coverage">
<summary> Coverage Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.EngineRange">
<summary> EngineRange Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Direction">
<summary> Direction enumeration </summary>
<remarks>
</remarks>
</member>
<member name="F:Pango.Direction.Ltr">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Direction.Rtl">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Direction.TtbLtr">
<summary />
<remarks>
</remarks>
</member>
<member name="F:Pango.Direction.TtbRtl">
<summary />
<remarks>
</remarks>
</member>
<member name="T:Pango.Engine">
<summary> Engine Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.EngineInfo">
<summary> EngineInfo Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.EngineLang">
<summary> EngineLang Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.EngineShape">
<summary> EngineShape Struct </summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.FontDescription">
<summary> FontDescription Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.Font">
<summary> Font Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.Font.Describe">
<summary> Describe Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="M:Pango.Font.GetGlyphExtents(System.UInt32,Pango.Rectangle,Pango.Rectangle)">
<summary> GetGlyphExtents Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="T:Pango.FontMetrics">
<summary> FontMetrics Boxed Struct</summary>
<remarks>
</remarks>
</member>
<member name="T:Pango.FontFace">
<summary> FontFace Class</summary>
<remarks>
</remarks>
</member>
<member name="M:Pango.FontFace.Describe">
<summary> Describe Method </summary>
<remarks> To be completed </remarks>
</member>
<member name="P:Pango.FontFace.FaceName">
<summary> FaceName Property </summary>
<remarks> To be completed </remarks>
</member>
</members>
</doc>