Skip to content

Instantly share code, notes, and snippets.

Avatar
🐢
on going

yoh yohhoy

🐢
on going
View GitHub Profile
View utf8_util.hpp
bool starts_with_utf8bom(std::string_view s)
{
constexpr char utf8_bom[3] = { 0xEF, 0xBB, 0xBF };
return s.length() >= 3 && std::equal(utf8_bom, utf8_bom + 3, s.begin());
}
std::string& erase_utf8bom(std::string& text)
{
if (starts_with_utf8bom(text)) {
text.erase(0, 3);
View decltype.cpp
#include <type_traits>
int main() {
int x = 42;
static_assert(std::is_same_v<decltype( x ), int>);
static_assert(std::is_same_v<decltype((x)), int&>);
int (y) = 42; // redundant parentheses
static_assert(std::is_same_v<decltype( y ), int>);
static_assert(std::is_same_v<decltype((y)), int&>);
@yohhoy
yohhoy / spdlog-templ.cpp
Last active Oct 28, 2019
template code for spdlog library
View spdlog-templ.cpp
#include <memory>
#include <vector>
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
#include "spdlog/spdlog.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
int main()
{
@yohhoy
yohhoy / same_as.cpp
Last active Oct 17, 2019
same_as concept in C++20 Standard Library
View same_as.cpp
//
// requires Micosoft VisualC++ 2019 16.3 Preview 2 that implements P0717R1.
//
// https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual-studio-2019-version-16-3/
// https://wg21.link/p0717r1 Semantic constraint matching for concepts
#include <type_traits>
#if 1
template <class T, class U>
concept same_as_impl = std::is_same_v<T, U>;
@yohhoy
yohhoy / subsume-P0717R1.txt
Last active Sep 11, 2019
C++20 Concepts constraints subsumption analysis
View subsume-P0717R1.txt
constraint-expressions:
- C1<T>^c && C2<T>^c
- C1<T>^d
# concept version
template <class T> concept C1<T> = true^a;
template <class T> concept C2<T> = true^b;
normal form of P = true^a ∧ true^b
normal form of Q = true^a
@yohhoy
yohhoy / str2tc.c
Created Aug 19, 2019
FFmpeg/av_timecode_init_from_string() with "59.94DF" support
View str2tc.c
/*
* https://github.com/intel/ffmpeg_libyami/blob/master/libavutil/timecode.c
*/
inline int av_timecode_init_from_string2(AVTimecode* tc, AVRational rate, const char* str)
{
#if 0
return av_timecode_init_from_string(&tc, rate, str, NULL);
#else
char c;
int hh, mm, ss, ff;
View TypeSafeBridge.md
// callee.m iOS Native(Objective-C) class
@interface NativeType
- (void)method:(int)arg;
@end

@implementation NativeType
// ...
@end
@yohhoy
yohhoy / invokeObjC.c
Created Jun 14, 2019
invoke Obj-C from pure-C
View invokeObjC.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <objc/message.h>
SEL sel_propSetter(Class clazz, const char* pname)
{
char* attr = property_copyAttributeValue(class_getProperty(clazz, pname), "S");
@yohhoy
yohhoy / ver.cpp
Created Apr 18, 2019
compiler version snippet
View ver.cpp
#if defined(__clang__)
#pragma message "Clang " __VERSION__
#elif defined(__GNUC__)
#pragma message "GCC " __VERSION__
#elif defined(_MSC_VER)
// https://qiita.com/yumetodo/items/8c112fca0a8e6b47072d
#define STR(s) #s
#define DUMP(s) #s "=" STR(s)
#pragma message ("MSVC " DUMP(_MSC_VER) " " DUMP(_MSC_FULL_VER))
#endif
View loop1.rs
// for i in 0..v.len() {sum += v[i];}
// https://play.rust-lang.org/?version=stable&mode=release&edition=2015&gist=a234fd242a39e0e33d1775ba986a7f50
playground::main:
pushq %r14
pushq %rbx
subq $152, %rsp
movq $0, 16(%rsp)
movl $800000000, %edi
movl $8, %esi
callq __rust_alloc@PLT
You can’t perform that action at this time.