//***************************************************************************// // Nevet konvertál C# osztály névre. // //***************************************************************************// proc ConvertNameToCSharpClassName(name) return [name]; end proc //***************************************************************************// // C# kommentet gyárt egy sztringből. // //***************************************************************************// template ConvertDescriptionToCSharpSummary(description) [if ([description] == "")] [else] /// [replace([description], "", "\n /// ")] [end if] end template //***************************************************************************// // Visszaadja egy művelet visszatérési értékét a C# nyelv szintaktikájának // // megfelelően // //***************************************************************************// proc GetCSharpReturnTypeOfOperation(MOperation) if ([MOperation.returnType] == "") return "void"; else return GetCSharpType([MOperation.returnType]); end if end proc //***************************************************************************// // Visszaadja egy művelet paraméterlistáját a C# nyelv szintaktikájának és // // a saját jelölésbeli konvencióinknak megfelelően // //***************************************************************************// proc GetCSharpOperationParameters(MOperation) local ops; [ops] = ""; loop (MOperation -> OpPara; setDelim(""); setDelim(", ")) [ops] = [ops] delim() GetCSharpType([OpPara.type]) " " ToLower([OpPara.name]); end loop return [ops]; end proc proc GetCSharpTypeOfAttribute(MAttribute) return GetCSharpType([MAttribute.type]); end proc //***************************************************************************// // Visszadja a megadott típushoz tartozó C# tipust // //***************************************************************************// proc GetCSharpType(type) switch(ToLower([type])) case "string": return "string"; case "integer": return "int"; case "datetime": return "DateTime"; case "boolean": return "bool"; case "dictionaryitem": return "int /* DictionaryItem */"; //XXX case "binary": return "Byte[]"; case "float": return "double"; case "char": return "string"; case "longstring": return "string"; case "id": return "int"; case "guid": return "Guid"; end switch //return "object /* ERROR Ismeretlen tipus: " [type] " */"; return [type]; end proc //***************************************************************************// // Visszaadja a megadott típus alapértelmezett (kezdeti) értékét a C# nyelv // // szintaktikájának megfelelően // //***************************************************************************// proc GetCSharpDefaultValueOfType(type) switch(ToLower([type])) case "string": return "\"\""; case "integer": return "-1"; case "datetime": return "DateTime.Now /* XXX DateTime */";//XXX case "boolean": return "false"; case "dictionaryitem": return "-1 /* DictionaryItem */"; //XXX case "binary": return "null"; case "float": return "0"; case "char": return "\"\""; case "longstring": return "\"\""; case "id": return "-1"; case "guid": return "default(Guid)"; end switch return "null /* ERROR Ismeretlen tipus: " [type] " */"; end proc //***************************************************************************// // Visszaadja hogy DictionaryItem tipusu-e az adott attributum // // // //***************************************************************************// proc IsDictionaryItem(MAttribute) if (ToLower([MAttribute.type]) == "dictionaryitem") return _True(); else return _False(); end if end proc //***************************************************************************// // Visszaadja az adott DictionaryItem konkrét osztályának a nevét // // // //***************************************************************************// proc GetDictionaryItemClass(MAttribute) return [MAttribute.defaultValue]; end proc //***************************************************************************// // Visszaadja a megadott attribútum alapértelmezett (kezdeti) értékét a C# // // nyelv szintaktikájának megfelelően // //***************************************************************************// proc GetCSharpDefaultValueOfAttribute(MAttribute) if (IsAttributeRequired([MAttribute]) == _True()) else return "null"; end if if ([MAttribute.type] == "DictionaryItem") return GetCSharpDefaultValueOfType("ID"); end if if ([MAttribute.type] == "Char") //info = [MAttribute.defaultValue]; // teszt end if local result; [result] = [MAttribute.defaultValue]; if ([result] == "") [result] = GetCSharpDefaultValueOfType([MAttribute.type]); else switch (ToLower([MAttribute.type])) case "string": return "\"" [result] "\""; case "boolean": return ToLower([result]); case "longstring": return "\"" [result] "\""; case "char": //return "'" [result] "'"; return "\"" [result] "\""; end switch if (ToLower([MAttribute.type]) == "guid") if ([result] == "NEWID") return "Guid.NewGuid()"; else return "Guid.Parse(\"" [result] "\")"; end if end if end if return [result]; end proc //***************************************************************************// // Visszadja a megadott típushoz tartozó C# nullabletipust // //***************************************************************************// proc GetCSharpNullableType(type) switch(ToLower([type])) case "string": return "string"; case "integer": return "int?"; case "datetime": return "DateTime?"; case "boolean": return "bool?"; case "dictionaryitem": return "int? /* DictionaryItem */"; //XXX case "binary": return "Byte[]"; case "float": return "double?"; case "char": return "string"; case "longstring": return "string"; case "id": return "int?"; case "guid": return "Guid?"; end switch //return "object /* ERROR Ismeretlen tipus: " [type] " */"; return [type]; end proc