|
From: <bl...@us...> - 2003-03-16 15:33:15
|
Update of /cvsroot/cpptool/rfta/include/rfta/refactoring
In directory sc8-pr-cvs1:/tmp/cvs-serv9247/include/rfta/refactoring
Modified Files:
CodeModelElement.h CodeModelForward.h CodeModelStatements.h
Log Message:
* refactored to use OptionalChangeTracker in statements
Index: CodeModelElement.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/include/rfta/refactoring/CodeModelElement.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** CodeModelElement.h 16 Mar 2003 14:39:13 -0000 1.9
--- CodeModelElement.h 16 Mar 2003 15:33:09 -0000 1.10
***************
*** 117,121 ****
! // Change.type_ can only either replaced or unmodified.
template<typename TrackedType
,typename ConstraintPolicy = NotNullConstraintPolicy>
--- 117,121 ----
! // The tracked element always exist, so change may only be unmodified or replaced.
template<typename TrackedType
,typename ConstraintPolicy = NotNullConstraintPolicy>
***************
*** 125,128 ****
--- 125,129 ----
ChangeTracker( const TrackedType &element )
: element_( element )
+ , change_( Change::added )
{
ConstraintPolicy::checkConstraint( element );
***************
*** 167,170 ****
--- 168,242 ----
typedef ChangeTracker<StatementPtr> StatementChangeTracker;
typedef ChangeTracker<ExpressionPtr> ExpressionChangeTracker;
+
+
+
+ // Tracked element may not exist, so change may be of any types.
+ template<typename TrackedType>
+ class OptionalChangeTracker
+ {
+ public:
+ OptionalChangeTracker()
+ : change_( Change::added )
+ {
+ }
+
+ OptionalChangeTracker( const TrackedType &element )
+ : element_( element )
+ , change_( Change::added )
+ {
+ }
+
+ void setElementIsFromSource()
+ {
+ change_.type_ = Change::unmodified;
+ change_.oldRange_ = hasElement() ? element_->getSourceRange()
+ : SourceRange();
+ }
+
+ void setElement( const TrackedType &newElement )
+ {
+ if ( newElement )
+ {
+ change_.type_ = hadElementInSource() ? Change::replaced
+ : Change::added;
+ }
+ else
+ {
+ change_.type_ = hadElementInSource() ? Change::removed
+ : Change::unmodified;
+ }
+
+ element_ = newElement;
+ }
+
+ bool hasElement() const
+ {
+ return element_;
+ }
+
+ TrackedType getElement() const
+ {
+ return element_;
+ }
+
+ Change getChange() const
+ {
+ return change_;
+ }
+
+ private:
+ bool hadElementInSource() const
+ {
+ return !change_.oldRange_.isEmpty();
+ }
+
+ Change change_;
+ TrackedType element_;
+ };
+
+
+ typedef OptionalChangeTracker<StatementPtr> OptionalStatementChangeTracker;
+ typedef OptionalChangeTracker<ExpressionPtr> OptionalExpressionChangeTracker;
+
Index: CodeModelForward.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/include/rfta/refactoring/CodeModelForward.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** CodeModelForward.h 16 Mar 2003 13:51:06 -0000 1.6
--- CodeModelForward.h 16 Mar 2003 15:33:09 -0000 1.7
***************
*** 13,16 ****
--- 13,17 ----
class Element;
+ class Label;
class BreakStatement;
***************
*** 49,52 ****
--- 50,54 ----
typedef boost::shared_ptr<Element> ElementPtr;
+ typedef boost::shared_ptr<Label> LabelPtr;
typedef boost::shared_ptr<DeclaratorExpression> DeclaratorExpressionPtr;
typedef boost::shared_ptr<Expression> ExpressionPtr;
Index: CodeModelStatements.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/include/rfta/refactoring/CodeModelStatements.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** CodeModelStatements.h 16 Mar 2003 14:39:13 -0000 1.10
--- CodeModelStatements.h 16 Mar 2003 15:33:09 -0000 1.11
***************
*** 86,89 ****
--- 86,92 ----
void accept( StatementVisitor &visitor );
+ protected: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
ExpressionChangeTracker conditionTracker_;
***************
*** 116,124 ****
void accept( StatementVisitor &visitor );
private:
! Change thenStatementChange_;
! Change elseStatementChange_;
! StatementPtr thenStatement_;
! StatementPtr elseStatement_;
};
--- 119,128 ----
void accept( StatementVisitor &visitor );
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
! StatementChangeTracker thenStatementTracker_;
! OptionalStatementChangeTracker elseStatementTracker_;
};
***************
*** 136,139 ****
--- 140,146 ----
void accept( StatementVisitor &visitor );
+ protected: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
StatementChangeTracker iteratedStatementTracker_;
***************
*** 180,183 ****
--- 187,193 ----
void accept( StatementVisitor &visitor );
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
StatementPtr declarationStatement_;
***************
*** 198,201 ****
--- 208,214 ----
void accept( StatementVisitor &visitor );
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
ChangeTracker<CompoundStatementPtr> statementsTracker_;
***************
*** 211,254 ****
- class LabelHolderStatement
- {
- public:
- LabelHolderStatement( const std::string &labelName );
-
- virtual ~LabelHolderStatement()
- {
- }
-
- const std::string getLabelName() const;
-
- void setLabelName( const std::string &labelName );
-
- private:
- ChangeTracker<std::string,NoConstraintPolicy> labelNameTracker_;
- };
-
-
- class LabelStatement : public Statement
- , public LabelHolderStatement
- {
- public:
- LabelStatement( const std::string &labelName );
-
- // overriden from Statement
- void accept( StatementVisitor &visitor );
- };
-
-
- class GotoStatement : public FlowControlStatement
- , public LabelHolderStatement
- {
- public:
- GotoStatement( const std::string &labelName );
-
- // overriden from Statement
- void accept( StatementVisitor &visitor );
- };
-
-
class SwitchLabelStatement : public Statement
{
--- 224,227 ----
***************
*** 271,274 ****
--- 244,250 ----
void accept( StatementVisitor &visitor );
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
ExpressionChangeTracker conditionValueTracker_;
***************
*** 319,324 ****
private:
! ExpressionPtr value_;
! Change change_;
};
--- 295,299 ----
private:
! OptionalExpressionChangeTracker valueTracker_;
};
***************
*** 335,338 ****
--- 310,316 ----
void accept( StatementVisitor &visitor );
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
private:
ExpressionChangeTracker expressionTracker_;
***************
*** 359,362 ****
--- 337,397 ----
{
public:
+ // overriden from Statement
+ void accept( StatementVisitor &visitor );
+ };
+
+
+ class Label : public Element
+ {
+ public:
+ Label();
+
+ Label( const std::string &labelName );
+
+ const std::string getLabelName() const;
+
+ private:
+ const std::string labelName_;
+ };
+
+
+ class LabelHolderStatement
+ {
+ public:
+ LabelHolderStatement( const LabelPtr &label );
+
+ virtual ~LabelHolderStatement()
+ {
+ }
+
+ LabelPtr getLabel() const;
+
+ void setLabel( const LabelPtr &labelName );
+
+ private: // overridden from CodeElement
+ void setElementIsFromSource();
+
+ private:
+ ChangeTracker<LabelPtr> labelTracker_;
+ };
+
+
+ class LabelStatement : public Statement
+ , public LabelHolderStatement
+ {
+ public:
+ LabelStatement( const LabelPtr &labelName );
+
+ // overriden from Statement
+ void accept( StatementVisitor &visitor );
+ };
+
+
+ class GotoStatement : public FlowControlStatement
+ , public LabelHolderStatement
+ {
+ public:
+ GotoStatement( const LabelPtr &labelName );
+
// overriden from Statement
void accept( StatementVisitor &visitor );
|