private static string ConvertCppPrimitive(CppPrimitiveType primitive) { switch (primitive.Kind) { case CppPrimitiveKind.Bool: return("bool"); case CppPrimitiveKind.Char: return("char"); case CppPrimitiveKind.Double: return("double"); case CppPrimitiveKind.Float: return("float"); case CppPrimitiveKind.Int: return("int"); case CppPrimitiveKind.Short: return("short"); case CppPrimitiveKind.UnsignedChar: return("byte"); case CppPrimitiveKind.UnsignedInt: return("uint"); case CppPrimitiveKind.UnsignedShort: return("ushort"); default: throw new Exception($"Unsupported type [{primitive.Kind}] on [{primitive}]"); } }
private void RegisterPrimitiveType(CppPrimitiveType primitive, SyntaxKind syntax) { var name = primitive.GetDisplayName(); var typeInfo = new TypeInfo(name, primitive, PredefinedType(Token(syntax))); _nativeMap.Add(name, typeInfo); }
private static string GetCsTypeName(CppPrimitiveType primitiveType, bool isPointer) { string result = string.Empty; switch (primitiveType.Kind) { case CppPrimitiveKind.Void: result = "void"; break; case CppPrimitiveKind.Bool: result = "bool"; break; case CppPrimitiveKind.Char: result = "char"; break; case CppPrimitiveKind.Short: result = "short"; break; case CppPrimitiveKind.Int: result = "int"; break; case CppPrimitiveKind.UnsignedShort: result = "ushort"; break; case CppPrimitiveKind.UnsignedInt: result = "uint"; break; case CppPrimitiveKind.Float: result = "float"; break; case CppPrimitiveKind.Double: result = "double"; break; case CppPrimitiveKind.UnsignedChar: case CppPrimitiveKind.LongLong: case CppPrimitiveKind.UnsignedLongLong: case CppPrimitiveKind.LongDouble: case CppPrimitiveKind.WChar: default: break; } if (isPointer) { result += "*"; } return(result); }
private static string GetCsTypeName(CppPrimitiveType primitiveType, bool isPointer) { switch (primitiveType.Kind) { case CppPrimitiveKind.Void: return(isPointer ? "void*" : "void"); case CppPrimitiveKind.Char: return(isPointer ? "byte*" : "byte"); case CppPrimitiveKind.Bool: break; case CppPrimitiveKind.WChar: break; case CppPrimitiveKind.Short: return(isPointer ? "short*" : "short"); case CppPrimitiveKind.Int: return(isPointer ? "int*" : "int"); case CppPrimitiveKind.LongLong: break; case CppPrimitiveKind.UnsignedChar: break; case CppPrimitiveKind.UnsignedShort: return(isPointer ? "ushort*" : "ushort"); case CppPrimitiveKind.UnsignedInt: return(isPointer ? "uint*" : "uint"); case CppPrimitiveKind.UnsignedLongLong: break; case CppPrimitiveKind.Float: return(isPointer ? "float*" : "float"); case CppPrimitiveKind.Double: return(isPointer ? "double*" : "double"); case CppPrimitiveKind.LongDouble: break; default: return(string.Empty); } return(string.Empty); }
public static CSharpPrimitiveType GetCSharpPrimitive(CppPrimitiveType cppType) { switch (cppType.Kind) { case CppPrimitiveKind.Void: return(CSharpPrimitiveType.Void()); case CppPrimitiveKind.Bool: return(CSharpPrimitiveType.Bool()); case CppPrimitiveKind.WChar: return(CSharpPrimitiveType.Char()); case CppPrimitiveKind.Char: return(CSharpPrimitiveType.SByte()); case CppPrimitiveKind.Short: return(CSharpPrimitiveType.Short()); case CppPrimitiveKind.Int: return(CSharpPrimitiveType.Int()); case CppPrimitiveKind.LongLong: return(CSharpPrimitiveType.Long()); case CppPrimitiveKind.UnsignedChar: return(CSharpPrimitiveType.Byte()); case CppPrimitiveKind.UnsignedShort: return(CSharpPrimitiveType.UShort()); case CppPrimitiveKind.UnsignedInt: return(CSharpPrimitiveType.UInt()); case CppPrimitiveKind.UnsignedLongLong: return(CSharpPrimitiveType.ULong()); case CppPrimitiveKind.Float: return(CSharpPrimitiveType.Float()); case CppPrimitiveKind.Double: return(CSharpPrimitiveType.Double()); case CppPrimitiveKind.LongDouble: return(CSharpPrimitiveType.Double()); default: throw new ArgumentOutOfRangeException($"The kind {cppType.Kind} is not supported"); } }
public static string GetVType(this CppPrimitiveType self) { switch (self.Kind) { case CppPrimitiveKind.Bool: return("bool"); case CppPrimitiveKind.Char: return("byte"); case CppPrimitiveKind.Double: return("f64"); case CppPrimitiveKind.Float: return("f32"); case CppPrimitiveKind.Int: return("int"); case CppPrimitiveKind.LongDouble: throw new System.NotImplementedException(); case CppPrimitiveKind.LongLong: return("i64"); case CppPrimitiveKind.Short: return("i16"); case CppPrimitiveKind.UnsignedChar: return("byte"); case CppPrimitiveKind.UnsignedInt: return("u32"); case CppPrimitiveKind.UnsignedLongLong: return("u64"); case CppPrimitiveKind.UnsignedShort: return("u16"); case CppPrimitiveKind.Void: return("void"); case CppPrimitiveKind.WChar: return("bool"); } throw new System.NotImplementedException(); }
public void TestSimple() { ParseAssert(@" using Type_void = void; using Type_bool = bool; using Type_wchar = wchar_t ; using Type_char = char; using Type_unsigned_char = unsigned char; using Type_short = short; using Type_unsigned_short = unsigned short ; using Type_int = int; using Type_unsigned_int = unsigned int ; using Type_long_long = long long; using Type_unsigned_long_long = unsigned long long ; using Type_float = float; using Type_double = double; ", compilation => { Assert.False(compilation.HasErrors); Assert.AreEqual(13, compilation.Typedefs.Count); var primitives = new CppPrimitiveType[] { CppPrimitiveType.Void, CppPrimitiveType.Bool, CppPrimitiveType.WChar, CppPrimitiveType.Char, CppPrimitiveType.UnsignedChar, CppPrimitiveType.Short, CppPrimitiveType.UnsignedShort, CppPrimitiveType.Int, CppPrimitiveType.UnsignedInt, CppPrimitiveType.LongLong, CppPrimitiveType.UnsignedLongLong, CppPrimitiveType.Float, CppPrimitiveType.Double, }; for (int i = 0; i < primitives.Length; i++) { var typedef = compilation.Typedefs[i]; var expectedType = primitives[i]; Assert.AreEqual(expectedType, typedef.ElementType); Assert.AreEqual("Type_" + expectedType.ToString().Replace(" ", "_"), typedef.Name); } } ); }
private void RegisterStandardTypedef(string nativeName, CppPrimitiveType primitive, SyntaxKind syntax) { var typeInfo = new TypeInfo(nativeName, new CppTypedef(nativeName, primitive), PredefinedType(Token(syntax)), true); _nativeMap.Add(nativeName, typeInfo); }
private void RegisterStandardTypedef(string nativeName, CppPrimitiveType primitive, string managedName) { var typeInfo = new TypeInfo(nativeName, new CppTypedef(nativeName, primitive), IdentifierName(managedName), true); _nativeMap.Add(nativeName, typeInfo); }