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

Comparing deliantra/server/include/dynbuf.h (file contents):
Revision 1.34 by root, Mon Oct 29 23:55:53 2012 UTC vs.
Revision 1.40 by root, Wed Dec 5 21:18:37 2018 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team
4 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 5 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2002 Mark Wedel & Crossfire Development Team 6 * Copyright (©) 2002 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992 Frank Tore Johansen 7 * Copyright (©) 1992 Frank Tore Johansen
7 * 8 *
8 * Deliantra is free software: you can redistribute it and/or modify it under 9 * Deliantra is free software: you can redistribute it and/or modify it under
9 * the terms of the Affero GNU General Public License as published by the 10 * the terms of the Affero GNU General Public License as published by the
26#define DYNBUF_H__ 27#define DYNBUF_H__
27 28
28#include <cstring> 29#include <cstring>
29#include <cassert> 30#include <cassert>
30 31
31#include "compiler.h" 32#include "ecb.h"
32#include "util.h" 33#include "util.h"
33#include "shstr.h" 34#include "shstr.h"
34 35
35// this is a "buffer" that can grow fast 36// this is a "buffer" that can grow fast
36// and is still somewhat space-efficient. 37// and is still somewhat space-efficient.
84 int size () const { return _size + (ptr - last->data); } 85 int size () const { return _size + (ptr - last->data); }
85 bool empty () const { return !size (); } 86 bool empty () const { return !size (); }
86 87
87 void linearise (void *data); 88 void linearise (void *data);
88 char *linearise () // does not 0-terminate(!) 89 char *linearise () // does not 0-terminate(!)
89 { 90 {
90 return first->next ? _linearise () : first->data; 91 return first->next ? _linearise () : first->data;
91 } 92 }
92 93
93 int room () const { return end - ptr; } 94 int room () const { return end - ptr; }
94 95
95 // make sure we have "size" extra room 96 // make sure we have "size" extra room
96 char *force (int size) 97 char *force (int size)
97 { 98 {
98 if (expect_false (ptr + size > end)) 99 if (ecb_expect_false (ptr + size > end))
99 reserve (size); 100 reserve (size);
100 101
101 assume (ptr + size <= end); 102 ecb_assume (ptr + size <= end);
102 103
103 return ptr; 104 return ptr;
104 } 105 }
105 106
106 // used for force + alloc combo 107 // used for force + alloc combo
190 dynbuf_text &operator << (sint32 i) { add (sint32 (i)); return *this; } 191 dynbuf_text &operator << (sint32 i) { add (sint32 (i)); return *this; }
191 dynbuf_text &operator << (sint64 i) { add (sint64 (i)); return *this; } 192 dynbuf_text &operator << (sint64 i) { add (sint64 (i)); return *this; }
192 dynbuf_text &operator << (uint32 i) { add (sint64 (i)); return *this; } 193 dynbuf_text &operator << (uint32 i) { add (sint64 (i)); return *this; }
193 dynbuf_text &operator << (uint64 i) { add (sint64 (i)); return *this; } 194 dynbuf_text &operator << (uint64 i) { add (sint64 (i)); return *this; }
194 195
195 void printf (const char *format, ...) attribute ((format (printf, 2, 3))); 196 void printf (const char *format, ...) ecb_attribute ((format (printf, 2, 3)));
196 void vprintf (const char *format, va_list ap); 197 void vprintf (const char *format, va_list ap);
197 198
198 void add_abilities (const char *name, uint32 abilities); 199 void add_abilities (const char *name, uint32 abilities);
199 void add_paths (const char *name, uint32 paths); 200 void add_paths (const char *name, uint32 paths);
200 201

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines