countUntil with negated pre-defined predicate?

Harry Gillanders ayjsy47yyz8 at temp.mailbox.org
Sun May 3 21:59:54 UTC 2020


On Sunday, 3 May 2020 at 12:19:30 UTC, Robert M. Münch wrote:
>
> I'm doing some cursor-movement in a text-field. So, need to
> find out where the cursor should be positioned.
>

The Unicode Consortium has some documentation related to 
segmenting text that
you may find useful (notably, section 3): 
https://unicode.org/reports/tr29

>> 	size_t drawableCharacterCount (CodePoints) (auto ref 
>> CodePoints codePoints)
>
> What does this line do?

I'm unsure as to which part is unclear, but an `auto ref` 
parameter[1] in a
function template is essentially a parameter that receives the
argument by reference if the templated type is a value-type,
whereas if the templated type is a reference-type, it receives 
the argument by value.

An explanation as code:

	struct SomeValueType
	{}

	class SomeReferenceType
	{}

	void theFunction (Type) (auto ref Type thing)
	{}


	/+ theFunction!SomeValueType expands to: +/
	void theFunction (ref SomeValueType thing)
	{}

	/+ theFunction!SomeReferenceType expands to: +/
	void theFunction (SomeReferenceType thing)
	{}

One advantage of auto ref parameters is that they accept literals 
as arguments,
unlike a regular `ref` parameter.

[1]: https://dlang.org/spec/template.html#auto-ref-parameters




More information about the Digitalmars-d-learn mailing list