Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.tocsym

Convert a D symbol to a symbol the linker understands (with mangled name).
Authors:

Source tocsym.d

Symbol* toSymbolX(Dsymbol ds, const(char)* prefix, int sclass, type* t, const(char)* suffix);
Helper
Symbol* toSymbol(Dsymbol s);
Symbol* toImport(Symbol* sym);
Symbol* toImport(Dsymbol ds);
Generate import symbol from symbol.
Symbol* toThunkSymbol(FuncDeclaration fd, int offset);
Thunks adjust the incoming 'this' pointer by 'offset'.
Classsym* fake_classsym(Identifier id);
Fake a struct symbol.
Symbol* toVtblSymbol(ClassDeclaration cd);
This is accessible via the ClassData, but since it is frequently needed directly (like for rtti comparisons), make it directly accessible.
Symbol* toInitializer(AggregateDeclaration ad);
Create the static initializer for the struct/class.
Symbol* aaGetSymbol(TypeAArray taa, const(char)* func, int flags);
Determine the right symbol to look up an associative array element.

Input flags 0 don't add value signature 1 add value signature

Symbol* toSymbol(StructLiteralExp sle);
Symbol* toSymbolCpp(ClassDeclaration cd);
For C++ class cd, generate an instance of _cpp_type_info_ptr and populate it with a pointer to the C++ type info.
Parameters:
ClassDeclaration cd C++ class
Returns:
symbol of instance of _cpp_type_info_ptr
Symbol* toSymbolCppTypeInfo(ClassDeclaration cd);
Generate Symbol of C++ type info for C++ class cd.
Parameters:
ClassDeclaration cd C++ class
Returns:
Symbol of cd's rtti type info