diff --git a/uppsrc/Core/src.tpp/AIndex$en-us.tpp b/uppsrc/Core/src.tpp/AIndex$en-us.tpp index d44ab68d0..131a0b2de 100644 --- a/uppsrc/Core/src.tpp/AIndex$en-us.tpp +++ b/uppsrc/Core/src.tpp/AIndex$en-us.tpp @@ -11,10 +11,6 @@ topic "AIndex";[2 $$0,0#00000000000000000000000000000000:Default] ][%00-00@(0.0.255) class][%00-00@(64) _][%00-00@4 V][%00-00@(64) , ][%00-00@(0.0.255) clas s][%00-00@(64) _][%00-00@4 HashFn][%00-00@(64) >__][%00-00@(0.0.255) class][%00-00@(64) _][%00-00 A Index]&] -[s5;K@0 [%00-00@(64) template_<][%00-00@(0.0.255) class][%00-00@(64) _][%00-00@4 T][%00-00@(64) , - ][%00-00@(0.0.255) class][%00-00@(64) _][%00-00@4 V][%00-00@(64) , ][%00-00@(0.0.255) clas -s][%00-00@(64) _][%00-00@4 HashFn][%00-00@(64) >__][%00-00@(0.0.255) class][%00-00@(64) _][%00-00 A -Index]&] [s0;t292;* [* class ]AIndex&] [s0; &] [s0; [*C@4 T]-|Type of elements to store. T must satisfy requirements diff --git a/uppsrc/Core/src.tpp/CParser$en-us.tpp b/uppsrc/Core/src.tpp/CParser$en-us.tpp index 2631a92d0..9258cc70f 100644 --- a/uppsrc/Core/src.tpp/CParser$en-us.tpp +++ b/uppsrc/Core/src.tpp/CParser$en-us.tpp @@ -7,7 +7,7 @@ topic "CParser";[2 $$0,0#00000000000000000000000000000000:Default] [*+117 $$6,6#14700283458701402223321329925657:header] [l288;a17;*1 $$7,7#70004532496200323422659154056402:requirement] [{_}%EN-US -[s5;K@0 [%00-00@(0.0.255) class][%00-00@(64) _][%00-00 CParser]&] +[s5;K:`:`:CParser`:`:class:@0 [%00-00@(0.0.255) class][%00-00@(64) _][%00-00 CParser]&] [s0; &] [s2; CParser is simple yet very useful lexical analyzer suitable for building descent parsers of languages with C`-like syntax.&] @@ -22,14 +22,13 @@ via ThrowError method) to indicate errors as well.&] [s2; CParser objects cannot be transfered (copied).&] [s2; &] [s0;3 &] -[s5;K^`:`:Exc^ [%00-00^^@(0.0.255) struct][%00-00^^ _][%00-00^^@0 Error][%00-00^^ _:_][%00-00^^@(0.0.255) p -ublic][%00-00^^ _][%00-00 Exc]&] +[s5;K:`:`:CParser`:`:Error`:`:struct:^`:`:Exc^ [%00-00^^@(0.0.255) struct][%00-00^^ _][%00-00^^@0 E +rror][%00-00^^ _:_][%00-00^^@(0.0.255) public][%00-00^^ _][%00-00 Exc]&] [s0;* &] [s2; Type used as CParser exception. Contains single String with error description.&] [s2; &] -[s0;l288;^topic`:`/`/Core`/src`/util`$en`-us`#`:`:Exc`:`:class Exc^ [/^^ Derived -from][^^ ][%00-00 Exc]&] +[s0;l288;^`:`:Exc^ [/^^ Derived from][^^ ][%00-00 Exc]&] [s0;3 &] [s0;l288;:`:`:CParser`:`:Error`:`:Error`(const char`*`): [%00-00* Error][%00-00 (const_ch ar_`*][%00-00*@3 s][%00-00 )]&] @@ -37,7 +36,7 @@ ar_`*][%00-00*@3 s][%00-00 )]&] [s4;l448; [%00-00*C@3 s]-|Error message.&] [s2; &] [s0;3 &] -[s5;K@0 [%00-00@(0.0.255) struct][%00-00@(64) _][%00-00 Pos]&] +[s5;K:`:`:CParser`:`:Pos`:`:struct:@0 [%00-00@(0.0.255) struct][%00-00@(64) _][%00-00 Pos]&] [s2; &] [s2; Position in parsed text.&] [s0;3 &] @@ -50,14 +49,15 @@ const_char_`*][%00-00*@3 ptr][%00-00 _`=_NULL, int_][%00-00*@3 line][%00-00 _`=_ [s4;l480; [%00-00*C@3 line]-|Line number.&] [s4;l480; [%00-00*C@3 fn]-|Filename.&] [s0;3 &] -[s5;l288;K@0 [%00-00@(0.0.255) const][%00-00@(64) _][%00-00@(0.0.255) char][%00-00@(64) _`*][%00-00 p -tr]&] +[s5;l288;K:`:`:CParser`:`:Pos`:`:ptr:@0 [%00-00@(0.0.255) const][%00-00@(64) _][%00-00@(0.0.255) c +har][%00-00@(64) _`*][%00-00 ptr]&] [s2;l480; Pointer to the position in the input text &] [s0;3 &] -[s5;l288;K@0 [%00-00@(0.0.255) int][%00-00@(64) _][%00-00 line]&] +[s5;l288;K:`:`:CParser`:`:Pos`:`:line:@0 [%00-00@(0.0.255) int][%00-00@(64) _][%00-00 line]&] [s2;l480; Line number.&] [s0;3 &] -[s5;l288;K@0 [%00-00^`:`:String^@(64) String][%00-00@(64) _][%00-00 fn]&] +[s5;l288;K:`:`:CParser`:`:Pos`:`:fn:@0 [%00-00^`:`:String^@(64) String][%00-00@(64) _][%00-00 f +n]&] [s2;l480; Filename.&] [s2; &] [s0;3 &] diff --git a/uppsrc/Core/src.tpp/algo$en-us.tpp b/uppsrc/Core/src.tpp/algo$en-us.tpp index 0bc592cf9..695f506dd 100644 --- a/uppsrc/Core/src.tpp/algo$en-us.tpp +++ b/uppsrc/Core/src.tpp/algo$en-us.tpp @@ -1,11 +1,386 @@ -TITLE("Algorithms") -COMPRESSED -120,156,237,92,251,115,218,56,16,254,87,52,211,199,36,185,64,253,196,6,58,157,166,228,122,195,36,109,111,2,205,47,12,4,99,139,196,83,176,169,101,146,230,142,235,223,126,43,249,129,141,109,18,158,225,149,233,36,69,94,173,118,181,223,183,43,217,50,13,1,189,126,205,157,114,175,184,39,126,74,231,184,171,13,123,110,179,97,74,146,90,214,4,185,252,227,226,91,177,124,242,241,168,32,29,83,45,60,104,17,21,94,84,101,145,151,132,2,252,226,69,94,144,5,81,226,85,161,40,169,162,168,114,37,189,167,17,210,108,244,4,85,45,211,78,194,169,242,74,80,100,129,87,36,85,82,121,81,81,5,232,43,112,156,192,41,130,204,75,162,42,200,37,3,19,189,217,208,84,177,124,114,85,128,78,34,29,9,148,115,124,65,144,20,73,224,68,78,144,96,40,94,85,37,94,145,85,177,88,40,148,116,109,224,154,182,229,143,101,242,188,192,151,59,188,82,6,155,127,255,254,157,231,37,206,179,64,2,101,60,39,129,169,60,180,113,146,160,240,114,145,43,202,42,175,114, -34,40,151,21,78,46,13,52,71,235,103,187,46,63,233,186,194,149,76,23,131,138,147,63,120,94,129,46,133,211,194,43,94,82,192,81,85,148,100,85,225,96,112,65,16,68,81,224,69,161,88,20,228,130,172,148,238,176,102,96,199,119,65,3,227,79,120,232,170,192,156,65,71,78,146,69,65,42,210,201,18,97,36,65,40,200,69,94,150,56,185,0,154,74,14,254,57,52,29,220,199,22,132,236,223,155,255,222,252,249,53,247,189,134,26,68,44,163,179,222,173,237,152,238,93,159,188,109,54,8,87,70,244,143,92,190,64,141,55,28,151,227,56,4,150,14,122,154,139,111,222,55,253,166,143,71,92,158,203,11,178,124,140,252,16,250,162,55,161,132,132,234,97,235,135,155,155,148,158,247,182,105,164,116,228,80,237,65,27,132,23,142,130,255,181,234,173,136,202,246,219,113,15,17,105,97,251,41,122,142,124,39,108,63,110,82,111,133,50,27,148,160,123,173,55,196,36,143,106,3,172,155,93,83,71,238,227,0,19,212,55,111,239,92,68,104,163,214,51,255,193,168,113,226,89,137, -30,96,226,80,223,118,48,194,221,46,214,93,243,30,131,18,199,212,44,151,228,169,106,165,140,234,168,63,36,46,186,211,224,26,6,121,236,32,3,227,1,210,237,193,35,178,7,216,209,92,219,65,240,111,96,234,63,194,6,214,91,42,195,80,21,54,153,185,81,29,108,65,118,55,48,50,114,157,206,64,110,244,217,116,96,24,118,21,185,54,34,96,96,92,168,3,66,53,172,219,150,145,34,181,188,192,87,231,13,124,213,197,78,70,240,171,173,136,218,39,67,159,41,253,68,224,209,192,54,45,23,27,116,98,58,143,8,56,202,66,241,60,64,132,214,63,11,20,84,210,195,69,7,3,28,186,166,5,195,118,1,4,116,128,9,59,170,113,44,84,33,140,85,223,52,38,158,132,66,120,153,41,50,173,91,170,169,59,198,71,18,23,169,61,72,4,44,75,6,73,37,37,110,51,166,149,25,59,94,62,1,75,147,230,198,20,84,126,54,45,227,210,126,192,206,39,123,104,25,73,108,70,7,183,45,146,162,164,85,105,69,252,141,167,162,251,233,238,164,27,37,66,148,200,124,29, -117,112,194,125,98,10,51,188,152,146,80,1,33,243,233,188,108,69,226,18,215,217,195,145,64,134,116,165,209,32,62,148,97,18,76,90,213,193,89,228,104,214,45,203,142,48,146,171,1,155,28,68,108,135,114,8,8,4,236,100,218,208,192,193,134,169,3,90,209,3,164,97,70,91,106,58,210,53,139,242,208,180,8,102,125,40,131,237,33,112,211,193,218,15,70,134,59,80,238,64,249,133,15,113,54,86,34,153,57,28,251,137,228,29,167,223,61,92,174,164,245,244,194,156,27,125,194,183,166,101,81,51,64,1,115,52,46,229,197,52,55,250,58,236,119,192,111,16,194,61,86,235,73,56,51,19,35,130,207,185,209,117,80,3,32,249,24,113,1,54,91,185,209,55,223,227,241,188,141,197,222,161,43,236,14,29,203,243,8,132,255,142,68,35,62,17,135,172,177,230,172,177,149,12,222,1,186,238,51,175,246,135,30,51,33,249,93,184,160,127,191,99,120,222,86,160,174,177,0,124,31,12,14,203,198,13,42,58,16,228,195,170,241,176,106,60,36,141,157,33,240,14,176,117,237,180, -42,5,52,106,191,103,8,70,149,246,169,135,101,84,111,127,160,216,156,192,97,251,136,133,17,228,222,162,123,42,203,62,213,233,39,173,215,62,46,109,16,79,247,135,110,179,48,227,176,8,221,227,122,242,201,180,52,231,113,187,192,189,241,139,218,57,235,87,72,208,241,106,203,123,90,64,188,231,11,56,120,50,3,232,213,102,93,157,230,81,181,139,44,27,145,161,126,23,106,199,191,76,226,146,83,208,102,225,91,205,127,20,193,70,32,200,97,212,193,198,97,105,122,72,37,251,149,74,94,144,214,180,138,238,14,159,247,153,120,251,193,159,149,64,61,125,65,186,245,128,159,9,201,244,220,81,177,40,44,7,209,113,124,44,163,36,100,35,142,67,103,176,103,178,140,26,11,104,18,205,211,176,106,96,50,231,138,107,138,82,226,232,107,74,247,95,176,115,139,9,64,121,232,232,24,125,173,95,70,240,13,104,160,222,1,197,89,196,99,23,243,232,147,13,28,9,63,147,240,232,135,207,10,186,222,35,58,76,42,91,20,209,100,153,71,103,93,151,170,165,187,46,70,22,208,122, -26,27,98,60,182,73,178,21,33,205,50,2,209,240,160,75,215,177,251,168,19,183,41,143,206,135,131,158,183,53,244,197,52,216,31,2,61,97,71,120,15,44,67,201,44,78,71,54,48,216,217,103,7,88,34,117,108,70,78,250,208,200,141,206,211,28,140,75,210,120,231,70,53,47,8,25,50,79,213,157,10,165,235,89,156,175,141,51,148,53,126,51,32,165,127,203,164,113,194,156,250,176,114,42,111,63,35,3,242,132,147,116,32,145,7,201,20,234,68,235,226,75,17,104,169,204,216,194,226,246,221,2,7,55,146,73,59,83,219,24,155,124,118,4,194,67,203,252,9,235,176,213,16,214,83,62,157,183,211,120,185,21,37,45,109,1,154,61,244,74,184,185,245,20,155,100,3,197,97,22,35,232,181,189,102,197,38,84,171,13,0,253,170,11,210,21,238,219,247,120,30,186,208,144,46,157,46,15,119,218,186,110,154,123,158,147,241,221,95,128,19,153,192,129,135,219,84,42,44,153,131,43,40,16,44,64,207,34,1,155,245,253,169,16,155,140,249,45,132,231,66,153,122,137,32,125, -1,244,157,183,208,249,188,169,186,182,220,28,31,51,37,142,247,170,5,1,35,88,119,51,33,159,217,121,145,85,81,173,21,241,241,165,54,30,9,26,101,83,6,86,64,154,203,54,212,150,237,134,205,134,119,222,97,2,116,47,155,252,207,35,188,74,103,127,76,188,22,17,79,120,178,250,61,197,182,208,112,39,216,180,59,192,207,46,43,91,0,255,245,215,162,133,30,219,71,83,231,172,47,84,67,220,83,56,48,229,1,224,188,169,31,140,108,197,77,125,78,1,160,246,145,40,128,159,153,108,149,114,248,210,109,234,171,180,245,118,169,20,188,215,154,253,252,47,3,62,122,246,51,192,233,203,236,77,120,131,126,129,128,207,23,149,68,38,16,232,183,19,172,51,58,203,155,246,139,185,183,246,215,243,223,20,88,128,222,85,203,192,191,50,66,126,1,155,154,139,172,93,205,15,252,152,118,114,174,117,13,157,174,179,58,121,101,226,5,242,195,64,51,157,24,34,72,70,165,99,95,180,64,180,62,212,202,240,252,24,253,186,13,144,191,194,100,216,115,199,117,47,129,100,122,135, -13,114,12,155,153,57,50,82,8,225,139,232,190,138,106,203,170,124,215,81,193,180,111,118,96,166,68,192,30,40,76,28,75,160,81,153,144,75,211,183,174,228,181,20,22,109,19,19,182,5,174,217,139,182,69,64,155,149,168,151,4,223,13,56,248,149,149,162,91,237,82,187,116,13,155,13,219,1,176,176,191,161,88,104,90,203,180,220,86,236,108,216,135,40,112,255,194,108,171,194,194,150,196,238,98,247,174,194,192,172,53,103,87,28,12,177,33,137,157,198,24,48,177,35,81,171,184,185,58,118,124,21,247,77,189,72,211,225,131,35,113,233,247,255,198,175,98,120,39,18,86,133,230,173,70,228,74,96,179,208,77,207,231,129,103,19,81,209,250,214,66,223,230,74,114,241,13,194,76,61,175,90,232,42,19,138,159,77,220,51,174,112,143,109,173,43,61,72,39,147,45,41,240,204,240,34,203,198,73,11,34,80,142,13,150,178,50,136,141,116,115,68,247,37,237,147,8,92,251,152,150,229,49,86,103,74,159,49,179,226,52,112,38,77,74,176,192,78,36,36,182,115,130,140,88,111, -162,142,70,40,124,188,99,182,222,145,88,64,154,103,172,247,117,83,157,30,109,2,105,16,207,222,97,249,119,159,226,240,247,125,206,141,190,36,244,161,122,92,52,116,35,146,64,131,182,192,92,95,221,20,226,172,124,61,186,89,148,248,130,221,59,59,206,137,68,83,146,20,49,55,2,164,30,31,29,47,68,143,248,184,115,241,131,42,24,163,248,104,131,25,18,156,24,167,21,194,178,173,118,142,89,229,187,64,193,205,122,206,76,22,54,1,148,44,129,154,89,57,146,180,206,83,122,96,204,106,24,147,182,173,140,3,116,211,56,53,139,197,155,204,186,93,36,92,243,127,35,201,112,73, +topic "Algorithms";[2 $$0,0#00000000000000000000000000000000:Default] +[i448;a25;kKO9;*@(64)2 $$1,0#37138531426314131252341829483380:class] +[l288;2 $$2,7#27521748481378242620020725143825:desc] +[a83;*R6 $$3,0#31310162474203024125188417583966:caption] +[l288;i1121;b17;O9;~~~.1408;2 $$4,0#10431211400427159095818037425705:param] +[i448;a25;kKO9;*@(64)2 $$5,0#37138531426314131252341829483370:item] +[*+117 $$6,6#14700283458701402223321329925657:header] +[l288;a17;*1 $$7,7#70004532496200323422659154056402:requirement] +[{_}%EN-US +[s3; Algorithms&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 >__][%00-00@(0.0.255) v +oid][%00-00 _][%00-00@0 Swap][%00-00 (][%00-00^T^ T][%00-00 `&_][%00-00@3 a][%00-00 , +][%00-00^T^ T][%00-00 `&_][%00-00@3 b][%00-00 )]&] +[s2; Swaps values. Specific types might specialize [* Swap] with more +effective variants.&] +[s7; T must have either deep copy operator or pick operator.&] +[s4; [*C@4 T]-|Type of values.&] +[s4; [*C@3 a]-|First value to swap.&] +[s4; [*C@3 b]-|Second value to swap.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 I][%00-00 >__][%00-00@(0.0.255) v +oid][%00-00 _][%00-00@0 IterSwap][%00-00 (][%00-00^I^ I][%00-00 _][%00-00@3 a][%00-00 , +][%00-00^I^ I][%00-00 _][%00-00@3 b][%00-00 )]&] +[s2; Swaps values pointed to by iterators. Specific types might specialize +[* IterSwap] with more effective variants.&] +[s7; Swap must be defined for type pointed to by I.&] +[s4; [*C@4 I]-|Iterator type.&] +[s4; [*C@3 a]-|Iterator pointing to first value.&] +[s4; [*C@3 b]-|Iterator pointing to second value.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindLowerBound][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 p +os][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 count][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds first position in range of container sorted by [* less] +predicate where [* val] can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 pos]-|Beginning of range.&] +[s4; [*C@3 count]-|Number of elements in range.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindLowerBound][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) const][%00-00 _ +][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L +][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds first position in sorted by [* less] predicate where [* val] +can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 F +indLowerBound][%00-00 (][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v +][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 )]&] +[s2; Finds first position in sorted by [*/ operator<] predicate where +[* val] can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindUpperBound][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 p +os][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 count][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds last position in range of container sorted by [* less] predicate +where [* val] can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 pos]-|Beginning of range.&] +[s4; [*C@3 count]-|Number of elements in range.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindUpperBound][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) const][%00-00 _ +][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L +][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds last position in sorted by [* less] predicate where [* val] +can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0;:template` int FindUpperBound`(const C`& v`, const T`& val`): &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 F +indUpperBound][%00-00 (][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v +][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 )]&] +[s2; Finds last position in sorted by [*/ operator<] predicate where +[* val] can be inserted without breaking the ordering.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindBinary][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) const][%00-00 _ +][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 po +s][%00-00 , ][%00-00@(0.0.255) int][%00-00 _][%00-00@3 count][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds position of element with specified value in a range of +container sorted by [* less] predicate. If no such element exists, +a negative value is returned.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 pos]-|Beginning of range.&] +[s4; [*C@3 count]-|Number of elements in range.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 FindBinary][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , ][%00-00@(0.0.255) const][%00-00 _ +][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L +][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Finds position of element with specified value in the container +sorted by [* less] predicate. If no such element exists, a negative +value is returned.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Position in container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 >__][%00-00@(0.0.255) int][%00-00 _][%00-00@0 F +indBinary][%00-00 (][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 v][%00-00 , + ][%00-00@(0.0.255) const][%00-00 _][%00-00^T^ T][%00-00 `&_][%00-00@3 val][%00-00 )]&] +[s2; Finds position of element with specified value in the container +sorted by [*/ operator<] predicate. If no such element exists, +a negative value is returned.&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@4 T]-|Type of value.&] +[s4; [*C@3 v]-|Container.&] +[s4; [*C@3 val]-|Value to find.&] +[s4; [*/ Return value]-|Position in container.&] +[s0;~~~.992; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L][%00-00 >__][%00-00^C^ C][%00-00 `&_][%00-00@0 A +ppendSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 dest][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 src][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Merges source NTL container to destination NTL container. Both +containers must be sorted in ascending order. After the operation, +destination container is sorted in ascending order and contains +values from both containers. Duplicate values are preserved. +Ordering predicate is determined by [* less].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4;C [*/A Return value][A -|Destination container.]template&] +[s0;~~~.992; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 >__][%00-00^C^ C][%00-00 `& +_][%00-00@0 AppendSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 dest][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 src][%00-00 )]&] +[s2;~~~.992; Merges source NTL container to destination NTL container. +Both containers must be sorted in ascending order. After the +operation, destination container is sorted in ascending order +and contains values from both containers. Duplicate values are +preserved. Ordering is determined by [*/ operator<].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4;C [*/A Return value][A -|Destination container.]template&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L][%00-00 >__][%00-00^C^ C][%00-00 `&_][%00-00@0 U +nionSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 dest][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 src][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Merges source NTL container to destination NTL container. Both +containers must be sorted in ascending order and values must +be unique. After the operation, destination container is sorted +in ascending order and contains unique values from both containers. +Ordering is determined by [* less].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 >__][%00-00^C^ C][%00-00 `& +_][%00-00@0 UnionSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 dest][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 src][%00-00 )]&] +[s2; Merges the source NTL container to the destination NTL container. +Both containers must be sorted in ascending order and values +must be unique. After the operation, destination container is +sorted in ascending order and contains unique values from both +containers. Ordering is determined by [*/ operator<].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4; [*/ Return value]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L][%00-00 >__][%00-00^C^ C][%00-00 `&_][%00-00@0 R +emoveSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 from][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 what][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Removes elements of source container from destination container. +Both containers must be sorted in ascending order and values +must be unique. Ordering is determined by [* less].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 from]-|Destination container.&] +[s4; [*C@3 what]-|Source container.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^C^ C][%00-00 >__][%00-00^C^ C][%00-00 `& +_][%00-00@0 RemoveSorted][%00-00 (][%00-00^C^ C][%00-00 `&_][%00-00@3 from][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 what][%00-00 )]&] +[s2; Removes elements of source container from destination container. +Both containers must be sorted in ascending order and values +must be unique. Ordering is determined by [*/ operator<].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 from]-|Destination container.&] +[s4; [*C@3 what]-|Source container.&] +[s4; [*/ Return value]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^D^ D][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 S][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +][%00-00 >__][%00-00^D^ D][%00-00 `&_][%00-00@0 IntersectSorted][%00-00 (][%00-00^D^ D][%00-00 `& +_][%00-00@3 dest][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^S^ S][%00-00 `&_][%00-00@3 s +rc][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^L^ L][%00-00 `&_][%00-00@3 less][%00-00 ) +]&] +[s2; Removes elements from destination container that are not contained +in source container. Both containers must be sorted in ascending +order and values must be unique. Ordering is determined by [* less].&] +[s4; [*C@4 D]-|Type of destination container.&] +[s4; [*C@4 S]-|Type of source container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4; [*C@3 less]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^D^ D][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 S][%00-00 >__][%00-00^D^ D][%00-00 `&_][%00-00@0 I +ntersectSorted][%00-00 (][%00-00^D^ D][%00-00 `&_][%00-00@3 dest][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^S^ S][%00-00 `&_][%00-00@3 src][%00-00 )]&] +[s2; Removes elements from destination container that are not contained +in source container. Both containers must be sorted in ascending +order and values must be unique. Ordering is determined by [*/ operator<].&] +[s4; [*C@4 D]-|Type of destination container.&] +[s4; [*C@4 S]-|Type of source container.&] +[s4; [*C@3 dest]-|Destination container.&] +[s4; [*C@3 src]-|Source container.&] +[s4; [*/ Return value]-|Destination container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 Less][%00-00 >__][%00-00@(0.0.255) void][%00-00 _ +][%00-00@0 Sort][%00-00 (][%00-00^T^ T][%00-00 `&_][%00-00@3 c][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^Less^ Less][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Sorts container. Ordering is determined by [* less].&] +[s7; IterSwap must be defined for T`::Iterator.&] +[s4; [*C@4 T]-|Type of container.&] +[s4; [*C@3 c]-|Container.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 T][%00-00 >__][%00-00@(0.0.255) v +oid][%00-00 _][%00-00@0 Sort][%00-00 (][%00-00^T^ T][%00-00 `&_][%00-00@3 c][%00-00 )]&] +[s2; Sorts container. Ordering is determined by [*/ operator<].&] +[s2;*1 IterSwap must be defined for T`::Iterator.&] +[s4; [*C@4 T]-|Type of container.&] +[s4; [*C@3 c]-|Container.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 KC][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 VC][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00@4 L +ess][%00-00 >__][%00-00@(0.0.255) void][%00-00 _][%00-00@0 IndexSort][%00-00 (][%00-00^KC^ KC +][%00-00 `&_][%00-00@3 keys][%00-00 , ][%00-00^VC^ VC][%00-00 `&_][%00-00@3 values][%00-00 , +][%00-00@(0.0.255) const][%00-00 _][%00-00^Less^ Less][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Sorts pair of containers. Both containers must have same number +of items. Resulting order is determined by the [* keys] container. +Ordering is determined by [* less].&] +[s4; [*C@4 KC]-|Type of keys container.&] +[s4; [*C@4 VC]-|Type of values.&] +[s4; [*C@3 keys]-|Container of keys.&] +[s4; [*C@3 values]-|Container of values.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 KC][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 VC][%00-00 >__][%00-00@(0.0.255) void][%00-00 _][%00-00@0 I +ndexSort][%00-00 (][%00-00^KC^ KC][%00-00 `&_][%00-00@3 keys][%00-00 , +][%00-00^VC^ VC][%00-00 `&_][%00-00@3 values][%00-00 )]&] +[s2; Sorts pair of containers. Both containers must have same number +of items. Resulting order is determined by the [* keys] container. +Ordering is determined by [*/ operator<].&] +[s4; [*C@4 KC]-|Type of keys container.&] +[s4; [*C@4 VC]-|Type of values container.&] +[s4; [*C@3 keys]-|Container of keys.&] +[s4; [*C@3 values]-|Container of values.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00@4 Less][%00-00 >__][%00-00^`:`:Vector^ Vector][%00-00 < +][%00-00^int^ int][%00-00 >_][%00-00@0 GetSortOrder][%00-00 (][%00-00@(0.0.255) const][%00-00 _ +][%00-00^C^ C][%00-00 `&_][%00-00@3 container][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^Less^ L +ess][%00-00 `&_][%00-00@3 less][%00-00 )]&] +[s2; Creates ascending order of values in container. Ordering is +determined by [* less].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 container]-|Source container.&] +[s4; [*C@3 less]-|Ordering predicate.&] +[s4; [*/ Return value]-|Vector of positions of source container in sorted +order.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 C][%00-00 >__][%00-00^`:`:Vector^ V +ector][%00-00 <][%00-00^int^ int][%00-00 >_][%00-00@0 GetSortOrder][%00-00 (][%00-00@(0.0.255) c +onst][%00-00 _][%00-00^C^ C][%00-00 `&_][%00-00@3 container][%00-00 )]&] +[s2; Creates ascending order of values in container. Ordering is +determined by [*/ operator<].&] +[s4; [*C@4 C]-|Type of container.&] +[s4; [*C@3 container]-|Source container.&] +[s4; [*/ Return value]-|Vector of positions of source container in sorted +order.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00^O^ O][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00^T^ T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00^R^ R +][%00-00 >__][%00-00^`:`:FieldRelationCls^ FieldRelationCls][%00-00 <][%00-00^O^ O][%00-00 , + ][%00-00^T^ T][%00-00 , ][%00-00^R^ R][%00-00 >_][%00-00@0 FieldRelation][%00-00 (][%00-00^O^ O +][%00-00 _(T`::`*][%00-00@3 member][%00-00 ), ][%00-00@(0.0.255) const][%00-00 _][%00-00^R^ R][%00-00 `& +_][%00-00@3 relation][%00-00 )]&] +[s2; Creates ordering predicate for [* T] based on the value of member +variable of[* T].&] +[s4; [*C@4 T]-|Type of element.&] +[s4; [*C@3 member]-|Member variable of T.&] +[s4; [*C@3 relation]-|Ordering relation for [* member].&] +[s4; [*/ Return value]-|Ordering predicate.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 O][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00^T^ T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00^R^ R +][%00-00 >__][%00-00^`:`:MethodRelationCls^ MethodRelationCls][%00-00 <][%00-00@4 O][%00-00 _ +(T`::`*)(), ][%00-00^T^ T][%00-00 , ][%00-00^R^ R][%00-00 >_][%00-00@0 MethodRelation][%00-00 ( +][%00-00^O^ O][%00-00 _(T`::`*][%00-00@3 method][%00-00 )(), ][%00-00@(0.0.255) const][%00-00 _ +][%00-00^R^ R][%00-00 `&_][%00-00@3 relation][%00-00 )]&] +[s2; Creates ordering predicate for [* T] based on the value returned +by non`-const method of [* T].&] +[s4; [*C@4 T]-|Type of element.&] +[s4; [*C@3 method]-|Method of T.&] +[s4; [*C@3 relation]-|Ordering relation for value returned by method.&] +[s4; [*/ Return value]-|Ordering predicate.&] +[s0; &] +[s5;K [%00-00 template_<][%00-00@(0.0.255) class][%00-00 _][%00-00@4 O][%00-00 , +][%00-00@(0.0.255) class][%00-00 _][%00-00^T^ T][%00-00 , ][%00-00@(0.0.255) class][%00-00 _][%00-00^R^ R +][%00-00 >__][%00-00^`:`:MethodRelationCls^ MethodRelationCls][%00-00 <][%00-00@4 O][%00-00 _ +(T`::`*)()_][%00-00@(0.0.255) const][%00-00 , ][%00-00^T^ T][%00-00 , +][%00-00^R^ R][%00-00 >_][%00-00@0 MethodRelation][%00-00 (][%00-00^O^ O][%00-00 _(T`::`*][%00-00@3 m +ethod][%00-00 )()_][%00-00@(0.0.255) const][%00-00 , ][%00-00@(0.0.255) const][%00-00 _][%00-00^R^ R +][%00-00 `&_][%00-00@3 relation][%00-00 )]&] +[s2; Creates ordering predicate for [* T] based on the value returned +by const method of [* T].&] +[s4; [*C@4 T]-|Type of element.&] +[s4; [*C@3 method]-|Method of T.&] +[s4; [*C@3 relation]-|Ordering relation for value returned by method.&] +[s4; [*/ Return value]-|Ordering predicate.&] +[s0; ] \ No newline at end of file diff --git a/uppsrc/RichEdit/Editor.cpp b/uppsrc/RichEdit/Editor.cpp index ecf4d4e36..aba2c4f0d 100644 --- a/uppsrc/RichEdit/Editor.cpp +++ b/uppsrc/RichEdit/Editor.cpp @@ -617,12 +617,9 @@ RichEdit::RichEdit() height.Tip(t_("Font height")); hyperlink <<= THISBACK(Hyperlink); - hyperlink.Tip(t_("Hyperlink")); hyperlink.NoWantFocus(); label <<= THISBACK(Label); - label.Tip(t_("Paragraph label")); indexentry << THISBACK(IndexEntry); - indexentry.Tip(t_("Index entry")); indexentry.NoWantFocus(); gotolabel.SetMonoImage(RichEditImg::GoTo()); diff --git a/uppsrc/RichEdit/RichEdit.h b/uppsrc/RichEdit/RichEdit.h index 321763fbb..7d5320bcd 100644 --- a/uppsrc/RichEdit/RichEdit.h +++ b/uppsrc/RichEdit/RichEdit.h @@ -47,7 +47,7 @@ private: int tabpos; int tabsize; int newtabalign; - + public: Callback WhenLeftDouble; Callback WhenLeftDown; @@ -565,9 +565,9 @@ public: void InkTool(Bar& bar); void PaperTool(Bar& bar); void LanguageTool(Bar& bar, int width = HZoom(60)); - void HyperlinkTool(Bar& bar, int width = 180); + void HyperlinkTool(Bar& bar, int width = 180, dword key = 0, const char *tip = NULL); void SpellCheckTool(Bar& bar); - void IndexEntryTool(Bar& bar, int width = 80); + void IndexEntryTool(Bar& bar, int width = 80, dword key = 0, const char *tip = NULL); void LeftTool(Bar& bar, dword key = K_CTRL_L); void RightTool(Bar& bar, dword key = K_CTRL_R); @@ -579,7 +579,7 @@ public: void BoxWhiteBulletTool(Bar& bar, dword key = 0); void TextBulletTool(Bar& bar, dword key = 0); void ParaFormatTool(Bar& bar, dword key = 0); - void LabelTool(Bar& bar, int width = 80); + void LabelTool(Bar& bar, int width = 80, dword key = 0, const char *tip = NULL); void ToParaTool(Bar& bar, dword key = K_CTRL_K); void UndoTool(Bar& bar, dword key = K_CTRL_Z); diff --git a/uppsrc/RichEdit/Tool.cpp b/uppsrc/RichEdit/Tool.cpp index 1e6e2f06c..bb36517d2 100644 --- a/uppsrc/RichEdit/Tool.cpp +++ b/uppsrc/RichEdit/Tool.cpp @@ -122,14 +122,33 @@ void RichEdit::SpellCheckTool(Bar& bar) .Check(spellcheck); } -void RichEdit::IndexEntryTool(Bar& bar, int width) +String PlusKeyDesc(const char *text, dword key) { - bar.Add(!IsReadOnly(), indexentry, width); + String r = text; + if(key) + r << ' ' << GetKeyDesc(key); + return r; } -void RichEdit::HyperlinkTool(Bar& bar, int width) +void RichEdit::IndexEntryTool(Bar& bar, int width, dword key, const char *tip) +{ + bar.Add(!IsReadOnly(), indexentry, width); + indexentry.Tip(PlusKeyDesc(tip ? tip : t_("Index entry"), key)); + bar.AddKey(key, THISBACK(IndexEntry)); +} + +void RichEdit::HyperlinkTool(Bar& bar, int width, dword key, const char *tip) { bar.Add(!IsReadOnly(), hyperlink, width); + hyperlink.Tip(PlusKeyDesc(tip ? tip : t_("Hyperlink"), key)); + bar.AddKey(key, THISBACK(Hyperlink)); +} + +void RichEdit::LabelTool(Bar& bar, int width, dword key, const char *tip) +{ + bar.Add(!IsReadOnly(), label, width); + label.Tip(PlusKeyDesc(tip ? tip : t_("Paragraph label"), key)); + bar.AddKey(key, THISBACK(Label)); } void RichEdit::LeftTool(Bar& bar, dword key) @@ -137,7 +156,7 @@ void RichEdit::LeftTool(Bar& bar, dword key) int a = formatinfo.paravalid & RichText::ALIGN ? formatinfo.align : Null; bar.Add(!IsReadOnly(), t_("Left"), RichEditImg::Left(), THISBACK(AlignLeft)) .Check(a == ALIGN_LEFT) - .Key(K_CTRL_L); + .Key(key); } void RichEdit::RightTool(Bar& bar, dword key) @@ -215,11 +234,6 @@ void RichEdit::ParaFormatTool(Bar& bar, dword key) .Key(key); } -void RichEdit::LabelTool(Bar& bar, int width) -{ - bar.Add(!IsReadOnly(), label, width); -} - void RichEdit::ToParaTool(Bar& bar, dword key) { bar.Add(!IsReadOnly() && IsSelection() && !tablesel, t_("To single paragraph"), diff --git a/uppsrc/ide/Browser/Browser.cpp b/uppsrc/ide/Browser/Browser.cpp index ab560f61e..068816b56 100644 --- a/uppsrc/ide/Browser/Browser.cpp +++ b/uppsrc/ide/Browser/Browser.cpp @@ -78,6 +78,19 @@ bool MatchNest(const char *nest, const CppNest& m, const BrowserQuery& q) return false; } +void Browser::WithSearch(EditString& search_nest, EditString& search_item) +{ + item.WantFocus(); + search_nest.NullText("Search nest", StdFont().Italic(), SColorDisabled()); + search_nest.SetFilter(CharFilterAlphaToUpper); + s_nest = &search_nest; + search_nest <<= THISBACK(Reload); + search_item.NullText("Search item", StdFont().Italic(), SColorDisabled()); + search_item.SetFilter(CharFilterAlphaToUpper); + s_item = &search_item; + search_item <<= THISBACK(EnterNesting); +} + bool Browser::FindSet(const String& knesting, const String& kitem, int nestingsc, int itemsc) { if(!IsNull(knesting) && nesting.FindSetCursor(knesting)) { @@ -109,13 +122,18 @@ void Browser::Reload() } nesting.Clear(); item.Clear(); - for(int i = 0; i < base.GetCount(); i++) - if(MatchNest(base.GetKey(i), base[i], query)) { + String srch; + if(s_nest) + srch = ~*s_nest; + for(int i = 0; i < base.GetCount(); i++) { + String k = base.GetKey(i); + if(MatchNest(k, base[i], query) && (srch.GetCount() == 0 || ToUpper(k).Find(srch) >= 0)) { CppNestingInfo f; f.namespacel = base[i].namespacel; - f.nesting = base.GetKey(i); + f.nesting = k; nesting.Add(f.nesting, i, RawToValue(f)); } + } nesting.Sort(); if(!IsNull(knesting) && nesting.FindSetCursor(knesting)) { nesting.ScCursor(nestingsc); @@ -149,8 +167,12 @@ void Browser::LoadNest(const String& nest, ArrayMap& item, CppNest& m = BrowserBase()[q]; bool all = !IsNull(query.name) && MatchNestName(nest, query.name) || inherited; String base; + String srch; + if(s_item) + srch = ~*s_item; for(int i = 0; i < m.GetCount(); i++) { - if(MatchItem(nest, m[i], m.key[i], m.name[i], query, all)) { + if(MatchItem(nest, m[i], m.key[i], m.name[i], query, all) && + (srch.GetCount() == 0 || ToUpper(m.name[i]).Find(srch) >= 0)) { const CppItem& im = m[i]; String k = m.key[i]; int q = item.Find(k); @@ -440,6 +462,7 @@ void CppNestingInfoDisplay::Paint(Draw& w, const Rect& r, const Value& q, Browser::Browser() { + s_nest = s_item = NULL; nesting.NoHeader().NoGrid(); nesting.AddKey(); nesting.AddIndex(); diff --git a/uppsrc/ide/Browser/Browser.h b/uppsrc/ide/Browser/Browser.h index 231de8247..041dda238 100644 --- a/uppsrc/ide/Browser/Browser.h +++ b/uppsrc/ide/Browser/Browser.h @@ -145,18 +145,19 @@ public: void Serialize(Stream& s); void SerializeWspc(Stream& s); - ArrayCtrl nesting; - ItemList item; - Splitter split; - BrowserQuery query; - QueryDlg querydlg; - Callback2 WhenPos; - int pos; - Callback WhenItem; - Callback WhenItemDblClk; - Callback1 WhenShowTopic; - bool clickpos; - bool show_inherited; + ArrayCtrl nesting; + ItemList item; + Splitter split; + BrowserQuery query; + QueryDlg querydlg; + Callback2 WhenPos; + int pos; + Callback WhenItem; + Callback WhenItemDblClk; + Callback1 WhenShowTopic; + bool clickpos; + bool show_inherited; + EditString *s_item, *s_nest; void LoadNest(const String& nest, ArrayMap& item, int inherited); bool IsCurrentItem(); @@ -186,6 +187,8 @@ public: void ShowTopic(String w); void ShowHelp(); + + void WithSearch(EditString& search_nest, EditString& search_item); typedef Browser CLASSNAME; Browser(); diff --git a/uppsrc/ide/Browser/IdeTopic.cpp b/uppsrc/ide/Browser/IdeTopic.cpp index 192f79bbf..3281f28fb 100644 --- a/uppsrc/ide/Browser/IdeTopic.cpp +++ b/uppsrc/ide/Browser/IdeTopic.cpp @@ -128,7 +128,7 @@ void TopicEditor::MainTool(Bar& bar) .Key(K_CTRL_P); bar.GapRight(); bar.Break(); - editor.LabelTool(bar, 500); + editor.LabelTool(bar, 500, K_CTRL_M, "Code reference"); bar.Gap(); Tools(bar); bar.Gap(); diff --git a/uppsrc/ide/Browser/Reference.cpp b/uppsrc/ide/Browser/Reference.cpp index af2e61494..38d71b562 100644 --- a/uppsrc/ide/Browser/Reference.cpp +++ b/uppsrc/ide/Browser/Reference.cpp @@ -30,8 +30,11 @@ ReferenceDlg::ReferenceDlg() browser.WhenItem = THISBACK(EnterItem); browser.WhenItemDblClk = THISBACK(EnterItemOk); browser.show_inherited = false; + browser.WithSearch(search_nest, search_item); query <<= callback(&browser, &Browser::DoDoQuery); Sizeable().Zoomable(); Icon(TopicImg::Topic()); Breaker(classlist, IDYES); + StartBrowserBase(); + browser.Reload(); } diff --git a/uppsrc/ide/Browser/Topic.lay b/uppsrc/ide/Browser/Topic.lay index e40ecf6a6..513c0e390 100644 --- a/uppsrc/ide/Browser/Topic.lay +++ b/uppsrc/ide/Browser/Topic.lay @@ -46,7 +46,9 @@ LAYOUT(ReferenceDlgLayout, 644, 392) ITEM(EditString, reference, HSizePosZ(68, 4).TopPosZ(4, 19)) ITEM(Browser, browser, HSizePosZ(8, 8).VSizePosZ(28, 40)) ITEM(Button, query, SetLabel(t_("Query")).LeftPosZ(8, 64).BottomPosZ(8, 24)) - ITEM(Button, classlist, SetLabel(t_("Class list")).RightPosZ(144, 64).BottomPosZ(8, 24)) + ITEM(EditString, search_nest, LeftPosZ(80, 120).BottomPosZ(13, 19)) + ITEM(EditString, search_item, RightPosZ(148, 120).BottomPosZ(13, 19)) + ITEM(Button, classlist, SetLabel(t_("Insert all nests")).LeftPosZ(208, 88).BottomPosZ(8, 24)) ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(76, 64).BottomPosZ(8, 24)) ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(8, 64).BottomPosZ(8, 24)) END_LAYOUT diff --git a/uppsrc/ide/Browser/TopicI.icpp b/uppsrc/ide/Browser/TopicI.icpp index 6a0710cad..ac48343ab 100644 --- a/uppsrc/ide/Browser/TopicI.icpp +++ b/uppsrc/ide/Browser/TopicI.icpp @@ -2,7 +2,7 @@ bool IsTopicGroup(const char *path) { - return ToLower(GetFileExt(path)) == ".tpp"; + return ToLower(GetFileExt(path)) == ".tpp" && !FileExists(path); } struct TopicModule : public IdeModule { diff --git a/uppsrc/ide/Browser/TopicWin.cpp b/uppsrc/ide/Browser/TopicWin.cpp index 46206759b..7dbf15eea 100644 --- a/uppsrc/ide/Browser/TopicWin.cpp +++ b/uppsrc/ide/Browser/TopicWin.cpp @@ -202,7 +202,7 @@ void TopicEditor::FormatMenu(Bar& bar) bar.Separator(); editor.IndexEntryTool(bar); bar.Break(); - editor.HyperlinkTool(bar, 300); + editor.HyperlinkTool(bar, 300, K_CTRL_H); bar.Separator(); editor.ParaTools(bar); }