Skip to content

Instantly share code, notes, and snippets.

View johnbartholomew's full-sized avatar

John Bartholomew johnbartholomew

View GitHub Profile
template <typename T> struct ForceConstRef { typedef const T& type; };
template <typename T> struct ForceConstRef<const T&> { typedef const T& type; };
template <typename T> struct ForceConstRef<const T> { typedef const T& type; };
template <typename T> struct ForceConstRef<T&> { typedef const T& type; };
template <typename T0, typename T1>
class LuaSignalTrampoline : public LuaSignalTrampolineBase {
public:
typedef typename ForceConstRef<T0>::type type0;
typedef typename ForceConstRef<T1>::type type1;
Translate:Add({
English = {
cheats = 'Cheats!',
}
})
local ui = Engine.ui
local t = Translate:GetTranslator()
local cheatMission = function (loaded)
@johnbartholomew
johnbartholomew / test.cpp
Created December 16, 2012 23:09
Checking overloads for sin and cos functions in C++11
#include <cmath>
#include <type_traits>
static_assert(std::is_same<float, decltype(std::sin(3.1f))>::value,
"std::sin not overloaded for float");
static_assert(std::is_same<double, decltype(std::sin(3.1))>::value,
"std::sin not overloaded for double");
static_assert(std::is_same<long double, decltype(std::sin(3.1l))>::value,
"std::sin not overloaded for long double");
function MinMaxCommodity(sys)
sys = sys or Game.system
if sys:isa('SystemPath') then
sys = sys:GetStarSystem()
end
local alt = sys:GetCommodityBasePriceAlterations()
local minPrice = math.huge
local maxPrice = -math.huge
local minCargo, maxCargo
function numbered_keys(step, context, position)
local k = position
local f = function(s, i)
local v
k,v = step(s, k)
if k ~= nil then
return (i+1), v
end
end
@johnbartholomew
johnbartholomew / str2long.c
Created March 6, 2013 12:20
str2long function with correct range checks.
/* Written for
*
* A Quick Coding Contest: Convert String to Integer Without Overflow
*
* http://blog.regehr.org/archives/909
*
* This has not yet been run through clang's integer behaviour sanitizer,
* because I don't have a recent enough clang build.
*/
#if 0 /* example use: */
#define EMIT_FIXUP_DEFINITIONS 1
/* if EMIT_FIXUP_DEFINITIONS is 0 or undefined then
* only the struct declaration will be emitted
* typically you want to only emit fixup function
* definitions in a single translation unit.
*/
#define DECLARE_STRUCT_NAME BITMAPFILEHEADER
-- Gets a list of stations in nearby systems that match some criteria.
--
-- Example:
--
-- local orbital_ports = Game.system:GetNearbyStationPaths(
-- 30, nil, function (station) return station.type == 'STARPORT_ORBITAL' end, true)
--
-- for i = 1, #orbital_ports do
-- local path = orbital_ports[i]
-- print(path, ' -- ', path:GetSystemBody().name, ' in system ', path:GetStarSystem().name)
@johnbartholomew
johnbartholomew / gist:5434034
Last active December 16, 2015 12:19
Pioneer approximate code style conventions
Classes, namespaces and methods are LikeThis.
Non-public member variables are m_likeThis.
Local variables and local constants are likeThis.
Public member variables are likeThis, but you should think about making them non-public and providing an accessor instead.
Accessors are called GetFooBar() and SetFooBar(), but you should think about whether you really want to provide SetFooBar() or if you want to provide nicer verb methods (e.g., Missile provides Arm() and Disarm(), rather than SetArmed()).
// build with: g++ -std=c++98 -Wall -ocheck test.cpp
#include <iostream>
#include <string>
#include <sstream>
int parse_int(const char *x) {
std::istringstream ss(x);
int y;
ss >> y;