[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/soc-kdevelop-refactoring
From: Tom Stephenson <tomajoha () gmail ! com>
Date: 2006-08-17 11:33:18
Message-ID: 1155814398.192435.9926.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 573863 by tstephenson:
expanded c++ref
M +4 -4 baserefactorer.cpp
M +4 -4 baserefactorer.h
M +7 -0 codemodel/fakeclass.cpp
M +4 -1 codemodel/fakeclass.h
M +5 -2 codemodel/fakeparser.cpp
M +53 -1 cpluspluscoderefactorer.cpp
M +8 -1 cpluspluscoderefactorer.h
--- branches/work/soc-kdevelop-refactoring/baserefactorer.cpp #573862:573863
@@ -19,12 +19,12 @@
#include <kdebug.h>
#include "baserefactorer.h"
-IRefactoryCommand * BaseRefactorer::getAddMemberCommand()
+virtual IRefactoryCommand * BaseRefactorer::getAddMemberCommand()
{
}
-IRefactoryCommand * BaseRefactorer::getRenameMemberCommand()
+virtual IRefactoryCommand * BaseRefactorer::getRenameMemberCommand()
{
}
@@ -38,12 +38,12 @@
return null;
}
-MemberReferenceCollection BaseRefactorer::findFieldReferences(RefactorerContext \
ctx,QString fileName, IClass cls, IField field) +virtual MemberReferenceCollection \
BaseRefactorer::findFieldReferences(RefactorerContext ctx,QString fileName, IClass \
*cls, IField *field) {
return null;
}
-MemberReferenceCollection BaseRefactorer::findMethodReferences(RefactorerContext \
ctx,QString fileName, IClass cls, IMethod method) +virtual MemberReferenceCollection \
BaseRefactorer::findMethodReferences(RefactorerContext ctx,QString fileName, IClass \
*cls, IMethod *method) {
return null;
}
--- branches/work/soc-kdevelop-refactoring/baserefactorer.h #573862:573863
@@ -27,11 +27,11 @@
class BaseRefactorer: public IRefactorer
{
public:
- IRefactoryCommand * getAddMemberCommand();
- IRefactoryCommand * getRenameMemberCommand();
+ virtual IRefactoryCommand * getAddMemberCommand()=0;
+ virtual IRefactoryCommand * getRenameMemberCommand()=0;
MemberReferenceCollection findMemberReferences(RefactorerContext ctx, QString \
fileName, IClass cls, IMember member);
- MemberReferenceCollection findFieldReferences (RefactorerContext ctx,QString \
fileName, IClass cls, IField field);
- MemberReferenceCollection findMethodReferences (RefactorerContext ctx,QString \
fileName, IClass * cls, IMethod * method); + virtual MemberReferenceCollection \
findFieldReferences (RefactorerContext ctx,QString fileName, IClass *cls, IField \
*field)=0; + virtual MemberReferenceCollection findMethodReferences \
(RefactorerContext ctx,QString fileName, IClass * cls, IMethod * method)=0; \
RefactorOperations getSupportedRefactorings();
private:
--- branches/work/soc-kdevelop-refactoring/codemodel/fakeclass.cpp #573862:573863
@@ -135,3 +135,10 @@
#warning implement compareTo
return 0;
}
+
+IRegion * FakeClass::headerRegion(const QString & label)
+{
+ if (mHeaderRegions.contains(label))
+ return mHeaderRegions[label];
+ else return 0;
+}
--- branches/work/soc-kdevelop-refactoring/codemodel/fakeclass.h #573862:573863
@@ -20,7 +20,8 @@
#define FAKECLASS_H
#include <qstring.h>
-#include <qlist.h>
+#include <qvaluelist.h>
+#include <qmap.h>
#include "refcodemodel.h"
/**
@@ -54,6 +55,7 @@
bool isOverride();
bool isNew();
int compareTo(const IComparable &);
+ IRegion * headerRegion(const QString & label);
private:
QString mFullyQualifiedName;
@@ -76,6 +78,7 @@
bool mIsLiteral;
bool mIsOverride;
bool mIsNew;
+ QMap<QString,IRegion*> mHeaderRegions;
friend class FakeParser;
--- branches/work/soc-kdevelop-refactoring/codemodel/fakeparser.cpp #573862:573863
@@ -22,12 +22,15 @@
void FakeParser::initialise()
{
/*Initialise class*/
- //TODO - What constitutes body region in c++?
- FakeClass *salesPerson = new FakeClass("SalesPerson","SalesPerson",new \
FakeRegion(1,55,1,2,"salesperson.cpp"),new FakeRegion(15,55,1,2,"salesperson.cpp")); \
+ FakeClass *salesPerson = new FakeClass("SalesPerson","SalesPerson",new \
FakeRegion(4,13,1,3,"salesperson.h"),new FakeRegion(4,13,19,2,"salesperson.h")); \
+ salesPerson->mHeaderRegions.insert("public", new \
FakeRegion(6,9,1,13,"salesperson.h")); \
+ salesPerson->mHeaderRegions.insert("private", new \
FakeRegion(11,12,1,26,"salesperson.h"));
+
/*Initialise class fields*/
FakeField *fieldSales = new FakeField("sales",new \
FakeRegion(12,12,9,26,"salesperson.h"),"sales",new \
FakeReturnType("int","int"),salesPerson); fieldSales->mIsArray = true;
+ fieldSales->mIsPrivate = true;
/*Initialise class methods*/
--- branches/work/soc-kdevelop-refactoring/cpluspluscoderefactorer.cpp #573862:573863
@@ -17,4 +17,56 @@
Boston, MA 02111-1307, USA.
*/
#include <kdebug.h>
-#include "cpluspluscoderefactorer.h"
\ No newline at end of file
+#include "cpluspluscoderefactorer.h"
+
+IRefactoryCommand * CPlusPlusCodeRefactorer::getAddMemberCommand()
+{
+
+}
+
+IRefactoryCommand * CPlusPlusCodeRefactorer::getRenameMemberCommand()
+{
+}
+
+MemberReferenceCollection \
CPlusPlusCodeRefactorer::findFieldReferences(RefactorerContext ctx,QString fileName, \
IClass cls, IField field) +{
+ return null;
+}
+
+MemberReferenceCollection \
CPlusPlusCodeRefactorer::findMethodReferences(RefactorerContext ctx,QString fileName, \
IClass cls, IMethod method) +{
+ return null;
+}
+
+static int CPlusPlusCodeRefactorer::getNewMemberPosition (IEditableTextFile *buffer, \
IClass *cls, IMember *member) +{
+
+ if (dynamic_cast<IField*>(member))
+ return getNewFieldPosition (buffer, cls);
+ else if (dynamic_cast<IMethod*>(member))
+ return getNewMethodPosition (buffer, cls);
+ else
+ return -1;
+}
+
+static int CPlusPlusCodeRefactorer::getNewFieldPosition (IEditableTextFile *buffer, \
IClass *cls) +{
+ if((cls->fields()).count()==0){
+ // suss out getposfromlinecol
+ return buffer->getPositionFromLineColumn \
(cls->headerRegion("private").beginLine(), \
cls->headerRegion("private").beginColumn()); + }
+ else{
+ return = buffer->getPositionFromLineColumn \
(cls->headerRegion("private").endLine(), cls->headerRegion("private").endColumn()); \
+ } +}
+static int CPlusPlusCodeRefactorer::getNewMethodPosition (IEditableTextFile *buffer, \
IClass *cls,bool isPublic) +{
+ if(isPublic)
+ {
+ return = buffer->getPositionFromLineColumn (cls->headerRegion("public").endLine(), \
cls->headerRegion("public").endColumn()); + }
+ else
+ {
+ return = buffer->getPositionFromLineColumn \
(cls->headerRegion("private").endLine(), cls->headerRegion("private").endColumn()); \
+ } +}
\ No newline at end of file
--- branches/work/soc-kdevelop-refactoring/cpluspluscoderefactorer.h #573862:573863
@@ -26,7 +26,14 @@
class CPlusPlusCodeRefactorer: public BaseRefactorer
{
public:
-
+ IRefactoryCommand * getAddMemberCommand();
+ IRefactoryCommand * getRenameMemberCommand();
+ virtual MemberReferenceCollection findFieldReferences (RefactorerContext \
ctx,QString fileName, IClass cls, IField field); + virtual MemberReferenceCollection \
findMethodReferences (RefactorerContext ctx,QString fileName, IClass * cls, IMethod * \
method); + static int getNewMemberPosition (IEditableTextFile *buffer, IClass *cls, \
IMember *member); + static int getNewFieldPosition (IEditableTextFile *buffer, IClass \
*cls); + static int getNewMethodPosition (IEditableTextFile *buffer, IClass *cls,bool \
isPublic); +
private:
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic