Changed scope information in coderefs

git-svn-id: svn://ultimatepp.org/upp/trunk@508 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2008-10-03 13:57:11 +00:00
parent 18ae9f8362
commit c0ea85b654
13 changed files with 388 additions and 359 deletions

View file

@ -10,8 +10,8 @@ topic "AIndex";
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[{_}%EN-US
[s1;:noref:%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 V],
[@(0.0.255) class]_[*@4 HashFn]>&]
[s0;i448;a25;kKO9;:noref:%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T],
[@(0.0.255) class]_[*@4 V], [@(0.0.255) class]_[*@4 HashFn]>&]
[s1;:`:`:AIndex`:`:class:%- [@(0.0.255) class]_[* AIndex]&]
[s8; [*C@4 T]-|Type of elements to store. T must satisfy requirements
for container flavor identified by parameter V and must have
@ -57,9 +57,11 @@ and optional deep copy] transfer semantics, although these features
are more important in derived concrete index flavors.&]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Method List]]}}&]
[s4;H0;%- &]
[s5;:`:`:AIndex`:`:Add`(const T`&`,unsigned`):%- [@(0.0.255) void]_[* Add]([@(0.0.255) cons
t]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s4;%- &]
[s3;%- &]
[s4;%- &]
[s5;:AIndex`:`:Add`(const T`&`,unsigned`):%- [@(0.0.255) void]_[* Add]([@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s2; Adds a new element [%-*@3 x] with a precomputed hash value [%-*@3 `_hash].
The performance benefit of this variant is that sometimes you
can compute hash`-value as the part of an other process, like
@ -71,7 +73,7 @@ fetching strings from an input stream.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Add`(const T`&`):%- [@(0.0.255) void]_[* Add]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
[s5;:AIndex`:`:Add`(const T`&`):%- [@(0.0.255) void]_[* Add]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
]_[*@3 x])&]
[s2; Adds a new element [%-*@3 x ]to AIndex.&]
[s6; Requires T to have deep copy constructor.&]
@ -79,8 +81,8 @@ by HashFn.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Find`(const T`&`,unsigned`)const:%- [@(0.0.255) int]_[* Find]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])_[@(0.0.255) const]&]
[s5;:AIndex`:`:Find`(const T`&`,unsigned`)const:%- [@(0.0.255) int]_[* Find]([@(0.0.255) co
nst]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])_[@(0.0.255) const]&]
[s2; Returns the position of the first element with value [%-*@3 x]
in AIndex, using a precomputed [%-*@3 `_hash]. If multi`-key ordering
is not broken and more than one element with the same value exists
@ -91,8 +93,8 @@ Unlinked elements are ignored.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Find`(const T`&`)const:%- [@(0.0.255) int]_[* Find]([@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 x])_[@(0.0.255) const]&]
[s5;:AIndex`:`:Find`(const T`&`)const:%- [@(0.0.255) int]_[* Find]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
]_[*@3 x])_[@(0.0.255) const]&]
[s2; Returns the position of the first element with value [%-*@3 x]
in AIndex. If multi`-key ordering is not broken and more than
one element with the same value exists in AIndex, lowest position
@ -100,8 +102,8 @@ is retrieved. If the specified value does not exist in AIndex,
a negative number is returned. Unlinked elements are ignored.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindNext`(int`)const:%- [@(0.0.255) int]_[* FindNext]([@(0.0.255) int]_[*@3 i
])_[@(0.0.255) const]&]
[s5;:AIndex`:`:FindNext`(int`)const:%- [@(0.0.255) int]_[* FindNext]([@(0.0.255) int]_[*@3 i])
_[@(0.0.255) const]&]
[s2; Returns the position of the next element with the same value
as the element at [%-*@3 i]. If multi`-key ordering is not broken
and more than one element with that value exists in AIndex, the
@ -111,9 +113,8 @@ When there are no more elements with the required value, a negative
number is returned. Unlinked elements are ignored.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindLast`(const T`&`,unsigned`)const:%- [@(0.0.255) int]_[* FindLast](
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])_[@(0.0.255) c
onst]&]
[s5;:AIndex`:`:FindLast`(const T`&`,unsigned`)const:%- [@(0.0.255) int]_[* FindLast]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])_[@(0.0.255) const]&]
[s2; Returns the position of the last element with value [%-*@3 x]
in AIndex, using a precomputed [%-*@3 `_hash]. If multi`-key ordering
is not broken and more than one element with the same value exists
@ -124,8 +125,8 @@ Unlinked elements are ignored.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindLast`(const T`&`)const:%- [@(0.0.255) int]_[* FindLast]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 x])_[@(0.0.255) const]&]
[s5;:AIndex`:`:FindLast`(const T`&`)const:%- [@(0.0.255) int]_[* FindLast]([@(0.0.255) cons
t]_[*@4 T][@(0.0.255) `&]_[*@3 x])_[@(0.0.255) const]&]
[s2; Returns the position of the last element with value [%-*@3 x]
in AIndex. If multi`-key ordering is not broken and more than
one element with the same value exists in AIndex, the greatest
@ -133,8 +134,8 @@ position is retrieved. If element does not exist in AIndex, a
negative number is returned. Unlinked elements are ignored.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindPrev`(int`)const:%- [@(0.0.255) int]_[* FindPrev]([@(0.0.255) int]_[*@3 i
])_[@(0.0.255) const]&]
[s5;:AIndex`:`:FindPrev`(int`)const:%- [@(0.0.255) int]_[* FindPrev]([@(0.0.255) int]_[*@3 i])
_[@(0.0.255) const]&]
[s2; Returns the position of the previous element with the same value
as the element at [%- _][%-*@3 i]. If multi`-key ordering is not
broken and more than one element with that value exists in AIndex,
@ -144,7 +145,7 @@ order). When there are no more elements with required value,
negative number is returned. Unlinked elements are ignored.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindAdd`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* FindAdd]([@(0.0.255) c
[s5;:AIndex`:`:FindAdd`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* FindAdd]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 key], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s2; Retrieves position of first element with value [%-*@3 key] in
AIndex, using a precomputed [%-*@3 `_hash]. If multi`-key ordering
@ -157,10 +158,10 @@ newly added element is returned. Unlinked elements are ignored.&]
[s6;%- Invalidates references to Index.&]
[s6; The precomputed [%-@3 `_hash] must be the same as the hash specified
by HashFn.&]
[s3;@5 &]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindAdd`(const T`&`):%- [@(0.0.255) int]_[* FindAdd]([@(0.0.255) const]_
[*@4 T][@(0.0.255) `&]_[*@3 key])&]
[s5;:AIndex`:`:FindAdd`(const T`&`):%- [@(0.0.255) int]_[* FindAdd]([@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 key])&]
[s2; Retrieves position of first element with value [%-*@3 key] in
AIndex. If multi`-key ordering is not broken and more than one
element with the same value exists in AIndex, lowest position
@ -172,8 +173,8 @@ Unlinked elements are ignored.&]
[s2;%- [*@5;1 Invalidates references to Index.]&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:operator`<`<`(const T`&`):%- [_^`:`:AIndex^ AIndex][@(0.0.255) `&]_[* op
erator<<]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x])&]
[s5;:AIndex`:`:operator`<`<`(const T`&`):%- AIndex[@(0.0.255) `&]_[* operator<<]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 x])&]
[s2; Operator alternative of [* void Add(const T`& x)]. By returning
reference to AIndex it allows adding multiple elements in a single
expression, thus e.g. allowing to construct a temporary Index
@ -183,13 +184,13 @@ as part of an expression like Foo((Index<int>() << 1 << 2)).&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Unlink`(int`):%- [@(0.0.255) void]_[* Unlink]([@(0.0.255) int]_[*@3 i])&]
[s5;:AIndex`:`:Unlink`(int`):%- [@(0.0.255) void]_[* Unlink]([@(0.0.255) int]_[*@3 i])&]
[s2; Unlinks the element at [%-*@3 i]. The unlinked item stays in AIndex
but is ignored by any Find operation.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Put`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* Put]([@(0.0.255) const
]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s5;:AIndex`:`:Put`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* Put]([@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s2; If there are any unlinked elements in AIndex, one of them is
replaced by [%-*@3 x]. If there are no unlinked elements, the element
with the specified value is appended to the end of AIndex using
@ -202,7 +203,7 @@ with the specified value is appended to the end of AIndex using
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Put`(const T`&`):%- [@(0.0.255) int]_[* Put]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
[s5;:AIndex`:`:Put`(const T`&`):%- [@(0.0.255) int]_[* Put]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&
]_[*@3 x])&]
[s2; If there are any unlinked elements in AIndex, one of them is
replaced by [%-*@3 x]. If there are no unlinked elements, the element
@ -212,9 +213,9 @@ with the specified value is appended to the end of AIndex using
[s6; Requires T to have deep copy constructor.&]
[s6; Invalidates iterators to AIndex.&]
[s6; Invalidates references to Index.&]
[s3; &]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindPut`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* FindPut]([@(0.0.255) c
[s5;:AIndex`:`:FindPut`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* FindPut]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 key], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s2; Retrieves the position of the first element with the value [%-*@3 key]
in AIndex, using a precomputed [%-*@3 `_hash]. The precomputed
@ -230,8 +231,8 @@ The position of the found or placed element is returned.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:FindPut`(const T`&`):%- [@(0.0.255) int]_[* FindPut]([@(0.0.255) const]_
[*@4 T][@(0.0.255) `&]_[*@3 key])&]
[s5;:AIndex`:`:FindPut`(const T`&`):%- [@(0.0.255) int]_[* FindPut]([@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 key])&]
[s2; Retrieves the position of the first element with value [%-*@3 key]
in AIndex. If the element does not exist in the AIndex, it is
placed to it using [* Put(const T`& x).] The position of the found
@ -242,9 +243,9 @@ or placed element is returned.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Set`(int`,const T`&`,unsigned`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_ha
sh])&]
[s5;:AIndex`:`:Set`(int`,const T`&`,unsigned`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) int
]_[*@3 i], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x], [@(0.0.255) unsigned]_[*@3 `_hash
])&]
[s2; Replaces the element at the specified position with a new element
with value [%-*@3 x], using a precomputed [%-*@3 `_hash]. Speed of
this operation depends on the total number of elements with the
@ -256,8 +257,8 @@ same value as the specified one.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Set`(int`,const T`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) int]_[*@3 i
], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x])&]
[s5;:AIndex`:`:Set`(int`,const T`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) int]_[*@3 i],
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x])&]
[s2; Replaces the element at the specified position with a new element
with value [%-*@3 x]. Speed of this operation depends on the total
number of elements with the same value as the specified one.&]
@ -266,27 +267,25 @@ number of elements with the same value as the specified one.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:operator`[`]`(int`)const:%- [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* o
perator`[`]]([@(0.0.255) int]_[*@3 i])_[@(0.0.255) const]&]
[s5;:AIndex`:`:operator`[`]`(int`)const:%- [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* opera
tor`[`]]([@(0.0.255) int]_[*@3 i])_[@(0.0.255) const]&]
[s2; Returns the element at the specified position.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:GetCount`(`)const:%- [@(0.0.255) int]_[* GetCount]()_[@(0.0.255) const]&]
[s5;:AIndex`:`:GetCount`(`)const:%- [@(0.0.255) int]_[* GetCount]()_[@(0.0.255) const]&]
[s2; Returns number of elements in AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:IsEmpty`(`)const:%- [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&]
[s5;:AIndex`:`:IsEmpty`(`)const:%- [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&]
[s2; Tests whether AIndex is empty. Same as GetCount() `=`= 0.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Clear`(`):%- [@(0.0.255) void]_[* Clear]()&]
[s5;:AIndex`:`:Clear`(`):%- [@(0.0.255) void]_[* Clear]()&]
[s2; Removes all elements from AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:ClearIndex`(`):%- [@(0.0.255) void]_[* ClearIndex]()&]
[s5;:AIndex`:`:ClearIndex`(`):%- [@(0.0.255) void]_[* ClearIndex]()&]
[s2; Restores multi`-key ordering.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:UnlinkKey`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* UnlinkKey]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 k], [@(0.0.255) unsigned]_[*@3 `_hash])&]
[s2; Unlinks all elements with value [%-*@3 k] using precomputed [%-*@3 `_hash].
@ -297,24 +296,24 @@ that would be result of HashFn. &]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:UnlinkKey`(const T`&`):%- [@(0.0.255) int]_[* UnlinkKey]([@(0.0.255) con
st]_[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s5;:AIndex`:`:UnlinkKey`(const T`&`):%- [@(0.0.255) int]_[* UnlinkKey]([@(0.0.255) const]_
[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s2; Unlinks all elements with value [%-*@3 k]. Unlinked elements remain
in the AIndex but are ignored by any Find operations.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:IsUnlinked`(int`)const:%- [@(0.0.255) bool]_[* IsUnlinked]([@(0.0.255) i
nt]_[*@3 i])_[@(0.0.255) const]&]
[s5;:AIndex`:`:IsUnlinked`(int`)const:%- [@(0.0.255) bool]_[* IsUnlinked]([@(0.0.255) int]_
[*@3 i])_[@(0.0.255) const]&]
[s2; Tests whether the element at [%-*@3 i] is unlinked.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Sweep`(`):%- [@(0.0.255) void]_[* Sweep]()&]
[s5;:AIndex`:`:Sweep`(`):%- [@(0.0.255) void]_[* Sweep]()&]
[s2; Removes all unlinked elements from AIndex. Complexity of the
operation depends on the number of elements in AIndex, not on
the number of unlinked elements. Also restores multi`-key ordering.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Insert`(int`,const T`&`,unsigned`):%- [@(0.0.255) void]_[* Insert]([@(0.0.255) i
[s5;:AIndex`:`:Insert`(int`,const T`&`,unsigned`):%- [@(0.0.255) void]_[* Insert]([@(0.0.255) i
nt]_[*@3 i], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 k], [@(0.0.255) unsigned]_[*@3 h])&]
[s2; Inserts an element with value [%-*@3 k] at the specified position
[%-*@3 i], using a precomputed hash [%-*@3 h]. This is a slow operation.&]
@ -325,8 +324,8 @@ nt]_[*@3 i], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 k], [@(0.0.255) unsi
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Insert`(int`,const T`&`):%- [@(0.0.255) void]_[* Insert]([@(0.0.255) int
]_[*@3 i], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s5;:AIndex`:`:Insert`(int`,const T`&`):%- [@(0.0.255) void]_[* Insert]([@(0.0.255) int]_[*@3 i
], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s2; Inserts an element with value [%-*@3 k] at the specified position
[%-*@3 i]. This is a slow operation.&]
[s6; Requires T to have deep copy constructor.&]
@ -334,15 +333,15 @@ by HashFn.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Remove`(int`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) int]_[*@3 i])&]
[s5;:AIndex`:`:Remove`(int`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) int]_[*@3 i])&]
[s2; Removes an element with value [%-*@3 k] at the specified position
[%-*@3 i]. This is a slow operation.&]
[s6; Invalidates iterators to AIndex.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Remove`(const int`*`,int`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) c
onst]_[@(0.0.255) int]_`*[*@3 sorted`_list], [@(0.0.255) int]_[*@3 count])&]
[s5;:AIndex`:`:Remove`(const int`*`,int`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) const
]_[@(0.0.255) int]_`*[*@3 sorted`_list], [@(0.0.255) int]_[*@3 count])&]
[s2; Removes multiple elements from AIndex. Time of operation only
slightly depends on the number of removed elements. This is a
slow operation. [%-*@3 sorted`_list] must point to [%-*@3 count]
@ -351,15 +350,15 @@ positions, sorted in ascending order.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Remove`(const`:`:Vector`<int`>`&`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) c
onst]_[_^`:`:Vector^ Vector][@(0.0.255) <int>`&]_[*@3 sorted`_list])&]
[s5;:AIndex`:`:Remove`(const Vector`<int`>`&`):%- [@(0.0.255) void]_[* Remove]([@(0.0.255) c
onst]_Vector[@(0.0.255) <int>`&]_[*@3 sorted`_list])&]
[s2; Removes multiple elements from AIndex. Same as Remove(sorted`_list,
sorted`_list.GetCount()).&]
[s6; Invalidates iterators to AIndex.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:RemoveKey`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* RemoveKey]([@(0.0.255) c
[s5;:AIndex`:`:RemoveKey`(const T`&`,unsigned`):%- [@(0.0.255) int]_[* RemoveKey]([@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[*@3 k], [@(0.0.255) unsigned]_[*@3 h])&]
[s2; Removes all elements with value [%-*@3 k] using a precomputed
hash [%-*@3 h]. Slow.&]
@ -369,112 +368,109 @@ hash [%-*@3 h]. Slow.&]
by HashFn.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:RemoveKey`(const T`&`):%- [@(0.0.255) int]_[* RemoveKey]([@(0.0.255) con
st]_[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s5;:AIndex`:`:RemoveKey`(const T`&`):%- [@(0.0.255) int]_[* RemoveKey]([@(0.0.255) const]_
[*@4 T][@(0.0.255) `&]_[*@3 k])&]
[s2; Removes all elements with value [%-*@3 k]. Slow.&]
[s6; Invalidates iterators to AIndex.&]
[s6; Invalidates references to Index.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Trim`(int`):%- [@(0.0.255) void]_[* Trim]([@(0.0.255) int]_[*@3 n])&]
[s5;:AIndex`:`:Trim`(int`):%- [@(0.0.255) void]_[* Trim]([@(0.0.255) int]_[*@3 n])&]
[s2; Reduces the number of elements in AIndex to [%-*@3 n]. Requested
number must be less than or equal to actual number of elements
in AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Drop`(int`):%- [@(0.0.255) void]_[* Drop]([@(0.0.255) int]_[*@3 n]_`=_[@3 1])
&]
[s5;:AIndex`:`:Drop`(int`):%- [@(0.0.255) void]_[* Drop]([@(0.0.255) int]_[*@3 n]_`=_[@3 1])&]
[s2; Drops [%-*@3 n] elements from the end of the AIndex (same as Trim(GetCount()
`- n)).&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Top`(`)const:%- [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* Top]()_[@(0.0.255) c
[s5;:AIndex`:`:Top`(`)const:%- [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* Top]()_[@(0.0.255) c
onst]&]
[s2; Returns a reference to the last element in the AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Reserve`(int`):%- [@(0.0.255) void]_[* Reserve]([@(0.0.255) int]_[*@3 n])&]
[s5;:AIndex`:`:Reserve`(int`):%- [@(0.0.255) void]_[* Reserve]([@(0.0.255) int]_[*@3 n])&]
[s2; Reserves capacity. If [%-*@3 n] is greater than current capacity,
capacity is increased to the requested value.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Shrink`(`):%- [@(0.0.255) void]_[* Shrink]()&]
[s5;:AIndex`:`:Shrink`(`):%- [@(0.0.255) void]_[* Shrink]()&]
[s2; Minimizes the memory consumption of AIndex by decreasing the
capacity to the number of elements.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:GetAlloc`(`)const:%- [@(0.0.255) int]_[* GetAlloc]()_[@(0.0.255) const]&]
[s5;:AIndex`:`:GetAlloc`(`)const:%- [@(0.0.255) int]_[* GetAlloc]()_[@(0.0.255) const]&]
[s2; Returns the current capacity of AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Serialize`(`:`:Stream`&`):%- [@(0.0.255) void]_[* Serialize]([_^`:`:Stream^ S
tream][@(0.0.255) `&]_[*@3 s])&]
[s5;:AIndex`:`:Serialize`(Stream`&`):%- [@(0.0.255) void]_[* Serialize](Stream[@(0.0.255) `&
]_[*@3 s])&]
[s2; Serializes content of AIndex to/from Stream.&]
[s6; Requires T to have serialization operator defined.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:PickKeys`(`)pick`_:%- [*@4 V]_[* PickKeys]()_[@(0.128.128) pick`_]&]
[s5;:AIndex`:`:PickKeys`(`)pick`_:%- [*@4 V]_[* PickKeys]()_[@(0.128.128) pick`_]&]
[s2; Returns a basic random access container of elements. Destroys
AIndex by picking.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:GetKeys`(`)const:%- [@(0.0.255) const]_[*@4 V][@(0.0.255) `&]_[* GetKeys](
)_[@(0.0.255) const]&]
[s5;:AIndex`:`:GetKeys`(`)const:%- [@(0.0.255) const]_[*@4 V][@(0.0.255) `&]_[* GetKeys]()_[@(0.0.255) c
onst]&]
[s2; Returns a constant reference to basic random access container
of elements.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:operator`=`(pick`_ V`&`):%- [_^`:`:AIndex^ AIndex][@(0.0.255) `&]_[* ope
rator`=]([@(0.128.128) pick`_]_[*@4 V][@(0.0.255) `&]_[*@3 s])&]
[s5;:AIndex`:`:operator`=`(pick`_ V`&`):%- AIndex[@(0.0.255) `&]_[* operator`=]([@(0.128.128) p
ick`_]_[*@4 V][@(0.0.255) `&]_[*@3 s])&]
[s2; Assigns basic random access container to AIndex. Transfers the
source container in short constant time, but destroys it by picking.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:operator`<`<`=`(const V`&`):%- [_^`:`:AIndex^ AIndex][@(0.0.255) `&]_[* o
perator<<`=]([@(0.0.255) const]_[*@4 V][@(0.0.255) `&]_[*@3 s])&]
[s5;:AIndex`:`:operator`<`<`=`(const V`&`):%- AIndex[@(0.0.255) `&]_[* operator<<`=]([@(0.0.255) c
onst]_[*@4 V][@(0.0.255) `&]_[*@3 s])&]
[s2; Assigns the basic random access container to AIndex, while preserving
the value of the source container.&]
[s6; Requires T to have deep copy constructor or optional deep copy.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:AIndex`(pick`_ V`&`):%- [* AIndex]([@(0.128.128) pick`_]_[*@4 V][@(0.0.255) `&
[s5;:AIndex`:`:AIndex`(pick`_ V`&`):%- [* AIndex]([@(0.128.128) pick`_]_[*@4 V][@(0.0.255) `&
]_[*@3 s])&]
[s2; Pick`-constructs AIndex from a basic random access container.
Transfers the source container in short constant time, but destroys
it by picking.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:AIndex`(const V`&`,int`):%- [* AIndex]([@(0.0.255) const]_[*@4 V][@(0.0.255) `&
[s5;:AIndex`:`:AIndex`(const V`&`,int`):%- [* AIndex]([@(0.0.255) const]_[*@4 V][@(0.0.255) `&
]_[*@3 s], [@(0.0.255) int])&]
[s2; Deep`-copy constructs AIndex from basic random access container.&]
[s6; Requires T to have deep copy constructor or optional deep copy
constructor.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:Begin`(`)const:%- [_^`:`:AIndex`:`:ConstIterator^ ConstIterator]_[* Be
gin]()_[@(0.0.255) const]&]
[s5;:AIndex`:`:Begin`(`)const:%- ConstIterator_[* Begin]()_[@(0.0.255) const]&]
[s2; Returns a constant iterator to the first element in AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:End`(`)const:%- [_^`:`:AIndex`:`:ConstIterator^ ConstIterator]_[* End](
)_[@(0.0.255) const]&]
[s5;:AIndex`:`:End`(`)const:%- ConstIterator_[* End]()_[@(0.0.255) const]&]
[s2; Returns a constant iterator to the position just beyond the
last element in AIndex.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:GetIter`(int`)const:%- [_^`:`:AIndex`:`:ConstIterator^ ConstIterator
]_[* GetIter]([@(0.0.255) int]_[*@3 pos])_[@(0.0.255) const]&]
[s5;:AIndex`:`:GetIter`(int`)const:%- ConstIterator_[* GetIter]([@(0.0.255) int]_[*@3 pos])
_[@(0.0.255) const]&]
[s2; Returns a constant iterator to the element at specified position.
Same as [* Begin() `+ i]. The benefit of this method is that [* pos]
is range checked in debug mode.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:AIndex`(`):%- [* AIndex]()&]
[s5;:AIndex`:`:AIndex`(`):%- [* AIndex]()&]
[s2; Default constructor.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:AIndex`:`:AIndex`(const`:`:AIndex`&`,int`):%- [* AIndex]([@(0.0.255) const]_[* AIn
dex][@(0.0.255) `&]_[*@3 s], [@(0.0.255) int])&]
[s5;:AIndex`:`:AIndex`(const AIndex`&`,int`):%- [* AIndex]([@(0.0.255) const]_[* AIndex][@(0.0.255) `&
]_[*@3 s], [@(0.0.255) int])&]
[s2; Optional deep copy constructor.&]
[s6; Requires T to have deep copy constructor or optional deep copy
constructor.&]

View file

@ -10,76 +10,74 @@ topic "Any";
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[{_}
[s0; [@(0.0.255) class]_[* Any]_:_[@(0.0.255) private]_[*@3 Moveable][@(0.0.255) <][* Any][@(0.0.255) >
]_&]
[s0;%% &]
[s3; &]
[s1;:Any`:`:class: [@(0.0.255) class]_[* Any]_:_[@(0.0.255) private]_[*@3 Moveable][@(0.0.255) <
][* Any][@(0.0.255) >]_&]
[s0;%% Any is a special type of container capable of containing none
or single element of [/ any] type. It also provides methods for
querying the type stored and retrieving the content of specific
type.&]
[s0;%% Any has pick semantics.&]
[s0;%% &]
[ {{10000F(128)G(128)@1 [s0;%% [* Public Method List]]}}&]
[s4; &]
[s5;:`:`:Any`:`:Any`(pick`_`:`:Any`&`): [* Any]([@(0.128.128) pick`_]_[* Any][@(0.0.255) `&]_
[*@3 s])&]
[s3; &]
[s5;:Any`:`:Any`(pick`_ Any`&`): [* Any]([@(0.128.128) pick`_]_[* Any][@(0.0.255) `&]_[*@3 s])&]
[s2;%% Pick constructor. Transfers content of source Any while destroying
its content by picking.&]
[s7;%% [%-*C@3 s]-|Source Any.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Any`(`): [* Any]()&]
[s5;:Any`:`:Any`(`): [* Any]()&]
[s2;%% Constructs an empty Any.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:`~Any`(`): [@(0.0.255) `~][* Any]()&]
[s5;:Any`:`:`~Any`(`): [@(0.0.255) `~][* Any]()&]
[s2;%% Destructor.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Create`(`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[*@4 T
][@(0.0.255) `&]_[* Create]()&]
[s5;:Any`:`:Create`(`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[*@4 T][@(0.0.255) `&
]_[* Create]()&]
[s2;%% Creates content of type T inside Any.&]
[s7;%% [*C@4 T]-|Type of content.&]
[s7;%% [*/ Return value]-|Reference to the newly created content.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Is`(`)const: [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_
[@(0.0.255) bool]_[* Is]()_[@(0.0.255) const]&]
[s5;:Any`:`:Is`(`)const: [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) b
ool]_[* Is]()_[@(0.0.255) const]&]
[s2;%% Tests whether Any contains content of type T.&]
[s7;%% [*C@4 T]-|Required type.&]
[s7;%% [*/ Return value]-|true if there is content with type T in Any.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Get`(`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[*@4 T
][@(0.0.255) `&]_[* Get]()&]
[s5;:Any`:`:Get`(`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[*@4 T][@(0.0.255) `&
]_[* Get]()&]
[s2;%% Returns reference to content. Is<T> must be true, otherwise
this operation is illegal.&]
[s7;%% [*C@4 T]-|Required type.&]
[s7;%% [*/ Return value]-|Reference to content.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Get`(`)const: [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[* Get]()_[@(0.0.255) const]&]
[s5;:Any`:`:Get`(`)const: [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) c
onst]_[*@4 T][@(0.0.255) `&]_[* Get]()_[@(0.0.255) const]&]
[s2;%% Returns constant reference to content. Is<T> must be true,
otherwise this operation is illegal.&]
[s7;%% [*C@4 T]-|Required type.&]
[s7;%% [*/ Return value]-|Reference to content.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:Clear`(`): [@(0.0.255) void]_[* Clear]()&]
[s5;:Any`:`:Clear`(`): [@(0.0.255) void]_[* Clear]()&]
[s2;%% Removes (and destroys) content.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:IsEmpty`(`)const: [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&]
[s5;:Any`:`:IsEmpty`(`)const: [@(0.0.255) bool]_[* IsEmpty]()_[@(0.0.255) const]&]
[s7;%% [*/ Return value]-|true if there is no content.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:IsPicked`(`)const: [@(0.0.255) bool]_[* IsPicked]()_[@(0.0.255) const]&]
[s5;:Any`:`:IsPicked`(`)const: [@(0.0.255) bool]_[* IsPicked]()_[@(0.0.255) const]&]
[s7;%% [*/ Return value]-|true if Any is picked.&]
[s3; &]
[s4; &]
[s5;:`:`:Any`:`:operator`=`(pick`_`:`:Any`&`): [@(0.0.255) void]_[* operator`=]([@(0.128.128) p
ick`_]_[_^`:`:Any^ Any][@(0.0.255) `&]_[*@3 s])&]
[s5;:Any`:`:operator`=`(pick`_ Any`&`): [@(0.0.255) void]_[* operator`=]([@(0.128.128) pick
`_]_Any[@(0.0.255) `&]_[*@3 s])&]
[s2;%% Pick operator. Transfers content while destroying source.&]
[s7;%% [%-*C@3 s]-|Source Any.&]
[s0; ]

View file

@ -14,8 +14,8 @@ topic "Algorithms";
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Global Functions]]}}&]
[s4;H0;%- &]
[s5;:`:`:`:`:Swap`(T`&`,T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >
]_[@(0.0.255) void]_[* Swap]([*@4 T][@(0.0.255) `&]_[*@3 a], [*@4 T][@(0.0.255) `&]_[*@3 b])&]
[s5;:Swap`(T`&`,T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) v
oid]_[* Swap]([*@4 T][@(0.0.255) `&]_[*@3 a], [*@4 T][@(0.0.255) `&]_[*@3 b])&]
[s2; Swaps values. Specific types might specialize [* Swap] with more
effective variants.&]
[s6; T must have either deep copy operator or pick operator.&]
@ -24,8 +24,8 @@ effective variants.&]
[s7; [*C@3 b]-|Second value to swap.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:IterSwap`(I`,I`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 I][@(0.0.255) >
]_[@(0.0.255) void]_[* IterSwap]([*@4 I]_[*@3 a], [*@4 I]_[*@3 b])&]
[s5;:IterSwap`(I`,I`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 I][@(0.0.255) >]_[@(0.0.255) v
oid]_[* IterSwap]([*@4 I]_[*@3 a], [*@4 I]_[*@3 b])&]
[s2; Swaps values pointed to by iterators. Specific types might specialize
[* IterSwap] with more effective variants.&]
[s6; Swap must be defined for type pointed to by I.&]
@ -34,8 +34,8 @@ effective variants.&]
[s7; [*C@3 b]-|Iterator pointing to second value.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindLowerBound`(const C`&`,int`,int`,const T`&`,const L`&`):%- [@(0.0.255) t
emplate]_<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
[s5;:FindLowerBound`(const C`&`,int`,int`,const T`&`,const L`&`):%- [@(0.0.255) templat
e]_<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
]_[@(0.0.255) int]_[* FindLowerBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 count], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
]_[*@3 val], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
@ -51,9 +51,9 @@ predicate where [* val] can be inserted without breaking the ordering.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindLowerBound`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_
<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
]_[@(0.0.255) int]_[* FindLowerBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[s5;:FindLowerBound`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[@(0.0.255) i
nt]_[* FindLowerBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_
[*@3 less])&]
[s2; Finds first position in sorted by [* less] predicate where [* val]
@ -66,8 +66,8 @@ can be inserted without breaking the ordering.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindLowerBound`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindLowerBound]([@(0.0.255) c
[s5;:FindLowerBound`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_
[*@4 C], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindLowerBound]([@(0.0.255) c
onst]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val])&]
[s2; Finds first position in sorted by [*/ operator<] predicate where
[* val] can be inserted without breaking the ordering.&]
@ -78,8 +78,8 @@ onst]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindUpperBound`(const C`&`,int`,int`,const T`&`,const L`&`):%- [@(0.0.255) t
emplate]_<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
[s5;:FindUpperBound`(const C`&`,int`,int`,const T`&`,const L`&`):%- [@(0.0.255) templat
e]_<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
]_[@(0.0.255) int]_[* FindUpperBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[@(0.0.255) int]_[*@3 pos], [@(0.0.255) int]_[*@3 count], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&
]_[*@3 val], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
@ -95,9 +95,9 @@ where [* val] can be inserted without breaking the ordering.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindUpperBound`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_
<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
]_[@(0.0.255) int]_[* FindUpperBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[s5;:FindUpperBound`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[@(0.0.255) i
nt]_[* FindUpperBound]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_
[*@3 less])&]
[s2; Finds last position in sorted by [* less] predicate where [* val]
@ -110,8 +110,8 @@ can be inserted without breaking the ordering.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindUpperBound`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindUpperBound]([@(0.0.255) c
[s5;:FindUpperBound`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_
[*@4 C], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindUpperBound]([@(0.0.255) c
onst]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val])&]
[s2; Finds last position in sorted by [*/ operator<] predicate where
[* val] can be inserted without breaking the ordering.&]
@ -122,8 +122,8 @@ onst]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindBinary`(const C`&`,const T`&`,int`,int`,const L`&`):%- [@(0.0.255) tem
plate]_<[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
[s5;:FindBinary`(const C`&`,const T`&`,int`,int`,const L`&`):%- [@(0.0.255) template]_<
[@(0.0.255) class]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >
]_[@(0.0.255) int]_[* FindBinary]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v],
[@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val], [@(0.0.255) int]_[*@3 pos],
[@(0.0.255) int]_[*@3 count], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
@ -140,7 +140,7 @@ a negative value is returned.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindBinary`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
[s5;:FindBinary`(const C`&`,const T`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[@(0.0.255) i
nt]_[* FindBinary]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T
][@(0.0.255) `&]_[*@3 val], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
@ -155,9 +155,9 @@ value is returned.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FindBinary`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) cla
ss]_[*@4 C], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindBinary]([@(0.0.255) c
onst]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val])&]
[s5;:FindBinary`(const C`&`,const T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C
], [@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) int]_[* FindBinary]([@(0.0.255) const
]_[*@4 C][@(0.0.255) `&]_[*@3 v], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 val])&]
[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.&]
@ -168,9 +168,9 @@ a negative value is returned.&]
[s7; [*/ Return value]-|Position in container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:AppendSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* AppendSorted](
[*@4 C][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src],
[s5;:AppendSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) clas
s]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* AppendSorted]([*@4 C
][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src],
[@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
[s2; Merges source NTL container to destination NTL container. Both
containers must be sorted in ascending order. After the operation,
@ -184,8 +184,8 @@ Ordering predicate is determined by [* less].&]
[s7; [*/ Return value]-|Destination container.[C template<class ][*C@4 C][C >]&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:AppendSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_
[*@4 C][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* AppendSorted]([*@4 C][@(0.0.255) `&]_[*@3 dest],
[s5;:AppendSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C][@(0.0.255) >
]_[*@4 C][@(0.0.255) `&]_[* AppendSorted]([*@4 C][@(0.0.255) `&]_[*@3 dest],
[@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src])&]
[s2;~~~.992; Merges source NTL container to destination NTL container.
Both containers must be sorted in ascending order. After the
@ -198,9 +198,9 @@ preserved. Ordering is determined by [*/ operator<].&]
[s7; [*/ Return value]-|Destination container.[C template<class ][*C@4 C][C >]&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:UnionSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* UnionSorted](
[*@4 C][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src],
[s5;:UnionSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) class
]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* UnionSorted]([*@4 C
][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src],
[@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
[s2; Merges source NTL container to destination NTL container. Both
containers must be sorted in ascending order and values must
@ -214,8 +214,8 @@ Ordering is determined by [* less].&]
[s7; [*/ Return value]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:UnionSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C
][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* UnionSorted]([*@4 C][@(0.0.255) `&]_[*@3 dest],
[s5;:UnionSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C][@(0.0.255) >
]_[*@4 C][@(0.0.255) `&]_[* UnionSorted]([*@4 C][@(0.0.255) `&]_[*@3 dest],
[@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 src])&]
[s2; Merges the source NTL container to the destination NTL container.
Both containers must be sorted in ascending order and values
@ -228,9 +228,9 @@ containers. Ordering is determined by [*/ operator<].&]
[s7; [*/ Return value]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:RemoveSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* RemoveSorted](
[*@4 C][@(0.0.255) `&]_[*@3 from], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 what],
[s5;:RemoveSorted`(C`&`,const C`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) clas
s]_[*@4 C], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* RemoveSorted]([*@4 C
][@(0.0.255) `&]_[*@3 from], [@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 what],
[@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
[s2; Removes elements of source container from destination container.
Both containers must be sorted in ascending order and values
@ -242,8 +242,8 @@ must be unique. Ordering is determined by [* less].&]
[s7; [*/ Return value]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:RemoveSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_
[*@4 C][@(0.0.255) >]_[*@4 C][@(0.0.255) `&]_[* RemoveSorted]([*@4 C][@(0.0.255) `&]_[*@3 from],
[s5;:RemoveSorted`(C`&`,const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C][@(0.0.255) >
]_[*@4 C][@(0.0.255) `&]_[* RemoveSorted]([*@4 C][@(0.0.255) `&]_[*@3 from],
[@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 what])&]
[s2; Removes elements of source container from destination container.
Both containers must be sorted in ascending order and values
@ -254,7 +254,7 @@ must be unique. Ordering is determined by [*/ operator<].&]
[s7; [*/ Return value]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:IntersectSorted`(D`&`,const S`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
[s5;:IntersectSorted`(D`&`,const S`&`,const L`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 D], [@(0.0.255) class]_[*@4 S], [@(0.0.255) class]_[*@4 L][@(0.0.255) >]_[*@4 D][@(0.0.255) `&
]_[* IntersectSorted]([*@4 D][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 S][@(0.0.255) `&
]_[*@3 src], [@(0.0.255) const]_[*@4 L][@(0.0.255) `&]_[*@3 less])&]
@ -268,9 +268,9 @@ order and values must be unique. Ordering is determined by [* less].&]
[s7; [*C@3 less]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:IntersectSorted`(D`&`,const S`&`):%- [@(0.0.255) template]_<[@(0.0.255) clas
s]_[*@4 D], [@(0.0.255) class]_[*@4 S][@(0.0.255) >]_[*@4 D][@(0.0.255) `&]_[* IntersectSorted](
[*@4 D][@(0.0.255) `&]_[*@3 dest], [@(0.0.255) const]_[*@4 S][@(0.0.255) `&]_[*@3 src])&]
[s5;:IntersectSorted`(D`&`,const S`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 D],
[@(0.0.255) class]_[*@4 S][@(0.0.255) >]_[*@4 D][@(0.0.255) `&]_[* IntersectSorted]([*@4 D][@(0.0.255) `&
]_[*@3 dest], [@(0.0.255) const]_[*@4 S][@(0.0.255) `&]_[*@3 src])&]
[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<].&]
@ -281,9 +281,9 @@ order and values must be unique. Ordering is determined by [*/ operator<].&]
[s7; [*/ Return value]-|Destination container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:Sort`(T`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T],
[@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_[@(0.0.255) void]_[* Sort]([*@4 T][@(0.0.255) `&]_
[*@3 c], [@(0.0.255) const]_[*@4 Less][@(0.0.255) `&]_[*@3 less])&]
[s5;:Sort`(T`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T],
[@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_[@(0.0.255) void]_[* Sort]([*@4 T][@(0.0.255) `&]_[*@3 c
], [@(0.0.255) const]_[*@4 Less][@(0.0.255) `&]_[*@3 less])&]
[s2; Sorts container. Ordering is determined by [* less].&]
[s6; IterSwap must be defined for T`::Iterator.&]
[s7; [*C@4 T]-|Type of container.&]
@ -291,7 +291,7 @@ order and values must be unique. Ordering is determined by [*/ operator<].&]
[s7; [*C@3 less]-|Ordering predicate.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:Sort`(T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) v
[s5;:Sort`(T`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) >]_[@(0.0.255) v
oid]_[* Sort]([*@4 T][@(0.0.255) `&]_[*@3 c])&]
[s2; Sorts container. Ordering is determined by [*/ operator<].&]
[s2; [*1 IterSwap must be defined for T`::Iterator.]&]
@ -299,9 +299,9 @@ oid]_[* Sort]([*@4 T][@(0.0.255) `&]_[*@3 c])&]
[s7; [*C@3 c]-|Container.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:IndexSort`(KC`&`,VC`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 KC], [@(0.0.255) class]_[*@4 VC], [@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_[@(0.0.255) v
oid]_[* IndexSort]([*@4 KC][@(0.0.255) `&]_[*@3 keys], [*@4 VC][@(0.0.255) `&]_[*@3 values],
[s5;:IndexSort`(KC`&`,VC`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 K
C], [@(0.0.255) class]_[*@4 VC], [@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_[@(0.0.255) void
]_[* IndexSort]([*@4 KC][@(0.0.255) `&]_[*@3 keys], [*@4 VC][@(0.0.255) `&]_[*@3 values],
[@(0.0.255) const]_[*@4 Less][@(0.0.255) `&]_[*@3 less])&]
[s2; Sorts pair of containers. Both containers must have same number
of items. Resulting order is determined by the [* keys] container.
@ -313,8 +313,8 @@ Ordering is determined by [* less].&]
[s7; [*C@3 less]-|Ordering predicate.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:IndexSort`(KC`&`,VC`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 KC],
[@(0.0.255) class]_[*@4 VC][@(0.0.255) >]_[@(0.0.255) void]_[* IndexSort]([*@4 KC][@(0.0.255) `&
[s5;:IndexSort`(KC`&`,VC`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 KC],
[@(0.0.255) class]_[*@4 VC][@(0.0.255) >]_[@(0.0.255) void]_[* IndexSort]([*@4 KC][@(0.0.255) `&
]_[*@3 keys], [*@4 VC][@(0.0.255) `&]_[*@3 values])&]
[s2; Sorts pair of containers. Both containers must have same number
of items. Resulting order is determined by the [* keys] container.
@ -325,10 +325,10 @@ Ordering is determined by [*/ operator<].&]
[s7; [*C@3 values]-|Container of values.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:GetSortOrder`(const C`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 C], [@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_[_^`:`:Vector^ Vector][@(0.0.255) <
int>]_[* GetSortOrder]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 container],
[@(0.0.255) const]_[*@4 Less][@(0.0.255) `&]_[*@3 less])&]
[s5;:GetSortOrder`(const C`&`,const Less`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_
[*@4 C], [@(0.0.255) class]_[*@4 Less][@(0.0.255) >]_Vector[@(0.0.255) <int>]_[* GetSortOrder
]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 container], [@(0.0.255) const]_[*@4 Less][@(0.0.255) `&
]_[*@3 less])&]
[s2; Creates ascending order of values in container. Ordering is
determined by [* less].&]
[s7; [*C@4 C]-|Type of container.&]
@ -338,9 +338,9 @@ determined by [* less].&]
order.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:GetSortOrder`(const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C][@(0.0.255) >
]_[_^`:`:Vector^ Vector][@(0.0.255) <int>]_[* GetSortOrder]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&
]_[*@3 container])&]
[s5;:GetSortOrder`(const C`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 C][@(0.0.255) >
]_Vector[@(0.0.255) <int>]_[* GetSortOrder]([@(0.0.255) const]_[*@4 C][@(0.0.255) `&]_[*@3 co
ntainer])&]
[s2; Creates ascending order of values in container. Ordering is
determined by [*/ operator<].&]
[s7; [*C@4 C]-|Type of container.&]
@ -349,10 +349,10 @@ determined by [*/ operator<].&]
order.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:FieldRelation`(O`(T`:`:`*`)`,const R`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 O], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >]_[_^`:`:FieldRelationCls^ F
ieldRelationCls][@(0.0.255) <][*@4 O], [*@4 T], [*@4 R][@(0.0.255) >]_[* FieldRelation]([*@4 O]_
(T`::[@(0.0.255) `*][*@3 member]), [@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 relation])&]
[s5;:FieldRelation`(O`(`*`)`,const R`&`):%- [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 O
], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >]_FieldRelationCls[@(0.0.255) <
][*@4 O], [*@4 T], [*@4 R][@(0.0.255) >]_[* FieldRelation]([*@4 O]_(T`::[@(0.0.255) `*][*@3 member
]), [@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 relation])&]
[s2; Creates ordering predicate for [* T] based on the value of member
variable of[* T].&]
[s7; [*C@4 T]-|Type of element.&]
@ -361,11 +361,11 @@ variable of[* T].&]
[s7; [*/ Return value]-|Ordering predicate.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:MethodRelation`(O`(T`:`:`*`)`(`)`,const R`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 O], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >]_[_^`:`:MethodRelationCls^ M
ethodRelationCls][@(0.0.255) <][*@4 O]_(T`::[@(0.0.255) `*])(), [*@4 T],
[*@4 R][@(0.0.255) >]_[* MethodRelation]([*@4 O]_(T`::[@(0.0.255) `*][*@3 method])(),
[@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 relation])&]
[s5;:MethodRelation`(O`(`*`)`(`)`,const R`&`):%- [@(0.0.255) template]_<[@(0.0.255) class
]_[*@4 O], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >]_MethodRelatio
nCls[@(0.0.255) <][*@4 O]_(T`::[@(0.0.255) `*])(), [*@4 T], [*@4 R][@(0.0.255) >]_[* MethodRelat
ion]([*@4 O]_(T`::[@(0.0.255) `*][*@3 method])(), [@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 r
elation])&]
[s2; Creates ordering predicate for [* T] based on the value returned
by non`-const method of [* T].&]
[s7; [*C@4 T]-|Type of element.&]
@ -374,12 +374,11 @@ by non`-const method of [* T].&]
[s7; [*/ Return value]-|Ordering predicate.&]
[s3;%- &]
[s4;%- &]
[s5;:`:`:`:`:MethodRelation`(O`(T`:`:`*`)`(`)const`,const R`&`):%- [@(0.0.255) template
]_<[@(0.0.255) class]_[*@4 O], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >
]_[_^`:`:MethodRelationCls^ MethodRelationCls][@(0.0.255) <][*@4 O]_(T`::[@(0.0.255) `*])(
)_[@(0.0.255) const], [*@4 T], [*@4 R][@(0.0.255) >]_[* MethodRelation]([*@4 O]_(T`::[@(0.0.255) `*
][*@3 method])()_[@(0.0.255) const], [@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 relation])
&]
[s5;:MethodRelation`(O`(`*`)`(`)const`,const R`&`):%- [@(0.0.255) template]_<[@(0.0.255) c
lass]_[*@4 O], [@(0.0.255) class]_[*@4 T], [@(0.0.255) class]_[*@4 R][@(0.0.255) >]_MethodRel
ationCls[@(0.0.255) <][*@4 O]_(T`::[@(0.0.255) `*])()_[@(0.0.255) const],
[*@4 T], [*@4 R][@(0.0.255) >]_[* MethodRelation]([*@4 O]_(T`::[@(0.0.255) `*][*@3 method])()_[@(0.0.255) c
onst], [@(0.0.255) const]_[*@4 R][@(0.0.255) `&]_[*@3 relation])&]
[s2; Creates ordering predicate for [* T] based on the value returned
by const method of [* T].&]
[s7; [*C@4 T]-|Type of element.&]

View file

@ -18,7 +18,8 @@ CppItem& CppNest::GetAdd(const String& _key, const String& _name)
bool CppBase::IsType(int i) const
{
return GetKey(i) != "::";
// return GetKey(i) != "::";
return GetKey(i).GetCount();
}
void Remove(CppBase& base, const Vector<String>& pf)

View file

@ -12,6 +12,7 @@ file
cpplex.cpp,
Parser.cpp,
Base.cpp,
Nestfo.cpp,
Qualify.cpp,
Info readonly separator,
Copying;

123
uppsrc/CppBase/Nestfo.cpp Normal file
View file

@ -0,0 +1,123 @@
#include "CppBase.h"
NAMESPACE_UPP
#define LLOG(x)
#define LTIMING(x) // RTIMING(x)
Nestfo::Nestfo(const CppBase& base, int nesti)
: nesti(nesti), base(base)
{
LTIMING("Nestfo(const CppBase& base, int nesti)");
Init();
}
Nestfo::Nestfo(int nesti, const CppBase& base)
: nesti(nesti), base(base)
{
LTIMING("Nestfo(int nesti, const CppBase& base)");
Init();
}
Nestfo::Nestfo(const CppBase& base, const String& nest)
: nesti(base.Find(nest)), base(base)
{
LTIMING("Nestfo(const CppBase& base, const String& nest)");
Init();
}
Nestfo::Nestfo(const Nestfo& f)
: base(f.base)
{
LTIMING("Nestfo copy contructor");
nests <<= f.nests;
bvalid = nvalid = false;
nesti = f.nesti;
}
void Nestfo::Init()
{
bvalid = nvalid = false;
}
void Nestfo::Bases(int i, Vector<int>& g)
{
if(base.IsType(i)) {
const CppNest& n = base.nest[i];
for(int i = 0; i < n.GetCount(); i++) {
const CppItem& im = n[i];
if(im.IsType()) {
const char *q = im.qptype;
const char *b = q;
for(;;) {
if(*q == ';' || *q == '\0') {
if(b < q) {
int nq = base.Find(String(b, q));
if(nq >= 0)
g.Add(nq);
}
if(*q == '\0')
return;
q++;
b = q;
}
else
q++;
}
}
}
}
}
const Vector<String>& Nestfo::GetBases()
{
LTIMING("GetBases");
if(!bvalid) {
bvalid = true;
baselist.Clear();
if(nesti < 0)
return baselist;
Vector<int> b;
Index<int> bi;
Bases(nesti, b);
while(b.GetCount()) {
Vector<int> bb;
for(int i = 0; i < b.GetCount(); i++) {
int q = b[i];
if(bi.Find(q) < 0) {
bi.Add(q);
Bases(b[i], bb);
}
}
b = bb;
}
for(int i = 0; i < bi.GetCount(); i++)
baselist.Add(base.GetKey(bi[i]) + "::");
}
return baselist;
}
const Vector<String>& Nestfo::GetNests()
{
LTIMING("GetNests");
if(!nvalid) {
nvalid = true;
nests.Clear();
if(nesti < 0)
return nests;
String nn = base.GetKey(nesti);
while(nn.GetCount()) {
if(nn[0] == ':' && nn.GetCount() == 2) {
nests.Add(nn);
return nests;
}
nests.Add(nn + "::");
int q = nn.ReverseFind(':');
nn.Trim(max(0, q - 1));
}
nests.Add("");
}
return nests;
}
END_UPP_NAMESPACE

View file

@ -186,6 +186,15 @@ Parser::FunctionStat::FunctionStat(const String & nesting,
{
}
static String s_dblcln("::");
inline void NestCat(String& nest, const String& s)
{
if(nest.GetCount())
nest << s_dblcln;
nest << s;
}
void Parser::Context::operator<<=(const Context& t)
{
nesting = t.nesting;
@ -945,12 +954,14 @@ String CleanTp(const String& tp)
void Parser::SetNestCurrent()
{
current_nest = Nvl(context.nesting, "::");
// current_nest = Nvl(context.nesting, "::");
current_nest = context.nesting;
}
CppItem& Parser::Item(const String& nesting, const String& item, const String& name, bool impl)
{
current_nest = Nvl(nesting, "::");
// current_nest = Nvl(nesting, "::");
current_nest = nesting;
if(dobody)
current = CppItem();
current_key = item;
@ -1044,8 +1055,8 @@ bool Parser::Nest(const String& tp, const String& tn) {
if(Key('{')) {
Context cc;
cc <<= context;
context.nesting << "::" << name;
context.namespacel = context.nesting.GetLength();
// context.nesting << "::" << name;
// context.namespacel = context.nesting.GetLength();
NestBody();
context <<= cc;
}
@ -1079,7 +1090,7 @@ bool Parser::Nest(const String& tp, const String& tn) {
Check(lex.IsId(), "Missing identifier");
context.typenames.FindAdd(lex);
name = lex.GetId();
context.nesting << "::" << name;
NestCat(context.nesting, name);
}
while(Key(t_dblcolon));
context.access = t == tk_class ? PRIVATE : PUBLIC;
@ -1194,11 +1205,10 @@ CppItem& Parser::Fn(const Decl& d, const String& templ, bool body, int kind,
nn.Cat(*s);
s++;
}
if(*nn == ':')
nesting = nn;
else
if(!IsNull(nn))
nesting << "::" << nn;
s = nn;
while(*s == ':') s++;
if(*s)
NestCat(nesting, s);
CppItem& im = Item(nesting, item, nm, body);
if(!body || IsNull(im.natural)) {
im.natural.Clear();
@ -1392,7 +1402,7 @@ void Parser::Do()
h = TrimRight(h.Mid(0, q));
String nest = context.nesting;
if(d.type_def)
nest << "::" << d.name;
NestCat(nest, d.name);
CppItem& im = Item(nest, d.type_def ? "typedef" : d.name, d.name);
im.natural = Purify(h);
im.type = im.ptype = d.type;
@ -1436,11 +1446,13 @@ void Parser::Do(Stream& in, const Vector<String>& ignore, CppBase& _base, const
while(lex != t_eof)
try {
try {
current_nest = "::";
// current_nest = "::";
current_nest.Clear();
context.access = PUBLIC;
context.noclass = true;
context.typenames.Clear();
context.tparam.Clear();
context.nesting.Clear();
inbody = false;
for(int i = 0; i < typenames.GetCount(); i++)
context.typenames.Add(lex.Id(typenames[i]));

View file

@ -5,190 +5,81 @@ NAMESPACE_UPP
#define LLOG(x)
#define LTIMING(x) // RTIMING(x)
Nestfo::Nestfo(const CppBase& base, int nesti)
: nesti(nesti), base(base)
{
LTIMING("Nestfo(const CppBase& base, int nesti)");
Init();
}
bool DoQualify(Nestfo& nf, const String& type, String& qt);
Nestfo::Nestfo(int nesti, const CppBase& base)
: nesti(nesti), base(base)
{
LTIMING("Nestfo(int nesti, const CppBase& base)");
Init();
}
Nestfo::Nestfo(const CppBase& base, const String& nest)
: nesti(base.Find(nest)), base(base)
{
LTIMING("Nestfo(const CppBase& base, const String& nest)");
Init();
}
Nestfo::Nestfo(const Nestfo& f)
: base(f.base)
{
LTIMING("Nestfo copy contructor");
nests <<= f.nests;
bvalid = nvalid = false;
nesti = f.nesti;
}
void Nestfo::Init()
{
bvalid = nvalid = false;
}
void Nestfo::Bases(int i, Vector<int>& g)
{
if(base.IsType(i)) {
const CppNest& n = base.nest[i];
for(int i = 0; i < n.GetCount(); i++) {
const CppItem& im = n[i];
if(im.IsType()) {
const char *q = im.qptype;
const char *b = q;
for(;;) {
if(*q == ';' || *q == '\0') {
if(b < q) {
int nq = base.Find(String(b, q));
if(nq >= 0)
g.Add(nq);
}
if(*q == '\0')
return;
q++;
b = q;
}
else
q++;
}
}
}
}
}
const Vector<String>& Nestfo::GetBases()
{
LTIMING("GetBases");
if(!bvalid) {
bvalid = true;
baselist.Clear();
if(nesti < 0)
return baselist;
Vector<int> b;
Index<int> bi;
Bases(nesti, b);
while(b.GetCount()) {
Vector<int> bb;
for(int i = 0; i < b.GetCount(); i++) {
int q = b[i];
if(bi.Find(q) < 0) {
bi.Add(q);
Bases(b[i], bb);
}
}
b = bb;
}
for(int i = 0; i < bi.GetCount(); i++)
baselist.Add(base.GetKey(bi[i]) + "::");
}
return baselist;
}
const Vector<String>& Nestfo::GetNests()
{
LTIMING("GetNests");
if(!nvalid) {
nvalid = true;
nests.Clear();
if(nesti < 0)
return nests;
String nn = base.GetKey(nesti);
while(nn.GetCount()) {
if(nn[0] == ':' && nn.GetCount() == 2) {
nests.Add(nn);
return nests;
}
nests.Add(nn + "::");
int q = nn.ReverseFind(':');
nn.Trim(max(0, q - 1));
}
nests.Add("::");
}
return nests;
}
String DoQualify(Nestfo& nf, const String& type);
String Qualify0(Nestfo& nf, const String& type)
bool Qualify0(Nestfo& nf, const String& type, String& qt)
{
const Vector<String>& nd = nf.GetNests();
if(type[0] == ':') {
LTIMING(":: test");
if(nf.base.Find(type) >= 0)
return type;
}
else
if(nd.GetCount()) {
LTIMING("First test");
String qt = nd[0] + type;
qt = nd[0] + type;
if(nf.base.Find(qt) >= 0)
return qt;
return true;
}
if(nf.GetNest() >= 0) {
int q = type.ReverseFind(':');
if(q >= 0) {
if(q > 0) {
LTIMING("Qualifying qualification");
Nestfo hnf(nf);
hnf.NoBases();
String qn = DoQualify(hnf, type.Mid(0, max(q - 1, 0)));
if(qn[0] != ':')
return type;
int nesti = nf.base.Find(qn);
if(nesti < 0)
return type;
String tp = type.Mid(q + 1);
Nestfo nnf(nf.base, nesti);
const Vector<String>& bs = nnf.GetBases();
for(int i = 0; i < bs.GetCount(); i++) {
String qt = bs[i] + tp;
if(nf.base.Find(qt) >= 0)
return qt;
String qn;
if(DoQualify(hnf, type.Mid(0, q - 1), qn)) {
int nesti = nf.base.Find(qn);
if(nesti >= 0) {
String tp = type.Mid(q + 1);
Nestfo nnf(nf.base, nesti);
const Vector<String>& bs = nnf.GetBases();
for(int i = 0; i < bs.GetCount(); i++) {
qt = bs[i] + tp;
if(nf.base.Find(qt) >= 0)
return true;
}
}
}
}
else {
LTIMING("Bases");
const Vector<String>& bs = nf.GetBases();
for(int i = 0; i < bs.GetCount(); i++) {
String qt = bs[i] + type;
qt = bs[i] + type;
if(nf.base.Find(qt) >= 0)
return qt;
return true;
}
}
}
if(type[0] != ':') {
LTIMING("Testing nests");
for(int i = 1; i < nd.GetCount(); i++) {
String qt = nd[i] + type;
qt = nd[i] + type;
if(nf.base.Find(qt) >= 0)
return qt;
return true;
}
}
return type;
int q = type.Find(':');
if(q < 0)
return false;
return Qualify0(nf, type.Mid(q + 1), qt);
}
bool DoQualify(Nestfo& nf, const String& type, String& qt)
{
LTIMING("Qualify");
int q = nf.cache.Find(type);
if(q >= 0) {
qt = nf.cache[q];
return true;
}
LTIMING("Qualify0");
if(!Qualify0(nf, type, qt))
return false;
nf.cache.Add(type, qt);
return true;
}
String DoQualify(Nestfo& nf, const String& type)
{
LTIMING("Qualify");
int q = nf.cache.Find(type);
if(q >= 0)
return nf.cache[q];
LTIMING("Qualify0");
String x = Qualify0(nf, type);
nf.cache.Add(type, x);
return x;
String qt;
return DoQualify(nf, type, qt) ? qt : type;
}
static String s_int("int");

View file

@ -67,7 +67,7 @@ public:
RichText Copy(int pos, int count) const;
FormatInfo GetFormatInfo(int pos, int count) const;
void ApplyFormatInfo(int pos, const RichText::FormatInfo& fi, int count);
void ApplyFormatInfo(int pos, const FormatInfo& fi, int count);
void ReStyle(int pos, const Uuid& id);

View file

@ -222,7 +222,7 @@ RichText::FormatInfo RichText::GetFormatInfo(int pos, int count) const
return fi;
}
void RichText::ApplyFormatInfo(int pos, const RichText::FormatInfo& fi, int count)
void RichText::ApplyFormatInfo(int pos, const FormatInfo& fi, int count)
{
RichTxt& txt = GetUpdateText(pos);

View file

@ -10,10 +10,13 @@ void AssistEditor::Annotate(const String& filename)
CppItem& m = nest.item[k];
for(int p = 0; p < m.pos.GetCount(); p++) {
if(m.pos[p].file == fi) {
String coderef = base.GetKey(j) + "::" + nest.key[k];
String coderef = base.GetKey(j);
if(coderef.GetCount())
coderef << "::";
coderef << nest.key[k];
SetAnnotation(m.pos[p].line - 1,
GetRefLinks(coderef).GetCount() ? IdeImg::tpp_doc()
: IdeImg::tpp_pen,
: IdeImg::tpp_pen(),
coderef);
}
}
@ -76,7 +79,7 @@ void AssistEditor::SyncAnnotationPopup()
annotation_popup.Pick(result, GetRichTextStdScreenZoom());
}
else
annotation_popup.SetQTF("Not documented yet.&Click to document");
annotation_popup.SetQTF("[A1 [@b* " + DeQtf(coderef) + "]&Not documented yet - click to document");
Rect r = GetLineScreenRect(q);
int h = annotation_popup.GetHeight(580);
h = min(h, 550);

View file

@ -3,7 +3,7 @@
#define LTIMING(x) // RTIMING(x)
#define LLOG(x)
static const char s_dbver[] = "Assist++ 2.0";
static const char s_dbver[] = "Assist++ 2.2";
CppBase& BrowserBase()
{

View file

@ -331,13 +331,18 @@ void TopicEditor::InsertItem()
editor.Move(c);
}
String MakeCodeRef(const String& nest, const String& item)
{
if(nest.GetCount())
return nest + "::" + item;
return item;
}
void TopicEditor::FixTopic()
{
String nest;
if(!EditText(nest, "Fix topic", "Nest"))
return;
if(nest[0] != ':')
nest = "::" + nest;
CppBase& base = BrowserBase();
int q = base.Find(nest);
if(q < 0) {
@ -356,7 +361,7 @@ void TopicEditor::FixTopic()
nat << "static ";
nat << m.natural;
natural.Add(nat);
link.Add(nest + "::" + n.key[i]);
link.Add(MakeCodeRef(nest, n.key[i]));
}
RichText result;
const RichText& txt = editor.Get();