Kaydet (Commit) 1ba2028a authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Move FormulaToken::TextEqual overrides down into specific subclasses

Change-Id: I5f27054ef2f9fdc4d0be0afe91ad31d053976bcf
üst a6b01d01
...@@ -57,6 +57,8 @@ protected: ...@@ -57,6 +57,8 @@ protected:
ScToken( formula::StackVar eTypeP,OpCode e = ocPush ) : formula::FormulaToken(eTypeP,e) {} ScToken( formula::StackVar eTypeP,OpCode e = ocPush ) : formula::FormulaToken(eTypeP,e) {}
ScToken( const ScToken& r ): formula::FormulaToken(r) {} ScToken( const ScToken& r ): formula::FormulaToken(r) {}
bool checkTextEqual( const formula::FormulaToken& rToken ) const;
public: public:
virtual ~ScToken(); virtual ~ScToken();
...@@ -88,8 +90,6 @@ public: ...@@ -88,8 +90,6 @@ public:
virtual const ScRefList* GetRefList() const; virtual const ScRefList* GetRefList() const;
virtual ScRefList* GetRefList(); virtual ScRefList* GetRefList();
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
#if DEBUG_FORMULA_COMPILER #if DEBUG_FORMULA_COMPILER
virtual void Dump() const; virtual void Dump() const;
#endif #endif
...@@ -130,6 +130,7 @@ public: ...@@ -130,6 +130,7 @@ public:
ScToken( r ), aSingleRef( r.aSingleRef ) {} ScToken( r ), aSingleRef( r.aSingleRef ) {}
virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE; virtual const ScSingleRefData& GetSingleRef() const SAL_OVERRIDE;
virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE; virtual ScSingleRefData& GetSingleRef() SAL_OVERRIDE;
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE; virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScSingleRefToken(*this); } virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScSingleRefToken(*this); }
...@@ -160,6 +161,7 @@ public: ...@@ -160,6 +161,7 @@ public:
virtual ScComplexRefData& GetDoubleRef() SAL_OVERRIDE; virtual ScComplexRefData& GetDoubleRef() SAL_OVERRIDE;
virtual const ScSingleRefData& GetSingleRef2() const SAL_OVERRIDE; virtual const ScSingleRefData& GetSingleRef2() const SAL_OVERRIDE;
virtual ScSingleRefData& GetSingleRef2() SAL_OVERRIDE; virtual ScSingleRefData& GetSingleRef2() SAL_OVERRIDE;
virtual bool TextEqual( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE; virtual bool operator==( const formula::FormulaToken& rToken ) const SAL_OVERRIDE;
virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScDoubleRefToken(*this); } virtual FormulaToken* Clone() const SAL_OVERRIDE { return new ScDoubleRefToken(*this); }
......
...@@ -471,14 +471,13 @@ ScToken::~ScToken() ...@@ -471,14 +471,13 @@ ScToken::~ScToken()
} }
// TextEqual: if same formula entered (for optimization in sort) // TextEqual: if same formula entered (for optimization in sort)
bool ScToken::TextEqual( const FormulaToken& _rToken ) const bool ScToken::checkTextEqual( const FormulaToken& _rToken ) const
{ {
if ( eType == svSingleRef || eType == svDoubleRef ) assert(
{ (eType == svSingleRef || eType == svDoubleRef)
// in relative Refs only compare relative parts && FormulaToken::operator ==(_rToken));
if ( eType != _rToken.GetType() || GetOpCode() != _rToken.GetOpCode() ) // in relative Refs only compare relative parts
return false;
const ScToken& rToken = static_cast<const ScToken&>(_rToken); const ScToken& rToken = static_cast<const ScToken&>(_rToken);
ScComplexRefData aTemp1; ScComplexRefData aTemp1;
...@@ -505,9 +504,6 @@ bool ScToken::TextEqual( const FormulaToken& _rToken ) const ...@@ -505,9 +504,6 @@ bool ScToken::TextEqual( const FormulaToken& _rToken ) const
// memcmp doesn't work because of the alignment byte after bFlags. // memcmp doesn't work because of the alignment byte after bFlags.
// After SmartRelAbs only absolute parts have to be compared. // After SmartRelAbs only absolute parts have to be compared.
return aRange1 == aRange2 && aTemp1.Ref1.FlagValue() == aTemp2.Ref1.FlagValue() && aTemp1.Ref2.FlagValue() == aTemp2.Ref2.FlagValue(); return aRange1 == aRange2 && aTemp1.Ref1.FlagValue() == aTemp2.Ref1.FlagValue() && aTemp1.Ref2.FlagValue() == aTemp2.Ref2.FlagValue();
}
else
return *this == _rToken; // else normal operator==
} }
#if DEBUG_FORMULA_COMPILER #if DEBUG_FORMULA_COMPILER
...@@ -719,6 +715,10 @@ ScRefList* ScToken::GetRefList() ...@@ -719,6 +715,10 @@ ScRefList* ScToken::GetRefList()
const ScSingleRefData& ScSingleRefToken::GetSingleRef() const { return aSingleRef; } const ScSingleRefData& ScSingleRefToken::GetSingleRef() const { return aSingleRef; }
ScSingleRefData& ScSingleRefToken::GetSingleRef() { return aSingleRef; } ScSingleRefData& ScSingleRefToken::GetSingleRef() { return aSingleRef; }
bool ScSingleRefToken::TextEqual( const FormulaToken& _rToken ) const
{
return FormulaToken::operator ==(_rToken) && checkTextEqual(_rToken);
}
bool ScSingleRefToken::operator==( const FormulaToken& r ) const bool ScSingleRefToken::operator==( const FormulaToken& r ) const
{ {
return FormulaToken::operator==( r ) && aSingleRef == static_cast<const ScToken&>(r).GetSingleRef(); return FormulaToken::operator==( r ) && aSingleRef == static_cast<const ScToken&>(r).GetSingleRef();
...@@ -738,6 +738,10 @@ const ScComplexRefData& ScDoubleRefToken::GetDoubleRef() const { return aDo ...@@ -738,6 +738,10 @@ const ScComplexRefData& ScDoubleRefToken::GetDoubleRef() const { return aDo
ScComplexRefData& ScDoubleRefToken::GetDoubleRef() { return aDoubleRef; } ScComplexRefData& ScDoubleRefToken::GetDoubleRef() { return aDoubleRef; }
const ScSingleRefData& ScDoubleRefToken::GetSingleRef2() const { return aDoubleRef.Ref2; } const ScSingleRefData& ScDoubleRefToken::GetSingleRef2() const { return aDoubleRef.Ref2; }
ScSingleRefData& ScDoubleRefToken::GetSingleRef2() { return aDoubleRef.Ref2; } ScSingleRefData& ScDoubleRefToken::GetSingleRef2() { return aDoubleRef.Ref2; }
bool ScDoubleRefToken::TextEqual( const FormulaToken& _rToken ) const
{
return FormulaToken::operator ==(_rToken) && checkTextEqual(_rToken);
}
bool ScDoubleRefToken::operator==( const FormulaToken& r ) const bool ScDoubleRefToken::operator==( const FormulaToken& r ) const
{ {
return FormulaToken::operator==( r ) && aDoubleRef == static_cast<const ScToken&>(r).GetDoubleRef(); return FormulaToken::operator==( r ) && aDoubleRef == static_cast<const ScToken&>(r).GetDoubleRef();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment