Introduction
Introduction Statistics Contact Development Disclaimer Help
tcommon.h - clic - Clic is an command line interactive client for gopher writte…
git clone git://bitreich.org/clic/ git://hg6vgqziawt5s4dj.onion/clic/
Log
Files
Refs
Tags
LICENSE
---
tcommon.h (1703B)
---
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <string.h>
5 #include <inttypes.h>
6
7 #ifndef offsetof
8 #define offsetof(type, slot) ((long) ((char *) &(((type *) 0)->slot)))
9 #endif
10 #define getslot(type, slot) (((type *) 0)->slot)
11 #define sizeofslot(type, slot) (sizeof(getslot(type, slot)))
12 #define countofslot(type, slot) \
13 (sizeof(getslot(type, slot)) / sizeof(getslot(type, slot)[0]))
14 #define stringify(x) #x
15 #define indirect_stringify(x) stringify(x)
16
17 #define TYPE_SIGNED_P(type) (((type)-1)<0LL)
18 #define _64_BIT_VALUE_FITS_SIGNED_P(value) ( (value) <= 0x7FFFFFFFFFFFFF…
19 #define SLOT_SIGNED_P(result, type, slot) …
20 do { …
21 type slot_signed_p_struct; …
22 slot_signed_p_struct.slot = -1; …
23 (result) = slot_signed_p_struct.slot < 0; …
24 } while (0)
25
26 void type_name(FILE *output, int signed_p, int size) {
27 if (signed_p) {
28 switch (size) {
29 case 1: fprintf(output, ":int8"); break;
30 case 2: fprintf(output, ":int16"); break;
31 case 4: fprintf(output, ":int32"); break;
32 case 8: fprintf(output, ":int64"); break;
33 default: goto error;
34 }
35 } else {
36 switch(size) {
37 case 1: fprintf(output, ":uint8"); break;
38 case 2: fprintf(output, ":uint16"); break;
39 case 4: fprintf(output, ":uint32"); break;
40 case 8: fprintf(output, ":uint64"); break;
41 default: goto error;
42 }
43 }
44
45 return;
46
47 error:
48 fprintf(output, "(cl:error \"No type of size ~D.\" %i)\n", size);
49 }
50
51 char* print_double_for_lisp(double n)
52 {
53 static char buf[256];
54 memset(buf, 0, 256);
55 snprintf(buf, 255, "(let ((*read-default-float-format* 'double-float…
56 return buf;
57 }
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.