I'm trying to create an associative array where the keys will be a "string" type and the values will be function pointers. I'm using a custom type is called "file_struct" and for anyone that wants to try specifically with this type, the definition is the following:
struct file_struct {
FILE* file;
const char* name;
size_t ln, cn, size;
str identifier, type_buffer, type_buffer_tmp;
void inc_ln() {
this.cn = 0;
this.ln++;
}
}
The function pointers will point to a function that doesn't return anything and takes only one parameter that is of my custom "file_struct" type. More specifically, the signature is the following:
void function(ref file_struct)
So with that been said, I tried to create an associative array with the following code:
// Suppose that the function exists in another file
void parse_let(ref file_struct file) {}
immutable void function(ref file_struct)[string] common_identifiers = [
"let" : &parse_let,
// "macro" : &parse_macro,
];
When I try to compile it (I can only compile with "ldc2" because my code contains gcc-style inline assembly), I get the following error message:
main.d(12,71): Error: expression `["let":& parse_let]` is not a constant
Of course the file name and the number of line is relative to me case. Any ideas?