ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/dynbuf.C
(Generate patch)

Comparing deliantra/server/server/dynbuf.C (file contents):
Revision 1.3 by root, Fri Sep 1 21:39:59 2006 UTC vs.
Revision 1.4 by root, Sat Sep 2 16:37:58 2006 UTC

100{ 100{
101 char buf [max_sint32_size]; 101 char buf [max_sint32_size];
102 char *p = buf + sizeof (buf); 102 char *p = buf + sizeof (buf);
103 char neg; 103 char neg;
104 104
105 uint32 val;
106
105 if (i < 0) 107 if (i < 0)
106 { 108 {
107 neg = '-'; 109 neg = '-';
108 i = -i; 110 val = -i;
109 } 111 }
110 else 112 else
113 {
111 neg = 0; 114 neg = 0;
112 115 val = i;
113 uint32 val = i; 116 }
114 117
115 do 118 do
116 { 119 {
117 uint32 div = val / 10; 120 uint32 div = val / 10;
118 *--p = '0' + char (val - div * 10); 121 *--p = '0' + char (val - div * 10);
132 { 135 {
133 add (sint32 (i)); 136 add (sint32 (i));
134 return; 137 return;
135 } 138 }
136 139
140 char buf [max_sint64_size];
141 char *p = buf + sizeof (buf);
142 char neg;
143
137 uint64 val; 144 uint64 val;
138 145
139 if (i < 0) 146 if (i < 0)
140 { 147 {
141 add ('-'); 148 neg = '-';
142 val = -i; 149 val = -i;
143 } 150 }
144 else 151 else
145 val = i;
146
147 if (val > UINT64_C (1000000000000000))
148 { 152 {
149 add (sint32 (val / UINT64_C (1000000000000000))); 153 neg = 0;
150 val %= UINT64_C (1000000000000000); 154 val = i;
151 } 155 }
152 156
153 if (val > 10000000) 157 do
154 { 158 {
155 add (sint32 (val / 10000000)); 159 uint64 div = val / 10;
156 val %= 10000000; 160 *--p = '0' + char (val - div * 10);
161 val = div;
157 } 162 }
163 while (val);
158 164
159 add (sint32 (val)); 165 if (neg)
166 *--p = neg;
167
168 add ((void *)p, buf + sizeof (buf) - p);
160} 169}
161 170

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines