ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtutil.C
Revision: 1.4
Committed: Sun Jan 29 22:27:04 2006 UTC (18 years, 3 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.3: +27 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #include <cstdlib>
2     #include <cstring>
3     #include <inttypes.h>
4    
5     #include "rxvtutil.h"
6    
7     class byteorder byteorder;
8    
9 root 1.2 unsigned int byteorder::e;
10    
11 root 1.1 byteorder::byteorder ()
12     {
13     union {
14     uint32_t u;
15     uint8_t b[4];
16     } w;
17    
18     w.b[0] = 0x11;
19     w.b[1] = 0x22;
20     w.b[2] = 0x33;
21     w.b[3] = 0x44;
22    
23     e = w.u;
24     }
25    
26 root 1.4 #if !HAVE_GCC_BUILTINS
27     int ctz (unsigned int x)
28     {
29     int r = 0;
30    
31     x &= -x; // this isolates the lowest bit
32    
33     if (x & 0xaaaaaaaa) r += 1;
34     if (x & 0xcccccccc) r += 2;
35     if (x & 0xf0f0f0f0) r += 4;
36     if (x & 0xff00ff00) r += 8;
37     if (x & 0xffff0000) r += 16;
38    
39     return r;
40     }
41    
42     int popcount (unsigned int x)
43     {
44     x -= (x >> 1) & 0x55555555;
45     x = ((x >> 2) & 0x33333333) + (x & 0x33333333);
46     x = ((x >> 4) + x) & 0x0f0f0f0f;
47     x *= 0x01010101;
48    
49     return x >> 24;
50     }
51     #endif
52    
53 root 1.2 void *
54     zero_initialized::operator new (size_t s)
55     {
56     void *p = malloc (s);
57    
58     memset (p, 0, s);
59     return p;
60     }
61    
62     void
63     zero_initialized::operator delete (void *p, size_t s)
64     {
65     free (p);
66     }
67    
68 root 1.3 static void *temp_buf;
69     static uint32_t temp_len;
70    
71     void *
72     rxvt_temp_buf (int len)
73     {
74     if (len > temp_len)
75     {
76     free (temp_buf);
77     temp_buf = malloc (len);
78     temp_len = len;
79     }
80    
81     return temp_buf;
82     }
83 root 1.1
84