diff --git a/bindings/generate.py b/bindings/generate.py index de628b3..f2ce3c2 100755 --- a/bindings/generate.py +++ b/bindings/generate.py @@ -24,9 +24,6 @@ def map_type(clang_type: Type): if not decl.is_definition(): return "^void" - if pointee.kind == TypeKind.CHAR_S or pointee.kind == TypeKind.CHAR_U: - return "cstring" - if pointee.kind == TypeKind.FUNCTIONPROTO: arg_types = [] diff --git a/compiler/NubLang/Generation/CType.cs b/compiler/NubLang/Generation/CType.cs index d3d6984..9fe4287 100644 --- a/compiler/NubLang/Generation/CType.cs +++ b/compiler/NubLang/Generation/CType.cs @@ -18,7 +18,7 @@ public static class CType NubConstArrayType arr => CreateConstArrayType(arr, variableName, constArraysAsPointers), NubArrayType arr => CreateArrayType(arr, variableName), NubFuncType fn => CreateFuncType(fn, variableName), - NubStructType st => $"struct {st.Module}_{st.Name}" + (variableName != null ? $" {variableName}" : ""), + NubStructType st => $"struct {st.Module}_{st.Name}_{NameMangler.Mangle(st)}" + (variableName != null ? $" {variableName}" : ""), _ => throw new NotSupportedException($"C type generation not supported for: {type}") }; } diff --git a/compiler/NubLang/Generation/Generator.cs b/compiler/NubLang/Generation/Generator.cs index 7c34160..e7fc18e 100644 --- a/compiler/NubLang/Generation/Generator.cs +++ b/compiler/NubLang/Generation/Generator.cs @@ -29,11 +29,6 @@ public class Generator return externSymbol ?? $"{module}_{name}"; } - private static string StructName(string module, string name) - { - return $"{module}_{name}"; - } - public string Emit() { _writer.WriteLine(""" @@ -53,7 +48,7 @@ public class Generator foreach (var structType in _compilationUnit.ImportedStructTypes) { - _writer.WriteLine($"struct {StructName(structType.Module, structType.Name)}"); + _writer.WriteLine(CType.Create(structType)); _writer.WriteLine("{"); using (_writer.Indent()) { diff --git a/examples/raylib/generated/raylib.nub b/examples/raylib/generated/raylib.nub index 38a49c2..1f90db0 100644 --- a/examples/raylib/generated/raylib.nub +++ b/examples/raylib/generated/raylib.nub @@ -255,7 +255,7 @@ export struct FilePathList { capacity: u32 count: u32 - paths: ^cstring + paths: ^^i8 } export struct AutomationEvent { @@ -995,7 +995,7 @@ export enum NPatchLayout : u32 NPATCH_THREE_PATCH_VERTICAL = 1 NPATCH_THREE_PATCH_HORIZONTAL = 2 } -export extern "InitWindow" func InitWindow(width: i32, height: i32, title: cstring): void +export extern "InitWindow" func InitWindow(width: i32, height: i32, title: ^i8): void export extern "CloseWindow" func CloseWindow(): void export extern "WindowShouldClose" func WindowShouldClose(): bool export extern "IsWindowReady" func IsWindowReady(): bool @@ -1015,7 +1015,7 @@ export extern "MinimizeWindow" func MinimizeWindow(): void export extern "RestoreWindow" func RestoreWindow(): void export extern "SetWindowIcon" func SetWindowIcon(image: Image): void export extern "SetWindowIcons" func SetWindowIcons(images: ^Image, count: i32): void -export extern "SetWindowTitle" func SetWindowTitle(title: cstring): void +export extern "SetWindowTitle" func SetWindowTitle(title: ^i8): void export extern "SetWindowPosition" func SetWindowPosition(x: i32, y: i32): void export extern "SetWindowMonitor" func SetWindowMonitor(monitor: i32): void export extern "SetWindowMinSize" func SetWindowMinSize(width: i32, height: i32): void @@ -1038,9 +1038,9 @@ export extern "GetMonitorPhysicalHeight" func GetMonitorPhysicalHeight(monitor: export extern "GetMonitorRefreshRate" func GetMonitorRefreshRate(monitor: i32): i32 export extern "GetWindowPosition" func GetWindowPosition(): Vector2 export extern "GetWindowScaleDPI" func GetWindowScaleDPI(): Vector2 -export extern "GetMonitorName" func GetMonitorName(monitor: i32): cstring -export extern "SetClipboardText" func SetClipboardText(text: cstring): void -export extern "GetClipboardText" func GetClipboardText(): cstring +export extern "GetMonitorName" func GetMonitorName(monitor: i32): ^i8 +export extern "SetClipboardText" func SetClipboardText(text: ^i8): void +export extern "GetClipboardText" func GetClipboardText(): ^i8 export extern "GetClipboardImage" func GetClipboardImage(): Image export extern "EnableEventWaiting" func EnableEventWaiting(): void export extern "DisableEventWaiting" func DisableEventWaiting(): void @@ -1069,11 +1069,11 @@ export extern "BeginVrStereoMode" func BeginVrStereoMode(config: VrStereoConfig) export extern "EndVrStereoMode" func EndVrStereoMode(): void export extern "LoadVrStereoConfig" func LoadVrStereoConfig(device: VrDeviceInfo): VrStereoConfig export extern "UnloadVrStereoConfig" func UnloadVrStereoConfig(config: VrStereoConfig): void -export extern "LoadShader" func LoadShader(vsFileName: cstring, fsFileName: cstring): Shader -export extern "LoadShaderFromMemory" func LoadShaderFromMemory(vsCode: cstring, fsCode: cstring): Shader +export extern "LoadShader" func LoadShader(vsFileName: ^i8, fsFileName: ^i8): Shader +export extern "LoadShaderFromMemory" func LoadShaderFromMemory(vsCode: ^i8, fsCode: ^i8): Shader export extern "IsShaderValid" func IsShaderValid(shader: Shader): bool -export extern "GetShaderLocation" func GetShaderLocation(shader: Shader, uniformName: cstring): i32 -export extern "GetShaderLocationAttrib" func GetShaderLocationAttrib(shader: Shader, attribName: cstring): i32 +export extern "GetShaderLocation" func GetShaderLocation(shader: Shader, uniformName: ^i8): i32 +export extern "GetShaderLocationAttrib" func GetShaderLocationAttrib(shader: Shader, attribName: ^i8): i32 export extern "SetShaderValue" func SetShaderValue(shader: Shader, locIndex: i32, value: ^void, uniformType: i32): void export extern "SetShaderValueV" func SetShaderValueV(shader: Shader, locIndex: i32, value: ^void, uniformType: i32, count: i32): void export extern "SetShaderValueMatrix" func SetShaderValueMatrix(shader: Shader, locIndex: i32, mat: Matrix): void @@ -1098,58 +1098,58 @@ export extern "SetRandomSeed" func SetRandomSeed(seed: u32): void export extern "GetRandomValue" func GetRandomValue(min: i32, max: i32): i32 export extern "LoadRandomSequence" func LoadRandomSequence(count: u32, min: i32, max: i32): ^i32 export extern "UnloadRandomSequence" func UnloadRandomSequence(sequence: ^i32): void -export extern "TakeScreenshot" func TakeScreenshot(fileName: cstring): void +export extern "TakeScreenshot" func TakeScreenshot(fileName: ^i8): void export extern "SetConfigFlags" func SetConfigFlags(flags: u32): void -export extern "OpenURL" func OpenURL(url: cstring): void -export extern "TraceLog" func TraceLog(logLevel: i32, text: cstring): void +export extern "OpenURL" func OpenURL(url: ^i8): void +export extern "TraceLog" func TraceLog(logLevel: i32, text: ^i8): void export extern "SetTraceLogLevel" func SetTraceLogLevel(logLevel: i32): void export extern "MemAlloc" func MemAlloc(size: u32): ^void export extern "MemRealloc" func MemRealloc(ptr: ^void, size: u32): ^void export extern "MemFree" func MemFree(ptr: ^void): void -export extern "SetTraceLogCallback" func SetTraceLogCallback(callback: func(i32, cstring, i32): void): void -export extern "SetLoadFileDataCallback" func SetLoadFileDataCallback(callback: func(cstring, ^i32): ^u8): void -export extern "SetSaveFileDataCallback" func SetSaveFileDataCallback(callback: func(cstring, ^void, i32): bool): void -export extern "SetLoadFileTextCallback" func SetLoadFileTextCallback(callback: func(cstring): cstring): void -export extern "SetSaveFileTextCallback" func SetSaveFileTextCallback(callback: func(cstring, cstring): bool): void -export extern "LoadFileData" func LoadFileData(fileName: cstring, dataSize: ^i32): ^u8 +export extern "SetTraceLogCallback" func SetTraceLogCallback(callback: func(i32, ^i8, i32): void): void +export extern "SetLoadFileDataCallback" func SetLoadFileDataCallback(callback: func(^i8, ^i32): ^u8): void +export extern "SetSaveFileDataCallback" func SetSaveFileDataCallback(callback: func(^i8, ^void, i32): bool): void +export extern "SetLoadFileTextCallback" func SetLoadFileTextCallback(callback: func(^i8): ^i8): void +export extern "SetSaveFileTextCallback" func SetSaveFileTextCallback(callback: func(^i8, ^i8): bool): void +export extern "LoadFileData" func LoadFileData(fileName: ^i8, dataSize: ^i32): ^u8 export extern "UnloadFileData" func UnloadFileData(data: ^u8): void -export extern "SaveFileData" func SaveFileData(fileName: cstring, data: ^void, dataSize: i32): bool -export extern "ExportDataAsCode" func ExportDataAsCode(data: ^u8, dataSize: i32, fileName: cstring): bool -export extern "LoadFileText" func LoadFileText(fileName: cstring): cstring -export extern "UnloadFileText" func UnloadFileText(text: cstring): void -export extern "SaveFileText" func SaveFileText(fileName: cstring, text: cstring): bool -export extern "FileExists" func FileExists(fileName: cstring): bool -export extern "DirectoryExists" func DirectoryExists(dirPath: cstring): bool -export extern "IsFileExtension" func IsFileExtension(fileName: cstring, ext: cstring): bool -export extern "GetFileLength" func GetFileLength(fileName: cstring): i32 -export extern "GetFileExtension" func GetFileExtension(fileName: cstring): cstring -export extern "GetFileName" func GetFileName(filePath: cstring): cstring -export extern "GetFileNameWithoutExt" func GetFileNameWithoutExt(filePath: cstring): cstring -export extern "GetDirectoryPath" func GetDirectoryPath(filePath: cstring): cstring -export extern "GetPrevDirectoryPath" func GetPrevDirectoryPath(dirPath: cstring): cstring -export extern "GetWorkingDirectory" func GetWorkingDirectory(): cstring -export extern "GetApplicationDirectory" func GetApplicationDirectory(): cstring -export extern "MakeDirectory" func MakeDirectory(dirPath: cstring): i32 -export extern "ChangeDirectory" func ChangeDirectory(dir: cstring): bool -export extern "IsPathFile" func IsPathFile(path: cstring): bool -export extern "IsFileNameValid" func IsFileNameValid(fileName: cstring): bool -export extern "LoadDirectoryFiles" func LoadDirectoryFiles(dirPath: cstring): FilePathList -export extern "LoadDirectoryFilesEx" func LoadDirectoryFilesEx(basePath: cstring, filter: cstring, scanSubdirs: bool): FilePathList +export extern "SaveFileData" func SaveFileData(fileName: ^i8, data: ^void, dataSize: i32): bool +export extern "ExportDataAsCode" func ExportDataAsCode(data: ^u8, dataSize: i32, fileName: ^i8): bool +export extern "LoadFileText" func LoadFileText(fileName: ^i8): ^i8 +export extern "UnloadFileText" func UnloadFileText(text: ^i8): void +export extern "SaveFileText" func SaveFileText(fileName: ^i8, text: ^i8): bool +export extern "FileExists" func FileExists(fileName: ^i8): bool +export extern "DirectoryExists" func DirectoryExists(dirPath: ^i8): bool +export extern "IsFileExtension" func IsFileExtension(fileName: ^i8, ext: ^i8): bool +export extern "GetFileLength" func GetFileLength(fileName: ^i8): i32 +export extern "GetFileExtension" func GetFileExtension(fileName: ^i8): ^i8 +export extern "GetFileName" func GetFileName(filePath: ^i8): ^i8 +export extern "GetFileNameWithoutExt" func GetFileNameWithoutExt(filePath: ^i8): ^i8 +export extern "GetDirectoryPath" func GetDirectoryPath(filePath: ^i8): ^i8 +export extern "GetPrevDirectoryPath" func GetPrevDirectoryPath(dirPath: ^i8): ^i8 +export extern "GetWorkingDirectory" func GetWorkingDirectory(): ^i8 +export extern "GetApplicationDirectory" func GetApplicationDirectory(): ^i8 +export extern "MakeDirectory" func MakeDirectory(dirPath: ^i8): i32 +export extern "ChangeDirectory" func ChangeDirectory(dir: ^i8): bool +export extern "IsPathFile" func IsPathFile(path: ^i8): bool +export extern "IsFileNameValid" func IsFileNameValid(fileName: ^i8): bool +export extern "LoadDirectoryFiles" func LoadDirectoryFiles(dirPath: ^i8): FilePathList +export extern "LoadDirectoryFilesEx" func LoadDirectoryFilesEx(basePath: ^i8, filter: ^i8, scanSubdirs: bool): FilePathList export extern "UnloadDirectoryFiles" func UnloadDirectoryFiles(files: FilePathList): void export extern "IsFileDropped" func IsFileDropped(): bool export extern "LoadDroppedFiles" func LoadDroppedFiles(): FilePathList export extern "UnloadDroppedFiles" func UnloadDroppedFiles(files: FilePathList): void -export extern "GetFileModTime" func GetFileModTime(fileName: cstring): i64 +export extern "GetFileModTime" func GetFileModTime(fileName: ^i8): i64 export extern "CompressData" func CompressData(data: ^u8, dataSize: i32, compDataSize: ^i32): ^u8 export extern "DecompressData" func DecompressData(compData: ^u8, compDataSize: i32, dataSize: ^i32): ^u8 -export extern "EncodeDataBase64" func EncodeDataBase64(data: ^u8, dataSize: i32, outputSize: ^i32): cstring +export extern "EncodeDataBase64" func EncodeDataBase64(data: ^u8, dataSize: i32, outputSize: ^i32): ^i8 export extern "DecodeDataBase64" func DecodeDataBase64(data: ^u8, outputSize: ^i32): ^u8 export extern "ComputeCRC32" func ComputeCRC32(data: ^u8, dataSize: i32): u32 export extern "ComputeMD5" func ComputeMD5(data: ^u8, dataSize: i32): ^u32 export extern "ComputeSHA1" func ComputeSHA1(data: ^u8, dataSize: i32): ^u32 -export extern "LoadAutomationEventList" func LoadAutomationEventList(fileName: cstring): AutomationEventList +export extern "LoadAutomationEventList" func LoadAutomationEventList(fileName: ^i8): AutomationEventList export extern "UnloadAutomationEventList" func UnloadAutomationEventList(list: AutomationEventList): void -export extern "ExportAutomationEventList" func ExportAutomationEventList(list: AutomationEventList, fileName: cstring): bool +export extern "ExportAutomationEventList" func ExportAutomationEventList(list: AutomationEventList, fileName: ^i8): bool export extern "SetAutomationEventList" func SetAutomationEventList(list: ^AutomationEventList): void export extern "SetAutomationEventBaseFrame" func SetAutomationEventBaseFrame(frame: i32): void export extern "StartAutomationEventRecording" func StartAutomationEventRecording(): void @@ -1164,7 +1164,7 @@ export extern "GetKeyPressed" func GetKeyPressed(): i32 export extern "GetCharPressed" func GetCharPressed(): i32 export extern "SetExitKey" func SetExitKey(key: i32): void export extern "IsGamepadAvailable" func IsGamepadAvailable(gamepad: i32): bool -export extern "GetGamepadName" func GetGamepadName(gamepad: i32): cstring +export extern "GetGamepadName" func GetGamepadName(gamepad: i32): ^i8 export extern "IsGamepadButtonPressed" func IsGamepadButtonPressed(gamepad: i32, button: i32): bool export extern "IsGamepadButtonDown" func IsGamepadButtonDown(gamepad: i32, button: i32): bool export extern "IsGamepadButtonReleased" func IsGamepadButtonReleased(gamepad: i32, button: i32): bool @@ -1172,7 +1172,7 @@ export extern "IsGamepadButtonUp" func IsGamepadButtonUp(gamepad: i32, button: i export extern "GetGamepadButtonPressed" func GetGamepadButtonPressed(): i32 export extern "GetGamepadAxisCount" func GetGamepadAxisCount(gamepad: i32): i32 export extern "GetGamepadAxisMovement" func GetGamepadAxisMovement(gamepad: i32, axis: i32): f32 -export extern "SetGamepadMappings" func SetGamepadMappings(mappings: cstring): i32 +export extern "SetGamepadMappings" func SetGamepadMappings(mappings: ^i8): i32 export extern "SetGamepadVibration" func SetGamepadVibration(gamepad: i32, leftMotor: f32, rightMotor: f32, duration: f32): void export extern "IsMouseButtonPressed" func IsMouseButtonPressed(button: i32): bool export extern "IsMouseButtonDown" func IsMouseButtonDown(button: i32): bool @@ -1269,18 +1269,18 @@ export extern "CheckCollisionPointLine" func CheckCollisionPointLine(point: Vect export extern "CheckCollisionPointPoly" func CheckCollisionPointPoly(point: Vector2, points: ^Vector2, pointCount: i32): bool export extern "CheckCollisionLines" func CheckCollisionLines(startPos1: Vector2, endPos1: Vector2, startPos2: Vector2, endPos2: Vector2, collisionPoint: ^Vector2): bool export extern "GetCollisionRec" func GetCollisionRec(rec1: Rectangle, rec2: Rectangle): Rectangle -export extern "LoadImage" func LoadImage(fileName: cstring): Image -export extern "LoadImageRaw" func LoadImageRaw(fileName: cstring, width: i32, height: i32, format: i32, headerSize: i32): Image -export extern "LoadImageAnim" func LoadImageAnim(fileName: cstring, frames: ^i32): Image -export extern "LoadImageAnimFromMemory" func LoadImageAnimFromMemory(fileType: cstring, fileData: ^u8, dataSize: i32, frames: ^i32): Image -export extern "LoadImageFromMemory" func LoadImageFromMemory(fileType: cstring, fileData: ^u8, dataSize: i32): Image +export extern "LoadImage" func LoadImage(fileName: ^i8): Image +export extern "LoadImageRaw" func LoadImageRaw(fileName: ^i8, width: i32, height: i32, format: i32, headerSize: i32): Image +export extern "LoadImageAnim" func LoadImageAnim(fileName: ^i8, frames: ^i32): Image +export extern "LoadImageAnimFromMemory" func LoadImageAnimFromMemory(fileType: ^i8, fileData: ^u8, dataSize: i32, frames: ^i32): Image +export extern "LoadImageFromMemory" func LoadImageFromMemory(fileType: ^i8, fileData: ^u8, dataSize: i32): Image export extern "LoadImageFromTexture" func LoadImageFromTexture(texture: Texture): Image export extern "LoadImageFromScreen" func LoadImageFromScreen(): Image export extern "IsImageValid" func IsImageValid(image: Image): bool export extern "UnloadImage" func UnloadImage(image: Image): void -export extern "ExportImage" func ExportImage(image: Image, fileName: cstring): bool -export extern "ExportImageToMemory" func ExportImageToMemory(image: Image, fileType: cstring, fileSize: ^i32): ^u8 -export extern "ExportImageAsCode" func ExportImageAsCode(image: Image, fileName: cstring): bool +export extern "ExportImage" func ExportImage(image: Image, fileName: ^i8): bool +export extern "ExportImageToMemory" func ExportImageToMemory(image: Image, fileType: ^i8, fileSize: ^i32): ^u8 +export extern "ExportImageAsCode" func ExportImageAsCode(image: Image, fileName: ^i8): bool export extern "GenImageColor" func GenImageColor(width: i32, height: i32, color: Color): Image export extern "GenImageGradientLinear" func GenImageGradientLinear(width: i32, height: i32, direction: i32, start: Color, end: Color): Image export extern "GenImageGradientRadial" func GenImageGradientRadial(width: i32, height: i32, density: f32, inner: Color, outer: Color): Image @@ -1289,12 +1289,12 @@ export extern "GenImageChecked" func GenImageChecked(width: i32, height: i32, ch export extern "GenImageWhiteNoise" func GenImageWhiteNoise(width: i32, height: i32, factor: f32): Image export extern "GenImagePerlinNoise" func GenImagePerlinNoise(width: i32, height: i32, offsetX: i32, offsetY: i32, scale: f32): Image export extern "GenImageCellular" func GenImageCellular(width: i32, height: i32, tileSize: i32): Image -export extern "GenImageText" func GenImageText(width: i32, height: i32, text: cstring): Image +export extern "GenImageText" func GenImageText(width: i32, height: i32, text: ^i8): Image export extern "ImageCopy" func ImageCopy(image: Image): Image export extern "ImageFromImage" func ImageFromImage(image: Image, rec: Rectangle): Image export extern "ImageFromChannel" func ImageFromChannel(image: Image, selectedChannel: i32): Image -export extern "ImageText" func ImageText(text: cstring, fontSize: i32, color: Color): Image -export extern "ImageTextEx" func ImageTextEx(font: Font, text: cstring, fontSize: f32, spacing: f32, tint: Color): Image +export extern "ImageText" func ImageText(text: ^i8, fontSize: i32, color: Color): Image +export extern "ImageTextEx" func ImageTextEx(font: Font, text: ^i8, fontSize: f32, spacing: f32, tint: Color): Image export extern "ImageFormat" func ImageFormat(image: ^Image, newFormat: i32): void export extern "ImageToPOT" func ImageToPOT(image: ^Image, fill: Color): void export extern "ImageCrop" func ImageCrop(image: ^Image, crop: Rectangle): void @@ -1346,9 +1346,9 @@ export extern "ImageDrawTriangleLines" func ImageDrawTriangleLines(dst: ^Image, export extern "ImageDrawTriangleFan" func ImageDrawTriangleFan(dst: ^Image, points: ^Vector2, pointCount: i32, color: Color): void export extern "ImageDrawTriangleStrip" func ImageDrawTriangleStrip(dst: ^Image, points: ^Vector2, pointCount: i32, color: Color): void export extern "ImageDraw" func ImageDraw(dst: ^Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, tint: Color): void -export extern "ImageDrawText" func ImageDrawText(dst: ^Image, text: cstring, posX: i32, posY: i32, fontSize: i32, color: Color): void -export extern "ImageDrawTextEx" func ImageDrawTextEx(dst: ^Image, font: Font, text: cstring, position: Vector2, fontSize: f32, spacing: f32, tint: Color): void -export extern "LoadTexture" func LoadTexture(fileName: cstring): Texture +export extern "ImageDrawText" func ImageDrawText(dst: ^Image, text: ^i8, posX: i32, posY: i32, fontSize: i32, color: Color): void +export extern "ImageDrawTextEx" func ImageDrawTextEx(dst: ^Image, font: Font, text: ^i8, position: Vector2, fontSize: f32, spacing: f32, tint: Color): void +export extern "LoadTexture" func LoadTexture(fileName: ^i8): Texture export extern "LoadTextureFromImage" func LoadTextureFromImage(image: Image): Texture export extern "LoadTextureCubemap" func LoadTextureCubemap(image: Image, layout: i32): Texture export extern "LoadRenderTexture" func LoadRenderTexture(width: i32, height: i32): RenderTexture @@ -1385,55 +1385,55 @@ export extern "GetPixelColor" func GetPixelColor(srcPtr: ^void, format: i32): Co export extern "SetPixelColor" func SetPixelColor(dstPtr: ^void, color: Color, format: i32): void export extern "GetPixelDataSize" func GetPixelDataSize(width: i32, height: i32, format: i32): i32 export extern "GetFontDefault" func GetFontDefault(): Font -export extern "LoadFont" func LoadFont(fileName: cstring): Font -export extern "LoadFontEx" func LoadFontEx(fileName: cstring, fontSize: i32, codepoints: ^i32, codepointCount: i32): Font +export extern "LoadFont" func LoadFont(fileName: ^i8): Font +export extern "LoadFontEx" func LoadFontEx(fileName: ^i8, fontSize: i32, codepoints: ^i32, codepointCount: i32): Font export extern "LoadFontFromImage" func LoadFontFromImage(image: Image, key: Color, firstChar: i32): Font -export extern "LoadFontFromMemory" func LoadFontFromMemory(fileType: cstring, fileData: ^u8, dataSize: i32, fontSize: i32, codepoints: ^i32, codepointCount: i32): Font +export extern "LoadFontFromMemory" func LoadFontFromMemory(fileType: ^i8, fileData: ^u8, dataSize: i32, fontSize: i32, codepoints: ^i32, codepointCount: i32): Font export extern "IsFontValid" func IsFontValid(font: Font): bool export extern "LoadFontData" func LoadFontData(fileData: ^u8, dataSize: i32, fontSize: i32, codepoints: ^i32, codepointCount: i32, type: i32): ^GlyphInfo export extern "GenImageFontAtlas" func GenImageFontAtlas(glyphs: ^GlyphInfo, glyphRecs: ^^Rectangle, glyphCount: i32, fontSize: i32, padding: i32, packMethod: i32): Image export extern "UnloadFontData" func UnloadFontData(glyphs: ^GlyphInfo, glyphCount: i32): void export extern "UnloadFont" func UnloadFont(font: Font): void -export extern "ExportFontAsCode" func ExportFontAsCode(font: Font, fileName: cstring): bool +export extern "ExportFontAsCode" func ExportFontAsCode(font: Font, fileName: ^i8): bool export extern "DrawFPS" func DrawFPS(posX: i32, posY: i32): void -export extern "DrawText" func DrawText(text: cstring, posX: i32, posY: i32, fontSize: i32, color: Color): void -export extern "DrawTextEx" func DrawTextEx(font: Font, text: cstring, position: Vector2, fontSize: f32, spacing: f32, tint: Color): void -export extern "DrawTextPro" func DrawTextPro(font: Font, text: cstring, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color): void +export extern "DrawText" func DrawText(text: ^i8, posX: i32, posY: i32, fontSize: i32, color: Color): void +export extern "DrawTextEx" func DrawTextEx(font: Font, text: ^i8, position: Vector2, fontSize: f32, spacing: f32, tint: Color): void +export extern "DrawTextPro" func DrawTextPro(font: Font, text: ^i8, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color): void export extern "DrawTextCodepoint" func DrawTextCodepoint(font: Font, codepoint: i32, position: Vector2, fontSize: f32, tint: Color): void export extern "DrawTextCodepoints" func DrawTextCodepoints(font: Font, codepoints: ^i32, codepointCount: i32, position: Vector2, fontSize: f32, spacing: f32, tint: Color): void export extern "SetTextLineSpacing" func SetTextLineSpacing(spacing: i32): void -export extern "MeasureText" func MeasureText(text: cstring, fontSize: i32): i32 -export extern "MeasureTextEx" func MeasureTextEx(font: Font, text: cstring, fontSize: f32, spacing: f32): Vector2 +export extern "MeasureText" func MeasureText(text: ^i8, fontSize: i32): i32 +export extern "MeasureTextEx" func MeasureTextEx(font: Font, text: ^i8, fontSize: f32, spacing: f32): Vector2 export extern "GetGlyphIndex" func GetGlyphIndex(font: Font, codepoint: i32): i32 export extern "GetGlyphInfo" func GetGlyphInfo(font: Font, codepoint: i32): GlyphInfo export extern "GetGlyphAtlasRec" func GetGlyphAtlasRec(font: Font, codepoint: i32): Rectangle -export extern "LoadUTF8" func LoadUTF8(codepoints: ^i32, length: i32): cstring -export extern "UnloadUTF8" func UnloadUTF8(text: cstring): void -export extern "LoadCodepoints" func LoadCodepoints(text: cstring, count: ^i32): ^i32 +export extern "LoadUTF8" func LoadUTF8(codepoints: ^i32, length: i32): ^i8 +export extern "UnloadUTF8" func UnloadUTF8(text: ^i8): void +export extern "LoadCodepoints" func LoadCodepoints(text: ^i8, count: ^i32): ^i32 export extern "UnloadCodepoints" func UnloadCodepoints(codepoints: ^i32): void -export extern "GetCodepointCount" func GetCodepointCount(text: cstring): i32 -export extern "GetCodepoint" func GetCodepoint(text: cstring, codepointSize: ^i32): i32 -export extern "GetCodepointNext" func GetCodepointNext(text: cstring, codepointSize: ^i32): i32 -export extern "GetCodepointPrevious" func GetCodepointPrevious(text: cstring, codepointSize: ^i32): i32 -export extern "CodepointToUTF8" func CodepointToUTF8(codepoint: i32, utf8Size: ^i32): cstring -export extern "TextCopy" func TextCopy(dst: cstring, src: cstring): i32 -export extern "TextIsEqual" func TextIsEqual(text1: cstring, text2: cstring): bool -export extern "TextLength" func TextLength(text: cstring): u32 -export extern "TextFormat" func TextFormat(text: cstring): cstring -export extern "TextSubtext" func TextSubtext(text: cstring, position: i32, length: i32): cstring -export extern "TextReplace" func TextReplace(text: cstring, replace: cstring, by: cstring): cstring -export extern "TextInsert" func TextInsert(text: cstring, insert: cstring, position: i32): cstring -export extern "TextJoin" func TextJoin(textList: ^cstring, count: i32, delimiter: cstring): cstring -export extern "TextSplit" func TextSplit(text: cstring, delimiter: i8, count: ^i32): ^cstring -export extern "TextAppend" func TextAppend(text: cstring, append: cstring, position: ^i32): void -export extern "TextFindIndex" func TextFindIndex(text: cstring, find: cstring): i32 -export extern "TextToUpper" func TextToUpper(text: cstring): cstring -export extern "TextToLower" func TextToLower(text: cstring): cstring -export extern "TextToPascal" func TextToPascal(text: cstring): cstring -export extern "TextToSnake" func TextToSnake(text: cstring): cstring -export extern "TextToCamel" func TextToCamel(text: cstring): cstring -export extern "TextToInteger" func TextToInteger(text: cstring): i32 -export extern "TextToFloat" func TextToFloat(text: cstring): f32 +export extern "GetCodepointCount" func GetCodepointCount(text: ^i8): i32 +export extern "GetCodepoint" func GetCodepoint(text: ^i8, codepointSize: ^i32): i32 +export extern "GetCodepointNext" func GetCodepointNext(text: ^i8, codepointSize: ^i32): i32 +export extern "GetCodepointPrevious" func GetCodepointPrevious(text: ^i8, codepointSize: ^i32): i32 +export extern "CodepointToUTF8" func CodepointToUTF8(codepoint: i32, utf8Size: ^i32): ^i8 +export extern "TextCopy" func TextCopy(dst: ^i8, src: ^i8): i32 +export extern "TextIsEqual" func TextIsEqual(text1: ^i8, text2: ^i8): bool +export extern "TextLength" func TextLength(text: ^i8): u32 +export extern "TextFormat" func TextFormat(text: ^i8): ^i8 +export extern "TextSubtext" func TextSubtext(text: ^i8, position: i32, length: i32): ^i8 +export extern "TextReplace" func TextReplace(text: ^i8, replace: ^i8, by: ^i8): ^i8 +export extern "TextInsert" func TextInsert(text: ^i8, insert: ^i8, position: i32): ^i8 +export extern "TextJoin" func TextJoin(textList: ^^i8, count: i32, delimiter: ^i8): ^i8 +export extern "TextSplit" func TextSplit(text: ^i8, delimiter: i8, count: ^i32): ^^i8 +export extern "TextAppend" func TextAppend(text: ^i8, append: ^i8, position: ^i32): void +export extern "TextFindIndex" func TextFindIndex(text: ^i8, find: ^i8): i32 +export extern "TextToUpper" func TextToUpper(text: ^i8): ^i8 +export extern "TextToLower" func TextToLower(text: ^i8): ^i8 +export extern "TextToPascal" func TextToPascal(text: ^i8): ^i8 +export extern "TextToSnake" func TextToSnake(text: ^i8): ^i8 +export extern "TextToCamel" func TextToCamel(text: ^i8): ^i8 +export extern "TextToInteger" func TextToInteger(text: ^i8): i32 +export extern "TextToFloat" func TextToFloat(text: ^i8): f32 export extern "DrawLine3D" func DrawLine3D(startPos: Vector3, endPos: Vector3, color: Color): void export extern "DrawPoint3D" func DrawPoint3D(position: Vector3, color: Color): void export extern "DrawCircle3D" func DrawCircle3D(center: Vector3, radius: f32, rotationAxis: Vector3, rotationAngle: f32, color: Color): void @@ -1455,7 +1455,7 @@ export extern "DrawCapsuleWires" func DrawCapsuleWires(startPos: Vector3, endPos export extern "DrawPlane" func DrawPlane(centerPos: Vector3, size: Vector2, color: Color): void export extern "DrawRay" func DrawRay(ray: Ray, color: Color): void export extern "DrawGrid" func DrawGrid(slices: i32, spacing: f32): void -export extern "LoadModel" func LoadModel(fileName: cstring): Model +export extern "LoadModel" func LoadModel(fileName: ^i8): Model export extern "LoadModelFromMesh" func LoadModelFromMesh(mesh: Mesh): Model export extern "IsModelValid" func IsModelValid(model: Model): bool export extern "UnloadModel" func UnloadModel(model: Model): void @@ -1477,8 +1477,8 @@ export extern "DrawMesh" func DrawMesh(mesh: Mesh, material: Material, transform export extern "DrawMeshInstanced" func DrawMeshInstanced(mesh: Mesh, material: Material, transforms: ^Matrix, instances: i32): void export extern "GetMeshBoundingBox" func GetMeshBoundingBox(mesh: Mesh): BoundingBox export extern "GenMeshTangents" func GenMeshTangents(mesh: ^Mesh): void -export extern "ExportMesh" func ExportMesh(mesh: Mesh, fileName: cstring): bool -export extern "ExportMeshAsCode" func ExportMeshAsCode(mesh: Mesh, fileName: cstring): bool +export extern "ExportMesh" func ExportMesh(mesh: Mesh, fileName: ^i8): bool +export extern "ExportMeshAsCode" func ExportMeshAsCode(mesh: Mesh, fileName: ^i8): bool export extern "GenMeshPoly" func GenMeshPoly(sides: i32, radius: f32): Mesh export extern "GenMeshPlane" func GenMeshPlane(width: f32, length: f32, resX: i32, resZ: i32): Mesh export extern "GenMeshCube" func GenMeshCube(width: f32, height: f32, length: f32): Mesh @@ -1490,13 +1490,13 @@ export extern "GenMeshTorus" func GenMeshTorus(radius: f32, size: f32, radSeg: i export extern "GenMeshKnot" func GenMeshKnot(radius: f32, size: f32, radSeg: i32, sides: i32): Mesh export extern "GenMeshHeightmap" func GenMeshHeightmap(heightmap: Image, size: Vector3): Mesh export extern "GenMeshCubicmap" func GenMeshCubicmap(cubicmap: Image, cubeSize: Vector3): Mesh -export extern "LoadMaterials" func LoadMaterials(fileName: cstring, materialCount: ^i32): ^Material +export extern "LoadMaterials" func LoadMaterials(fileName: ^i8, materialCount: ^i32): ^Material export extern "LoadMaterialDefault" func LoadMaterialDefault(): Material export extern "IsMaterialValid" func IsMaterialValid(material: Material): bool export extern "UnloadMaterial" func UnloadMaterial(material: Material): void export extern "SetMaterialTexture" func SetMaterialTexture(material: ^Material, mapType: i32, texture: Texture): void export extern "SetModelMeshMaterial" func SetModelMeshMaterial(model: ^Model, meshId: i32, materialId: i32): void -export extern "LoadModelAnimations" func LoadModelAnimations(fileName: cstring, animCount: ^i32): ^ModelAnimation +export extern "LoadModelAnimations" func LoadModelAnimations(fileName: ^i8, animCount: ^i32): ^ModelAnimation export extern "UpdateModelAnimation" func UpdateModelAnimation(model: Model, anim: ModelAnimation, frame: i32): void export extern "UpdateModelAnimationBones" func UpdateModelAnimationBones(model: Model, anim: ModelAnimation, frame: i32): void export extern "UnloadModelAnimation" func UnloadModelAnimation(anim: ModelAnimation): void @@ -1515,10 +1515,10 @@ export extern "CloseAudioDevice" func CloseAudioDevice(): void export extern "IsAudioDeviceReady" func IsAudioDeviceReady(): bool export extern "SetMasterVolume" func SetMasterVolume(volume: f32): void export extern "GetMasterVolume" func GetMasterVolume(): f32 -export extern "LoadWave" func LoadWave(fileName: cstring): Wave -export extern "LoadWaveFromMemory" func LoadWaveFromMemory(fileType: cstring, fileData: ^u8, dataSize: i32): Wave +export extern "LoadWave" func LoadWave(fileName: ^i8): Wave +export extern "LoadWaveFromMemory" func LoadWaveFromMemory(fileType: ^i8, fileData: ^u8, dataSize: i32): Wave export extern "IsWaveValid" func IsWaveValid(wave: Wave): bool -export extern "LoadSound" func LoadSound(fileName: cstring): Sound +export extern "LoadSound" func LoadSound(fileName: ^i8): Sound export extern "LoadSoundFromWave" func LoadSoundFromWave(wave: Wave): Sound export extern "LoadSoundAlias" func LoadSoundAlias(source: Sound): Sound export extern "IsSoundValid" func IsSoundValid(sound: Sound): bool @@ -1526,8 +1526,8 @@ export extern "UpdateSound" func UpdateSound(sound: Sound, data: ^void, sampleCo export extern "UnloadWave" func UnloadWave(wave: Wave): void export extern "UnloadSound" func UnloadSound(sound: Sound): void export extern "UnloadSoundAlias" func UnloadSoundAlias(alias: Sound): void -export extern "ExportWave" func ExportWave(wave: Wave, fileName: cstring): bool -export extern "ExportWaveAsCode" func ExportWaveAsCode(wave: Wave, fileName: cstring): bool +export extern "ExportWave" func ExportWave(wave: Wave, fileName: ^i8): bool +export extern "ExportWaveAsCode" func ExportWaveAsCode(wave: Wave, fileName: ^i8): bool export extern "PlaySound" func PlaySound(sound: Sound): void export extern "StopSound" func StopSound(sound: Sound): void export extern "PauseSound" func PauseSound(sound: Sound): void @@ -1541,8 +1541,8 @@ export extern "WaveCrop" func WaveCrop(wave: ^Wave, initFrame: i32, finalFrame: export extern "WaveFormat" func WaveFormat(wave: ^Wave, sampleRate: i32, sampleSize: i32, channels: i32): void export extern "LoadWaveSamples" func LoadWaveSamples(wave: Wave): ^f32 export extern "UnloadWaveSamples" func UnloadWaveSamples(samples: ^f32): void -export extern "LoadMusicStream" func LoadMusicStream(fileName: cstring): Music -export extern "LoadMusicStreamFromMemory" func LoadMusicStreamFromMemory(fileType: cstring, data: ^u8, dataSize: i32): Music +export extern "LoadMusicStream" func LoadMusicStream(fileName: ^i8): Music +export extern "LoadMusicStreamFromMemory" func LoadMusicStreamFromMemory(fileType: ^i8, data: ^u8, dataSize: i32): Music export extern "IsMusicValid" func IsMusicValid(music: Music): bool export extern "UnloadMusicStream" func UnloadMusicStream(music: Music): void export extern "PlayMusicStream" func PlayMusicStream(music: Music): void diff --git a/examples/raylib/main.nub b/examples/raylib/main.nub index f0b05bb..1b38328 100644 --- a/examples/raylib/main.nub +++ b/examples/raylib/main.nub @@ -2,8 +2,10 @@ import "raylib" module "main" -extern "main" func main(argc: i64, argv: [?]cstring): i64 +extern "main" func main(argc: i64, argv: ^^i8): i64 { + let uwu: []i32 = [1, 2] + raylib::SetConfigFlags(raylib::ConfigFlags.FLAG_VSYNC_HINT | raylib::ConfigFlags.FLAG_WINDOW_RESIZABLE) raylib::InitWindow(1600, 900, "Hi from nub-lang")