Skip to content

Instantly share code, notes, and snippets.

View TerensTare's full-sized avatar
🏠
Working from home

Terens TerensTare

🏠
Working from home
View GitHub Profile
@TerensTare
TerensTare / main.cpp
Last active January 9, 2026 23:46
Covariant function parameters in C++
// Dart allows you to specify a "derived type" for parameters when you override virtual functions with the covariant keyword.
// This tells the compiler you know for this class, the parameters will ever be of this type only.
// (eg. when overriding operator==, you know you can only ever compare your type with objects of the same type).
// The compiler needs to add runtime checks for every case this function is used, which is why by default C++ does not support this feature.
// Nevertheless, we can extend our type hierarchy to support covariant parameters in a few steps, with an in-house error system that fits your coding style.
// This example uses C++20, but if you replace concepts with the equivalent type traits it should work with earlier standards.
#include <concepts>
#include <fmt/core.h>
@TerensTare
TerensTare / sdl-parser-main.cs
Created June 19, 2024 07:52
SDL_parser (https://github.com/TerensTare/SDL_parser) C# example code - This shows how to use the generated code from SDL_parser in your C# apps
using System;
using static SDL3.SDL;
public class MainClass
{
public static void Main(string[] args)
{
SDL_Init(SDL_InitFlags.SDL_INIT_VIDEO);
@TerensTare
TerensTare / sdl-parser-main.cxx
Last active June 19, 2024 07:47
SDL_parser (https://github.com/TerensTare/SDL_parser) C++ example code - This shows how to use the generated code from SDL_parser in your C++ apps
import sdl;
int main(int, char **)
{
if (sdl::Init(sdl::InitFlags::VIDEO) != 0)
{
sdl::ShowSimpleMessageBox(
sdl::MessageBoxFlags::ERROR,
"Error",
@TerensTare
TerensTare / LICENSE
Last active October 10, 2021 18:20
Lazily-deduced template params in C++
MIT License
Copyright (c) 2021 Terens Tare
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
{"lastUpload":"2020-02-24T18:03:14.573Z","extensionVersion":"v3.4.3"}