mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
Changed scope information in coderefs
git-svn-id: svn://ultimatepp.org/upp/trunk@508 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
18ae9f8362
commit
c0ea85b654
13 changed files with 388 additions and 359 deletions
|
|
@ -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.&]
|
||||
|
|
|
|||
|
|
@ -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; ]
|
||||
|
|
@ -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.&]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
123
uppsrc/CppBase/Nestfo.cpp
Normal 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
|
||||
|
|
@ -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]));
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue