public string get_type_string(grammar.MemberType memberType, SymbolTable symbolTable, bool isExpert) { const string StorageListFormat = "{0}*"; var typeName = GetStorageType(memberType, symbolTable); var isList = (memberType.Kind() & grammar.MemberKind.List) != 0; var format = StorageListFormat; return(GetTypeString(format, typeName, isList)); }
private string GetStorageType(grammar.MemberType memberType, SymbolTable symbolTable) { var type = memberType.Kind() & ~grammar.MemberKind.List; switch (type) { case grammar.MemberKind.blobType: return("char *"); case grammar.MemberKind.enumType: goto case grammar.MemberKind.structType; case grammar.MemberKind.f32Type: return("float "); case grammar.MemberKind.f64Type: return("double "); case grammar.MemberKind.i32Type: return("signed long "); case grammar.MemberKind.i64Type: return("signed long long "); case grammar.MemberKind.stringType: return("char *"); case grammar.MemberKind.structType: { var fullName = memberType.TypeName(); var real_type = symbolTable.Get(fullName); var type_name = real_type.FullName(); type_name += " *"; return(type_name); } case grammar.MemberKind.timespanType: case grammar.MemberKind.timestampType: goto case grammar.MemberKind.u64Type; case grammar.MemberKind.u32Type: return("unsigned long "); case grammar.MemberKind.u64Type: return("unsigned long long "); } throw new Exception("NEED TYPED EXCEPTION HERE"); }
private string GetExportType(grammar.MemberType memberType, SymbolTable symbolTable) { var type = memberType.Kind() & ~grammar.MemberKind.List; switch (type) { case grammar.MemberKind.blobType: return("byte[]"); case grammar.MemberKind.enumType: goto case grammar.MemberKind.structType; case grammar.MemberKind.f32Type: return("float"); case grammar.MemberKind.f64Type: return("double"); case grammar.MemberKind.i32Type: return("int"); case grammar.MemberKind.i64Type: return("long"); case grammar.MemberKind.stringType: return("string"); case grammar.MemberKind.structType: { var full_name = memberType.TypeName(); var real_type = symbolTable.Get(full_name); return(real_type.FullName()); } case grammar.MemberKind.timespanType: return("System.TimeSpan"); case grammar.MemberKind.timestampType: return("System.DateTime"); case grammar.MemberKind.u32Type: return("uint"); case grammar.MemberKind.u64Type: return("ulong"); } throw new Exception("NEED TYPED EXCEPTION HERE"); }
public string GetTypeString(grammar.MemberType memberType, SymbolTable symbolTable, bool isExported) { const string export_list_format = "System.Collections.Generic.IReadOnlyList<{0}>"; const string storage_list_format = "{0}[]"; var type_name = (isExported) ? GetExportType(memberType, symbolTable) : GetStorageTypeName(memberType, symbolTable); var is_list = (memberType.Kind() & grammar.MemberKind.List) != 0; var format = (isExported) ? export_list_format : storage_list_format; return(GetTypeString(format, type_name, is_list)); }