Apply the parts of the generator reorganization from #69514 that

don't actually affect the generated output
	
	* generator/PropertyBase.cs: new base class for fields and
	properties (mostly containing code formerly in Property.cs).

	* generator/Property.cs: derive from PropertyBase

	* generator/FieldBase.cs: base class for fields (containing some
	code formerly in Field.cs)

	* generator/StructField.cs: class for struct fields (the rest of
	what used to be Field.cs)

	* generator/StructBase.cs: s/Field/StructField/

	* gnome/Gnome.metadata: hide a few funky _get_ methods that the
	generator is just now noticing, to preserve the old output.

svn path=/trunk/gtk-sharp/; revision=43896
This commit is contained in:
Dan Winship 2005-05-02 18:40:30 +00:00
commit 5825f7f4fe
8 changed files with 320 additions and 165 deletions

View File

@ -1,3 +1,24 @@
2005-05-02 Dan Winship <danw@novell.com>
Apply the parts of the generator reorganization from #69514 that
don't actually affect the generated output
* generator/PropertyBase.cs: new base class for fields and
properties (mostly containing code formerly in Property.cs).
* generator/Property.cs: derive from PropertyBase
* generator/FieldBase.cs: base class for fields (containing some
code formerly in Field.cs)
* generator/StructField.cs: class for struct fields (the rest of
what used to be Field.cs)
* generator/StructBase.cs: s/Field/StructField/
* gnome/Gnome.metadata: hide a few _get_ methods that the
generator is just now noticing, to preserve the old output.
2005-05-02 Mike Kestner <mkestner@novell.com> 2005-05-02 Mike Kestner <mkestner@novell.com>
* generator/Property.cs : fix interface setter generation. * generator/Property.cs : fix interface setter generation.

70
generator/FieldBase.cs Normal file
View File

