blob: 7e5361f72586408f2453bd01c1e5d97ad68cee1b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
Expressions
- Stored as byte code (type 'OpCode')
- String -> internal translation happens in
sc/source/core/tool/compiler.cxx :
ScTokenArray *ScCompiler::CompileString
or
it can be constructed manually (eg for arrays)
- For xml export internal -> string happens in
sc/source/core/data/cell2.cxx
ScFormulaCell::GetEnglishFormula
There is also a counterpart in ScCompiler
sc/source/core/tool/compiler.cxx
ScCompiler::CreateStringFromTokenArray
- Builtin functions
: Stored internally as distinct opcodes (ick?)
: their parameter names and descriptions are stored in
sc/source/ui/src/scfuncs.src
which also includes an 'ExtraData' field that specifies
* The function group
* The HelpID ('hid')
* number of arguments or VAR_ARGS
* 0/1 to indicate if an argument is optional
Cells
- contain a pointer to an ScTokenArray (not a ref)
-----------------------------------------------------------------
I/O 'Filters'
- List of filters seems hardcoded
- OASIS filter is in
sc/source/filter/xml
ScXMLExport
-----------------------------------------------------------------
Omitted Arguments
- DCOUNT - field
- DCOUNTA - field
-----------------------------------------------------------------
Useful enhancements
- row limit (fixed in 2.0)
- ctrl click to add areas to the selection only works when
more than one cell is already selected (fixed in 2.0)
- conditional fmts require style instead of inline tweaks (non-trivial)
- contains/not-contains for autofilter (fixed in 2.0)
- no colour change for active autofilter (not fixed, difficulty unknown)
- Allow '+' or '-' to start an expr (not fixed, should not be too hard)
- Allow '*' to start an expr. (need to prove this is correct)
- show filename rather than full path for open files. (not too hard)
- Support A:A or 1:3 style referencing (inprogress with R1C1)
- datapilot area resize
- macro work & help
-----------------------------------------------------------------
Misc
- ACOSH
: (blank) == #NUM! not Err.502
: (1) == #NUM! not Err.502
- ACOS
: (1.00000000000001) = #NUM! not #VALUE!
: (-1.00000000000001) = #NUM! not #VALUE!
#include <iostream>
#include <rtl/strbuf.hxx>
static const sal_Char *dbg_dump(const rtl::OString &rStr)
{
static rtl::OStringBuffer aStr;
aStr = rtl::OStringBuffer(rStr);
aStr.append(static_cast<char>(0));
return aStr.getStr();
}
static const sal_Char *dbg_dump(const rtl::OUString &rStr)
{
return dbg_dump(rtl::OUStringToOString(rStr, RTL_TEXTENCODING_UTF8));
}
std::cerr << dbg_dump (::rtl::OUString (rRange.aStart.GetColRowString())) << ":";
std::cerr << dbg_dump (::rtl::OUString (rRange.aEnd.GetColRowString()))
<< " stored with" << cur_index << "\n";
|