A++: fixed problems with typecast operator, navigator scope double-click goes to the first item

git-svn-id: svn://ultimatepp.org/upp/trunk@609 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2008-11-05 21:36:41 +00:00
parent aa862269ee
commit 20248b5300
22 changed files with 333 additions and 290 deletions

View file

@ -897,7 +897,6 @@ String NFormat0(int language, const char *s, const Value **v, int count)
}
f.format.Clear();
f.id.Clear();
f.maxn = 0;
b = s;
int pad = -1;
int padn;
@ -970,11 +969,8 @@ String NFormat0(int language, const char *s, const Value **v, int count)
ASSERT(*s);
if(IsDigit(*s))
n = 10 * n + *s - '0';
else {
if(n > f.maxn)
f.maxn = n;
else
n = 0;
}
s++;
}
}
@ -993,8 +989,6 @@ String NFormat0(int language, const char *s, const Value **v, int count)
}
#endif
f.arg = *v[pos++];
if(n > f.maxn)
f.maxn = n;
String r;
if(!nvl_value.IsVoid() && IsNull(f.arg))
r = nvl_value;

View file

@ -64,7 +64,6 @@ Time ScanTime(const char *text, const char **endptr, const char *format,
struct Formatting
{
int language;
int maxn;
Value arg;
String format;
String id;

View file

@ -10,7 +10,7 @@ topic "Text formatting";
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[{_}%EN-US
[s0; [*+117 Format `- text formatting]&]
[s0; [*4 Format `- text formatting]&]
[s0;*+117 &]
[s5;:`:`:Format`(const char`*`,const`:`:Vector`<`:`:Value`>`&`):%- [^`:`:String^ String
]_[* Format][@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _`*][*@3 format][@(64) ,
@ -345,247 +345,12 @@ width&]
][^Formatting^@(64) Formatting][@(64) `&_fmt)]&]
[s2; Formatter has to have form of function with single [^Formatting^ Formatting]
argument.&]
[s0; &]
[s3; &]
[ {{10000F(128)G(128)@1 [s0; [* Formatting]]}}&]
[s0;%- &]
[s4;%- &]
[s1;:Formatting`:`:struct:%- [@(0.0.255) struct]_[* Formatting]&]
[s2; This structure passes all informations to format Value argument
to the formatter.&]
[s3;%- &]
[s4;%- &]
[s5;:FormatInt`(int`):%- [_^String^ String]_[* FormatInt]([@(0.0.255) int]_[*@3 i])&]
[s2; Outputs decimally formatted signed integer without `+ or any
paddings. Supposed to be quite fast. Equivalent to FormatIntBase(i,
10).&]
[s2; &]
[s0;l288;O9;~~~.640; [* i]-|the number to format.&]
[s3; [* v]&]
[s4;%- &]
[s5;:FormatIntDec`(int`,int`,char`,bool`):%- [_^String^ String]_[* FormatIntDec]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) int]_[*@3 width], [@(0.0.255) char]_[*@3 lpad]_`=_`'_`',
[@(0.0.255) bool]_[*@3 always`_sign]_`=_[@(0.0.255) false])&]
[s0;l288; Formats a signed decimal integer (i) with left padding
up to given (width) characters with a given (lpad) character.&]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* width]-|left padding width (output longer than
this is not padded)&]
[s0;l288;O9;~~~.1152; [* lpad]-|character to left pad output with&]
[s2;~~~.1152; [* always`_sign]-|true `= start positive numbers with
`[`+`], false `= just negative with `[`-`]&]
[s3; &]
[s4;%- &]
[s5;:FormatIntHex`(int`,int`,char`):%- [_^String^ String]_[* FormatIntHex]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) int]_[*@3 width]_`=_[@3 8], [@(0.0.255) char]_[*@3 lpad]_`=_`'[@3 0]`')&]
[s0;l288; Formats an unsigned hexadecimal (radix 16) integer (i)
with left padding up to given (width) characters with a given
(lpad) character.&]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* width]-|left padding width (output longer than
this is not padded)&]
[s2;~~~.1152; [* lpad]-|character to left pad output with&]
[s4;%- &]
[s5;:FormatIntOct`(int`,int`,char`):%- [_^String^ String]_[* FormatIntOct]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) int]_[*@3 width]_`=_[@3 12], [@(0.0.255) char]_[*@3 lpad]_`=_`'[@3 0]`')&]
[s0;l288; Formats an unsigned octal (radix 8) integer (i) with left
padding up to given (width) characters with a given (lpad) character
(usually a space or 0).&]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* width]-|left padding width (output longer than
this is not padded)&]
[s0;l288;O9;~~~.1152; [* lpad]-|character to left pad output with&]
[s3; &]
[s4;%- &]
[s5;:FormatIntRoman`(int`,bool`):%- [_^String^ String]_[* FormatIntRoman]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) bool]_[*@3 upper]_`=_[@(0.0.255) false])&]
[s0;l288; Formats a signed integer in Roman numerals. The biggest
`"implemented`" numeral is M (1000), so expect quite a long return
string when formatting a billion. Negative numbers are prepended
with `[`-`], 0 or Null is output as a Null String.&]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* upper]-|use uppercase `[true`] or lowercase
`[false`] letters&]
[s0;l288;O9;~~~.1152;* &]
[s3; &]
[s4;%- &]
[s5;:FormatIntAlpha`(int`,bool`):%- [_^String^ String]_[* FormatIntAlpha]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) bool]_[*@3 upper]_`=_[@(0.0.255) true])&]
[s0;l288; Formats a signed integer in length`-first lexicographic
index, i.e. excel column numbering (1 `= A,2 `= B.. 26 `= Z,
27 `= AA, 28 `= AB .. 52 `= AZ, 53 `= BA ... 78 `= BZ etc). 0
or Null is output as a Null String. Only negative numbers are
prepended with a `[`-`].&]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* upper]-|use uppercase `[true`] or lowercase
`[false`] letters&]
[s0;l288;O9;~~~.1152;* &]
[s3; &]
[s4;%- &]
[s5;:Format64`(uint64`):%- [_^String^ String]_[* Format64]([_^uint64^ uint64]_[*@3 a])&]
[s2; Formats an unsigned decimal 64`-bit integer. Supposed to be
quite fast.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* a]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:Format64Hex`(uint64`):%- [_^String^ String]_[* Format64Hex]([_^uint64^ uint64]_[*@3 a])&]
[s2; Formats an unsigned hexadecimal (radix 16) 64`-bit integer.
Supposed to be quite fast. Lowecase letters a`-f are used for
digits `[10`] through `[15`].&]
[s2; &]
[s0;l288;O9;~~~.1152; [* a]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatIntHex`(const void`*`):%- [_^String^ String]_[* FormatIntHex]([@(0.0.255) const]_
[@(0.0.255) void]_`*[*@3 ptr])&]
[s2; Formats the pointer address as a hexadecimal (base 16) number
zero`-padded to the number of digits appropriate for the memory
model (8 digits in 32`-bit systems, 16 digits in 64`-bit systems).
Useful for logging and debugging purposes. Equivalent to FormatHex,
god knows why there are two of them.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* ptr]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatHex`(const void`*`):%- [_^String^ String]_[* FormatHex]([@(0.0.255) const]_[@(0.0.255) v
oid]_`*[*@3 ptr])&]
[s2; Formats the pointer address as a hexadecimal (base 16) number
zero`-padded to the number of digits appropriate for the memory
model (8 digits in 32`-bit systems, 16 digits in 64`-bit systems).
Useful for logging and debugging purposes. Equivalent to FormatIntHex.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* ptr]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatInteger`(int`):%- [_^String^ String]_[* FormatInteger]([@(0.0.255) int]_[*@3 a])&]
[s2; Formats a signed decimal integer without padding. In comparison
to FormatInt it returns String(Null) when given int(Null) whereas
FormatInt returns a plain empty string, hah.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* ptr]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatUnsigned`(unsigned long`):%- [_^String^ String]_[* FormatUnsigned]([@(0.0.255) u
nsigned]_[@(0.0.255) long]_[*@3 a])&]
[s2; A very old freak, implemented through Sprintf(`"%u`", a). Definitely
deprecated, I hope.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* a]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatDouble`(double`):%- [_^String^ String]_[* FormatDouble]([@(0.0.255) double]_[*@3 a
])&]
[s2; Formats a floating point in decimal notation automatically selecting
ordinary or scientific (exponential) notation according to the
absolute value of a. In ordinary notation, the number is formatted
to 10 significant digits; in exponential notation, the mantissa
is formatted to 10 decimal digits.&]
[s2; &]
[s0;l288;O9;~~~.1152; [* a]-|the number to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatBool`(bool`):%- [_^String^ String]_[* FormatBool]([@(0.0.255) bool]_[*@3 a])&]
[s2; Formats a boolean as one of the fixed words `"true`" or `"false`"
(regardless of language settings).&]
[s0; &]
[s0;l288;O9;~~~.1152; [* a]-|the logical value to format.&]
[s3; &]
[s4;%- &]
[s5;:FormatInt64`(int64`):%- [_^String^ String]_[* FormatInt64]([_^int64^ int64]_[*@3 a])&]
[s2; Formats a signed decimal 64`-bit integer without any padding.
Only negative numbers are prepended with a `[`-`].&]
[s0; &]
[s0;l288;O9;~~~.1152; [* a]-|the number to format&]
[s3; &]
[s4;%- &]
[s5;:FormatDouble`(double`,int`,int`,int`):%- [_^String^ String]_[* FormatDouble]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0],
[@(0.0.255) int]_[*@3 fill`_exp]_`=_[@3 0])&]
[s2; Formats a floating point in decimal notation automatically selecting
ordinary or scientific (exponential) notation according to the
absolute value of a and the given number of digits. In the (default)
absolute decimal mode, a number is formatted in exponential notation
whenever its absolute value exceeds the interval `[1e`-15, 1e`+15`];
in relative (significant) decimal mode (FD`_REL), a number is
formatted in exponential notation whenever its absolute value
exceeds the interval `[10`^`-<2 `* digits>, 10`^`+<2 `* digits>`].&]
[s2; &]
[s0;l288;O9;~~~.1152; [* d]-|the number to format&]
[s0;l288;O9;~~~.1152; [* digits]-|number of digits&]
[s0;l288;O9;~~~.1152; [* flags]-|formatting flags, can be or`-ed (`|)
together:&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_SIGN-|always prepend sign (`+10)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_REL-|relative decimal places (valid
digits)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_SIGN`_EXP-|always prepend sign to
exponent (1e`+2)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_CAP`_E-|capital E for exponent (1E10)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_ZERO-|keep trailing zeros (1.25000)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_FIX-|always use fixed notation (FormatDouble
only)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_EXP-|always use exponential notation
(FormatDouble only)]&]
[s0;l288;O9;~~~.1152; [* fill`_exp]-|left zero`-padding of exponent
in exponential notation&]
[s3; &]
[s4;%- &]
[s5;:FormatDoubleFix`(double`,int`,int`):%- [_^String^ String]_[* FormatDoubleFix]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0])&]
[s2; Formats a floating point in ordinary decimal notation (whole
part, comma, decimal part). Then number of digits (digits) can
be interpreted either as the absolute number of decimal digits
(the default mode) or the relative number of significant digits
excluding leading zeros. Decimal point is always output as a
period independent on language settings.&]
[s0; &]
[s0;l288;O9;~~~.1152; [* d]-|the number to format&]
[s0;l288;O9;~~~.1152; [* digits]-|number of digits&]
[s0;l288;O9;~~~.1152; [* flags]-|formatting flags, can be or`-ed (`|)
together:&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_SIGN-|always prepend sign (`+10)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_REL-|relative decimal places (valid
digits)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_ZERO-|keep trailing zeros (1.25000)]&]
[s3; &]
[s4;%- &]
[s5;:FormatDoubleExp`(double`,int`,int`,int`):%- [_^String^ String]_[* FormatDoubleExp]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0],
[@(0.0.255) int]_[*@3 fill`_exp]_`=_[@3 0])&]
[s2; Formats a floating point in scientific / exponential notation
(sign, single digit, period, decimal part, `"e`" decimal exponent).&]
[s2; &]
[s0;l288;O9;~~~.1152; [* d]-|the number to format&]
[s0;l288;O9;~~~.1152; [* digits]-|number of digits&]
[s0;l288;O9;~~~.1152; [* flags]-|formatting flags, can be or`-ed (`|)
together:&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_SIGN-|always prepend sign (`+10)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_SIGN`_EXP-|always prepend sign to
exponent (1e`+2)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_CAP`_E-|capital E for exponent (1E10)]&]
[s0;l704;O9;~~~.1472; [/@(90) FD`_ZERO-|keep trailing zeros (1.25000)]&]
[s0;l288;O9;~~~.1152; [* fill`_exp]-|left zero`-padding of exponent&]
[s2; &]
[s3; &]
[s4;%- &]
[s5;:FormatIntBase`(int`,int`,int`,char`,int`):%- [_^String^ String]_[* FormatIntBase]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) int]_[*@3 base], [@(0.0.255) int]_[*@3 width]_`=_[@3 0],
[@(0.0.255) char]_[*@3 lpad]_`=_`'_`', [@(0.0.255) int]_[*@3 sign]_`=_[@3 0])&]
[s0;l288; Formats a signed or unsigned integer (i) in a given radix
(base) with left padding to given (width) with a given (lpad)
character. &]
[s0;l288; &]
[s0;l288;O9;~~~.1152; [* i]-|the number to format.&]
[s0;l288;O9;~~~.1152; [* base]-|radix to format i in, 2 to 36 (0..9a..z)&]
[s0;l288;O9;~~~.1152; [* width]-|left padding width (output longer than
this is not padded)&]
[s0;l288;O9;~~~.1152; [* lpad]-|character to left pad output with&]
[s0;l288;O9;~~~.1152; [* sign]-|`+1 `= always prepend `+/`-; 0 `= auto
(`- only); `-1 `= unsigned formatting&]
[s0;~~~.1152;%- -|&]
[s4;%- &]
[s5;:Formatting`:`:language:%- [@(0.0.255) int]_[* language]&]
[s2; Language of resulting text.&]
@ -601,42 +366,45 @@ this is not padded)&]
[s4;%- &]
[s5;:Formatting`:`:id:%- String_[* id]&]
[s2; Formatter`-id.&]
[s0; &]
[s3; &]
[ {{10000F(128)G(128)@1 [s0; [* Format registration functions]]}}&]
[s3;%- &]
[s5;:RegisterFormatter`(int`,const char`*`,Formatter`):%- [@(0.0.255) void]_[* RegisterFo
rmatter]([@(0.0.255) int]_[*@3 type], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s5;:RegisterFormatter`(int`,const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* Regi
sterFormatter]([@(0.0.255) int]_[*@3 type], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter for specific Value [%-*@3 type]. If [%-*@3 type]
is VALUE`_V, formatter is applied to all Value types if no formatter
for specific type is specified.&]
[s3;%- &]
[s4;%- &]
[s5;:RegisterNumberFormatter`(const char`*`,Formatter`):%- [@(0.0.255) void]_[* RegisterN
umberFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id], Formatter_[*@3 f])&]
[s5;:RegisterNumberFormatter`(const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* Reg
isterNumberFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter for bool, int, double and int64 types.&]
[s3;%- &]
[s4;%- &]
[s5;:RegisterStringFormatter`(const char`*`,Formatter`):%- [@(0.0.255) void]_[* RegisterS
tringFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id], Formatter_[*@3 f])&]
[s5;:RegisterStringFormatter`(const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* Reg
isterStringFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter for String and WString types.&]
[s3;%- &]
[s4;%- &]
[s5;:RegisterDateTimeFormatter`(const char`*`,Formatter`):%- [@(0.0.255) void]_[* Registe
rDateTimeFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
[s5;:RegisterDateTimeFormatter`(const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* R
egisterDateTimeFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter for Date and Time types.&]
[s3;%- &]
[s4;%- &]
[s5;:RegisterValueFormatter`(const char`*`,Formatter`):%- [@(0.0.255) void]_[* RegisterVa
lueFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id], Formatter_[*@3 f])&]
[s5;:RegisterValueFormatter`(const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* Regi
sterValueFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter to be applied when no formatter for specific
type is specified.&]
[s0; &]
[s3; &]
[s4;%- &]
[s5;:RegisterNullFormatter`(const char`*`,Formatter`):%- [@(0.0.255) void]_[* RegisterNul
lFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id], Formatter_[*@3 f])&]
[s5;:RegisterNullFormatter`(const char`*`,Formatter`)init`_:%- [@(0.0.255) void]_[* Regis
terNullFormatter]([@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 id],
Formatter_[*@3 f])&]
[s2; Registers formatter [%-*@3 id] to be applied when the Value argument
is Void (Value()) or ErrorValue.&]
[s3; &]
[s0; ]

View file

@ -0,0 +1,19 @@
TITLE("Text formatting")
COMPRESSED
120,156,213,91,11,119,211,70,22,254,43,83,104,90,59,216,70,79,63,129,67,22,82,218,221,2,61,16,90,122,124,148,72,177,198,182,22,89,114,37,57,33,109,202,111,223,123,103,70,111,141,156,4,216,61,219,114,98,103,102,190,59,247,61,119,30,153,107,228,219,111,149,158,114,95,217,243,223,244,57,93,58,59,63,177,230,158,97,140,103,142,102,206,62,252,235,245,100,134,120,21,240,250,72,213,199,166,174,26,218,16,126,168,186,170,153,154,110,168,99,109,98,140,117,125,172,76,23,190,19,199,214,220,215,198,99,6,210,0,164,141,76,77,29,25,99,99,172,234,163,177,6,88,77,81,52,101,164,153,170,161,143,53,115,234,210,120,97,205,21,24,174,195,240,201,80,159,40,170,162,140,84,85,209,181,145,162,155,134,170,234,26,144,208,70,154,170,152,83,26,184,214,252,199,225,12,1,6,10,101,14,129,245,33,80,51,12,5,168,35,204,208,85,93,209,116,83,157,152,195,233,57,93,121,65,147,72,230,94,145,70,202,212,75,232,70,72,228,24,179,195,167,230,76,5,232,
176,55,188,63,130,105,13,19,38,155,160,68,58,192,52,109,104,78,84,211,0,150,12,69,155,70,244,143,157,23,209,13,13,18,65,193,83,85,77,157,157,171,163,25,176,240,233,211,167,129,106,40,92,83,35,224,69,85,128,111,77,133,54,144,99,164,154,19,101,98,142,213,177,162,143,12,205,28,129,232,91,39,114,54,66,146,115,67,155,9,57,198,189,241,253,161,58,4,141,42,99,224,223,156,0,1,5,132,128,79,80,164,9,255,244,241,52,17,96,196,33,104,210,155,220,7,37,233,166,50,154,40,35,99,100,26,32,137,166,14,85,80,164,130,242,131,25,166,65,24,109,28,223,154,255,117,246,247,193,241,171,254,187,183,100,30,43,51,50,63,52,200,15,216,149,16,187,79,18,250,49,33,75,246,107,226,5,43,235,59,11,7,29,62,80,213,17,193,239,230,108,106,195,255,28,96,119,22,97,16,39,100,177,118,34,251,208,238,177,223,176,251,87,186,72,194,200,126,196,190,59,254,142,218,79,236,239,236,238,244,160,79,230,167,216,248,54,137,128,250,41,225,159,214,217,252,
80,240,96,205,159,118,134,70,151,116,240,139,50,80,6,160,130,46,97,132,211,174,179,114,23,204,157,245,216,135,214,252,240,169,46,4,72,155,123,164,149,216,105,206,241,41,111,228,191,164,67,30,165,67,80,144,116,4,126,79,7,128,108,103,124,94,39,90,197,105,107,215,226,250,250,223,201,220,206,117,206,50,124,233,193,55,149,55,160,178,12,98,207,173,30,185,45,133,128,67,173,193,96,96,145,138,26,50,151,241,130,68,120,74,217,111,72,234,52,53,135,145,43,174,83,212,10,16,198,62,224,195,119,130,213,206,89,81,20,161,166,209,179,154,38,65,133,12,22,55,143,231,124,21,59,30,89,140,199,98,19,176,43,38,191,176,186,159,103,120,148,163,172,225,76,158,155,57,244,255,181,167,104,51,194,115,78,154,148,144,219,152,132,187,100,187,75,120,122,58,119,98,234,146,48,32,69,105,122,160,183,152,70,152,180,136,179,72,118,142,143,211,237,48,95,199,36,9,201,214,119,22,116,29,250,46,141,226,1,57,18,93,228,2,217,140,97,40,69,53,94,0,1,32,13,195,
217,68,187,24,169,137,108,200,112,239,236,7,246,3,18,111,233,194,91,122,128,139,105,66,194,37,137,19,39,112,157,200,45,140,157,17,103,187,245,189,133,147,120,192,233,194,9,200,50,162,212,191,34,17,172,96,49,140,32,201,154,122,17,9,47,131,2,10,191,166,228,23,92,135,36,185,218,82,20,33,28,8,197,136,143,87,97,2,157,107,80,17,80,2,65,34,207,57,247,41,9,118,155,115,160,14,92,113,120,174,5,15,254,109,182,62,91,195,64,202,243,43,18,130,192,126,232,184,40,38,18,17,42,223,109,81,5,154,66,216,50,67,153,232,229,185,127,41,104,19,165,143,18,114,233,37,107,176,8,57,176,8,40,131,172,157,11,42,4,155,150,177,108,12,152,142,185,14,124,22,29,121,179,1,108,44,122,173,106,127,184,69,101,74,187,51,53,218,125,207,149,13,178,237,180,199,170,178,213,196,9,243,12,136,72,26,109,35,42,180,38,180,20,129,79,122,1,37,157,32,76,114,155,101,76,116,7,228,216,89,172,83,82,224,42,127,236,104,176,160,4,106,158,152,107,11,
163,19,124,149,166,38,191,74,237,240,193,3,0,88,80,96,123,208,8,198,115,169,239,109,60,52,36,68,69,20,110,82,125,160,190,31,130,223,100,83,87,140,117,116,225,120,62,243,141,84,172,130,69,200,95,127,169,163,177,57,29,107,170,121,154,86,4,15,11,170,216,134,177,135,211,128,218,200,212,178,166,211,199,124,212,91,74,63,176,200,2,215,78,125,140,128,90,36,104,136,57,223,15,47,25,194,190,23,209,48,90,57,129,247,39,181,239,145,48,2,55,66,209,65,226,204,91,123,16,125,116,185,243,185,166,146,200,9,98,159,197,82,60,0,30,26,57,189,244,220,100,141,108,62,42,176,201,60,53,206,117,3,241,23,67,85,140,54,13,9,196,176,239,166,158,91,39,149,27,8,216,113,124,111,5,186,246,233,50,217,207,193,147,175,200,65,228,173,214,55,96,193,126,252,21,121,0,212,2,179,72,84,226,131,7,116,145,2,166,81,198,140,101,127,42,176,243,83,110,104,204,74,48,224,213,206,247,45,102,243,152,52,144,192,228,158,80,135,5,69,85,136,129,245,247,223,
45,161,92,205,10,176,108,109,118,88,124,128,43,65,34,102,78,231,111,215,78,65,76,88,91,252,43,96,38,240,189,15,148,60,35,158,11,140,98,194,71,13,184,222,10,99,16,226,205,254,222,62,179,191,103,25,2,83,128,131,254,77,93,8,123,200,170,87,16,177,224,209,231,52,185,164,52,144,38,23,8,243,22,102,81,55,140,77,136,15,190,44,157,83,210,152,17,25,165,45,236,215,248,176,60,19,20,86,137,61,19,229,139,77,158,204,112,67,0,233,40,134,69,128,4,248,3,215,49,145,171,64,17,203,37,240,21,36,5,139,184,116,11,233,141,197,114,80,160,56,216,43,37,44,233,118,63,166,1,102,139,11,90,73,96,207,178,60,137,174,116,136,222,32,81,67,12,181,26,174,183,64,50,162,108,201,103,25,59,115,182,124,141,231,107,251,81,204,139,178,202,132,224,159,18,53,131,173,209,247,195,32,113,128,137,170,227,96,162,166,87,36,160,153,181,96,59,236,108,179,233,88,136,224,210,131,189,46,120,31,52,238,188,120,157,101,114,150,214,75,234,145,47,188,204,24,
160,109,66,33,114,225,87,144,51,8,3,187,95,97,10,61,21,186,112,106,168,183,202,196,25,9,224,18,147,26,161,155,109,114,53,67,221,50,119,65,147,100,5,1,134,101,170,43,161,0,212,99,106,98,81,47,117,92,186,132,21,209,69,26,111,188,197,154,247,178,213,115,9,108,119,83,127,218,132,16,119,64,235,194,131,42,173,80,152,161,217,80,20,10,76,82,86,39,32,203,101,5,252,182,246,252,140,175,172,156,137,49,250,216,138,137,135,22,224,185,91,224,52,41,228,138,30,204,67,81,34,136,84,15,22,225,228,50,4,198,32,18,183,176,168,156,123,62,184,29,141,203,133,138,167,154,202,236,53,174,159,126,177,150,132,73,196,236,44,141,156,103,133,163,135,43,108,7,3,177,84,77,118,81,61,76,19,3,242,58,96,242,243,69,17,234,35,140,236,158,80,226,22,148,196,74,221,192,73,118,17,40,134,83,136,153,95,176,68,228,134,59,156,194,238,63,65,157,246,72,28,98,37,0,58,3,122,49,155,29,102,162,131,213,0,237,69,14,88,53,154,130,88,157,59,104,
150,175,236,18,246,61,234,36,49,44,203,168,209,170,131,15,200,9,86,34,240,207,1,21,135,64,121,67,46,215,144,224,152,231,21,77,89,245,66,47,230,137,9,147,100,209,230,61,206,241,129,187,229,231,15,72,126,237,196,34,124,46,35,15,24,131,64,139,97,132,109,195,152,142,109,231,133,16,42,179,196,125,183,226,45,217,130,240,16,118,95,181,26,189,86,1,2,101,118,102,150,143,177,106,137,161,172,45,224,150,197,77,106,69,158,177,27,115,12,233,20,171,111,73,136,200,248,175,57,116,149,249,151,24,83,181,65,204,21,227,221,118,27,34,67,245,66,124,65,128,19,18,146,143,228,61,129,26,192,247,136,31,18,255,35,241,223,19,74,142,201,146,172,200,11,82,157,234,23,30,73,16,166,184,139,9,211,89,221,112,193,66,132,239,120,208,247,208,60,120,32,24,121,44,189,73,101,139,161,246,128,74,89,166,244,212,229,216,194,3,129,33,118,56,249,170,211,73,247,84,180,232,243,184,35,76,216,194,8,159,67,67,108,245,186,3,73,106,199,109,92,133,143,60,207,131,
102,120,169,144,238,23,129,42,84,31,91,92,110,32,142,49,251,197,232,190,78,118,128,86,221,132,178,56,69,69,97,133,176,103,53,68,149,84,243,222,73,230,234,5,78,155,37,241,226,90,57,84,223,107,109,66,119,231,135,86,97,51,86,219,42,225,10,192,171,254,82,51,43,200,102,2,3,27,248,42,204,77,207,157,107,219,44,220,107,232,19,216,107,12,21,51,173,25,235,44,65,153,152,85,137,44,29,112,193,112,169,192,125,38,211,35,133,82,1,50,32,71,20,247,13,216,189,139,133,31,8,45,161,28,108,215,208,48,39,147,49,235,122,5,52,34,88,61,176,85,2,96,210,103,93,39,169,181,87,224,6,1,122,230,62,124,170,157,172,87,28,211,115,199,17,185,148,47,190,32,10,152,123,177,6,143,169,149,184,121,89,135,185,146,31,86,128,187,249,87,169,207,226,78,37,225,53,201,37,100,90,154,42,35,173,52,10,149,146,227,179,5,217,241,47,157,171,184,169,98,177,216,135,85,117,201,66,0,179,204,198,210,216,170,24,153,213,204,1,78,28,211,106,122,186,69,
240,14,202,190,100,104,195,233,216,28,25,107,117,246,180,163,41,70,183,65,223,229,232,42,104,61,75,75,208,246,84,99,173,120,98,119,8,78,21,192,174,39,183,222,51,242,51,212,245,128,103,70,97,189,172,24,30,100,99,56,238,101,13,247,50,27,203,119,87,75,47,2,61,115,187,16,72,202,41,209,30,230,18,232,200,167,169,209,126,253,234,228,199,18,237,119,57,188,133,39,232,41,161,142,206,207,35,10,101,23,174,64,254,77,165,146,82,200,81,189,207,147,77,58,195,238,70,82,186,206,149,212,94,208,215,136,121,94,193,60,23,227,62,215,82,207,143,126,151,218,73,198,139,123,117,35,35,73,69,145,195,83,200,231,216,231,249,239,55,50,143,140,187,228,178,4,87,53,187,191,14,119,81,154,187,121,124,86,65,78,217,158,156,107,62,180,71,212,41,113,122,68,155,146,243,30,129,245,135,64,22,32,127,66,195,8,218,29,214,84,161,118,244,69,169,69,82,95,131,205,155,19,136,242,36,174,194,222,72,221,162,10,171,230,250,60,207,58,62,112,14,251,3,76,154,13,
133,80,37,221,138,107,73,221,212,24,56,176,250,215,75,239,35,122,5,212,81,27,199,143,27,135,93,192,48,200,182,222,158,97,1,187,93,129,225,20,201,134,17,30,108,126,220,134,1,158,148,32,107,33,175,3,155,177,75,129,93,102,88,206,88,59,202,23,40,31,80,233,149,136,221,231,183,1,249,149,101,91,217,116,219,122,137,216,15,242,226,72,180,244,179,194,166,188,174,179,99,161,82,41,69,190,41,255,106,159,90,141,164,203,132,64,139,64,171,249,144,90,104,196,28,13,103,128,239,95,139,37,27,234,33,60,118,129,101,120,21,212,7,22,231,220,195,124,161,169,127,109,229,55,9,169,39,100,213,62,233,4,116,229,176,218,215,126,204,143,15,242,97,176,31,101,251,211,116,51,5,35,134,221,38,190,64,65,253,235,15,148,110,241,120,15,120,199,51,39,7,136,255,73,163,48,110,4,128,10,251,215,169,159,165,22,20,219,26,95,29,102,227,135,134,56,144,124,96,53,106,137,237,148,5,25,41,186,193,40,101,5,101,140,108,29,151,29,122,177,3,211,198,224,229,31,
44,19,60,36,199,31,29,172,151,98,201,213,81,185,98,54,117,85,157,26,195,241,36,205,37,252,244,161,99,223,195,218,221,229,49,113,16,91,246,61,200,101,154,222,131,13,252,201,241,251,19,251,94,183,152,127,158,241,62,236,41,230,165,18,45,109,26,11,106,234,212,221,75,15,27,217,8,41,61,69,85,50,50,21,176,120,163,210,138,182,15,5,90,109,161,32,37,97,95,51,145,148,71,64,228,186,153,9,251,26,218,72,245,63,251,186,149,222,147,54,122,53,98,48,104,15,61,251,241,77,8,22,25,149,16,100,222,96,219,214,54,105,38,6,45,219,68,138,180,231,236,24,3,207,233,83,151,42,53,101,222,128,7,245,77,158,197,198,202,201,219,18,71,104,243,128,5,195,12,205,10,228,72,46,254,29,38,241,238,128,9,101,152,145,28,243,81,130,25,157,75,33,239,101,144,127,72,33,148,67,6,117,214,160,9,195,133,218,15,224,167,20,127,188,15,127,220,142,95,238,195,75,145,171,54,164,20,245,226,78,168,224,78,40,181,13,70,172,249,67,210,129,5,193,247,22,
94,66,234,75,103,87,74,87,255,166,149,31,133,147,230,101,82,195,58,41,39,28,180,122,3,149,219,66,179,79,237,7,122,43,156,251,81,38,53,95,6,243,34,172,133,169,220,69,168,174,212,131,174,237,73,163,156,168,47,101,181,215,98,209,139,59,249,129,214,6,227,26,209,136,168,160,89,93,37,87,70,74,170,33,251,40,183,163,116,113,87,91,95,124,13,123,92,220,205,30,246,92,157,130,39,205,180,105,114,25,206,244,105,178,142,40,157,57,176,43,88,195,102,201,226,53,142,86,161,8,67,63,147,96,85,106,209,223,66,85,63,184,11,221,54,78,249,161,19,91,239,42,168,127,239,2,42,133,189,148,194,254,217,10,99,199,73,141,176,119,175,142,219,152,148,177,216,198,161,140,191,54,246,100,204,201,215,126,231,170,17,19,227,109,90,241,128,168,10,124,46,1,190,221,11,60,250,189,25,120,116,242,238,77,241,24,168,198,170,140,83,249,84,50,22,229,8,25,111,82,68,114,201,16,245,20,176,15,81,173,207,204,125,0,181,138,104,217,4,200,32,138,28,227,112,68,
53,168,247,141,175,165,42,26,75,33,71,141,83,200,117,123,36,153,226,248,173,20,18,49,200,184,2,184,240,60,79,10,121,147,206,82,101,236,229,179,103,239,223,191,255,105,95,117,254,130,38,111,175,226,231,78,66,59,221,170,186,199,15,53,243,161,166,40,195,155,17,57,241,54,109,68,32,55,78,245,209,84,153,236,163,102,223,195,187,141,218,222,179,116,9,115,123,105,52,115,160,140,7,92,26,201,97,91,97,191,206,222,190,191,17,151,20,184,203,95,236,226,164,248,76,163,116,236,150,189,116,198,43,135,169,61,197,231,47,46,93,226,75,102,241,245,172,254,162,185,99,31,102,160,110,167,237,109,239,233,15,89,141,37,30,218,230,13,233,48,251,187,179,229,38,201,158,211,102,148,211,123,245,236,105,38,123,77,181,11,248,69,16,59,247,198,59,31,159,146,210,52,197,25,178,123,54,118,19,163,103,55,49,88,13,252,208,81,181,113,247,5,251,249,84,21,39,157,135,69,180,80,182,129,122,197,47,106,166,43,232,69,101,197,73,180,91,36,236,213,119,65,7,188,181,240,
110,58,251,203,4,77,92,14,243,17,187,136,242,55,80,252,53,136,23,112,11,177,235,174,236,81,84,229,85,44,123,187,82,124,69,48,40,113,104,86,57,76,207,29,171,60,138,199,231,249,83,109,193,222,207,226,119,84,53,127,174,198,94,208,128,255,10,13,138,137,228,51,2,167,56,25,99,27,103,192,71,212,130,248,81,249,138,249,166,20,185,172,72,148,251,31,82,229,109,21,151,225,23,128,13,71,166,55,157,201,115,203,179,120,110,205,41,179,55,78,183,112,38,113,101,24,137,151,6,194,131,227,212,191,244,2,63,105,220,230,243,53,253,1,66,222,219,245,2,47,177,207,170,230,189,8,129,117,148,160,70,79,246,55,8,24,236,183,252,251,3,15,79,94,50,194,156,204,146,255,53,1,104,44,157,185,248,138,115,89,127,45,62,63,232,103,211,15,216,67,182,66,3,123,231,119,244,243,187,99,251,236,215,94,129,14,94,2,227,107,117,254,108,13,131,167,248,244,220,91,226,149,180,100,86,246,96,48,125,156,177,4,10,114,223,72,37,120,197,54,199,5,139,124,174,49,
42,4,173,134,12,250,165,181,126,30,134,126,143,63,195,18,47,172,242,187,106,166,181,253,106,224,97,241,5,213,80,33,248,223,80,131,120,217,132,178,255,150,190,14,188,153,244,184,48,99,149,240,5,229,175,145,252,111,104,0,39,101,242,227,204,55,21,158,69,215,23,148,188,76,239,107,139,205,159,230,165,9,35,125,178,114,203,252,208,146,29,124,255,139,230,134,2,185,175,173,25,145,107,241,25,87,131,146,176,206,168,84,31,152,143,129,99,210,97,237,80,168,226,107,221,227,40,10,185,73,211,247,46,214,127,0,84,107,50,83,

View file

@ -0,0 +1,195 @@
topic "Formatting functions";
[ $$0,0#00000000000000000000000000000000:Default]
[l288;2 $$1,0#27521748481378242620020725143825:desc]
[H6;0 $$2,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$3,0#37138531426314131252341829483370:item]
[0 $$4,0#96390100711032703541132217272105:end]
[{_}%EN-US
[s0; [*4 Formatting functions]&]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Global functions]]}}&]
[s2;H0;%- &]
[s3;:FormatInt`(int`):%- [_^String^ String]_[* FormatInt]([@(0.0.255) int]_[*@3 i])&]
[s1; Outputs decimally formatted signed integer [%-*@3 i] without `+
or any paddings. Supposed to be quite fast. Equivalent to FormatIntBase(i,
10).&]
[s4;* &]
[s2;%- &]
[s3;:FormatIntDec`(int`,int`,char`,bool`):%- [_^String^ String]_[* FormatIntDec]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) int]_[*@3 width], [@(0.0.255) char]_[*@3 lpad]_`=_`'_`',
[@(0.0.255) bool]_[*@3 always`_sign]_`=_[@(0.0.255) false])&]
[s1; Formats a signed decimal integer [%-*@3 i] with left padding up
to given [%-*@3 width] characters (output longer than this is not
padded) with a given [%-*@3 lpad] character. If [%-*@3 always`_sign
]is true, start positive numbers with `'`+`' (negative numbers
always start with `'`-`').&]
[s4; &]
[s2;%- &]
[s3;:FormatIntHex`(int`,int`,char`):%- [_^String^ String]_[* FormatIntHex]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) int]_[*@3 width]_`=_[@3 8], [@(0.0.255) char]_[*@3 lpad]_`=_`'[@3 0]`')&]
[s1;~~~.1152; Formats an unsigned hexadecimal (radix 16) integer
[%-*@3 i] with left padding up to given [%-*@3 width] characters
(output longer than this is not padded) with a given [%-*@3 lpad]
character.&]
[s4; &]
[s2;%- &]
[s3;:FormatIntOct`(int`,int`,char`):%- [_^String^ String]_[* FormatIntOct]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) int]_[*@3 width]_`=_[@3 12], [@(0.0.255) char]_[*@3 lpad]_`=_`'[@3 0]`')&]
[s1; Formats an unsigned octal (radix 8) integer [%-*@3 i] with left
padding up to given [%-*@3 width] characters (output longer than
this is not padded) with a given [%-*@3 lpad] character.&]
[s4; &]
[s2;%- &]
[s3;:FormatIntRoman`(int`,bool`):%- [_^String^ String]_[* FormatIntRoman]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) bool]_[*@3 upper]_`=_[@(0.0.255) false])&]
[s1; Formats a signed integer [%-*@3 i] in Roman numerals. The biggest
`"implemented`" numeral is M (1000), so expect quite a long return
string when formatting a billion. Negative numbers are prepended
with `[`-`], 0 or Null is output as a Null String. If [%-*@3 upper]
is true, use uppercase `[true`] or lowercase `[false`] letters&]
[s4; &]
[s2;%- &]
[s3;:FormatIntAlpha`(int`,bool`):%- [_^String^ String]_[* FormatIntAlpha]([@(0.0.255) int]_
[*@3 i], [@(0.0.255) bool]_[*@3 upper]_`=_[@(0.0.255) true])&]
[s1; Formats a signed integer [%-*@3 i] in length`-first lexicographic
index, i.e. excel column numbering (1 `= A,2 `= B.. 26 `= Z,
27 `= AA, 28 `= AB .. 52 `= AZ, 53 `= BA ... 78 `= BZ etc). 0
or Null is output as a Null String. Only negative numbers are
prepended with a `[`-`]. If [%-*@3 upper] is true, use uppercase
letter.&]
[s4; &]
[s2;%- &]
[s3;:Format64`(uint64`):%- [_^String^ String]_[* Format64]([_^uint64^ uint64]_[*@3 a])&]
[s1; Formats an unsigned decimal 64`-bit integer [%-*@3 a]. Supposed
to be quite fast.&]
[s4; &]
[s2;%- &]
[s3;:Format64Hex`(uint64`):%- [_^String^ String]_[* Format64Hex]([_^uint64^ uint64]_[*@3 a])&]
[s1; Formats an unsigned hexadecimal [%-*@3 a] (radix 16) 64`-bit integer.
Supposed to be quite fast. Lowecase letters a`-f are used for
digits `[10`] through `[15`].&]
[s4; &]
[s2;%- &]
[s3;:FormatIntHex`(const void`*`):%- [_^String^ String]_[* FormatIntHex]([@(0.0.255) const]_
[@(0.0.255) void]_`*[*@3 ptr])&]
[s1; Formats the pointer address [%-*@3 ptr] as a hexadecimal (base
16) number zero`-padded to the number of digits appropriate for
the memory model (8 digits in 32`-bit systems, 16 digits in 64`-bit
systems). Useful for logging and debugging purposes. Equivalent
to FormatHex, god knows why there are two of them.&]
[s4; &]
[s2;%- &]
[s3;:FormatHex`(const void`*`):%- [_^String^ String]_[* FormatHex]([@(0.0.255) const]_[@(0.0.255) v
oid]_`*[*@3 ptr])&]
[s1; Same as FormatIntHex.&]
[s4; &]
[s2;%- &]
[s3;:FormatInteger`(int`):%- [_^String^ String]_[* FormatInteger]([@(0.0.255) int]_[*@3 a])&]
[s1; Formats a signed decimal integer without padding. In comparison
to FormatInt it returns String(Null) when given int(Null) whereas
FormatInt returns a plain empty string.&]
[s4; &]
[s2;%- &]
[s3;:FormatUnsigned`(unsigned long`):%- [_^String^ String]_[* FormatUnsigned]([@(0.0.255) u
nsigned]_[@(0.0.255) long]_[*@3 a])&]
[s1; A very old freak, implemented through Sprintf(`"%u`", a). Deprecated.&]
[s4; &]
[s2;%- &]
[s3;:FormatDouble`(double`):%- [_^String^ String]_[* FormatDouble]([@(0.0.255) double]_[*@3 a
])&]
[s1; Formats a floating point [%-*@3 a] in decimal notation automatically
selecting ordinary or scientific (exponential) notation according
to the absolute value of a. In ordinary notation, the number
is formatted to 10 significant digits; in exponential notation,
the mantissa is formatted to 10 decimal digits.&]
[s4; &]
[s2;%- &]
[s3;:FormatBool`(bool`):%- [_^String^ String]_[* FormatBool]([@(0.0.255) bool]_[*@3 a])&]
[s1; Formats a boolean [%-*@3 a] as one of the fixed words `"true`"
or `"false`" (regardless of language settings).&]
[s4; &]
[s2;%- &]
[s3;:FormatInt64`(int64`):%- [_^String^ String]_[* FormatInt64]([_^int64^ int64]_[*@3 a])&]
[s1; Formats a signed decimal 64`-bit integer [%-*@3 a] without any
padding. Only negative numbers are prepended with a `[`-`].&]
[s4; &]
[s2;%- &]
[s3;:FormatDouble`(double`,int`,int`,int`):%- [_^String^ String]_[* FormatDouble]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0],
[@(0.0.255) int]_[*@3 fill`_exp]_`=_[@3 0])&]
[s1; Formats a floating point number [%-*@3 d] in decimal notation
automatically selecting ordinary or scientific (exponential)
notation according to the absolute value of a and the given number
of [%-*@3 digits]. In the (default) absolute decimal mode, a number
is formatted in exponential notation whenever its absolute value
exceeds the interval `[1e`-15, 1e`+15`]; in relative (significant)
decimal mode (FD`_REL), a number is formatted in exponential
notation whenever its absolute value exceeds the interval `[10`^`-<2
`* digits>, 10`^`+<2 `* digits>`]. [%-*@3 flags] can be a binary
combination ([@(0.0.255) `|]) of&]
[s0; &]
[ {{2098:7902<288;h1; [s0; [2 FD`_SIGN]]
:: [s0; [/2 always prepend sign (`+10)]]
:: [s0; [2 FD`_REL]]
:: [s0; [/2 relative decimal places (valid digits)]]
:: [s0; [2 FD`_SIGN`_EXP]]
:: [s0; [/2 always prepend sign to exponent (1e`+2)]]
:: [s0; [2 FD`_CAP`_E]]
:: [s0; [/2 capital E for exponent (1E10)]]
:: [s0; [2 FD`_ZERO]]
:: [s0; [/2 keep trailing zeros (1.25000)]]
:: [s0; [2 FD`_FIX]]
:: [s0; [/2 always use fixed notation (FormatDouble only)]]
:: [s0; [2 FD`_EXP]]
:: [s0; [/2 always use exponential notation (FormatDouble only)]]}}&]
[s1; &]
[s1; [*@3 fill`_exp ]is left zero`-padding of exponent in exponential
notation&]
[s4; &]
[s2;%- &]
[s3;:FormatDoubleFix`(double`,int`,int`):%- [_^String^ String]_[* FormatDoubleFix]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0])&]
[s1; Formats a floating point number [%-*@3 d] in ordinary decimal
notation (whole part, comma, decimal part). Then number of [%-*@3 digits]
can be interpreted either as the absolute number of decimal digits
(the default mode) or the relative number of significant digits
excluding leading zeros. Decimal point is always output as a
period independent on language settings. [%-*@3 flags] can be a
binary combination ([@(0.0.255) `|]) of&]
[ {{2098:7902<288;h1; [s0; [2 FD`_SIGN]]
:: [s0; [/2 always prepend sign (`+10)]]
:: [s0; [2 FD`_REL]]
:: [s0; [/2 relative decimal places (valid digits)]]
:: [s0; [2 FD`_ZERO]]
:: [s0; [/2 keep trailing zeros (1.25000)]]}}&]
[s4; &]
[s2;%- &]
[s3;:FormatDoubleExp`(double`,int`,int`,int`):%- [_^String^ String]_[* FormatDoubleExp]([@(0.0.255) d
ouble]_[*@3 d], [@(0.0.255) int]_[*@3 digits], [@(0.0.255) int]_[*@3 flags]_`=_[@3 0],
[@(0.0.255) int]_[*@3 fill`_exp]_`=_[@3 0])&]
[s1; Formats a floating point number [%-*@3 d] in scientific / exponential
notation (sign, single digit, period, decimal part, `"e`" decimal
exponent) with given number of [%-*@3 digits]. [%-*@3 flags] can
be a binary combination ([@(0.0.255) `|]) of&]
[s1; &]
[ {{2098:7902<288;h1; [s0; [2 FD`_SIGN]]
:: [s0; [/2 always prepend sign (`+10)]]
:: [s0; [2 FD`_SIGN`_EXP]]
:: [s0; [/2 always prepend sign to exponent (1e`+2)]]
:: [s0; [2 FD`_CAP`_E]]
:: [s0; [/2 capital E for exponent (1E10)]]
:: [s0; [2 FD`_ZERO]]
:: [s0; [/2 keep trailing zeros (1.25000)]]}}&]
[s1; &]
[s1; [*@3 fill`_exp ]is left zero`-padding of exponent in exponential
notation&]
[s4; &]
[s2;%- &]
[s3;:FormatIntBase`(int`,int`,int`,char`,int`):%- [_^String^ String]_[* FormatIntBase]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) int]_[*@3 base], [@(0.0.255) int]_[*@3 width]_`=_[@3 0],
[@(0.0.255) char]_[*@3 lpad]_`=_`'_`', [@(0.0.255) int]_[*@3 sign]_`=_[@3 0])&]
[s1; Formats a signed or unsigned integer [%-*@3 i] in a given radix
[%-*@3 base] with left padding to given [%-*@3 width] with a given
[%-*@3 lpad] character. If [*@3 sign ]is `+1 `= always prepend `'`+`'/`-,
if 0 `= auto (`'`-`' only), if `-1, format as unsigned.&]
[s0; ]

View file

@ -0,0 +1,13 @@
TITLE("Formatting functions")
COMPRESSED
120,156,221,89,11,111,219,56,18,254,43,131,220,246,42,167,142,171,135,95,177,119,15,77,54,73,91,236,94,179,104,174,192,162,134,26,209,18,109,19,149,37,157,68,229,113,221,246,183,223,12,41,217,82,108,199,78,186,232,94,175,40,108,71,228,140,56,175,111,62,146,35,248,225,7,179,105,254,205,220,242,111,112,194,39,44,15,165,59,10,237,126,127,104,163,152,133,98,118,175,99,91,189,118,191,221,183,156,94,223,110,219,93,219,52,109,179,103,119,172,182,211,183,59,131,128,103,190,59,122,213,29,154,40,97,211,139,58,93,84,215,197,241,118,219,196,249,150,233,216,109,199,114,76,219,233,88,135,157,238,96,204,167,34,114,71,162,221,238,15,153,221,25,126,252,229,252,80,189,207,65,105,167,103,57,253,142,99,161,32,126,88,142,101,119,108,167,109,245,237,195,118,223,113,122,230,64,72,62,119,71,244,178,54,78,63,236,58,135,166,101,154,61,139,94,211,51,157,78,219,178,28,27,151,108,247,108,203,236,12,120,20,184,163,79,151,159,159,156,190,57,120,119,1,163,204,
28,194,104,191,13,103,113,58,103,82,138,104,10,147,60,242,165,136,163,204,253,187,171,198,241,11,62,125,178,200,43,103,134,101,247,27,47,213,231,11,171,20,135,151,97,60,102,97,69,210,253,252,153,132,237,225,43,115,248,228,128,52,100,206,112,160,95,242,58,146,158,33,240,163,49,192,161,209,229,135,11,153,226,123,63,128,254,118,47,81,225,98,166,107,140,94,24,102,203,108,217,157,78,3,80,138,134,95,56,32,220,6,41,181,134,112,158,203,36,151,25,4,220,23,115,22,134,183,48,209,182,240,0,50,49,141,240,11,197,248,148,167,48,122,114,160,101,225,90,200,89,156,75,240,158,65,156,2,139,110,33,97,65,128,111,207,90,112,145,39,73,156,161,152,140,97,204,225,223,57,186,24,38,44,147,45,56,197,63,174,88,200,35,73,131,139,69,30,179,140,27,162,9,150,217,104,209,170,218,195,125,208,230,175,177,253,132,251,218,252,166,250,240,103,44,245,154,227,56,14,119,242,7,74,111,118,73,19,214,143,92,139,64,206,238,140,210,123,139,225,16,109,119,47,189,159,
46,189,167,248,191,62,141,22,86,76,99,225,53,187,205,188,75,114,170,154,94,157,55,97,97,198,23,49,209,203,205,128,149,17,40,130,179,33,18,16,242,137,44,35,0,121,66,206,157,138,43,30,149,243,180,1,106,205,204,151,60,205,192,136,85,216,33,140,35,210,39,103,44,194,15,145,1,254,143,98,173,140,7,13,173,158,213,181,41,123,151,202,90,240,122,82,14,85,109,4,23,117,201,52,231,77,200,36,75,81,103,156,9,137,138,32,202,231,99,90,132,82,238,61,245,158,121,79,193,136,248,148,213,70,181,174,66,182,156,122,224,61,45,115,100,115,138,188,226,55,43,41,178,75,114,160,220,99,147,67,199,211,129,254,78,105,66,51,77,23,77,209,241,254,242,229,75,203,178,58,118,37,240,17,228,81,17,251,25,191,97,101,252,141,148,5,226,6,172,110,227,127,51,21,182,69,230,220,151,143,138,12,202,125,109,100,44,251,49,161,89,27,145,216,151,203,88,244,191,211,80,188,141,231,44,42,130,177,51,124,42,161,93,35,81,193,62,108,9,60,125,40,232,173,186,85,
68,160,86,64,24,193,83,148,110,193,191,102,28,198,98,58,229,25,118,163,61,49,79,66,62,199,254,194,3,111,175,156,69,222,251,39,24,212,128,27,136,69,49,240,155,132,251,178,232,76,76,121,27,82,46,243,52,66,180,33,163,225,122,134,142,157,44,123,58,195,119,132,33,182,230,22,188,89,193,169,148,67,146,242,4,169,1,46,90,3,213,8,129,10,189,97,82,119,124,147,135,106,9,69,108,25,89,168,158,105,7,87,225,83,187,9,22,184,153,103,92,63,243,177,67,162,86,122,234,185,164,52,140,175,23,79,149,27,241,113,200,37,101,209,182,192,31,133,201,140,61,52,240,74,232,79,11,60,217,241,192,184,35,105,152,202,153,119,48,17,41,70,58,228,55,194,143,167,41,75,102,194,199,225,128,223,52,65,180,120,11,99,235,243,16,252,56,204,231,81,17,34,10,160,97,129,247,19,28,53,109,250,58,110,181,0,236,46,253,124,223,4,187,167,134,142,240,87,95,253,58,6,28,239,168,153,71,56,222,113,148,204,17,62,109,65,79,77,57,126,15,92,250,141,214,142,
1,62,143,144,85,173,246,183,213,188,97,69,230,236,158,19,58,230,247,23,123,183,237,25,57,58,21,191,183,134,186,219,198,32,95,126,208,211,63,128,254,46,9,204,106,200,42,160,88,182,40,124,203,193,88,200,187,81,100,238,125,204,112,203,250,85,67,223,221,4,221,199,31,101,69,181,217,46,86,94,109,187,119,204,187,151,238,254,138,69,90,137,18,190,9,243,87,197,61,39,1,196,23,8,196,84,224,18,188,145,101,98,5,203,89,26,231,83,194,15,171,131,89,176,19,207,241,113,191,32,225,42,22,129,183,255,56,150,163,52,184,181,2,37,117,88,181,251,202,99,137,76,87,124,38,17,118,147,152,156,128,244,63,8,82,158,101,165,191,104,186,46,130,26,115,25,147,35,200,131,58,255,225,63,60,141,189,3,221,209,200,119,164,177,24,138,39,165,95,88,146,164,113,146,10,70,62,141,83,53,105,206,231,113,122,11,243,56,192,66,55,250,229,84,196,8,199,214,177,201,110,51,220,213,101,184,161,232,86,70,203,200,21,163,88,189,239,50,62,201,67,165,56,140,167,83,
5,244,17,101,242,56,215,127,37,121,74,177,205,214,239,92,94,17,232,76,227,0,62,70,241,53,178,217,217,45,173,15,163,75,17,150,215,49,217,129,15,230,247,199,241,17,65,252,170,8,94,176,57,167,240,84,243,97,107,166,81,170,239,190,233,164,217,155,122,197,154,242,219,180,201,41,55,153,5,133,66,80,140,208,210,121,194,82,145,197,81,109,7,9,24,87,221,193,179,98,69,6,33,112,67,55,114,205,147,80,237,242,97,202,171,46,88,200,50,72,66,134,185,194,231,137,188,45,200,192,253,206,121,87,32,7,226,83,137,33,196,39,182,251,169,20,172,59,170,84,82,15,38,105,92,241,223,17,92,113,172,131,56,68,36,65,115,62,98,3,92,178,159,5,148,92,96,245,68,114,98,120,123,79,114,111,175,9,12,243,254,132,99,223,241,177,166,130,251,109,59,137,243,113,200,61,35,208,223,91,77,210,243,235,6,105,217,123,130,63,9,99,166,56,150,130,147,10,232,98,24,202,140,64,238,203,232,96,4,88,46,145,255,73,225,171,131,138,140,135,200,227,72,54,78,49,
67,24,121,35,133,204,23,232,2,49,65,98,96,32,211,139,35,250,139,97,216,151,90,124,95,9,76,75,220,97,227,12,9,3,98,12,150,120,206,169,110,153,202,182,133,218,82,180,89,133,41,108,201,203,163,18,212,100,153,42,147,233,205,12,45,209,200,51,36,59,42,203,184,163,10,201,172,20,89,198,214,41,43,173,215,138,238,15,213,49,17,57,99,55,58,71,115,235,65,170,158,82,172,9,17,13,115,22,85,98,131,197,131,6,21,0,7,19,113,67,12,6,189,133,157,108,79,145,212,61,138,132,183,167,169,233,30,54,80,100,63,105,16,82,155,64,161,144,69,211,156,77,57,70,80,241,235,108,251,158,158,72,204,142,4,64,205,86,4,160,232,255,91,218,255,93,252,217,200,96,22,136,84,57,240,122,12,187,123,72,209,53,151,187,229,157,224,119,107,13,6,27,247,203,58,207,54,14,79,66,54,205,22,219,105,115,243,60,220,41,121,151,152,242,149,185,91,203,190,40,169,194,213,193,95,93,253,138,7,208,152,110,29,75,94,82,46,80,187,74,129,4,77,51,2,125,
218,221,88,42,43,87,79,60,5,97,119,45,104,108,128,6,213,181,248,21,205,38,95,213,151,71,27,28,30,104,6,166,248,23,62,38,194,200,189,3,171,131,148,135,123,207,136,60,42,220,73,121,168,179,210,168,0,83,163,182,52,48,206,78,188,203,183,167,191,54,190,197,34,77,239,131,119,240,35,110,173,246,11,23,254,131,78,125,241,225,179,218,67,218,1,21,158,214,89,7,184,112,98,215,180,15,87,145,70,30,64,191,212,66,106,185,238,253,225,54,48,80,181,163,119,219,60,236,15,122,135,166,253,35,93,69,204,48,15,245,193,187,13,100,251,197,235,151,111,92,119,48,40,30,62,183,203,147,199,162,124,21,60,128,129,110,53,27,149,121,90,24,29,87,151,93,184,188,116,50,18,10,159,103,96,160,7,68,80,24,184,170,135,22,225,93,158,254,254,219,246,149,200,120,17,15,220,214,98,184,237,85,117,63,31,253,134,218,234,186,124,150,8,58,183,58,85,132,183,162,226,116,157,97,239,79,223,158,215,229,63,114,158,224,30,148,137,144,106,135,232,59,90,101,161,215,
233,92,101,69,254,236,245,239,107,77,161,237,171,238,23,139,68,50,170,200,133,125,37,188,93,85,183,201,51,164,110,109,118,174,85,170,111,85,44,13,189,148,6,53,188,82,7,214,234,208,110,185,55,81,240,50,89,122,107,67,49,236,128,232,103,226,102,13,168,239,136,231,40,252,45,32,253,81,48,189,64,223,21,188,54,174,103,72,28,176,83,166,178,73,21,59,103,205,101,89,224,195,134,58,190,219,12,175,101,213,43,4,193,26,32,52,226,130,246,88,68,64,106,208,93,217,57,214,88,19,24,52,173,64,103,5,120,13,40,246,145,139,74,93,202,174,210,55,66,178,48,87,105,128,20,40,88,100,62,145,232,194,16,229,24,177,184,175,168,158,2,37,60,21,113,160,206,167,20,17,192,137,232,150,21,246,243,39,128,221,247,129,114,15,6,21,93,176,91,42,235,244,38,249,74,186,132,26,254,47,24,83,133,252,60,223,0,139,20,230,38,6,59,154,98,101,170,245,55,139,52,173,215,102,19,217,59,49,247,242,89,169,173,184,124,216,198,139,190,190,123,91,223,160,123,127,
255,93,247,175,233,104,197,157,125,245,42,175,114,25,191,235,49,17,169,120,248,173,30,157,35,238,120,229,119,183,226,118,188,179,95,170,171,92,213,175,175,201,242,66,48,93,158,32,175,189,189,40,239,234,244,57,114,49,164,44,89,115,85,184,225,158,112,231,171,248,114,229,42,250,152,248,116,99,113,39,165,245,165,251,115,239,160,9,98,2,166,154,129,155,43,172,19,117,197,174,249,146,26,195,93,69,179,216,12,80,79,43,205,108,21,4,219,253,47,109,155,160,149,

View file

@ -0,0 +1,4 @@
TITLE("")
COMPRESSED
120,156,133,206,189,74,68,65,12,5,224,87,185,224,218,41,36,39,201,252,182,10,130,160,133,88,13,131,172,123,103,229,226,186,22,187,86,226,187,155,235,11,152,34,77,206,23,78,155,54,27,186,162,11,250,103,202,205,216,111,191,14,231,222,238,66,37,71,188,34,11,126,10,198,170,74,138,192,36,80,97,33,136,113,182,80,94,199,219,114,236,109,81,77,117,11,171,239,247,143,185,194,53,92,75,100,73,38,236,208,23,11,195,32,202,9,89,147,72,164,178,251,156,199,114,30,31,189,29,144,210,159,19,119,136,6,142,154,52,177,196,4,231,32,2,69,120,15,73,176,50,143,211,174,183,181,164,122,60,7,201,196,68,145,215,122,145,196,148,89,224,47,16,193,100,101,28,231,222,190,95,126,46,111,31,174,159,159,166,118,162,58,245,95,90,209,64,106,

12
uppsrc/Core/src.tpp/all.i Normal file
View file

@ -0,0 +1,12 @@
TOPIC("Format$en-us")
#include "Format$en-us.tppi"
END_TOPIC
TOPIC("FormatFn$en-us")
#include "FormatFn$en-us.tppi"
END_TOPIC
TOPIC("String1$en-us")
#include "String1$en-us.tppi"
END_TOPIC

View file

@ -300,6 +300,7 @@ class Parser {
bool isdestructor;
bool isptr;
bool nofn;
bool castoper;
String tnames;
String type;
@ -361,10 +362,10 @@ class Parser {
String TemplateParams(String& pnames);
String TemplateParams();
String TemplatePnames();
String Name(String& h);
String Name();
String Name(String& h, bool& castoper);
String Name(bool& castoper);
String Constant();
String ReadOper();
String ReadOper(bool& castoper);
int GetLine(const char *pos);
void Line();

View file

@ -209,6 +209,7 @@ Parser::Decla::Decla()
function = type_def = false;
s_static = s_auto = s_register = s_extern = s_mutable = s_explicit = s_virtual = false;
isfriend = istemplate = istructor = isptr = nofn = false;
castoper = false;
}
@ -320,7 +321,7 @@ String Parser::TemplatePnames()
return pnames;
}
String Parser::ReadOper() {
String Parser::ReadOper(bool& castoper) {
const char *p = lex.Pos();
Key(tk_operator);
int level = 0;
@ -335,19 +336,28 @@ String Parser::ReadOper() {
++lex;
}
StringBuffer r;
bool spc = false;
while(p < lex.Pos()) {
if((byte)*p > ' ')
if((byte)*p > ' ') {
if(spc && iscid(*p)) {
castoper = true;
r.Cat(' ');
}
r.Cat(*p);
spc = false;
}
else
spc = true;
p++;
}
return r;
}
String Parser::Name(String& name)
String Parser::Name(String& name, bool& castoper)
{
String s;
if(Key(t_dblcolon)) {
s << "::";
s = "::";
name = s;
}
Check(lex.IsId() || lex == tk_operator, "Name expected");
@ -357,7 +367,7 @@ String Parser::Name(String& name)
s << lex.GetId();
}
else {
String h = ReadOper();
String h = ReadOper(castoper);
name << h;
s << h;
break;
@ -378,10 +388,10 @@ String Parser::Name(String& name)
return s;
}
String Parser::Name()
String Parser::Name(bool& castoper)
{
String h;
return Name(h);
return Name(h, castoper);
}
String Parser::Constant()
@ -548,10 +558,11 @@ void Parser::Declarator(Decl& d, const char *p)
// d.name = ReadOper();
// else
if(lex.IsId() || lex == t_dblcolon || lex == tk_operator) {
d.name = Name();
d.name = Name(d.castoper);
bool dummy;
if(Key(':'))
if(!Key(t_integer))
Name();
Name(dummy);
}
if(Key('(')) {
if(inbody || (lex < 256 || lex == tk_true || lex == tk_false)
@ -674,7 +685,7 @@ Array<Parser::Decl> Parser::Declaration0(bool l0, bool more)
if(lex == tk_operator) {
Decl& a = r.Add();
(Decla&)a = d;
a.name = ReadOper();
a.name = ReadOper(a.castoper);
Key('(');
ParamList(a);
Qualifier();
@ -702,6 +713,8 @@ Array<Parser::Decl> Parser::Declaration0(bool l0, bool more)
Decl& a = r.Add();
(Decla&)a = d;
Declarator(a, p);
if(a.castoper)
a.name = Filter(natural1, CharFilterNotWhitespace) + a.name;
a.natural = natural1 + String(p1, lex.Pos());
p = lex.Pos();
}
@ -1134,7 +1147,8 @@ bool Parser::Scope(const String& tp, const String& tn) {
if(Key(tk_private)) access = "private";
if(Key(tk_virtual)) access << " virtual";
String h;
String n = Name(h);
bool dummy;
String n = Name(h, dummy);
ScAdd(im.pname, h);
if(c)
im.ptype << ';';
@ -1190,7 +1204,13 @@ CppItem& Parser::Fn(const Decl& d, const String& templ, bool body,
}
String nn0;
String nm = d.name;
int q = d.name.ReverseFind(':');
int q;
if(d.castoper) {
q = d.name.ReverseFind(' ');
q = q > 0 ? d.name.ReverseFind(':', q) : q = d.name.ReverseFind(':');
}
else
q = d.name.ReverseFind(':');
if(q >= 0) {
nm = d.name.Mid(q + 1);
if(q > 0)

View file

@ -216,10 +216,10 @@ void QualifyPass1(CppBase& base)
}
m.qitem = m.item;
}
LLOG(base.GetKey(ni) << "." << m.item << " " << GetCppFile(m.file) << '(' << m.line << ") "
<< AsCString(m.natural)
<< " impl:" << m.impl << " kind:" << (int)m.kind << " IsType:" << m.IsType()
<< " type: " << m.type << " qtype:" << m.qtype << " tparam:" << m.tparam);
//LLOG(base.GetKey(ni) << "." << m.item << " " << GetCppFile(m.file) << '(' << m.line << ") "
// << AsCString(m.natural)
// << " impl:" << m.impl << " kind:" << (int)m.kind << " IsType:" << m.IsType()
// << " type: " << m.type << " qtype:" << m.qtype << " tparam:" << m.tparam);
}
}
}
@ -265,7 +265,7 @@ void QualifyPass2(CppBase& base)
: m.item;
}
}
LLOG(base.GetKey(ni) << "." << m.item << " " << GetCppFile(m.file) << '(' << m.line << ") "
LLOG(base.GetKey(ni) << "." << m.item << " -> " << m.qitem << "\n " << GetCppFile(m.file) << '(' << m.line << ") "
<< AsCString(m.natural)
<< " impl:" << m.impl << " kind:" << (int)m.kind << " IsType:" << m.IsType()
<< " qtype:" << m.qtype << " tparam:" << m.tparam);

View file

@ -30,6 +30,8 @@ int GetClipboardFormatCode(const char *format_id)
return CF_DIB;
if(fmt == "files")
return CF_HDROP;
static StaticMutex m;
Mutex::Lock __(m);
static VectorMap<String, int> format_map;
int f = format_map.Find(format_id);
if(f < 0) {

View file

@ -22,7 +22,7 @@ void AssistEditor::Annotate(const String& filename)
bool IsCodeItem(RichText& txt, int i)
{
static Uuid codeitem = CodeItemUuid();
static Uuid stritem = StructItemUuid();;
static Uuid stritem = StructItemUuid();
if(i < txt.GetPartCount() && txt.IsPara(i)) {
Uuid style = txt.GetParaStyle(i);
return style == codeitem || style == stritem;
@ -105,9 +105,14 @@ void AssistEditor::SyncAnnotationPopup()
if(!IsCodeItem(topic_text, i)) i++;
while(IsCodeItem(topic_text, i))
result.Cat(topic_text.Get(i++));
while(i < topic_text.GetPartCount() && topic_text.IsPara(i) && !IsCodeItem(topic_text, i)
while(i < topic_text.GetPartCount() && !IsCodeItem(topic_text, i)
&& !IsBeginEnd(topic_text, i))
if(topic_text.IsPara(i))
result.Cat(topic_text.Get(i++));
else {
RichTable table(topic_text.GetTable(i++), 1);
result.CatPick(table);
}
break;
}
annotation_popup.Pick(result, GetRichTextStdScreenZoom());

View file

@ -59,6 +59,7 @@ AssistEditor::AssistEditor()
scope_item.SetPos(3000);
navigatorpane.Add(scope_item);
browser.scope.NoWantFocus();
browser.scope.WhenLeftDouble = THISBACK(GotoBrowserScope);
browser.item.NoWantFocus();
browser.item.WhenLeftClick = browser.item.WhenLeftDouble = THISBACK(BrowserGoto);
browser.WhenKeyItem = THISBACK(BrowserGotoNF);

View file

@ -3,7 +3,7 @@
#define LTIMING(x) // RTIMING(x)
#define LLOG(x)
static const char s_dbver[] = "CPP-BASE 2.35";
static const char s_dbver[] = "CPP-BASE 2.36";
void GC_Cache()
{

View file

@ -84,6 +84,7 @@ void CodeBrowser::Load()
scope.Add(IsString(ndx[i]) ? ndx[i] : Null, txt[i], ndx[i]);
if(scope.FindSetCursor(key))
scope.ScCursor(sc);
clear.Enable(IsSearch());
}
int ItemCompare(const Value& v1, const Value& v2)
@ -219,6 +220,7 @@ void CodeBrowser::Search()
bool CodeBrowser::Key(dword key, int count)
{
clear.Enable(IsSearch());
if(key == K_UP || key == K_DOWN) {
if(search.HasFocus() || search_item.HasFocus()) {
EditString& es = search.HasFocus() ? search : search_item;

View file

@ -99,7 +99,7 @@ void TopicEditor::Tools(Bar& bar)
String l = editor.GetFormatInfo().label;
bool b = l.GetCount() > 2 && l != "noref";
bar.Add(b, "See referenced code", IdeCommonImg::Source(), THISBACK(JumpToDefinition))
.Key(K_ALT_J);
.Key(K_ALT_J).Key(K_ALT_I);
bar.Add("Find broken references..", IdeCommonImg::FindBrokenRef(), THISBACK(FindBrokenRef))
.Key(K_CTRL_F3);
#ifdef REPAIR

View file

@ -21,6 +21,7 @@ void LoadTopics(FileList& topic, const String& grouppath)
while(ff) {
if(ff.IsFile() && GetFileExt(ff.GetName()) == ".tpp")
topic.Add(GetFileTitle(ff.GetName()), TopicImg::Topic());
ff.Next();
}
topic.Sort(ListOrder());
topic.Enable();

View file

@ -167,7 +167,7 @@ void InvalidateTopicInfoPath(const String& path)
{
VectorMap<String, TopicInfo>& t = topic_info();
for(int i = 0; i < t.GetCount(); i++)
if(t[i].path == path)
if(!t.IsUnlinked(i) && t[i].path == path)
t.Unlink(i);
}

View file

@ -2,7 +2,7 @@
void SplitCodeRef(const String& s, String& scope, String& item)
{
int q = s.Find('(');
int q = s.FindFirstOf("( ");
q = q >= 0 ? s.ReverseFind(':', q) : s.ReverseFind(':');
if(q < 0) {
scope.Clear();

View file

@ -238,6 +238,12 @@ void AssistEditor::BrowserGoto()
SetFocus();
}
void AssistEditor::GotoBrowserScope()
{
browser.item.GoBegin();
BrowserGoto();
}
bool AssistEditor::NavigatorKey(dword key)
{
if(navigator == NAV_INDEX)

View file

@ -449,6 +449,7 @@ struct AssistEditor : CodeEditor {
bool NavigatorKey(dword key);
void SyncNavigator();
void GotoBrowserScope();
void BrowserGoto();
void BrowserGotoNF();