1 module autowrap.csharp.common; 2 3 public struct LibraryName { 4 string value; 5 } 6 7 public struct RootNamespace { 8 string value; 9 } 10 11 package string getInterfaceTypeString(T)() { 12 import std.datetime : DateTime, SysTime; 13 import std.traits : fullyQualifiedName; 14 15 if (is(T == DateTime) || is(T == SysTime)) { 16 return fullyQualifiedName!T; 17 } 18 19 return fullyQualifiedName!T; 20 } 21 22 package string getDLangInterfaceName(string moduleName, string aggName, string funcName) { 23 import std.algorithm : map; 24 import std.string : split; 25 import std.array : join; 26 string name = "autowrap_csharp_"; 27 name ~= moduleName.split(".").map!camelToPascalCase.join("_"); 28 29 if (aggName != string.init) { 30 name ~= camelToPascalCase(aggName) ~ "_"; 31 } 32 name ~= camelToPascalCase(funcName); 33 return name; 34 } 35 36 package string getDLangInterfaceName(string fqn, string funcName) { 37 import std.algorithm : map; 38 import std.string : split; 39 import std.array : join; 40 string name = "autowrap_csharp_"; 41 42 name ~= fqn.split(".").map!camelToPascalCase.join("_"); 43 name ~= camelToPascalCase(funcName); 44 return name; 45 } 46 47 package string getDLangSliceInterfaceName(string fqn, string funcName) { 48 import std.algorithm : map; 49 import std.string : split; 50 import std.array : join; 51 string name = "autowrap_csharp_slice_"; 52 53 name ~= fqn.split(".").map!camelToPascalCase.join("_"); 54 name ~= camelToPascalCase(funcName); 55 return name; 56 } 57 58 public string camelToPascalCase(string camel) { 59 import std.uni : toUpper; 60 import std.conv : to; 61 return to!string(camel[0].toUpper) ~ camel[1..$]; 62 }