added wxArgumentType; added parsing of argument names, so that the modify mode retains them when writing correct prototypes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2008-03-24 22:08:45 +00:00
parent a7be99c803
commit f270e1ddda
3 changed files with 123 additions and 55 deletions

View File

@@ -32,14 +32,12 @@ class wxType
public:
wxType() {}
wxType(const wxString& type)
{ SetFromString(type); }
{ SetTypeFromString(type); }
void SetFromString(const wxString& t);
void SetTypeFromString(const wxString& t);
wxString GetAsString() const
{ return m_strType; }
wxString GetClean() const;
bool IsConst() const
{ return m_strType.Contains("const"); }
bool IsStatic() const
@@ -57,12 +55,49 @@ public:
protected:
wxString m_strType;
// utility for doing comparisons
wxString GetClean() const;
};
extern wxType wxEmptyType;
WX_DECLARE_OBJARRAY(wxType, wxTypeArray);
// ----------------------------------------------------------------------------
// Represents a type used as argument for some wxMethod
// ----------------------------------------------------------------------------
class wxArgumentType : public wxType
{
public:
wxArgumentType() {}
wxArgumentType(const wxString& type, const wxString& defVal,
const wxString& argName = wxEmptyString)
{ SetTypeFromString(type); SetDefaultValue(defVal); m_strArgName = argName; }
void SetArgumentName(const wxString& name)
{ m_strArgName=name.Strip(wxString::both); }
wxString GetArgumentName() const
{ return m_strArgName; }
void SetDefaultValue(const wxString& defval);
wxString GetDefaultValue() const
{ return m_strDefaultValue; }
bool operator==(const wxArgumentType& m) const;
bool operator!=(const wxArgumentType& m) const
{ return !(*this == m); }
protected:
wxString m_strDefaultValue;
wxString m_strArgName; // this one only makes sense when this wxType is
// used as argument type (and not as return type)
// and can be empty.
};
extern wxArgumentType wxEmptyArgumentType;
WX_DECLARE_OBJARRAY(wxArgumentType, wxArgumentTypeArray);
// ----------------------------------------------------------------------------
// Represents a single prototype of a class' member.
@@ -74,17 +109,16 @@ public:
{ m_bConst=m_bVirtual=m_bPureVirtual=m_bStatic=m_bDeprecated=false; m_nLine=-1; }
wxMethod(const wxType& rettype, const wxString& name,
const wxTypeArray& arguments, const wxArrayString& defaults,
const wxArgumentTypeArray& arguments,
bool isConst, bool isStatic, bool isVirtual)
: m_retType(rettype), m_strName(name.Strip(wxString::both)),
m_bConst(isConst), m_bStatic(isStatic), m_bVirtual(isVirtual)
{ SetArgumentTypes(arguments,defaults); m_nLine=-1; }
{ SetArgumentTypes(arguments); m_nLine=-1; }
public: // getters
//void SetFromString(const wxString& proto);
wxString GetAsString() const;
wxString GetAsString(bool bWithArgumentNames = true) const;
// parser of the prototype:
// all these functions return strings with spaces stripped
@@ -92,10 +126,8 @@ public: // getters
{ return m_retType; }
wxString GetName() const
{ return m_strName; }
wxTypeArray GetArgumentTypes() const
wxArgumentTypeArray GetArgumentTypes() const
{ return m_args; }
wxArrayString GetArgumentDefaults() const
{ return m_argDefaults; }
int GetLocation() const
{ return m_nLine; }
@@ -124,7 +156,8 @@ public: // setters
{ m_retType=t; }
void SetName(const wxString& name)
{ m_strName=name; }
void SetArgumentTypes(const wxTypeArray& arr, const wxArrayString& defaults);
void SetArgumentTypes(const wxArgumentTypeArray& arr)
{ m_args=arr; }
void SetConst(bool c = true)
{ m_bConst=c; }
void SetStatic(bool c = true)
@@ -149,8 +182,7 @@ public: // misc
protected:
wxType m_retType;
wxString m_strName;
wxTypeArray m_args;
wxArrayString m_argDefaults;
wxArgumentTypeArray m_args;
bool m_bConst;
bool m_bStatic;
bool m_bVirtual;