| 152 | } |
| 153 | |
| 154 | static inline void sdsinclen(sds s, size_t inc) { |
| 155 | unsigned char flags = s[-1]; |
| 156 | switch(flags&SDS_TYPE_MASK) { |
| 157 | case SDS_TYPE_5: |
| 158 | { |
| 159 | unsigned char *fp = ((unsigned char*)s)-1; |
| 160 | unsigned char newlen = SDS_TYPE_5_LEN(flags)+inc; |
| 161 | *fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS); |
| 162 | } |
| 163 | break; |
| 164 | case SDS_TYPE_8: |
| 165 | SDS_HDR(8,s)->len += inc; |
| 166 | break; |
| 167 | case SDS_TYPE_16: |
| 168 | SDS_HDR(16,s)->len += inc; |
| 169 | break; |
| 170 | case SDS_TYPE_32: |
| 171 | SDS_HDR(32,s)->len += inc; |
| 172 | break; |
| 173 | case SDS_TYPE_64: |
| 174 | SDS_HDR(64,s)->len += inc; |
| 175 | break; |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | /* sdsalloc() = sdsavail() + sdslen() */ |
| 180 | static inline size_t sdsalloc(const sds s) { |