Re: Call C variadic function from D variadic function

2020-09-13 Thread Steven Schveighoffer via Digitalmars-d-learn
On 9/13/20 2:35 PM, Paul Backus wrote: On Sunday, 13 September 2020 at 17:23:42 UTC, Steven Schveighoffer wrote: On 9/13/20 12:55 PM, James Blachly wrote: ``` /// Add a single line to an existing header auto addLine(T...)(RecordType type, T kvargs) if(kvargs.length > 0 && isSome

Re: Call C variadic function from D variadic function

2020-09-13 Thread mw via Digitalmars-d-learn
Just a observation, from the questions & answers in this thread and mine[1]: I think meta-programming in D is somehow like C++, it starts becoming a baroque language. The language is complex enough that there may be ways to get things done, but it's just quite difficult for ordinary users to fi

Re: Call C variadic function from D variadic function

2020-09-13 Thread James Blachly via Digitalmars-d-learn
On 9/13/20 2:35 PM, ag0aep6g wrote: Easy peasy:     import std.meta: Repeat;     Repeat!(kvargs.length, const(char)*) zs;     foreach (i, ref z; zs) z = toStringz(kvargs[i]);     return sam_hdr_add_line(this.h, type.ptr, zs, null); Great, thank you! By the way, `kvargs` is

Re: Call C variadic function from D variadic function

2020-09-13 Thread ag0aep6g via Digitalmars-d-learn
```     /// Add a single line to an existing header     auto addLine(T...)(RecordType type, T kvargs)     if(kvargs.length > 0 && isSomeString!(T[0]))     {     static assert (kvargs.length %2 == 0);   // K-V pairs => even number of variadic args     string varargMagic(size_t len)

Re: Call C variadic function from D variadic function

2020-09-13 Thread Paul Backus via Digitalmars-d-learn
On Sunday, 13 September 2020 at 17:23:42 UTC, Steven Schveighoffer wrote: On 9/13/20 12:55 PM, James Blachly wrote: ```     /// Add a single line to an existing header     auto addLine(T...)(RecordType type, T kvargs)     if(kvargs.length > 0 && isSomeString!(T[0]))     {     static as

Re: Call C variadic function from D variadic function

2020-09-13 Thread Steven Schveighoffer via Digitalmars-d-learn
On 9/13/20 12:55 PM, James Blachly wrote: Summary: Can a typesafe D variadic function, or D variadic template pass its parameters to a C variadic function? Background: I maintain a library binding [0] to htslib, a high-performance and very widely used C library for high-throughput sequencing

Call C variadic function from D variadic function

2020-09-13 Thread James Blachly via Digitalmars-d-learn
Summary: Can a typesafe D variadic function, or D variadic template pass its parameters to a C variadic function? Background: I maintain a library binding [0] to htslib, a high-performance and very widely used C library for high-throughput sequencing (hts) data files. We use this internally a