Skip to content

Instantly share code, notes, and snippets.

View usagi's full-sized avatar
🍣
Sushi

Usagi Ito usagi

🍣
Sushi
View GitHub Profile
@usagi
usagi / file0.txt
Created March 14, 2016 09:31
cereal と boost::variant で何でもほいほい入れてシリアライズする例 ref: http://qiita.com/usagi/items/497a07909069187cd045
#include <cereal/cereal.hpp>
#include <cereal/archives/json.hpp>
#include <cereal/types/vector.hpp>
#include <cereal/types/unordered_map.hpp>
#include <cereal/types/string.hpp>
#include <cereal/types/boost_variant.hpp>
using variant_data_type = boost::make_recursive_variant
< std::string
, std::uint8_t, std::uint16_t, std::uint32_t, std::uint64_t
@usagi
usagi / file0.cpp
Last active March 14, 2016 04:50
cereal を使いはじめるにあたって確認した事、はまった事 ref: http://qiita.com/usagi/items/8e00f23b2508c98947b3
#include <cereal/cereal.hpp>
#include <cereal/archives/json.hpp>
#include <limits>
#include <cstint>
#include <iostream>
auto main() -> int
{
cereal::JSONOutputArchive( std::cout )( std::numeric_limits< std::uint64_t >::max() );
}
@usagi
usagi / file0.cpp
Last active March 18, 2016 04:49
WebP Advanced API の使い方 ref: http://qiita.com/usagi/items/846aa3dcfe4a087f4ad3
// glm ライブラリーの glm::u8vec4 など必要に応じて読み替える
struct rgba_pixel { std::uint8_t r, g, b, a; };
// デコードされたRGBAピクセルの塊と必要最低限の画像情報を保持する型
struct decoded_image_type
{
int width;
int height;
int elements;
std::vector< rgba_pixel > data;
@usagi
usagi / file0.txt
Created March 9, 2016 23:19
SQLite3 をキレイな CMake プロジェクトとしてビルドするキタナイ ExternalProject の書き方 ref: http://qiita.com/usagi/items/8c9debd3437538bbfa1c
cmake_minimum_required( VERSION 3.2 )
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/lib)
include( ExternalProject )
set( sqlite3_source_path ${CMAKE_CURRENT_BINARY_DIR}/external/sqlite3/src/external_sqlite3/ )
set( sqlite3_cmake_file_path ${sqlite3_source_path}/CMakeLists.txt )
@usagi
usagi / file0.txt
Last active March 19, 2025 20:38
CMake プロジェクトの C++ アプリで webp 形式の読み書きに libwebp で対応することはじめ ref: http://qiita.com/usagi/items/38589f87a7a88ad1ddcb
cmake_minimum_required( VERSION 3.2 )
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/lib)
include( ExternalProject )
ExternalProject_Add( external_libwebp
# https://github.com/webmproject/libwebp
# http://www.webmproject.org/
@usagi
usagi / file0.cpp
Last active March 7, 2016 19:56
ビルド後のバイナリー実行ファイルにポストプロセスで変数の値を書き換える方法 ref: http://qiita.com/usagi/items/a0889903e09c1af2b462
static volatile constexpr char mojimoji[] = "abcd1234";
static volatile constexpr unsigned char mojisize = sizeof( mojimoji );
#include <iostream>
auto main() -> int
{
std::cout << ( const char* )mojimoji << " " << std::to_string( mojisize );
}
@usagi
usagi / file0.txt
Created February 26, 2016 18:05
CMake/C++ プロジェクトについて GCC または Clang のバージョンに併せた最新の -std オプションを与える CMake の記述例 ref: http://qiita.com/usagi/items/a12d5bf08f4a7a13329d
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
if( CMAKE_CXX_COMPILER_VERION VERSION_GREATER 3.5 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 3.5 )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z" )
elseif( CMAKE_CXX_COMPILER_VERION VERSION_GREATER 3.2 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 3.2 )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y" )
else()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
@usagi
usagi / file0.txt
Last active February 23, 2016 15:08
Git が dirty か判定する方法と CMake での応用例 ref: http://qiita.com/usagi/items/34e65259b4fdbd2c245e
git diff --shortstat --exit-code --quiet
@usagi
usagi / file0.txt
Created February 13, 2016 07:51
windows の mingw 環境から chocolatey を `sudo cinst vlc` のように使いたい人のための `sudo` の作り方 ref: http://qiita.com/usagi/items/2623145f22faf54b99e0
function sudo()
{
command=$1
shift
powershell -Command Start-Process -Verb runas ${command} { $@ }
}
@usagi
usagi / file0.txt
Last active January 26, 2016 11:08
C++ & ISO8601 : 時刻文字列 "2016-01-25T15:30:15.123+09:00" を出力する例 ref: http://qiita.com/usagi/items/ab8ec7014d1b1b1894d2
2016-01-25T15:30:15.123+09:00