Skip to content

Instantly share code, notes, and snippets.

View martinfinke's full-sized avatar

Martin Finke martinfinke

View GitHub Profile
@martinfinke
martinfinke / create_single_header.py
Created December 4, 2018 07:12
Convert a C++ library to a single-header file
#!/usr/bin/env python2
import argparse
from itertools import ifilter
import os
import re
import sys
# STL and C headers as of 04.12.2018, taken from cppreference.com
stl_headers = ['algorithm', 'any', 'array', 'assert.h', 'atomic', 'bit', 'bitset', 'cassert', 'ccomplex', 'cctype', 'cerrno', 'cfenv', 'cfloat', 'charconv', 'chrono', 'cinttypes', 'ciso646', 'climits', 'clocale', 'cmath', 'codecvt', 'compare', 'complex', 'complex.h', 'concepts', 'condition_variable', 'contract', 'csetjmp', 'csignal', 'cstdalign', 'cstdarg', 'cstdbool', 'cstddef', 'cstdint', 'cstdio', 'cstdlib', 'cstring', 'ctgmath', 'ctime', 'ctype.h', 'cuchar', 'cwchar', 'cwctype', 'deque', 'errno.h', 'exception', 'execution', 'experimental/algorithm', 'experimental/any', 'experimental/array', 'experimental/atomic', 'experimental/barrier', 'experimental/chrono', 'experimental/deque', 'experimental/exception_list', 'experimental/execution_policy', 'experimental/filesystem', 'experimental/forward_list', 'experimental/functional', 'experimental/f
// Gradual-commit arena demonstration
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#include <string.h>
static void *os_reserve(ptrdiff_t);
static _Bool os_commit(void *, ptrdiff_t);
#define ARENA_PAGESIZE ((ptrdiff_t)1<<26)