Skip to content

Instantly share code, notes, and snippets.

@Nexuapex
Nexuapex / 7segment.c
Created October 29, 2011 04:39
7-segment display in 50 lines of C99.
#include <stdio.h>
int const schematic[7][7] = {
{0,1,1,1,1,0,0},
{2,0,0,0,0,3,0},
{2,0,0,0,0,3,0},
{0,4,4,4,4,0,0},
{5,0,0,0,0,6,0},
{5,0,0,0,0,6,0},
{0,7,7,7,7,0,0},
@Nexuapex
Nexuapex / icosahedron.cc
Created February 7, 2012 10:33
Icosahedron
static GLfloat const minor = 0.5257311f;
static GLfloat const major = 0.8506508f;
float const icosahedron_position[12][3] = {
{0.f, +minor, +major},
{0.f, +minor, -major},
{0.f, -minor, +major},
{0.f, -minor, -major},
{+major, 0.f, +minor},
{+major, 0.f, -minor},
@Nexuapex
Nexuapex / reinterpret_f32_i32_sse.cc
Created February 18, 2012 05:10
Reinterpreting int ⇔ float with SSE
#include <xmmintrin.h>
inline int as_int_bitwise(float a)
{
return _mm_cvtsi128_si32(_mm_set_ss(a));
}
inline float as_float_bitwise(int a)
{
return _mm_cvtss_f32(_mm_cvtsi32_si128(a));
@Nexuapex
Nexuapex / dump.lua
Created June 17, 2012 02:50
Dumping a description of a Lua value
local dump_table_threshold = 3
local dump_indent = (" "):rep(4)
local dumptable = {
["nil"] = tostring,
["number"] = tostring,
["string"] = function(value) return "\"" .. value .. "\"" end,
["boolean"] = tostring,
["table"] = function(value, depth, markers)
if markers[value] then
@Nexuapex
Nexuapex / kahan3.c
Created August 23, 2012 05:12
Kahan summation (3-way)
float sum(float x0, float x1, float x2)
{
float accum = x0 + x1;
float excess = (accum - x0) - x1;
float addend = x2 - excess;
return accum + addend;
}
@Nexuapex
Nexuapex / msvcrt_heap_exc.cc
Last active December 24, 2015 01:29
There's this handy flag on Win32 heap objects called HEAP_GENERATE_EXCEPTIONS, which causes the heap manager to raise a structured exception instead of returning null on a failed allocation. But the C runtime creates its heap behind the scenes and doesn't allow you access to it, and you can't add this flag after creation anyway. Unless you are t…
#include <malloc.h>
#include <windows.h>
static HANDLE FindCrtHeap()
{
// Pick a block that we know is in the CRT heap.
//
_HEAPINFO crtEntry = {};
if (_HEAPOK != _heapwalk(&crtEntry))
@Nexuapex
Nexuapex / inlined.h
Last active August 29, 2015 13:55
I would get behind this if I could just static_assert(size <= Size) in the placement operator new. Close but no cigar.
#ifndef INLINED_OBJECT_H
#define INLINED_OBJECT_H
#include <string.h>
template <typename T, size_t Size>
class inlined
{
public:
inlined();
@Nexuapex
Nexuapex / plaintive_function.cc
Last active August 29, 2015 14:00
An attempt to reinvent `std::function' that ended up being about things I don't like about C++.
// Because it was possible to implement std::move and std::forward<T> as library
// functions, so that's what happened. Now this header is everywhere. This is
// 2,800 lines of kitchen sink for me.
#include <utility>
// C++ has half-decent pattern matching, but only on types. If only some of this
// energy could be thrown at language constructs like `switch'.
//
// Oh, right, and this relies on partial specialization, which only works on
// classes. So you get these pointless classes that contain a single typedef.
import socket
create_socket = lambda: socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
target_port = 49400 # Any port in the ephemeral port range that no process on your machine is using.
port = 0
# Create and bind sockets, working our way through the ephemeral port space, until we get close to our target.
while not (target_port - 5 < port < target_port):
sock = create_socket()
sock.bind(('127.0.0.1', 0))
@Nexuapex
Nexuapex / Microsoft C++.sublime-build
Created November 17, 2014 03:10
A simple Sublime Text 3 build system for Visual Studio 2013's C/C++ compiler.
{
"shell_cmd": "\"%VS120COMNTOOLS%\\..\\..\\VC\\vcvarsall.bat\" amd64 && cl /nologo \"$file\"",
"file_regex": "^(.*?)\\(([0-9+])(?:,([0-9+]))?\\)\\s+:\\s+(.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++"
}