Skip to content

Instantly share code, notes, and snippets.

@SaitoAtsushi
SaitoAtsushi / bitcount.cpp
Created October 22, 2018 09:18
元記事の趣旨とは違うけど、コンパイル時にテーブル生成をするのをやってみた。 これの件 → https://qiita.com/Kogia_sima/items/f47ea613d5274ab65ead
#include <cstdint>
#include <array>
using bitcount_table_t = std::array<int, 256>;
template<int n>
struct make_bitcount_table_helper {
constexpr static auto bitcount(std::uint8_t x) noexcept -> uint8_t {
return x==1 or x==0 ? x : (x bitand 1) + bitcount(x>>1);
}
@SaitoAtsushi
SaitoAtsushi / makefile
Created October 14, 2018 09:35
プログラミングパズル的なアレ → http://nabetani.sakura.ne.jp/hena/ordf09rotbox/
OBJS = solver.o test.o
f90 : $(OBJS)
$(CXX) $(LDFLAGS) $^ -o $@
$(OBJS): %.o: %.cpp
$(CXX) -c $(CFLAGS) $< -o $@
clean:
@SaitoAtsushi
SaitoAtsushi / explode.c
Created October 1, 2018 21:09
PHP の explode みたいなやつを C でやってみる遊び。 これの別解を考えてみた。 → https://qiita.com/1000VICKY/items/7456cf7f75b9b34dc3bd
#include <string.h>
#include <stdlib.h>
#include <iso646.h>
#include "explode.h"
static char** helper(char* str, const char* delim, size_t delim_size, size_t depth) {
char* matched_str = strstr(str, delim);
char** result;
if(matched_str) {
@SaitoAtsushi
SaitoAtsushi / PKGBUILD
Last active April 9, 2018 04:05
patch of gdbm-1.14 for MinGW
pkgbase=mingw-w64-gdbm
pkgname=("${MINGW_PACKAGE_PREFIX}-gdbm")
pkgver=1.14
pkgrel=1
pkgdesc="GNU database library"
arch=('i686' 'x86_64')
url="https://www.gnu.org/software/gdbm/gdbm.html"
license=('GPL3')
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "make" "patch")
@SaitoAtsushi
SaitoAtsushi / makefile
Created January 18, 2018 22:46
ISLISP 処理系 KISS 用の makefile
SRCS := $(wildcard *.c)
OBJS := $(patsubst %.c,%.o,$(SRCS))
DOBJS := $(addprefix debug/,$(OBJS))
POBJS := $(addprefix profile/,$(OBJS))
CC = gcc
CFLAGS = -Wall -O3
LDFLAGS =
LIBS = -lm -lgmp
#include <iostream>
#include <cstdint>
class digit_t {
friend std::istream& operator>>(std::istream&, digit_t&);
friend std::ostream& operator<<(std::ostream&, digit_t&);
private:
using value_type = uint_least64_t;
value_type data;
unsigned int check_digit;
@SaitoAtsushi
SaitoAtsushi / q6.scm
Last active February 8, 2017 08:17
第25回シェル芸勉強会 Q6 -- UTF-16LE
#!r6rs
;; 第25回シェル芸勉強会 Q6 -- UTF-16LE
;; http://qiita.com/nakataSyunsuke/items/339965853684dd11e755
(import (rnrs)
(rnrs mutable-strings))
(define (transcoded-from-hexstring-port in)
(define temporary (make-string 4))
(define (read-cp)
(let* ((h (get-string-n! in temporary 2 2))
@SaitoAtsushi
SaitoAtsushi / cyclone-bootstrap-msys2.patch
Created January 26, 2017 07:03
Patch of cyclone-bootstrap to build on msys2.
diff --git a/Makefile b/Makefile
index 0d31152..d09b1df 100644
--- a/Makefile
+++ b/Makefile
@@ -6,10 +6,16 @@
include Makefile.config
+UNAME = $(shell uname -a)
COBJ = scheme/base scheme/read scheme/write scheme/case-lambda scheme/char scheme/complex scheme/cxr scheme/eval scheme/file scheme/inexact scheme/lazy scheme/load scheme/process-context scheme/time scheme/cyclone/common scheme/cyclone/libraries scheme/cyclone/macros scheme/cyclone/transforms scheme/cyclone/ast scheme/cyclone/cps-optimizations scheme/cyclone/cgen scheme/cyclone/util scheme/cyclone/test scheme/cyclone/pretty-print scheme/cyclone/primitives srfi/1 srfi/2 srfi/9 srfi/18 srfi/27 srfi/69 srfi/106 srfi/111 srfi/113 srfi/117 srfi/128 srfi/132 srfi/133
@SaitoAtsushi
SaitoAtsushi / testcase.cpp
Created April 4, 2016 16:45
clang で通るけど gcc でエラーになる
template<class T>
class foo {
friend void T::qux(void);
private:
int baz;
public:
foo(void) : baz(1){}
};
#include <iostream>
@SaitoAtsushi
SaitoAtsushi / picrin-mingw.diff
Created February 3, 2016 19:34
MinGW32 で picrin のビルドを通すパッチ
diff --git a/contrib/10.roundtrip/emyg_atod.c b/contrib/10.roundtrip/emyg_atod.c
index f742e15..f69c50e 100644
--- a/contrib/10.roundtrip/emyg_atod.c
+++ b/contrib/10.roundtrip/emyg_atod.c
@@ -44,6 +44,10 @@
#include <ctype.h> // used by emyg_strtod
#include <math.h> // scalb()
+#ifdef __MINGW32__
+#define scalb _scalb