@ -0,0 +1,70 @@
// GtkSharp.Generation.FieldBase.cs - base class for struct and object
// fields
//
// Copyright (c) 2004 Novell, Inc.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the GNU General Public
// License as published by the Free Software Foundation.
//
// This program 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 program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
namespace GtkSharp.Generation {
using System;
using System.Collections;
using System.IO;
using System.Xml;
public abstract class FieldBase : PropertyBase {
public FieldBase (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
protected virtual bool Readable {
get {
return elem.GetAttribute ("readable") != "false";
}
}
protected virtual bool Writable {
get {
return elem.GetAttribute ("writeable") != "false";
}
}
protected abstract string DefaultAccess { get; }
protected string Access {
get {
return elem.HasAttribute ("access") ? elem.GetAttribute ("access") : DefaultAccess;
}
}
public bool IsArray {
get {
return elem.HasAttribute("array_len") || elem.HasAttribute("array");
}
}
public bool IsBitfield {
get {
return elem.HasAttribute("bits");
}
}
public bool Ignored {
get {
return IsArray || Access == "private";
}
}
}
}

View File

@ -18,7 +18,7 @@ sources = \
ConstStringGen.cs \ ConstStringGen.cs \
Ctor.cs \ Ctor.cs \
EnumGen.cs \ EnumGen.cs \
Field.cs \ FieldBase.cs \
GenBase.cs \ GenBase.cs \
GenerationInfo.cs \ GenerationInfo.cs \
IGeneratable.cs \ IGeneratable.cs \
@ -38,6 +38,7 @@ sources = \
Parameters.cs \ Parameters.cs \
Parser.cs \ Parser.cs \
Property.cs \ Property.cs \
PropertyBase.cs \
ReturnValue.cs \ ReturnValue.cs \
Signal.cs \ Signal.cs \
Signature.cs \ Signature.cs \
@ -45,6 +46,7 @@ sources = \
SimpleGen.cs \ SimpleGen.cs \
Statistics.cs \ Statistics.cs \
StructBase.cs \ StructBase.cs \
StructField.cs \
StructGen.cs \ StructGen.cs \
SymbolTable.cs \ SymbolTable.cs \
VirtualMethod.cs \ VirtualMethod.cs \

View File

@ -27,31 +27,14 @@ namespace GtkSharp.Generation {
using System.IO; using System.IO;
using System.Xml; using System.Xml;
public class Property { public class Property : PropertyBase {
protected XmlElement elem; public Property (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
protected ClassBase container_type;
public string Name {
get {
return elem.GetAttribute ("name");
}
}
public Property (XmlElement elem, ClassBase container_type)
{
this.elem = elem;
this.container_type = container_type;
}
public bool Validate () public bool Validate ()
{ {
string c_type = elem.GetAttribute("type"); if (CSType == "" && !Hidden) {
SymbolTable table = SymbolTable.Table; Console.Write("Property has unknown Type {0} ", CType);
string cs_type = table.GetCSType(c_type);
if (cs_type == "") {
Console.Write("Property has unknown Type {0} ", c_type);
Statistics.ThrottledCount++; Statistics.ThrottledCount++;
return false; return false;
} }
@ -59,6 +42,19 @@ namespace GtkSharp.Generation {
return true; return true;
} }
bool Readable {
get {
return elem.GetAttribute ("readable") == "true";
}
}
bool Writable {
get {
return elem.GetAttribute ("writeable") == "true" &&
!elem.HasAttribute ("construct-only");
}
}
protected virtual string PropertyAttribute (string qpname) { protected virtual string PropertyAttribute (string qpname) {
return "[GLib.Property (" + qpname + ")]"; return "[GLib.Property (" + qpname + ")]";
} }
@ -71,92 +67,57 @@ namespace GtkSharp.Generation {
return "SetProperty(" + qpname + ", val)"; return "SetProperty(" + qpname + ", val)";
} }
public void Generate (GenerationInfo gen_info, string indent) public override void Generate (GenerationInfo gen_info, string indent)
{ {
SymbolTable table = SymbolTable.Table; SymbolTable table = SymbolTable.Table;
StreamWriter sw = gen_info.Writer; StreamWriter sw = gen_info.Writer;
string c_type = elem.GetAttribute("type"); if (Hidden || (!Readable && !Writable))
string cs_type = table.GetCSType(c_type); return;
string modifiers = ""; string modifiers = "";
if (elem.HasAttribute("new_flag") || (container_type.Parent != null && container_type.Parent.GetPropertyRecursively (Name) != null)) if (IsNew || (container_type.Parent != null && container_type.Parent.GetPropertyRecursively (Name) != null))
modifiers = "new "; modifiers = "new ";
string name = Name; string name = Name;
if (name == container_type.Name) { if (name == container_type.Name) {
name += "Prop"; name += "Prop";
} }
string qpname = "\"" + elem.GetAttribute("cname") + "\""; string qpname = "\"" + CName + "\"";
string v_type = ""; string v_type = "";
if (table.IsEnum(c_type)) { if (table.IsEnum(CType)) {
v_type = "(int) (GLib.EnumWrapper)"; v_type = "(int) (GLib.EnumWrapper)";
} else if (table.IsObject(c_type) || table.IsInterface (c_type)) { } else if (table.IsObject(CType) || table.IsInterface (CType)) {
v_type = "(GLib.UnwrappedObject)"; v_type = "(GLib.UnwrappedObject)";
} else if (table.IsBoxed (c_type)) { } else if (table.IsBoxed (CType)) {
v_type = "(GLib.Boxed)"; v_type = "(GLib.Boxed)";
} else if (table.IsOpaque (c_type)) { } else if (table.IsOpaque (CType)) {
v_type = "(GLib.Opaque)"; v_type = "(GLib.Opaque)";
} }
if (elem.HasAttribute("construct-only") && !elem.HasAttribute("readable")) { GenerateImports (gen_info, indent);
return;
}
bool has_getter = false;
bool has_setter = false;
string getter_type = String.Empty;
string setter_type = String.Empty;
Method getter = container_type.GetMethod("Get" + Name);
if (getter != null && getter.Validate () && getter.IsGetter)
getter_type = getter.ReturnType;
Method setter = container_type.GetMethod("Set" + Name);
if (setter != null && setter.Validate () && setter.IsSetter)
setter_type = setter.Signature.Types;
if (getter_type != String.Empty && getter_type == setter_type) {
has_getter = has_setter = true;
getter.GenerateImport (sw);
setter.GenerateImport (sw);
cs_type = getter_type;
} else {
if (getter_type == cs_type) {
has_getter = true;
getter.GenerateImport(sw);
}
if (setter_type != String.Empty) {
has_setter = true;
setter.GenerateImport(sw);
}
if (has_setter && setter_type != cs_type)
cs_type = setter_type;
else if (has_getter && getter_type != cs_type)
cs_type = getter_type;
}
sw.WriteLine (indent + PropertyAttribute (qpname)); sw.WriteLine (indent + PropertyAttribute (qpname));
sw.WriteLine (indent + "public " + modifiers + cs_type + " " + name + " {"); sw.WriteLine (indent + "public " + modifiers + CSType + " " + name + " {");
indent += "\t"; indent += "\t";
if (has_getter) { if (Getter != null) {
sw.Write(indent + "get "); sw.Write(indent + "get ");
getter.GenerateBody(gen_info, "\t"); Getter.GenerateBody(gen_info, "\t");
sw.WriteLine(); sw.WriteLine();
} else if (elem.HasAttribute("readable")) { } else if (Readable) {
sw.WriteLine(indent + "get {"); sw.WriteLine(indent + "get {");
sw.WriteLine(indent + "\tGLib.Value val = " + RawGetter (qpname) + ";"); sw.WriteLine(indent + "\tGLib.Value val = " + RawGetter (qpname) + ";");
if (table.IsObject (c_type) || table.IsInterface (c_type)) { if (table.IsObject (CType) || table.IsInterface (CType)) {
sw.WriteLine(indent + "\tSystem.IntPtr raw_ret = (System.IntPtr) {0} val;", v_type); sw.WriteLine(indent + "\tSystem.IntPtr raw_ret = (System.IntPtr) {0} val;", v_type);
sw.WriteLine(indent + "\t" + cs_type + " ret = " + table.FromNativeReturn(c_type, "raw_ret") + ";"); sw.WriteLine(indent + "\t" + CSType + " ret = " + table.FromNativeReturn(CType, "raw_ret") + ";");
} else if (table.IsOpaque (c_type) || table.IsBoxed (c_type)) { } else if (table.IsOpaque (CType) || table.IsBoxed (CType)) {
sw.WriteLine(indent + "\t" + cs_type + " ret = (" + cs_type + ") val;"); sw.WriteLine(indent + "\t" + CSType + " ret = (" + CSType + ") val;");
} else { } else {
sw.Write(indent + "\t" + cs_type + " ret = "); sw.Write(indent + "\t" + CSType + " ret = ");
sw.Write ("(" + cs_type + ") "); sw.Write ("(" + CSType + ") ");
if (v_type != "") { if (v_type != "") {
sw.Write(v_type + " "); sw.Write(v_type + " ");
} }
@ -168,22 +129,22 @@ namespace GtkSharp.Generation {
sw.WriteLine(indent + "}"); sw.WriteLine(indent + "}");
} }
if (has_setter) { if (Setter != null) {
sw.Write(indent + "set "); sw.Write(indent + "set ");
setter.GenerateBody(gen_info, "\t"); Setter.GenerateBody(gen_info, "\t");
sw.WriteLine(); sw.WriteLine();
} else if (elem.HasAttribute("writeable") && !elem.HasAttribute("construct-only")) { } else if (Writable) {
sw.WriteLine(indent + "set {"); sw.WriteLine(indent + "set {");
sw.Write(indent + "\tGLib.Value val = "); sw.Write(indent + "\tGLib.Value val = ");
if (table.IsEnum(c_type)) { if (table.IsEnum(CType)) {
sw.WriteLine("new GLib.Value(new GLib.EnumWrapper ((int) value, {0}), \"{1}\");", table.IsEnumFlags (c_type) ? "true" : "false", c_type); sw.WriteLine("new GLib.Value(new GLib.EnumWrapper ((int) value, {0}), \"{1}\");", table.IsEnumFlags (CType) ? "true" : "false", CType);
} else if (table.IsBoxed (c_type)) { } else if (table.IsBoxed (CType)) {
sw.WriteLine("(GLib.Value) value;"); sw.WriteLine("(GLib.Value) value;");
} else if (table.IsOpaque (c_type)) { } else if (table.IsOpaque (CType)) {
sw.WriteLine("new GLib.Value(value, \"{0}\");", c_type); sw.WriteLine("new GLib.Value(value, \"{0}\");", CType);
} else { } else {
sw.Write("new GLib.Value("); sw.Write("new GLib.Value(");
if (v_type != "" && !(table.IsObject (c_type) || table.IsInterface (c_type) || table.IsOpaque (c_type))) { if (v_type != "" && !(table.IsObject (CType) || table.IsInterface (CType) || table.IsOpaque (CType))) {
sw.Write(v_type + " "); sw.Write(v_type + " ");
} }
sw.WriteLine("value);"); sw.WriteLine("value);");

120
generator/PropertyBase.cs Normal file
View File

@ -0,0 +1,120 @@
// GtkSharp.Generation.PropertyBase.cs - base class for properties and
// fields
//
// Copyright (c) 2005 Novell, Inc.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the GNU General Public
// License as published by the Free Software Foundation.
//
// This program 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 program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
namespace GtkSharp.Generation {
using System;
using System.Xml;
public abstract class PropertyBase {
protected XmlElement elem;
protected ClassBase container_type;
public PropertyBase (XmlElement elem, ClassBase container_type)
{
this.elem = elem;
this.container_type = container_type;
}
public string Name {
get {
return elem.GetAttribute ("name");
}
}
public string CName {
get {
return elem.GetAttribute ("cname");
}
}
protected string ctype;
public string CType {
get {
if (ctype == null)
ctype = elem.GetAttribute ("type");
return ctype;
}
}
protected string cstype;
public string CSType {
get {
if (cstype == null)
cstype = SymbolTable.Table.GetCSType (CType);
return cstype;
}
}
public bool Hidden {
get {
return elem.HasAttribute("hidden");
}
}
protected bool IsNew {
get {
return elem.HasAttribute("new_flag");
}
}
Method getter;
protected Method Getter {
get {
if (getter == null) {
getter = container_type.GetMethod ("Get" + Name);
if (getter != null && getter.Name == "Get" + Name &&
getter.Validate () && getter.IsGetter)
cstype = getter.ReturnType;
else
getter = null;
}
return getter;
}
}
Method setter;
protected Method Setter {
get {
if (setter == null) {
setter = container_type.GetMethod ("Set" + Name);
if (setter != null && setter.Name == "Set" + Name &&
setter.Validate () && setter.IsSetter)
cstype = setter.Signature.Types;
else
setter = null;
}
return setter;
}
}
protected virtual void GenerateImports (GenerationInfo gen_info, string indent)
{
if (Getter != null)
Getter.GenerateImport (gen_info.Writer);
if (Setter != null)
Setter.GenerateImport (gen_info.Writer);
}
public abstract void Generate (GenerationInfo gen_info, string indent);
}
}

View File

@ -40,7 +40,7 @@ namespace GtkSharp.Generation {
switch (node.Name) { switch (node.Name) {
case "field": case "field":
fields.Add (new Field (member)); fields.Add (new StructField (member, this));
break; break;
case "callback": case "callback":
@ -112,11 +112,11 @@ namespace GtkSharp.Generation {
} }
} }
protected void GenFields (StreamWriter sw) protected void GenFields (GenerationInfo gen_info)
{ {
Field.bitfields = 0; StructField.bitfields = 0;
bool need_field = true; bool need_field = true;
foreach (Field field in fields) { foreach (StructField field in fields) {
if (field.IsBit) { if (field.IsBit) {
if (need_field) if (need_field)
need_field = false; need_field = false;
@ -124,13 +124,13 @@ namespace GtkSharp.Generation {
continue; continue;
} else } else
need_field = true; need_field = true;
field.Generate (sw); field.Generate (gen_info, "\t\t");
} }
} }
public bool Validate () public bool Validate ()
{ {
foreach (Field field in fields) { foreach (StructField field in fields) {
if (!field.Validate ()) { if (!field.Validate ()) {
Console.WriteLine ("in Struct " + QualifiedName); Console.WriteLine ("in Struct " + QualifiedName);
return false; return false;
@ -162,7 +162,7 @@ namespace GtkSharp.Generation {
sw.WriteLine ("\tpublic struct " + Name + " {"); sw.WriteLine ("\tpublic struct " + Name + " {");
sw.WriteLine (); sw.WriteLine ();
GenFields (sw); GenFields (gen_info);
sw.WriteLine (); sw.WriteLine ();
GenCtors (gen_info); GenCtors (gen_info);
GenMethods (gen_info, null, null); GenMethods (gen_info, null, null);

View File

@ -1,4 +1,5 @@
// GtkSharp.Generation.Field.cs - The Field generation Class. // GtkSharp.Generation.StructField.cs - The Structure Field generation
// Class.
// //
// Author: Mike Kestner <mkestner@ximian.com> // Author: Mike Kestner <mkestner@ximian.com>
// //
@ -25,20 +26,15 @@ namespace GtkSharp.Generation {
using System.IO; using System.IO;
using System.Xml; using System.Xml;
public class Field { public class StructField : FieldBase {
public static int bitfields; public static int bitfields;
XmlElement elem; public StructField (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
public Field (XmlElement elem) protected override string DefaultAccess {
{
this.elem = elem;
}
public string Access {
get { get {
return elem.HasAttribute ("access") ? elem.GetAttribute ("access") : "public"; return "public";
} }
} }
@ -59,9 +55,9 @@ namespace GtkSharp.Generation {
} }
} }
public string CSType { public new string CSType {
get { get {
string type = SymbolTable.Table.GetCSType (CType); string type = base.CSType;
if (IsArray) if (IsArray)
type += "[]"; type += "[]";
else if (IsBit) else if (IsBit)
@ -75,34 +71,15 @@ namespace GtkSharp.Generation {
} }
} }
public string CType {
get {
return elem.GetAttribute ("type");
}
}
public bool Hidden {
get {
return elem.HasAttribute("hidden");
}
}
public bool IsArray {
get {
return elem.HasAttribute("array_len");
}
}
public bool IsBit { public bool IsBit {
get { get {
return (elem.HasAttribute("bits") && (elem.GetAttribute("bits") == "1")); return elem.GetAttribute("bits") == "1";
} }
} }
public bool IsPadding { public bool IsPadding {
get { get {
string c_name = elem.GetAttribute ("cname"); return (CName.StartsWith ("dummy") || CName.StartsWith ("padding"));
return (c_name.StartsWith ("dummy") || c_name.StartsWith ("padding"));
} }
} }
@ -112,7 +89,7 @@ namespace GtkSharp.Generation {
} }
} }
public string Name { public new string Name {
get { get {
string result = ""; string result = "";
if ((IsPointer || SymbolTable.Table.IsOpaque (CType)) && CSType != "string") if ((IsPointer || SymbolTable.Table.IsOpaque (CType)) && CSType != "string")
@ -121,7 +98,7 @@ namespace GtkSharp.Generation {
if (IsBit) if (IsBit)
result = String.Format ("_bitfield{0}", bitfields++); result = String.Format ("_bitfield{0}", bitfields++);
else else
result += SymbolTable.Table.MangleName (elem.GetAttribute ("cname")); result += SymbolTable.Table.MangleName (CName);
return result; return result;
} }
@ -129,14 +106,14 @@ namespace GtkSharp.Generation {
public string StudlyName { public string StudlyName {
get { get {
string studly = elem.GetAttribute ("name"); string studly = base.Name;
if (studly != "") if (studly != "")
return studly; return studly;
// FIXME: this is backward compatibility for API files // FIXME: this is backward compatibility for API files
// output by older versions of the parser. It can go // output by older versions of the parser. It can go
// away at some point. // away at some point.
string name = elem.GetAttribute ("cname"); string name = CName;
string[] segs = name.Split('_'); string[] segs = name.Split('_');
foreach (string s in segs) { foreach (string s in segs) {
if (s.Trim () == "") if (s.Trim () == "")
@ -150,74 +127,75 @@ namespace GtkSharp.Generation {
public bool Validate () public bool Validate ()
{ {
if (CSType == "" && !Hidden) { if (CSType == "" && !Hidden) {
Console.Write ("Field has unknown Type {0} ", CType); Console.Write ("Field {0} has unknown Type {1} ", Name, CType);
Statistics.ThrottledCount++; Statistics.ThrottledCount++;
return false; return false;
} }
return true; return true;
} }
public void Generate (StreamWriter sw) public override void Generate (GenerationInfo gen_info, string indent)
{ {
if (Hidden) if (Hidden)
return; return;
StreamWriter sw = gen_info.Writer;
SymbolTable table = SymbolTable.Table; SymbolTable table = SymbolTable.Table;
if (IsArray) if (IsArray)
sw.WriteLine ("\t\t[MarshalAs (UnmanagedType.ByValArray, SizeConst=" + ArrayLength + ")]"); sw.WriteLine (indent + "[MarshalAs (UnmanagedType.ByValArray, SizeConst=" + ArrayLength + ")]");
string wrapped = table.GetCSType (CType); string wrapped = table.GetCSType (CType);
string wrapped_name = SymbolTable.Table.MangleName (elem.GetAttribute ("cname")); string wrapped_name = SymbolTable.Table.MangleName (CName);
IGeneratable gen = table [CType]; IGeneratable gen = table [CType];
if (IsArray) { if (IsArray) {
sw.WriteLine ("\t\t{0} {1} {2};", Access, CSType, StudlyName); sw.WriteLine (indent + "{0} {1} {2};", Access, CSType, StudlyName);
} else if (IsPadding) { } else if (IsPadding) {
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
} else if (IsBit) { } else if (IsBit) {
// FIXME // FIXME
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
} else if (table.IsCallback (CType)) { } else if (table.IsCallback (CType)) {
// FIXME // FIXME
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
} else if (gen is LPGen || gen is LPUGen) { } else if (gen is LPGen || gen is LPUGen) {
sw.WriteLine ("\t\tprivate " + gen.MarshalType + " " + Name + ";"); sw.WriteLine (indent + "private " + gen.MarshalType + " " + Name + ";");
sw.WriteLine ("\t\tpublic " + CSType + " " + StudlyName + " {"); sw.WriteLine (indent + "public " + CSType + " " + StudlyName + " {");
sw.WriteLine ("\t\t\tget {"); sw.WriteLine (indent + "\tget {");
sw.WriteLine ("\t\t\t\treturn " + gen.FromNative (Name) + ";"); sw.WriteLine (indent + "\t\treturn " + gen.FromNative (Name) + ";");
sw.WriteLine ("\t\t\t}"); sw.WriteLine (indent + "\t}");
sw.WriteLine ("\t\t\tset {"); sw.WriteLine (indent + "\tset {");
sw.WriteLine ("\t\t\t\t" + Name + " = " + gen.CallByName ("value") + ";"); sw.WriteLine (indent + "\t\t" + Name + " = " + gen.CallByName ("value") + ";");
sw.WriteLine ("\t\t\t}"); sw.WriteLine (indent + "\t}");
sw.WriteLine ("\t\t}"); sw.WriteLine (indent + "}");
} else if (table.IsObject (CType) || table.IsOpaque (CType)) { } else if (table.IsObject (CType) || table.IsOpaque (CType)) {
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
if (Access != "private") { if (Access != "private") {
sw.WriteLine ("\t\t" + Access + " " + wrapped + " " + wrapped_name + " {"); sw.WriteLine (indent + "" + Access + " " + wrapped + " " + wrapped_name + " {");
sw.WriteLine ("\t\t\tget { "); sw.WriteLine (indent + "\tget { ");
sw.WriteLine ("\t\t\t\treturn " + table.FromNativeReturn(CType, Name) + ";"); sw.WriteLine (indent + "\t\treturn " + table.FromNativeReturn(CType, Name) + ";");
sw.WriteLine ("\t\t\t}"); sw.WriteLine (indent + "\t}");
sw.WriteLine ("\t\t\tset { " + Name + " = " + table.CallByName (CType, "value") + "; }"); sw.WriteLine (indent + "\tset { " + Name + " = " + table.CallByName (CType, "value") + "; }");
sw.WriteLine ("\t\t}"); sw.WriteLine (indent + "}");
} }
} else if (IsPointer && (table.IsStruct (CType) || table.IsBoxed (CType))) { } else if (IsPointer && (table.IsStruct (CType) || table.IsBoxed (CType))) {
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
sw.WriteLine (); sw.WriteLine ();
if (Access != "private") { if (Access != "private") {
sw.WriteLine ("\t\t" + Access + " " + wrapped + " " + wrapped_name + " {"); sw.WriteLine (indent + "" + Access + " " + wrapped + " " + wrapped_name + " {");
sw.WriteLine ("\t\t\tget { return " + table.FromNativeReturn (CType, Name) + "; }"); sw.WriteLine (indent + "\tget { return " + table.FromNativeReturn (CType, Name) + "; }");
sw.WriteLine ("\t\t}"); sw.WriteLine (indent + "}");
} }
} else if (IsPointer && CSType != "string") { } else if (IsPointer && CSType != "string") {
// FIXME: probably some fields here which should be visible. // FIXME: probably some fields here which should be visible.
sw.WriteLine ("\t\tprivate {0} {1};", CSType, Name); sw.WriteLine (indent + "private {0} {1};", CSType, Name);
} else if (Access != "public") { } else if (Access != "public") {
sw.WriteLine ("\t\t{0} {1} {2};", Access, CSType, Name); sw.WriteLine (indent + "{0} {1} {2};", Access, CSType, Name);
} else { } else {
sw.WriteLine ("\t\tpublic {0} {1};", CSType, StudlyName); sw.WriteLine (indent + "public {0} {1};", CSType, StudlyName);
} }
} }
} }

View File

@ -55,6 +55,7 @@
<attr path="/api/namespace/object[@cname='GnomeCanvasShape']/property[@name='Dash']" name="type">ArtVpathDash</attr> <attr path="/api/namespace/object[@cname='GnomeCanvasShape']/property[@name='Dash']" name="type">ArtVpathDash</attr>
<attr path="/api/namespace/object[@cname='GnomeClient']/signal[@name='Connect']" name="name">Connected</attr> <attr path="/api/namespace/object[@cname='GnomeClient']/signal[@name='Connect']" name="name">Connected</attr>
<attr path="/api/namespace/object[@cname='GnomeClient']/signal[@name='Disconnect']" name="name">Disconnected</attr> <attr path="/api/namespace/object[@cname='GnomeClient']/signal[@name='Disconnect']" name="name">Disconnected</attr>
<attr path="/api/namespace/object[@cname='GnomeDateEdit']/method[@name='GetInitialTime']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='Close']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='Close']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='SetClose']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='SetClose']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='SetDefault']" name="new_flag">1</attr> <attr path="/api/namespace/object[@cname='GnomeDialog']/method[@name='SetDefault']" name="new_flag">1</attr>
@ -68,7 +69,7 @@
<attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new_with_vals']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new_with_vals']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new_aa']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeDruidPageEdge']/constructor[@cname='gnome_druid_page_edge_new_aa']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeEntry']/method[@name='GtkEntry']" name="name">GetGtkEntry</attr> <attr path="/api/namespace/object[@cname='GnomeEntry']/method[@name='GtkEntry']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeEntry']/signal[@name='Activate']" name="name">Activated</attr> <attr path="/api/namespace/object[@cname='GnomeEntry']/signal[@name='Activate']" name="name">Activated</attr>
<attr path="/api/namespace/object[@cname='GnomeFileEntry']/method[@name='GnomeEntry']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFileEntry']/method[@name='GnomeEntry']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFileEntry']/method[@name='GtkEntry']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFileEntry']/method[@name='GtkEntry']" name="hidden">1</attr>
@ -78,14 +79,16 @@
<attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='StyleList']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='StyleList']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='StyleListFree']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='StyleListFree']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFont']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr> <attr path="/api/namespace/object[@cname='GnomeFont']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeFont']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr> <attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='GetFamilyName']/return-type" name="type">const-gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeFontPreview']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr> <attr path="/api/namespace/object[@cname='GnomeFont']/method[@name='GetFullName']/return-type" name="type">gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFace']/method/return-type[@type='const-guchar*']" name="type">const-gchar*</attr> <attr path="/api/namespace/object[@cname='GnomeFontFace']/method/return-type[@type='const-guchar*']" name="type">const-gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFace']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr> <attr path="/api/namespace/object[@cname='GnomeFontFace']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='List']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='List']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='ListFree']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='ListFree']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='StyleList']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='StyleList']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='StyleListFree']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeFontFamily']/method[@name='StyleListFree']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFontPicker']/method[@name='GetFont']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeFontPreview']/method/*/*[@type='const-guchar*']" name="type">const-gchar*</attr>
<attr path="/api/namespace/object[@cname='GnomeIconEntry']/method[@name='PickDialog']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeIconEntry']/method[@name='PickDialog']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeIconList']/constructor[@cname='gnome_icon_list_new']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeIconList']/constructor[@cname='gnome_icon_list_new']" name="hidden">1</attr>
<attr path="/api/namespace/object[@cname='GnomeIconList']/method[@name='GetSelection']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GnomeIconList']/method[@name='GetSelection']" name="hidden">1</attr>