Skip to content

Instantly share code, notes, and snippets.

View Robbepop's full-sized avatar
🐣

Robin Freyler Robbepop

🐣
  • Berlin
View GitHub Profile
@Robbepop
Robbepop / print_counted.cpp
Created June 10, 2015 02:52
Variadic Templates playground
#include <iostream>
template<typename T>
void print_counted_acc(size_t acc, T head) {
std::cout << acc << ' ' << head << '\n';
}
template<typename T, typename... Args>
void print_counted_acc(size_t acc, T head, Args... tail) {
std::cout << acc << ' ' << head << '\n';
@Robbepop
Robbepop / explicit_types.cpp
Created June 17, 2015 17:15
Some helper user defined literals in order to improve syntax with an extensive use of uniform initialization.
#include <cstdint>
#include <cstddef>
namespace explicit_types {
//====================================================================================
// Operator definitions for signed int types
//====================================================================================
constexpr auto operator"" _i8 (unsigned long long value) noexcept -> int8_t { return value; }
constexpr auto operator"" _i16(unsigned long long value) noexcept -> int16_t { return value; }
use std::rc::Rc;
use std::cell::Cell;
use std::cell::RefCell;
use std::ops::Add;
use std::ops::Sub;
use std::ops::Range;
use std::fmt;
@Robbepop
Robbepop / .rustfmt.toml
Created March 16, 2017 18:19
.rustfmt.toml with all configs, descriptions, parameters and defaults for version 0.7.1 of rustfmt.
# ----------------------------------------------------------------------------------
# r u s t f m t - C O N F I G
# ==================================================================================
#
# Version: 0.7.1
# Author : Robbepop <robbepop@web.de>
#
# A predefined .rustfmt.toml file with all configuration options and their
# associated description, possible values and default values for use in other
# projects.
@Robbepop
Robbepop / mult_replace.rs
Created October 24, 2017 21:18
How to replace multiplication by a constant with shift and add operations.
// Multiplication by a constant can be replaced by multiple shift and addition operations:
// The following table shows that for constants from 1 to 36.
//
// ============================================================================
// N | Factorized | # Ops | Ops with x as input
// ----------------------------------------------------------------------------
// 1 | 1 | 0 | x
// 2 | 2 | 1 | x << 1
// 3 | 2 + 1 | 2 | x << 1 + x
// 4 | 4 | 1 | x << 2
use ast2::prelude::*;
use simplifier::prelude::*;
pub mod prelude {
pub use super::BoolReducer;
}
/// This simplification procedure dissolves symbolic tautologies or contradictions
/// for boolean expressions.
///

Keybase proof

I hereby claim:

  • I am robbepop on github.
  • I am herobird (https://keybase.io/herobird) on keybase.
  • I have a public key ASAqEVoi9VO42oPAQHmY21kujCqXIk70xe2RkiwyyGAXhAo

To claim this, I am signing this object:

@Robbepop
Robbepop / ink-3.0-and-canvas-node-setup.md
Created October 14, 2020 12:58
Hot to setup ink! 3.0 and Canvas Node

How to setup ink! 3.0 and Canvas Node

@Robbepop
Robbepop / ink-3.0-and-canvas-node-setup.md
Created October 14, 2020 12:59
Hot to setup ink! 3.0 and Canvas Node

Hot to setup ink! 3.0 and Canvas Node

@Robbepop
Robbepop / const_eval_for_next_power_of_two.rs
Created October 25, 2020 21:47
Constant evulator for next_power_of_two in proc. macros.
fn const_next_power_of_two(ty: TokenStream2, value: TokenStream2) -> TokenStream2 {
quote! {{
if (#value) <= 1 {
0
} else {
let p = (#value) - 1;
let z = p.leading_zeros();
<#ty>::MAX as usize >> z
}
}}