Skip to content

Instantly share code, notes, and snippets.

🔆
daily grind

Martin Moene martinmoene

🔆
daily grind
Block or report user

Report or block martinmoene

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@martinmoene
martinmoene / value-semantics-sean-parent.cpp
Created Aug 18, 2015
Code from talk: Inheritance Is The Base Class of Evil by Sean Parent at Going Native 2013
View value-semantics-sean-parent.cpp
// Sean Parent. Inheritance Is The Base Class of Evil. Going Native 2013
// Video: https://www.youtube.com/watch?v=bIhUE5uUFOA
// Code : https://github.com/sean-parent/sean-parent.github.io/wiki/Papers-and-Presentations
/*
Copyright 2013 Adobe Systems Incorporated
Distributed under the MIT License (see license at
http://stlab.adobe.com/licenses.html)
This file is intended as example code and is not production quality.
@martinmoene
martinmoene / main.cpp
Last active Jun 7, 2019
Converting endianness (C++11) - inspired by https://github.com/MayaPosch/ByteBauble
View main.cpp
#include "nonstd/endian.hpp"
#include <iostream>
#define print_to_big_endian(x) \
std::cout << #x << ": " << std::hex << to_num(x) << " to be: " << to_num(nonstd::to_big_endian(x)) << "\n"
#define print_to_little_endian(x) \
std::cout << #x << ": " << std::hex << to_num(x) << " to le: " << to_num(nonstd::to_little_endian(x)) << "\n"
#define print_to_native_endian(x) \
@martinmoene
martinmoene / Jinja2Cpp-ParseError.cpp
Last active Apr 29, 2019
Jinja2Cpp: ParseError and assignment/swap -- Note: nonstd::expected uses swap() in operator=( expected const & other ).
View Jinja2Cpp-ParseError.cpp
//
// If you write
// ParseError(ParseError&& other) noexcept(true) = default;
// the type won't be treated as nothrow move-constructable.
// But if you write this ctor manually - everything is ok.
#include <initializer_list>
#include <utility>
#include <vector>
@martinmoene
martinmoene / app-state-machine.cpp
Last active Apr 17, 2019
C++17 example of user interface with state machine based on std::variant.
View app-state-machine.cpp
// C++17 example of user interface with state machine based on std::variant.
// The state machine engine is based on code by Mateusz Pusz,
// https://github.com/mpusz/fsm-variant (MIT-license)
// CppCon 2016. Ben Deane: Using Types Effectively,
// https://www.youtube.com/watch?v=ojZbFIQSdl8
//------------------------------------------------------------------------
// State machine engine:
@martinmoene
martinmoene / cmd.txt
Last active Oct 10, 2018
Compare number of lines in different Subversion revisions of files
View cmd.txt
# file1.cpp has code removed unintentionally:
> svn-diff-size.py --threshold -60 --histogram --revision 4710:4839 Folder/*.cpp
Folder/file1.cpp: (4317 -> 4136): -181
Folder/file2.cpp: (2323 -> 2145): -178
Folder/file2.cpp: (1031 -> 886): -145
Histogram delta line-count:
-200: 0
-180: 2 **
@martinmoene
martinmoene / non-library-option-example.h
Last active May 21, 2018
C++ option handling without dedicated library
View non-library-option-example.h
using text = std::string;
using texts = std::vector<text>;
inline auto split_option( text arg ) -> std::tuple<text, text>
{
auto pos = arg.rfind( '=' );
return pos == text::npos
? std::make_tuple( arg, "" )
: std::make_tuple( arg.substr( 0, pos ), arg.substr( pos + 1 ) );
@martinmoene
martinmoene / check_result.hpp
Created May 17, 2018
Kenny Kerr. Windows with C++ - C++ and the Windows API. July 2011.
View check_result.hpp
/**
* \file win/check_result.h
*
* \brief Windows API.
* \author Kenny Kerr, Martin Moene
* \date 3 February 2016
* \since 0.0.0
*
* From: Kenny Kerr. Windows with C++ - C++ and the Windows API. July 2011.
* https://msdn.microsoft.com/%20magazine/hh288076
@martinmoene
martinmoene / pipe-godbolt-c++98.cpp
Last active Dec 15, 2017
Simple C++98 functional algorithms for optional-lite
View pipe-godbolt-c++98.cpp
// Simple C++98 functional algorithms for optional-lite
#include <functional>
#include <optional.hpp>
#define RESULT_OF_T(F) typename nonstd::optional_lite::detail::result_of<F>::type
// map(f): perform an operation `U f(T)` on optional's
// content if present and return an nonstd::optional<U>.
@martinmoene
martinmoene / catch-main.cpp
Last active Sep 6, 2017
CATCH - Small complete multi-file example.
View catch-main.cpp
// This tells Catch to provide a main() - only do this in one cpp file:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
@martinmoene
martinmoene / catch-toclify.bat
Last active Aug 27, 2017
Create ToC in markdown files for Catch2 documentation
View catch-toclify.bat
@echo off & setlocal enableextensions
::
:: ./Catch-toclify.bat - ... (https://github.com/rasbt/markdown-toclify)
::
if [%1] == [] goto :Usage
set files= %*%
set root=%~dp0
set toclify=%root%\markdown-toclify.py
You can’t perform that action at this time.