no more submodule
This commit is contained in:
185
GtkSharp/Source/Tools/GapiCodegen/MethodBase.cs
Normal file
185
GtkSharp/Source/Tools/GapiCodegen/MethodBase.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
// GtkSharp.Generation.MethodBase.cs - function element base class.
|
||||
//
|
||||
// Author: Mike Kestner <mkestner@novell.com>
|
||||
//
|
||||
// Copyright (c) 2001-2003 Mike Kestner
|
||||
// Copyright (c) 2004-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 MethodBase {
|
||||
|
||||
protected XmlElement elem;
|
||||
protected ClassBase container_type;
|
||||
protected Parameters parms;
|
||||
string mods = String.Empty;
|
||||
string name;
|
||||
private string protection = "public";
|
||||
|
||||
protected MethodBase (XmlElement elem, ClassBase container_type)
|
||||
{
|
||||
this.elem = elem;
|
||||
this.container_type = container_type;
|
||||
this.name = elem.GetAttribute ("name");
|
||||
parms = new Parameters (elem ["parameters"]);
|
||||
IsStatic = elem.GetAttribute ("shared") == "true";
|
||||
if (elem.GetAttributeAsBoolean ("new_flag"))
|
||||
mods = "new ";
|
||||
if (elem.HasAttribute ("accessibility")) {
|
||||
string attr = elem.GetAttribute ("accessibility");
|
||||
switch (attr) {
|
||||
case "public":
|
||||
case "protected":
|
||||
case "internal":
|
||||
case "private":
|
||||
case "protected internal":
|
||||
protection = attr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected string BaseName {
|
||||
get {
|
||||
string name = Name;
|
||||
int idx = Name.LastIndexOf (".");
|
||||
if (idx > 0)
|
||||
name = Name.Substring (idx + 1);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
MethodBody body;
|
||||
public MethodBody Body {
|
||||
get {
|
||||
if (body == null) {
|
||||
LogWriter log = new LogWriter (Name);
|
||||
body = new MethodBody (parms, log);
|
||||
}
|
||||
return body;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual string CName {
|
||||
get {
|
||||
return SymbolTable.Table.MangleName (elem.GetAttribute ("cname"));
|
||||
}
|
||||
}
|
||||
|
||||
protected bool HasGetterName {
|
||||
get {
|
||||
string name = BaseName;
|
||||
if (name.Length <= 3)
|
||||
return false;
|
||||
if (name.StartsWith ("Get") || name.StartsWith ("Has"))
|
||||
return Char.IsUpper (name [3]);
|
||||
else if (name.StartsWith ("Is"))
|
||||
return Char.IsUpper (name [2]);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected bool HasSetterName {
|
||||
get {
|
||||
string name = BaseName;
|
||||
if (name.Length <= 3)
|
||||
return false;
|
||||
|
||||
return name.StartsWith ("Set") && Char.IsUpper (name [3]);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsStatic {
|
||||
get {
|
||||
return parms.Static;
|
||||
}
|
||||
set {
|
||||
parms.Static = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string LibraryName {
|
||||
get {
|
||||
if (elem.HasAttribute ("library"))
|
||||
return elem.GetAttribute ("library");
|
||||
return container_type.LibraryName;
|
||||
}
|
||||
}
|
||||
|
||||
public string Modifiers {
|
||||
get {
|
||||
return mods;
|
||||
}
|
||||
set {
|
||||
mods = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Name {
|
||||
get {
|
||||
return name;
|
||||
}
|
||||
set {
|
||||
name = value;
|
||||
}
|
||||
}
|
||||
|
||||
public Parameters Parameters {
|
||||
get {
|
||||
return parms;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string Protection {
|
||||
get { return protection; }
|
||||
set { protection = value; }
|
||||
}
|
||||
|
||||
protected string Safety {
|
||||
get {
|
||||
return Body.ThrowsException && !(container_type is InterfaceGen) ? "unsafe " : "";
|
||||
}
|
||||
}
|
||||
|
||||
Signature sig;
|
||||
public Signature Signature {
|
||||
get {
|
||||
if (sig == null)
|
||||
sig = new Signature (parms);
|
||||
return sig;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool Validate (LogWriter log)
|
||||
{
|
||||
log.Member = Name;
|
||||
if (!parms.Validate (log)) {
|
||||
Statistics.ThrottledCount++;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user