[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