31 #include "mongo/base/string_data.h" 32 #include "mongo/bson/util/builder.h" 45 void reset(
unsigned sz);
51 const char*
buf()
const {
75 *((
char*)
grow(
sizeof(
char))) =
j;
78 *((
char*)
grow(
sizeof(
char))) =
j;
81 *((
short*)
grow(
sizeof(
short))) =
j;
84 *((
int*)
grow(
sizeof(
int))) =
j;
87 *((
unsigned*)
grow(
sizeof(
unsigned))) =
j;
90 *((
bool*)
grow(
sizeof(
bool))) =
j;
93 *((
double*)
grow(
sizeof(
double))) =
j;
96 *((
long long*)
grow(
sizeof(
long long))) =
j;
99 *((
unsigned long long*)
grow(
sizeof(
unsigned long long))) =
j;
103 memcpy(
grow((
unsigned)len), src, len);
111 void appendStr(StringData str,
bool includeEOO =
true) {
112 const unsigned len = str.size() + (includeEOO ? 1 : 0);
113 verify(len < (
unsigned)BSONObjMaxUserSize);
114 str.copyTo(
grow(len), includeEOO);
126 inline char*
grow(
unsigned by) {
127 unsigned oldlen =
_len;
139 void _realloc(
unsigned newSize,
unsigned oldLenInUse);
unsigned len() const
Definition: aligned_builder.h:118
void appendNum(double j)
Definition: aligned_builder.h:92
void growReallocate(unsigned oldLenInUse)
Definition: aligned_builder.cpp:96
void appendNum(bool j)
Definition: aligned_builder.h:89
int ofs
Definition: btree_interface.cpp:337
struct mongo::AlignedBuilder::AllocationInfo _p
void appendNum(short j)
Definition: aligned_builder.h:80
char * atOfs(unsigned ofs)
if buffer grows pointer no longer valid
Definition: aligned_builder.h:65
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
static const unsigned Alignment
Definition: aligned_builder.h:123
void reset()
reset for a re-use.
Definition: aligned_builder.cpp:52
char * grow(unsigned by)
returns the pre-grow write position
Definition: aligned_builder.h:126
~AlignedBuilder()
Definition: aligned_builder.h:40
Definition: aligned_builder.h:142
void mallocSelfAligned(unsigned sz)
Definition: aligned_builder.cpp:82
char * cur()
if buffer grows pointer no longer valid
Definition: aligned_builder.h:70
void appendChar(char j)
Definition: aligned_builder.h:74
Journal j
Definition: dur_journal.cpp:193
a page-aligned BufBuilder.
Definition: aligned_builder.h:37
unsigned _len
Definition: aligned_builder.h:147
void appendStruct(const T &s)
Definition: aligned_builder.h:107
void _realloc(unsigned newSize, unsigned oldLenInUse)
Definition: aligned_builder.cpp:153
void kill()
Definition: aligned_builder.cpp:170
const char * buf() const
note this may be deallocated (realloced) if you keep writing or reset().
Definition: aligned_builder.h:51
void appendStr(StringData str, bool includeEOO=true)
Definition: aligned_builder.h:111
void appendNum(int j)
Definition: aligned_builder.h:83
void _malloc(unsigned sz)
Definition: aligned_builder.cpp:133
void _free(void *)
Definition: aligned_builder.cpp:162
size_t skip(unsigned n)
leave room for some stuff later
Definition: aligned_builder.h:58
unsigned _size
Definition: aligned_builder.h:145
char * _data
Definition: aligned_builder.h:143
void appendNum(long long j)
Definition: aligned_builder.h:95
void appendNum(unsigned j)
Definition: aligned_builder.h:86
void * _allocationAddress
Definition: aligned_builder.h:144
void appendNum(char j)
Definition: aligned_builder.h:77
AlignedBuilder(unsigned init_size)
Definition: aligned_builder.cpp:43
void appendBuf(const void *src, size_t len)
Definition: aligned_builder.h:102
void appendNum(unsigned long long j)
Definition: aligned_builder.h:98