Kaydet (Commit) 7e1edcdf authored tarafından Kohei Yoshida's avatar Kohei Yoshida

More on removing use of CalcAbsIfRel().

Change-Id: I7706148d3a7376ca9b0c0d9c907559b384d57f14
üst 27d02ddc
...@@ -4989,10 +4989,10 @@ void ScCompiler::CreateStringFromSingleRef(OUStringBuffer& rBuffer,FormulaToken* ...@@ -4989,10 +4989,10 @@ void ScCompiler::CreateStringFromSingleRef(OUStringBuffer& rBuffer,FormulaToken*
aRef.Ref1 = aRef.Ref2 = rRef; aRef.Ref1 = aRef.Ref2 = rRef;
if ( eOp == ocColRowName ) if ( eOp == ocColRowName )
{ {
rRef.CalcAbsIfRel( aPos ); ScAddress aAbs = rRef.toAbs(aPos);
if ( pDoc->HasStringData( rRef.nCol, rRef.nRow, rRef.nTab ) ) if (pDoc->HasStringData(aAbs.Col(), aAbs.Row(), aAbs.Tab()))
{ {
String aStr = pDoc->GetString(rRef.nCol, rRef.nRow, rRef.nTab); String aStr = pDoc->GetString(aAbs);
EnQuote( aStr ); EnQuote( aStr );
rBuffer.append(aStr); rBuffer.append(aStr);
} }
...@@ -5111,16 +5111,16 @@ void ScCompiler::fillAddInToken(::std::vector< ::com::sun::star::sheet::FormulaO ...@@ -5111,16 +5111,16 @@ void ScCompiler::fillAddInToken(::std::vector< ::com::sun::star::sheet::FormulaO
bool ScCompiler::HandleSingleRef() bool ScCompiler::HandleSingleRef()
{ {
ScSingleRefData& rRef = static_cast<ScToken*>(mpToken.get())->GetSingleRef(); ScSingleRefData& rRef = static_cast<ScToken*>(mpToken.get())->GetSingleRef();
rRef.CalcAbsIfRel( aPos ); ScAddress aAbs = rRef.toAbs(aPos);
if ( !rRef.Valid() ) if (!ValidAddress(aAbs))
{ {
SetError( errNoRef ); SetError( errNoRef );
return true; return true;
} }
SCCOL nCol = rRef.nCol; SCCOL nCol = aAbs.Col();
SCROW nRow = rRef.nRow; SCROW nRow = aAbs.Row();
SCTAB nTab = rRef.nTab; SCTAB nTab = aAbs.Tab();
ScAddress aLook( nCol, nRow, nTab ); ScAddress aLook = aAbs;
bool bColName = rRef.IsColRel(); bool bColName = rRef.IsColRel();
SCCOL nMyCol = aPos.Col(); SCCOL nMyCol = aPos.Col();
SCROW nMyRow = aPos.Row(); SCROW nMyRow = aPos.Row();
......
...@@ -1890,40 +1890,34 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend, ...@@ -1890,40 +1890,34 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
case svSingleRef : case svSingleRef :
{ {
ScSingleRefData& rRef = static_cast<ScToken*>(p)->GetSingleRef(); ScSingleRefData& rRef = static_cast<ScToken*>(p)->GetSingleRef();
rRef.CalcAbsIfRel( rPos ); ScAddress aAbs = rRef.toAbs(rPos);
switch ( eDir ) switch ( eDir )
{ {
case DIR_BOTTOM : case DIR_BOTTOM :
if ( rRef.nRow == nRow if (aAbs.Row() == nRow && aAbs.Row() > nExtend)
&& rRef.nRow > nExtend )
{ {
nExtend = rRef.nRow; nExtend = aAbs.Row();
bRet = true; bRet = true;
} }
break; break;
case DIR_RIGHT : case DIR_RIGHT :
if ( rRef.nCol == nCol if (aAbs.Col() == nCol && static_cast<SCCOLROW>(aAbs.Col()) > nExtend)
&& static_cast<SCCOLROW>(rRef.nCol)
> nExtend )
{ {
nExtend = rRef.nCol; nExtend = aAbs.Col();
bRet = true; bRet = true;
} }
break; break;
case DIR_TOP : case DIR_TOP :
if ( rRef.nRow == nRow if (aAbs.Row() == nRow && aAbs.Row() < nExtend)
&& rRef.nRow < nExtend )
{ {
nExtend = rRef.nRow; nExtend = aAbs.Row();
bRet = true; bRet = true;
} }
break; break;
case DIR_LEFT : case DIR_LEFT :
if ( rRef.nCol == nCol if (aAbs.Col() == nCol && static_cast<SCCOLROW>(aAbs.Col()) < nExtend)
&& static_cast<SCCOLROW>(rRef.nCol)
< nExtend )
{ {
nExtend = rRef.nCol; nExtend = aAbs.Col();
bRet = true; bRet = true;
} }
break; break;
...@@ -1933,40 +1927,34 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend, ...@@ -1933,40 +1927,34 @@ bool ScTokenArray::GetAdjacentExtendOfOuterFuncRefs( SCCOLROW& nExtend,
case svDoubleRef : case svDoubleRef :
{ {
ScComplexRefData& rRef = static_cast<ScToken*>(p)->GetDoubleRef(); ScComplexRefData& rRef = static_cast<ScToken*>(p)->GetDoubleRef();
rRef.CalcAbsIfRel( rPos ); ScRange aAbs = rRef.toAbs(rPos);
switch ( eDir ) switch ( eDir )
{ {
case DIR_BOTTOM : case DIR_BOTTOM :
if ( rRef.Ref1.nRow == nRow if (aAbs.aStart.Row() == nRow && aAbs.aEnd.Row() > nExtend)
&& rRef.Ref2.nRow > nExtend )
{ {
nExtend = rRef.Ref2.nRow; nExtend = aAbs.aEnd.Row();
bRet = true; bRet = true;
} }
break; break;
case DIR_RIGHT : case DIR_RIGHT :
if ( rRef.Ref1.nCol == nCol && if (aAbs.aStart.Col() == nCol && static_cast<SCCOLROW>(aAbs.aEnd.Col()) > nExtend)
static_cast<SCCOLROW>(rRef.Ref2.nCol)
> nExtend )
{ {
nExtend = rRef.Ref2.nCol; nExtend = aAbs.aEnd.Col();
bRet = true; bRet = true;
} }
break; break;
case DIR_TOP : case DIR_TOP :
if ( rRef.Ref2.nRow == nRow if (aAbs.aEnd.Row() == nRow && aAbs.aStart.Row() < nExtend)
&& rRef.Ref1.nRow < nExtend )
{ {
nExtend = rRef.Ref1.nRow; nExtend = aAbs.aStart.Row();
bRet = true; bRet = true;
} }
break; break;
case DIR_LEFT : case DIR_LEFT :
if ( rRef.Ref2.nCol == nCol && if (aAbs.aEnd.Col() == nCol && static_cast<SCCOLROW>(aAbs.aStart.Col()) < nExtend)
static_cast<SCCOLROW>(rRef.Ref1.nCol)
< nExtend )
{ {
nExtend = rRef.Ref1.nCol; nExtend = aAbs.aStart.Col();
bRet = true; bRet = true;
} }
break; break;
...@@ -2000,8 +1988,8 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos, ...@@ -2000,8 +1988,8 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
// Also adjust if the reference is of the form Sheet1.A2:A3 // Also adjust if the reference is of the form Sheet1.A2:A3
if ( rRef2.IsFlag3D() || static_cast<ScToken*>(pCode[j])->GetSingleRef().IsFlag3D() ) if ( rRef2.IsFlag3D() || static_cast<ScToken*>(pCode[j])->GetSingleRef().IsFlag3D() )
{ {
rRef2.CalcAbsIfRel( rOldPos ); ScAddress aAbs = rRef2.toAbs(rOldPos);
rRef2.CalcRelFromAbs( rNewPos ); rRef2.SetAddress(aAbs, rNewPos);
} }
} }
//! fallthru //! fallthru
...@@ -2010,8 +1998,8 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos, ...@@ -2010,8 +1998,8 @@ void ScTokenArray::ReadjustRelative3DReferences( const ScAddress& rOldPos,
ScSingleRefData& rRef1 = static_cast<ScToken*>(pCode[j])->GetSingleRef(); ScSingleRefData& rRef1 = static_cast<ScToken*>(pCode[j])->GetSingleRef();
if ( rRef1.IsFlag3D() ) if ( rRef1.IsFlag3D() )
{ {
rRef1.CalcAbsIfRel( rOldPos ); ScAddress aAbs = rRef1.toAbs(rOldPos);
rRef1.CalcRelFromAbs( rNewPos ); rRef1.SetAddress(aAbs, rNewPos);
} }
} }
break; break;
......
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