Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
790aec7e
Kaydet (Commit)
790aec7e
authored
Eki 18, 2013
tarafından
Kohei Yoshida
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Remove all uses of Pos and ConstPos. They are slow.
Change-Id: I27f68e67eebfd1ce4be29b24147e5586c8f9f85e
üst
0b08d062
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
344 deletions
+0
-344
scmatrix.hxx
sc/inc/scmatrix.hxx
+0
-52
scmatrix.cxx
sc/source/core/tool/scmatrix.cxx
+0
-292
No files found.
sc/inc/scmatrix.hxx
Dosyayı görüntüle @
790aec7e
...
...
@@ -144,31 +144,6 @@ public:
mfFirst
(
r
.
mfFirst
),
mfRest
(
r
.
mfRest
),
mnCount
(
r
.
mnCount
)
{}
};
struct
Pos
;
struct
ConstPos
;
static
void
DeletePosition
(
const
Pos
*
p
);
static
void
DeletePosition
(
const
ConstPos
*
p
);
struct
PosDeleter
:
std
::
unary_function
<
const
Pos
*
,
void
>
{
void
operator
()
(
const
Pos
*
p
)
{
DeletePosition
(
p
);
}
};
struct
ConstPosDeleter
:
std
::
unary_function
<
const
ConstPos
*
,
void
>
{
void
operator
()
(
const
ConstPos
*
p
)
{
DeletePosition
(
p
);
}
};
typedef
boost
::
interprocess
::
unique_ptr
<
Pos
,
PosDeleter
>
PosRef
;
typedef
boost
::
interprocess
::
unique_ptr
<
ConstPos
,
ConstPosDeleter
>
ConstPosRef
;
/// The maximum number of elements a matrix may have at runtime.
inline
static
size_t
GetElementsMax
()
{
...
...
@@ -321,8 +296,6 @@ public:
/// @ATTENTION: If bString the ScMatrixValue->pS may still be NULL to indicate
/// an empty string!
ScMatrixValue
Get
(
SCSIZE
nC
,
SCSIZE
nR
)
const
;
ScMatrixValue
Get
(
const
Pos
&
rPos
)
const
;
ScMatrixValue
Get
(
const
ConstPos
&
rPos
)
const
;
/// @return <TRUE/> if string or empty or empty path, in fact non-value.
sal_Bool
IsString
(
SCSIZE
nIndex
)
const
;
...
...
@@ -351,31 +324,6 @@ public:
/// @return <TRUE/> if entire matrix is numeric, including booleans, with no strings or empties
sal_Bool
IsNumeric
()
const
;
Pos
*
GetPosition
(
size_t
nC
,
size_t
nR
);
ConstPos
*
GetConstPosition
(
size_t
nC
,
size_t
nR
)
const
;
bool
NextPosition
(
Pos
&
rPos
);
bool
NextPosition
(
ConstPos
&
rPos
)
const
;
bool
IsValue
(
const
Pos
&
rPos
)
const
;
bool
IsValue
(
const
ConstPos
&
rPos
)
const
;
bool
IsEmpty
(
const
Pos
&
rPos
)
const
;
bool
IsEmpty
(
const
ConstPos
&
rPos
)
const
;
double
GetDouble
(
const
Pos
&
rPos
)
const
;
double
GetDouble
(
const
ConstPos
&
rPos
)
const
;
svl
::
SharedString
GetString
(
const
Pos
&
rPos
)
const
;
svl
::
SharedString
GetString
(
const
ConstPos
&
rPos
)
const
;
void
PutDouble
(
double
fVal
,
Pos
&
rPos
);
void
PutString
(
const
svl
::
SharedString
&
rStr
,
Pos
&
rPos
);
void
PutEmpty
(
Pos
&
rPos
);
void
PutEmptyPath
(
Pos
&
rPos
);
void
PutError
(
sal_uInt16
nErr
,
Pos
&
rPos
);
void
PutBoolean
(
bool
bVal
,
Pos
&
rPos
);
void
MatTrans
(
ScMatrix
&
mRes
)
const
;
void
MatCopy
(
ScMatrix
&
mRes
)
const
;
...
...
sc/source/core/tool/scmatrix.cxx
Dosyayı görüntüle @
790aec7e
...
...
@@ -67,24 +67,6 @@ struct custom_string_trait
typedef
mdds
::
multi_type_matrix
<
custom_string_trait
>
MatrixImplType
;
struct
ScMatrix
::
Pos
{
MatrixImplType
::
position_type
maPos
;
MatrixImplType
::
position_type
maPosFlag
;
};
struct
ScMatrix
::
ConstPos
{
MatrixImplType
::
const_position_type
maPos
;
MatrixImplType
::
const_position_type
maPosFlag
;
ConstPos
()
{}
ConstPos
(
const
ScMatrix
::
ConstPos
&
r
)
:
maPos
(
r
.
maPos
),
maPosFlag
(
r
.
maPosFlag
)
{}
ConstPos
(
const
ScMatrix
::
Pos
&
r
)
:
maPos
(
r
.
maPos
),
maPosFlag
(
r
.
maPosFlag
)
{}
};
namespace
{
struct
ElemEqualZero
:
public
unary_function
<
double
,
bool
>
...
...
@@ -251,7 +233,6 @@ public:
svl
::
SharedString
GetString
(
SCSIZE
nIndex
)
const
;
svl
::
SharedString
GetString
(
SvNumberFormatter
&
rFormatter
,
SCSIZE
nC
,
SCSIZE
nR
)
const
;
ScMatrixValue
Get
(
SCSIZE
nC
,
SCSIZE
nR
)
const
;
ScMatrixValue
Get
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
;
bool
IsString
(
SCSIZE
nIndex
)
const
;
bool
IsString
(
SCSIZE
nC
,
SCSIZE
nR
)
const
;
bool
IsEmpty
(
SCSIZE
nC
,
SCSIZE
nR
)
const
;
...
...
@@ -262,24 +243,6 @@ public:
bool
IsBoolean
(
SCSIZE
nC
,
SCSIZE
nR
)
const
;
bool
IsNumeric
()
const
;
ScMatrix
::
Pos
*
GetPosition
(
size_t
nC
,
size_t
nR
);
ScMatrix
::
ConstPos
*
GetConstPosition
(
size_t
nC
,
size_t
nR
)
const
;
bool
NextPosition
(
ScMatrix
::
Pos
&
rPos
);
bool
NextPosition
(
ScMatrix
::
ConstPos
&
rPos
)
const
;
bool
IsValue
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
;
bool
IsEmpty
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
;
double
GetDouble
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
;
svl
::
SharedString
GetString
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
;
void
PutDouble
(
double
fVal
,
ScMatrix
::
Pos
&
rPos
);
void
PutString
(
const
svl
::
SharedString
&
rStr
,
ScMatrix
::
Pos
&
rPos
);
void
PutEmpty
(
ScMatrix
::
Pos
&
rPos
);
void
PutEmptyPath
(
ScMatrix
::
Pos
&
rPos
);
void
PutError
(
sal_uInt16
nErr
,
ScMatrix
::
Pos
&
rPos
);
void
PutBoolean
(
bool
bVal
,
ScMatrix
::
Pos
&
rPos
);
void
MatCopy
(
ScMatrixImpl
&
mRes
)
const
;
void
MatTrans
(
ScMatrixImpl
&
mRes
)
const
;
void
FillDouble
(
double
fVal
,
SCSIZE
nC1
,
SCSIZE
nR1
,
SCSIZE
nC2
,
SCSIZE
nR2
);
...
...
@@ -672,34 +635,6 @@ ScMatrixValue ScMatrixImpl::Get(SCSIZE nC, SCSIZE nR) const
return
aVal
;
}
ScMatrixValue
ScMatrixImpl
::
Get
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
{
ScMatrixValue
aVal
;
mdds
::
mtm
::
element_t
eType
=
maMat
.
get_type
(
rPos
.
maPos
);
switch
(
eType
)
{
case
mdds
:
:
mtm
::
element_boolean
:
aVal
.
nType
=
SC_MATVAL_BOOLEAN
;
aVal
.
fVal
=
maMat
.
get_boolean
(
rPos
.
maPos
);
break
;
case
mdds
:
:
mtm
::
element_numeric
:
aVal
.
nType
=
SC_MATVAL_VALUE
;
aVal
.
fVal
=
MatrixImplType
::
numeric_block_type
::
at
(
*
rPos
.
maPos
.
first
->
data
,
rPos
.
maPos
.
second
);
break
;
case
mdds
:
:
mtm
::
element_string
:
aVal
.
nType
=
SC_MATVAL_STRING
;
aVal
.
aStr
=
MatrixImplType
::
string_block_type
::
at
(
*
rPos
.
maPos
.
first
->
data
,
rPos
.
maPos
.
second
);
break
;
case
mdds
:
:
mtm
::
element_empty
:
// Empty path equals empty plus flag.
aVal
.
nType
=
maMatFlag
.
get_boolean
(
rPos
.
maPosFlag
)
?
SC_MATVAL_EMPTYPATH
:
SC_MATVAL_EMPTY
;
aVal
.
fVal
=
0.0
;
default
:
;
}
return
aVal
;
}
bool
ScMatrixImpl
::
IsString
(
SCSIZE
nIndex
)
const
{
SCSIZE
nC
,
nR
;
...
...
@@ -785,123 +720,6 @@ bool ScMatrixImpl::IsNumeric() const
return
maMat
.
numeric
();
}
ScMatrix
::
Pos
*
ScMatrixImpl
::
GetPosition
(
size_t
nC
,
size_t
nR
)
{
ScMatrix
::
Pos
*
pRet
=
new
ScMatrix
::
Pos
;
pRet
->
maPos
=
maMat
.
position
(
nR
,
nC
);
pRet
->
maPosFlag
=
maMatFlag
.
position
(
nR
,
nC
);
return
pRet
;
}
ScMatrix
::
ConstPos
*
ScMatrixImpl
::
GetConstPosition
(
size_t
nC
,
size_t
nR
)
const
{
ScMatrix
::
ConstPos
*
pRet
=
new
ScMatrix
::
ConstPos
;
pRet
->
maPos
=
maMat
.
position
(
nR
,
nC
);
pRet
->
maPosFlag
=
maMatFlag
.
position
(
nR
,
nC
);
return
pRet
;
}
bool
ScMatrixImpl
::
NextPosition
(
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
MatrixImplType
::
next_position
(
rPos
.
maPos
);
rPos
.
maPosFlag
=
MatrixImplType
::
next_position
(
rPos
.
maPosFlag
);
return
rPos
.
maPos
!=
maMat
.
end_position
();
}
bool
ScMatrixImpl
::
NextPosition
(
ScMatrix
::
ConstPos
&
rPos
)
const
{
rPos
.
maPos
=
MatrixImplType
::
next_position
(
rPos
.
maPos
);
rPos
.
maPosFlag
=
MatrixImplType
::
next_position
(
rPos
.
maPosFlag
);
return
rPos
.
maPos
!=
maMat
.
end_position
();
}
bool
ScMatrixImpl
::
IsValue
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
{
switch
(
maMat
.
get_type
(
rPos
.
maPos
))
{
case
mdds
:
:
mtm
::
element_boolean
:
case
mdds
:
:
mtm
::
element_numeric
:
return
true
;
default
:
;
}
return
false
;
}
bool
ScMatrixImpl
::
IsEmpty
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
{
return
maMat
.
get_type
(
rPos
.
maPos
)
==
mdds
::
mtm
::
element_empty
&&
!
maMatFlag
.
get_boolean
(
rPos
.
maPosFlag
);
}
double
ScMatrixImpl
::
GetDouble
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
{
double
fVal
=
maMat
.
get_numeric
(
rPos
.
maPos
);
if
(
pErrorInterpreter
)
{
sal_uInt16
nError
=
GetDoubleErrorValue
(
fVal
);
if
(
nError
)
SetErrorAtInterpreter
(
nError
);
}
return
fVal
;
}
svl
::
SharedString
ScMatrixImpl
::
GetString
(
const
ScMatrix
::
ConstPos
&
rPos
)
const
{
double
fErr
=
0.0
;
switch
(
maMat
.
get_type
(
rPos
.
maPos
))
{
case
mdds
:
:
mtm
::
element_string
:
return
maMat
.
get_string
(
rPos
.
maPos
);
case
mdds
:
:
mtm
::
element_empty
:
return
svl
::
SharedString
::
getEmptyString
();
case
mdds
:
:
mtm
::
element_numeric
:
case
mdds
:
:
mtm
::
element_boolean
:
OSL_FAIL
(
"ScMatrixImpl::GetString: access error, no string"
);
fErr
=
maMat
.
get_numeric
(
rPos
.
maPos
);
default
:
OSL_FAIL
(
"ScMatrixImpl::GetString: access error, no string"
);
}
SetErrorAtInterpreter
(
GetDoubleErrorValue
(
fErr
));
return
svl
::
SharedString
::
getEmptyString
();
}
void
ScMatrixImpl
::
PutDouble
(
double
fVal
,
ScMatrix
::
Pos
&
rPos
)
{
if
(
maMat
.
get_type
(
rPos
.
maPos
)
==
mdds
::
mtm
::
element_numeric
)
MatrixImplType
::
numeric_block_type
::
at
(
*
rPos
.
maPos
.
first
->
data
,
rPos
.
maPos
.
second
)
=
fVal
;
else
rPos
.
maPos
=
maMat
.
set
(
rPos
.
maPos
,
fVal
);
}
void
ScMatrixImpl
::
PutString
(
const
svl
::
SharedString
&
rStr
,
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
maMat
.
set
(
rPos
.
maPos
,
rStr
);
}
void
ScMatrixImpl
::
PutEmpty
(
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
maMat
.
set_empty
(
rPos
.
maPos
);
rPos
.
maPosFlag
=
maMatFlag
.
set
(
rPos
.
maPosFlag
,
false
);
// zero flag to indicate that this is 'empty', not 'empty path'.
}
void
ScMatrixImpl
::
PutEmptyPath
(
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
maMat
.
set_empty
(
rPos
.
maPos
);
rPos
.
maPosFlag
=
maMatFlag
.
set
(
rPos
.
maPosFlag
,
true
);
// non-zero flag to indicate empty 'path'.
}
void
ScMatrixImpl
::
PutError
(
sal_uInt16
nErr
,
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
maMat
.
set
(
rPos
.
maPos
,
CreateDoubleError
(
nErr
));
}
void
ScMatrixImpl
::
PutBoolean
(
bool
bVal
,
ScMatrix
::
Pos
&
rPos
)
{
rPos
.
maPos
=
maMat
.
set
(
rPos
.
maPos
,
bVal
);
}
void
ScMatrixImpl
::
MatCopy
(
ScMatrixImpl
&
mRes
)
const
{
if
(
maMat
.
size
().
row
>
mRes
.
maMat
.
size
().
row
||
maMat
.
size
().
column
>
mRes
.
maMat
.
size
().
column
)
...
...
@@ -1995,16 +1813,6 @@ ScMatrixValue ScMatrix::Get(SCSIZE nC, SCSIZE nR) const
return
pImpl
->
Get
(
nC
,
nR
);
}
ScMatrixValue
ScMatrix
::
Get
(
const
Pos
&
rPos
)
const
{
return
pImpl
->
Get
(
rPos
);
}
ScMatrixValue
ScMatrix
::
Get
(
const
ConstPos
&
rPos
)
const
{
return
pImpl
->
Get
(
rPos
);
}
sal_Bool
ScMatrix
::
IsString
(
SCSIZE
nIndex
)
const
{
return
pImpl
->
IsString
(
nIndex
);
...
...
@@ -2050,106 +1858,6 @@ sal_Bool ScMatrix::IsNumeric() const
return
pImpl
->
IsNumeric
();
}
ScMatrix
::
Pos
*
ScMatrix
::
GetPosition
(
size_t
nC
,
size_t
nR
)
{
return
pImpl
->
GetPosition
(
nC
,
nR
);
}
ScMatrix
::
ConstPos
*
ScMatrix
::
GetConstPosition
(
size_t
nC
,
size_t
nR
)
const
{
return
pImpl
->
GetConstPosition
(
nC
,
nR
);
}
void
ScMatrix
::
DeletePosition
(
const
Pos
*
p
)
{
delete
p
;
}
void
ScMatrix
::
DeletePosition
(
const
ConstPos
*
p
)
{
delete
p
;
}
bool
ScMatrix
::
NextPosition
(
Pos
&
rPos
)
{
return
pImpl
->
NextPosition
(
rPos
);
}
bool
ScMatrix
::
NextPosition
(
ConstPos
&
rPos
)
const
{
return
pImpl
->
NextPosition
(
rPos
);
}
bool
ScMatrix
::
IsValue
(
const
Pos
&
rPos
)
const
{
return
pImpl
->
IsValue
(
rPos
);
}
bool
ScMatrix
::
IsValue
(
const
ConstPos
&
rPos
)
const
{
return
pImpl
->
IsValue
(
rPos
);
}
bool
ScMatrix
::
IsEmpty
(
const
Pos
&
rPos
)
const
{
return
pImpl
->
IsEmpty
(
rPos
);
}
bool
ScMatrix
::
IsEmpty
(
const
ConstPos
&
rPos
)
const
{
return
pImpl
->
IsEmpty
(
rPos
);
}
double
ScMatrix
::
GetDouble
(
const
Pos
&
rPos
)
const
{
return
pImpl
->
GetDouble
(
rPos
);
}
double
ScMatrix
::
GetDouble
(
const
ConstPos
&
rPos
)
const
{
return
pImpl
->
GetDouble
(
rPos
);
}
svl
::
SharedString
ScMatrix
::
GetString
(
const
Pos
&
rPos
)
const
{
return
pImpl
->
GetString
(
rPos
);
}
svl
::
SharedString
ScMatrix
::
GetString
(
const
ConstPos
&
rPos
)
const
{
return
pImpl
->
GetString
(
rPos
);
}
void
ScMatrix
::
PutDouble
(
double
fVal
,
Pos
&
rPos
)
{
pImpl
->
PutDouble
(
fVal
,
rPos
);
}
void
ScMatrix
::
PutString
(
const
svl
::
SharedString
&
rStr
,
Pos
&
rPos
)
{
pImpl
->
PutString
(
rStr
,
rPos
);
}
void
ScMatrix
::
PutEmpty
(
Pos
&
rPos
)
{
pImpl
->
PutEmpty
(
rPos
);
}
void
ScMatrix
::
PutEmptyPath
(
Pos
&
rPos
)
{
pImpl
->
PutEmptyPath
(
rPos
);
}
void
ScMatrix
::
PutError
(
sal_uInt16
nErr
,
Pos
&
rPos
)
{
pImpl
->
PutError
(
nErr
,
rPos
);
}
void
ScMatrix
::
PutBoolean
(
bool
bVal
,
Pos
&
rPos
)
{
pImpl
->
PutBoolean
(
bVal
,
rPos
);
}
void
ScMatrix
::
MatCopy
(
ScMatrix
&
mRes
)
const
{
pImpl
->
MatCopy
(
*
mRes
.
pImpl
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment