Hello,
I notice that readln from std.stdio has '\n' as the default line
terminator. What about multiple line terminators in UTF-8 being
used in one input file, such as '\n', NEL, LS, PS? And in Windows
"\r\n" is a line terminator, and what if NEL, LS, PS exist in a
Windows UTF-8 text file as
On Wednesday, 28 September 2022 at 21:17:16 UTC, rassoc wrote:
On 9/28/22 21:36, NonNull via Digitalmars-d-learn wrote:
[...]
If you have structured data, you can use byRecord [1] to read
the important parts right into a tuple.
[...]
Thanks --- very helpful.
I am linking to a C project with some C already automatically
translated into D including the C main function `int main(int
argc, char** argv){/* ... */}` which I wanted to call from a D
main function in a new module. But then I found that the former C
main in D will not compile! ldc2 complains
On Sunday, 30 October 2022 at 16:31:45 UTC, Imperatorn wrote:
You should not have multiple mains. Rename it and call it
Doesn't answer my questions. I wasn't asking for practical, moral
or esthetic advice.
On Sunday, 30 October 2022 at 17:41:07 UTC, Imperatorn wrote:
On Sunday, 30 October 2022 at 17:29:25 UTC, NonNull wrote:
On Sunday, 30 October 2022 at 16:31:45 UTC, Imperatorn wrote:
You should not have multiple mains. Rename it and call it
Doesn't answer my questions. I wasn't asking for pra
On Sunday, 30 October 2022 at 18:24:22 UTC, Adam D Ruppe wrote:
it prolly just to keep newbs from making confusing mistakes and
getting weird behavior at startup. If there's two mains, which
one is the expected entry? Perhaps it could just be the one
that matches the permitted signature, and if
Hello, a low level question about Windows internals and D
interacting with .NET at a low level.
I just made an experimental native .lib (static library) with
MS's C++ compiler, providing a C API for D to link to. The .lib
contains one module compiled with the /CLR option which provides
some f
Hello, using dmd 2.100.2 and ldc2 1.30.0, compiling to 64-bits,
Windows 10.
pragma(linkerDirective,_) strips double quotation marks,
so how can a linker command line like
/LIBPATH:"Path/containing spaces/to/needed/libs"
be passed on to the linker via this pragma? Is this a bug?
Note: the lib
On Sunday, 27 November 2022 at 17:37:50 UTC, kinke wrote:
For LDC, you shouldn't need any double quotes, the compiler
quotes the linker flag if it contains spaces.
Didn't work for me with LDC:
This, which works at the command line with ```-L=```:
```enum LIBPATH = `/LIBPATH:"C:\Program Files
On Sunday, 27 November 2022 at 17:37:50 UTC, kinke wrote:
For LDC, you shouldn't need any double quotes, the compiler
quotes the linker flag if it contains spaces.
In fact I cannot find any way (multiple double quotes, escaped
double quotes, different combinations of these) to get any double
On Monday, 28 November 2022 at 14:41:01 UTC, Adam D Ruppe wrote:
This is the Microsoft doc page for the feature the pragma uses:
https://learn.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp?source=recommendations&view=msvc-170#linker
It looks like they actually removed some options in the r
On Sunday, 27 November 2022 at 17:26:37 UTC, NonNull wrote:
I worked around this by setting a LIB environment variable
containing the extra path I needed, so I didn't need the
pragma. But this only worked for ldc2; dmd still complained it
cannot find the necessary, ignoring the LIB environment
On Saturday, 26 November 2022 at 23:36:13 UTC, NonNull wrote:
In the CLR module I have a static variable that can contain a
reference to a .NET object. I need that variable to be thread
local. I achieved this by prefixing its declaration with
[System::ThreadStaticAttribute]. But this is thread
I want a way to default initialize a class variable to a default
object (e.g. by wrapping it in a struct, because initialization
to null cannot be changed directly). Such a default object is of
course not available at compile time which seems to make this
impossible. Can this be done in some wa
On Saturday, 15 April 2023 at 14:17:19 UTC, Vijay Nayar wrote:
I believe if you do initialization at the class declaration
level, then every instance of the class shares the same
instance, e.g.:
```
class Var {}
class MyClass {
Var var = new Var();
}
void main() {
MyClass c1 = new MyClas
On Saturday, 15 April 2023 at 15:47:40 UTC, Steven Schveighoffer
wrote:
You can construct objects at compile time.
If I understand your question properly:
```d
struct Wrapper
{
Object x = new Object();
alias x this;
}
void foo(Object o)
{
assert(o !is null);
}
void main()
{
Wrappe
I am defining a new value type (small struct) from some old value
types that are already `SumType`s.
So I want to have some `SumType`s as some of the alternative
types in another `SumType`.
How how efficient this is, including space efficient?
On Monday, 22 January 2024 at 16:35:39 UTC, ryuukk_ wrote:
On Monday, 22 January 2024 at 16:16:56 UTC, NonNull wrote:
I am defining a new value type (small struct) from some old
value types that are already `SumType`s.
So I want to have some `SumType`s as some of the alternative
types in anot
On Monday, 22 January 2024 at 21:36:47 UTC, Paul Backus wrote:
SumType does not do this automatically (because sometimes you
might want to keep the inner SumTypes separate), but you can do
it yourself like this:
alias A = SumType!(X, Y);
alias B = SumType!(Z, W);
alias C = SumType!
I am creating a specialized bit pattern (secretly represented as
a uint) as a struct S, but want to avoid `alias this` to maintain
encapsulation excepting where I overtly say. Specifically, I want
to avoid making arithmetic and inequalities available for S.
I have written opEquals to compare a
Perhaps I posted this to the wrong forum.
Help needed.
https://forum.dlang.org/post/pdqfquklkhambfccg...@forum.dlang.org
Disambiguate how ?
```
import std.string, std.array;
auto s = appender!string;
// ...
auto a = s.lineSplitter;
```
Error: template std.string.lineSplitter cannot deduce function
from argument types !()(Appender!string), candidates are:
std.string.lineSplitter(Flag keepTe
On Wednesday, 28 August 2019 at 15:56:55 UTC, Anonymouse wrote:
On Wednesday, 28 August 2019 at 15:52:18 UTC, NonNull wrote:
Disambiguate how ?
```
import std.string, std.array;
auto s = appender!string;
// ...
auto a = s.lineSplitter;
```
auto a = s.data.lineSplitter;
O
Hello,
I want to become fluent in the use of functional programming
techniques in D (as well as the use of ranges) using
std.functional (and std.algorithm and whatever else is relevant).
Is there anything out there that isn't just module documentation
that covers the full scope of this?
Greetings, Java seems to be almost a subset of D in various ways.
Has there been any work done to automatically translate Java
source into D?
Hello,
I have a large project written in C99 handed to me that 32-bit
builds in Windows with the mingw32 compiler that comes with
msys2. I'm working on 64-bit Windows 10.
Need to solve some nasty problems and move the build to 64 bits
using the mingw64 compiler that comes with msys2.
Want
On Wednesday, 20 May 2020 at 19:25:27 UTC, kinke wrote:
On Wednesday, 20 May 2020 at 18:53:01 UTC, NonNull wrote:
Which D compiler should be used to be ABI compatible with
mingw32? And which to be ABI compatible with mingw64?
The natural choice for coupling mingw[64]-gcc would be GDC.
Especia
On Wednesday, 20 May 2020 at 23:10:12 UTC, IGotD- wrote:
On Wednesday, 20 May 2020 at 23:08:53 UTC, IGotD- wrote:
On Wednesday, 20 May 2020 at 21:37:23 UTC, kinke wrote:
You're welcome. If you do come across an ABI issue, make sure
to file an LDC issue. While I have no interest in MinGW, I
w
Want
mixin mytemplate!("foo", .);
to be able to declare names dependent upon the text foo in the
context it is used.
For example declaring
enum x_foo = ;
blah foo_value = ;
.
.
.
.
Is it po
On Saturday, 27 June 2020 at 21:23:10 UTC, Adam D. Ruppe wrote:
On Saturday, 27 June 2020 at 21:10:59 UTC, NonNull wrote:
Is it possible to use a template to declare something whose
name is computed at compile time?
You'd have to string mixin the contents inside the mixin
template.
Worked!
Using gdc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Please criticize:
struct refer(T) {
T* ptr;
this(ref T x) { ptr = &x; }
ref T _() { return *ptr; }
alias _ this;
string toString() { import std.conv; return to!string(*ptr); }
}
This will make a reference variable (simulation). [ toString(
On Sunday, 28 June 2020 at 20:59:59 UTC, NonNull wrote:
Using gdc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Please criticize:
struct refer(T) {
T* ptr;
this(ref T x) { ptr = &x; }
ref T _() { return *ptr; }
alias _ this;
string toString() { import std.conv; return to!string(*ptr);
}
}
Th
On Sunday, 28 June 2020 at 21:01:36 UTC, NonNull wrote:
On Sunday, 28 June 2020 at 20:59:59 UTC, NonNull wrote:
Using gdc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Please criticize:
struct refer(T) {
T* ptr;
this(ref T x) { ptr = &x; }
ref T _() { return *ptr; }
alias _ this;
string toStrin
I have inherited an open source C project that assumes that the
size of a long and the size of a pointer are the same, and I have
translated it into very similar D just like
https://dlang.org/blog/2018/06/11/dasbetterc-converting-make-c-to-d/
D has the size of long fixed at 64 bits, so a point
On Saturday, 17 October 2020 at 14:56:33 UTC, Basile B. wrote:
On Saturday, 17 October 2020 at 14:50:47 UTC, NonNull wrote:
I have inherited an open source C project that assumes that
the size of a long and the size of a pointer are the same, and
I have translated it into very similar D just li
On Saturday, 17 October 2020 at 14:56:35 UTC, Adam D. Ruppe wrote:
On Saturday, 17 October 2020 at 14:50:47 UTC, NonNull wrote:
I have inherited an open source C project that assumes that
the size of a long and the size of a pointer are the same
static assert(long.sizeof == void*.sizeof);
Th
On Saturday, 17 October 2020 at 15:03:29 UTC, Dennis wrote:
If you want to exactly match the original C code's semantics, I
suggest translating (unsigned) long with c_long or c_ulong. You
can import them here:
```
import core.stdc.config: c_long, c_ulong;
```
Then you could add this:
```
stati
On Friday, 16 October 2020 at 21:28:18 UTC, Steven Schveighoffer
wrote:
Inner functions have benefits:
1. They are only accessible inside the function. Which means
you only have to worry about correctness while INSIDE that
function.
2. inner functions have access to the outer function's stack
For automatically generated code of some low level kinds it is
convenient to have "computed goto" like this:
https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
and D does not have this.
A switch could be used to simulate it. But this would lead to
what could have been a single jump bein
On Wednesday, 25 November 2020 at 19:04:45 UTC, H. S. Teoh wrote:
FWIW, D's switch statement is flexible enough to directly write
Duff's device.
How good is optimization in ldc2, gdc, dmd at compiling
chained jumps into one jump each time?
I'm pretty sure ldc2 and gdc will optimize away any
On Wednesday, 25 November 2020 at 18:57:35 UTC, Paul Backus wrote:
On Wednesday, 25 November 2020 at 18:44:52 UTC, NonNull wrote:
How good is optimization in ldc2, gdc, dmd at compiling
chained jumps into one jump each time?
The easiest way to find the answer to a question like this is
to use
On Thursday, 26 November 2020 at 04:42:08 UTC, Dukc wrote:
On Wednesday, 25 November 2020 at 18:44:52 UTC, NonNull wrote:
Is there a good way to simulate computed goto in D?
I haven't used assembly myself, but it's possible that you can
define a mixin that does this, using inline assembly.
On Friday, 5 March 2021 at 22:59:09 UTC, H. S. Teoh wrote:
On Fri, Mar 05, 2021 at 10:01:37PM +, Imperatorn via
Digitalmars-d-learn wrote:
Basically none of the examples on here compile:
https://dlang.org/library/std/conv/parse.html
Any idea why?
File a bug.
T
Sad that there's such a
Hello,
Some documents/books seem to be out of date. If an intuitive
person competent in several other programming languages and in
abstract reasoning wanted to take the fastest route to learn
pretty much the whole of D as it stands now, having already
learned and used a core of the language
I'd like to understand how any D type is represented as a string
by the name mangling done by the compilers.
Does this always have the desirable property that different types
have different mangled names, so that a type is faithfully
represented by its mangled string incorporated into a symbol
On Tuesday, 3 August 2021 at 17:01:38 UTC, Mike Parker wrote:
On Tuesday, 3 August 2021 at 16:43:52 UTC, NonNull wrote:
how does it work for recursive types like a struct containing
a pointer to a struct of the same type
A struct `S` with a member of type `S*` is still just a struct
`S`. The
On Tuesday, 3 August 2021 at 17:14:42 UTC, Ali Çehreli wrote:
On 8/3/21 9:43 AM, NonNull wrote:
I'd like to understand how any D type is represented as a
string by the name mangling done by the compilers.
Related article that mentions .mangleof, a property of all
symbols:
https://dlang.or
On Wednesday, 4 August 2021 at 02:01:54 UTC, Mathias LANG wrote:
Yes, because D is a nominal type system, using the FQN of the
symbol is enough.
[...]
Mangling is altered by `extern(LANG)` (where LANG is one of
`C`, `C++`, `Objective-C`, `System`, `D`), or `pragma(mangle)`.
All useful infor
I am making a plug-in development system for a high performance
Linux application that already exists and is written in C and
will not be modified for this purpose. It is already has an API
for plugins written in C. A plug-in simply makes new functions
(e.g. manipulating text and numbers) avail
On Sunday, 12 September 2021 at 16:23:13 UTC, frame wrote:
Shouldn't the runtime not already be shared on Linux? The
`Runtime.loadLibrary` specs say
`If the library contains a D runtime it will be integrated with
the current runtime.`
This should be true for the GC too. At least the memory is
On Sunday, 12 September 2021 at 18:56:50 UTC, Ali Çehreli wrote:
All initialization functions of the plugins were called
automatically in my D test environment and all plugins were
usable. The trouble started when the main library was being
used in a foreign environment (something like Python l
On Sunday, 12 September 2021 at 18:56:50 UTC, Ali Çehreli wrote:
All initialization functions of the plugins were called
automatically in my D test environment and all plugins were
usable. The trouble started when the main library was being
used in a foreign environment (something like Python l
Which operators cannot be overloaded and why not?
On Monday, 13 September 2021 at 14:42:42 UTC, jfondren wrote:
On Monday, 13 September 2021 at 14:33:03 UTC, user1234 wrote:
- condition al expression ` cond ? exp : exp `
And many other boolean operators, unary !, binary && and ||
https://dlang.org/spec/operatoroverloading.html lists all the
On Monday, 13 September 2021 at 16:12:34 UTC, H. S. Teoh wrote:
On Mon, Sep 13, 2021 at 02:12:36PM +, NonNull via
Digitalmars-d-learn wrote:
Which operators cannot be overloaded and why not?
Others have already given the list, so I won't repeat that.
I didn't see unary &
How do I write the type of a function so as to alias it, and use
that in an extern(C) declaration?
For example, how do I write the type of an external function
int main2(int argc, char** argv) {
//
}
?
This is not
int function(int, char**)
because this is the type of a function pointer
56 matches
Mail list logo