Refactor compilation process around the new concept of packages.
1 /* vim: set ts=4 sw=4 tw=99 et:
3 * Copyright (C) 2012 David Anderson
5 * This file is part of JITCraft.
7 * JITCraft is free software: you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License as published by the Free
9 * Software Foundation, either version 3 of the License, or (at your option)
12 * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with
17 * JITCraft. If not, see http://www.gnu.org/licenses/.
19 #ifndef _include_jc_compact_buffer_h_
20 #define _include_jc_compact_buffer_h_
22 #include "AllocatorPolicies.h"
28 class CompactBufferReader
34 CompactBufferReader(const uint8 *start, const uint8 *end)
52 value |= (byte >> 1) << shift;
65 class CompactBufferWriter
67 Vector<uint8, ZoneAllocatorPolicy> buffer_;
76 void writeUint8(unsigned value) {
77 enoughMemory_ &= buffer_.append(value);
79 void writeUint32(unsigned value) {
81 writeUint8(((value & 0x7F) << 1) | (value > 0x7F));
86 uint8 *buffer() const {
87 return buffer_.buffer();
89 size_t length() const {
90 return buffer_.length();
94 return !enoughMemory_;
100 #endif // _include_jc_compact_buffer_h_