Skip to content

Instantly share code, notes, and snippets.

import std;
import core.stdc.stdlib;
import core.sys.posix.dlfcn;
version(D_OpenD){
enum compiler="opend -shared -of=";
} else {
version(DigitalMars) enum compiler="dmd -shared -of=";
version(LDC) enum compiler="ldc -shared -of=";
}
//unittest{
--- meta.d
import std;
alias seq(T...)=T;
template appendable(discrim...){
enum ptr_=cast(immutable(void)*)[0].ptr;
auto poke()=>(*(cast(int*)ptr_))++;
auto count()=>(*(cast(int*)ptr_));
template store(int i){
template store(T=void,T[] data=null){
alias store=typeof(data[0]);
/*
run dlang.io like gists
the `--- foo.d` thing
*/
import std;
enum tempfolder=".__gist/";
auto dropmap(alias F,R)(R r,int i){
foreach(j;0..i){
--- bar.d
enum hotload; @hotload:
void foo(){}
float bar(){return 3.14;}
enum hotloadstop; @hotloadstop:
void foobar(){}
--- foo.d
import std;
/*
lazy hotload: hot reload a single function file, depends on opend imports
kinda dumb, dont expect templates, changing headers or anything to work
pass relivtivepath filename without the `.d`
*/
import core.stdc.stdlib;
import core.sys.posix.dlfcn;
template mkytemp(T,T[] fakedata=null){//my favorate bug
alias mkytemp=typeof(fakedata[0]);
}
unittest{ //verifing the bug still exists
static assert(is(mkytemp!int==int));
static assert(is(mkytemp!float==int));// <- spooky
}
/*the ast is modified live, so the T[] is defined and doesnt get properly "unset",
null and typeof just glue to make it work nicely; the effect is in the header at the callsite
DO NOT REPORT
import std;
void printctfe(alias A)(string s=""){
if(__ctfe){
__ctfeWrite("ct:"~A.to!string~":"~s~"\n");
} else {
writeln("rt:",A,":",s);
}}
template counter(discrim...){
enum counter=cast(immutable(void)*)[0].ptr;
alias seq(T...)=T;
template groupby(alias F,A...){
template groupby(int I){
alias groupby=seq!();
static foreach(J,a;A){
static if(F(J)==I){
groupby=seq!(groupby,a);
}
}}
}
struct fatslice(T){
T[] data;
int key,keyback;
ref T opIndex(int i)=>data[i+key];
int length()=>keyback-key;
auto opSlice(int i,int j)=>typeof(this)(data,i+key,j+key);
int opDollar()=>keyback-key;
T[] simplify()=>data[key..keyback];
}
auto zipslice(A...)(A args){
import std;
enum string compiler="dmd -unittest -main -run ";
enum string printer="bat --color=always ";
void append(string file,string line){
exe("echo \""~line~"\" >> "~file);
}
void exe(string s)=>executeShell(s).output.writeln;
void delete_(string file,int linestart,int lineend){
auto source=File(file,"r").byLineCopy.array;
File sink=File(file~"temp","w");