On Friday, 23 March 2018 at 22:43:47 UTC, Xavier Bigand wrote:
I am trying to initialize an global immutable associative array
of structs, but it doesn't compile.
I am getting the following error message : "Error: not an
associative array initializer".
As I really need to store my data for a compile time purpose if
we can't do that with AA, I'll use arrays instead.
Here is my code :
struct EntryPoint
{
string moduleName;
string functionName;
bool beforeForwarding = false;
}
immutable EntryPoint[string] entryPoints = [
"wglDescribePixelFormat":
{moduleName:"opengl32.forward_initialization",
functionName:"wglDescribePixelFormat"}
];
Try this:
https://run.dlang.io/is/b7VQVB
tl;dr: you can instantiate immutable data in the module
constructors.
---
struct EntryPoint
{
string moduleName;
string functionName;
bool beforeForwarding = false;
}
static immutable EntryPoint[string] entryPoints;
shared static this()
{
EntryPoint p = {moduleName:"opengl32.forward_initialization",
functionName:"wglDescribePixelFormat"};
entryPoints = ["wglDescribePixelFormat" : p];
}
void main()
{
import std.stdio;
entryPoints.writeln;
}
---