-rw-r--r-- 1384 holtrace-20250617/out.h raw
#ifndef out_h #define out_h #include <string.h> #define OUT_MAX 16384 extern char out_buf[OUT_MAX]; extern int out_pos; // always between 0 and OUT_MAX extern void out_write1(const char *,unsigned long long); static inline void out_flush(void) { if (!out_pos) return; out_write1(out_buf,out_pos); out_pos = 0; } static inline void out(const char *out_x,long long out_xlen) { if (out_xlen < 0) return; if (out_pos) { if (out_xlen <= OUT_MAX-out_pos) { memcpy(out_buf+out_pos,out_x,out_xlen); out_pos += out_xlen; return; } out_flush(); } if (out_xlen < OUT_MAX) { memcpy(out_buf,out_x,out_xlen); out_pos = out_xlen; return; } out_write1(out_x,out_xlen); } static inline void out_string(const char *out_x) { out(out_x,strlen(out_x)); } static inline void out_ulonglong(unsigned long long out_u) { int out_ulen = 0; // will output out_ulen+1 bytes unsigned long long out_tenlen = 1; // nice tea unsigned long long out_q = out_u; while (out_q > 9) { out_tenlen *= 10; out_q /= 10; ++out_ulen; } do { char out_c = '0'+((out_u/out_tenlen)%10); out_tenlen /= 10; out(&out_c,1); } while (out_ulen--); } static inline void out_longlong(long long out_i) { if (out_i >= 0) out_ulonglong(out_i); else { out("-",1); out_ulonglong(-(unsigned long long) out_i); } } #endif