mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2025-01-11 14:15:36 +00:00
2003-09-11 Mike Kestner <mkestner@ximian.com>
* generator/Parameters.cs : keep an ArrayList of Parameter objects and refactor the hell out of the joint using the new Count and this[]. Still need to refactor a couple methods. svn path=/trunk/gtk-sharp/; revision=18030
This commit is contained in:
parent
5e5a570be3
commit
1a0892ea8b
|
@ -1,3 +1,9 @@
|
||||||
|
2003-09-11 Mike Kestner <mkestner@ximian.com>
|
||||||
|
|
||||||
|
* generator/Parameters.cs : keep an ArrayList of Parameter objects
|
||||||
|
and refactor the hell out of the joint using the new Count and this[].
|
||||||
|
Still need to refactor a couple methods.
|
||||||
|
|
||||||
2003-09-11 Mike Kestner <mkestner@ximian.com>
|
2003-09-11 Mike Kestner <mkestner@ximian.com>
|
||||||
|
|
||||||
* generator/Parameters.cs (IsLength): use a switch to make the
|
* generator/Parameters.cs (IsLength): use a switch to make the
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
namespace GtkSharp.Generation {
|
namespace GtkSharp.Generation {
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
|
||||||
|
@ -47,6 +48,12 @@ namespace GtkSharp.Generation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsEllipsis {
|
||||||
|
get {
|
||||||
|
return elem.HasAttribute("ellipsis");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsLength {
|
public bool IsLength {
|
||||||
get {
|
get {
|
||||||
|
|
||||||
|
@ -59,10 +66,8 @@ namespace GtkSharp.Generation {
|
||||||
case "short":
|
case "short":
|
||||||
case "ushort":
|
case "ushort":
|
||||||
return true;
|
return true;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -125,12 +130,13 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
public class Parameters {
|
public class Parameters {
|
||||||
|
|
||||||
|
private ArrayList param_list;
|
||||||
private XmlElement elem;
|
private XmlElement elem;
|
||||||
private string impl_ns;
|
private string impl_ns;
|
||||||
private string import_sig;
|
private string import_sig = "";
|
||||||
private string call_string;
|
private string call_string = "";
|
||||||
private string signature;
|
private string signature = "";
|
||||||
private string signature_types;
|
private string signature_types = "";
|
||||||
private bool hide_data;
|
private bool hide_data;
|
||||||
private bool is_static;
|
private bool is_static;
|
||||||
|
|
||||||
|
@ -138,6 +144,12 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
this.elem = elem;
|
this.elem = elem;
|
||||||
this.impl_ns = impl_ns;
|
this.impl_ns = impl_ns;
|
||||||
|
param_list = new ArrayList ();
|
||||||
|
foreach (XmlNode node in elem.ChildNodes) {
|
||||||
|
XmlElement parm = node as XmlElement;
|
||||||
|
if (parm != null && parm.Name == "parameter")
|
||||||
|
param_list.Add (new Parameter (parm));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string CallString {
|
public string CallString {
|
||||||
|
@ -146,14 +158,15 @@ namespace GtkSharp.Generation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int Count {
|
||||||
|
get {
|
||||||
|
return param_list.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Parameter this [int idx] {
|
public Parameter this [int idx] {
|
||||||
get {
|
get {
|
||||||
int count = 0;
|
return param_list [idx] as Parameter;
|
||||||
foreach (XmlNode node in elem.ChildNodes) {
|
|
||||||
if ((node is XmlElement) && (idx == count++))
|
|
||||||
return new Parameter ((XmlElement) node);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,20 +199,13 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
public bool Validate ()
|
public bool Validate ()
|
||||||
{
|
{
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
foreach (Parameter p in param_list) {
|
||||||
if (!(parm is XmlElement) || parm.Name != "parameter") {
|
|
||||||
continue;
|
if (p.IsEllipsis) {
|
||||||
}
|
|
||||||
|
|
||||||
XmlElement p_elem = (XmlElement) parm;
|
|
||||||
|
|
||||||
if (p_elem.HasAttribute("ellipsis")) {
|
|
||||||
Console.Write("Ellipsis parameter ");
|
Console.Write("Ellipsis parameter ");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Parameter p = new Parameter (p_elem);
|
|
||||||
|
|
||||||
if ((p.CSType == "") || (p.Name == "") ||
|
if ((p.CSType == "") || (p.Name == "") ||
|
||||||
(p.MarshalType == "") || (SymbolTable.Table.CallByName(p.CType, p.Name) == "")) {
|
(p.MarshalType == "") || (SymbolTable.Table.CallByName(p.CType, p.Name) == "")) {
|
||||||
Console.Write("Name: " + p.Name + " Type: " + p.CType + " ");
|
Console.Write("Name: " + p.Name + " Type: " + p.CType + " ");
|
||||||
|
@ -212,7 +218,7 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
public void CreateSignature (bool is_set)
|
public void CreateSignature (bool is_set)
|
||||||
{
|
{
|
||||||
signature_types = signature = import_sig = call_string = "";
|
import_sig = call_string = signature = signature_types = "";
|
||||||
bool need_sep = false;
|
bool need_sep = false;
|
||||||
bool has_callback = hide_data;
|
bool has_callback = hide_data;
|
||||||
bool last_was_user_data = false;
|
bool last_was_user_data = false;
|
||||||
|
@ -387,11 +393,7 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
public void Finish (StreamWriter sw, string indent)
|
public void Finish (StreamWriter sw, string indent)
|
||||||
{
|
{
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
foreach (Parameter p in param_list) {
|
||||||
if (parm.Name != "parameter")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Parameter p = new Parameter ((XmlElement) parm);
|
|
||||||
|
|
||||||
if (p.PassAs == "out" && p.Generatable is EnumGen) {
|
if (p.PassAs == "out" && p.Generatable is EnumGen) {
|
||||||
sw.WriteLine(indent + "\t\t\t" + p.Name + " = (" + p.CSType + ") " + p.Name + "_as_int;");
|
sw.WriteLine(indent + "\t\t\t" + p.Name + " = (" + p.CSType + ") " + p.Name + "_as_int;");
|
||||||
|
@ -407,54 +409,18 @@ namespace GtkSharp.Generation {
|
||||||
sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new GLib.GException (error);");
|
sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new GLib.GException (error);");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Count {
|
|
||||||
get {
|
|
||||||
int length = 0;
|
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
|
||||||
if (parm.Name != "parameter") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
length++;
|
|
||||||
}
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsAccessor {
|
public bool IsAccessor {
|
||||||
get {
|
get {
|
||||||
int length = 0;
|
return Count == 1 && this [0].PassAs == "out";
|
||||||
string pass_as = "";
|
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
|
||||||
if (!(parm is XmlElement) || parm.Name != "parameter") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
XmlElement p_elem = (XmlElement) parm;
|
|
||||||
length++;
|
|
||||||
if (length > 1)
|
|
||||||
return false;
|
|
||||||
if (p_elem.HasAttribute("pass_as"))
|
|
||||||
pass_as = p_elem.GetAttribute("pass_as");
|
|
||||||
}
|
|
||||||
|
|
||||||
return (length == 1 && pass_as == "out");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ThrowsException {
|
public bool ThrowsException {
|
||||||
get {
|
get {
|
||||||
if ((elem.ChildNodes == null) || (elem.ChildNodes.Count < 1))
|
if (Count < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
XmlElement p_elem = null;
|
return this [Count - 1].CType == "GError**";
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
|
||||||
if (!(parm is XmlElement) || parm.Name != "parameter")
|
|
||||||
continue;
|
|
||||||
p_elem = (XmlElement) parm;
|
|
||||||
}
|
|
||||||
string type = p_elem.GetAttribute("type");
|
|
||||||
return (type == "GError**");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,26 +438,19 @@ namespace GtkSharp.Generation {
|
||||||
|
|
||||||
public string AccessorReturnType {
|
public string AccessorReturnType {
|
||||||
get {
|
get {
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
if (Count > 0)
|
||||||
if (parm.Name != "parameter")
|
return this [0].CSType;
|
||||||
continue;
|
else
|
||||||
XmlElement p_elem = (XmlElement) parm;
|
return null;
|
||||||
return SymbolTable.Table.GetCSType(p_elem.GetAttribute ("type"));
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AccessorName {
|
public string AccessorName {
|
||||||
get {
|
get {
|
||||||
foreach (XmlNode parm in elem.ChildNodes) {
|
if (Count > 0)
|
||||||
if (parm.Name != "parameter")
|
return this [0].Name;
|
||||||
continue;
|
else
|
||||||
XmlElement p_elem = (XmlElement) parm;
|
return null;
|
||||||
Parameter p = new Parameter (p_elem);
|
|
||||||
return p.Name;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue