Browse Source

compile-fixes

pull/2/head
Jacob Dufault 8 years ago
parent
commit
820a1dc093
  1. 6
      src/query.h
  2. 85
      src/string.cc
  3. 4
      src/typed_bidi_message_queue.h

6
src/query.h

@ -30,7 +30,7 @@ struct IdMap;
struct QueryableLocation {
Usr path;
Range range;
QueryableLocation(Usr path, Range range)
: path(path), range(range) {}
@ -100,8 +100,8 @@ struct ReplacementUpdate {
// New entries.
std::vector<TValue> values;
ReplacementUpdate(Usr usr, const std::vector<TValue>& entries)
: usr(usr), entries(entries) {}
ReplacementUpdate(Usr usr, const std::vector<TValue>& values)
: usr(usr), values(values) {}
};
struct QueryableFile {

85
src/string.cc

@ -1,85 +0,0 @@
#include "buffer.h"
#include <cstring>
#include <cstdint>
#include <memory>
#include <unordered_map>
#include <unordered_set>
#include <string>
#include <vector>
struct CXString {}; // TODO
struct StringView {
StringView(const char* str, size_t len);
const char* const str;
size_t len;
};
struct StringDb {
StringView GetString(const std::string& str);
StringView GetString(const char* str);
StringView GetString(CXString cx_string);
struct StringStorage {
~StringStorage();
static StringStorage CreateUnowned(const char* data, size_t len);
void Copy();
const char* data;
size_t len;
bool owns_data;
};
std::unordered_set<StringStorage> data_;
};
StringDb::StringStorage::~StringStorage() {
if (owns_data) {
free((void*)data);
data = nullptr;
owns_data = false;
}
}
StringDb::StringStorage StringDb::StringStorage::CreateUnowned(const char* data,
size_t len) {
StringStorage result;
result.data = data;
result.len = len;
result.owns_data = false;
return result;
}
void StringDb::StringStorage::Copy() {
// Copy
char* new_data = (char*)malloc(len + 1);
strncpy(new_data, data, len + 1);
// Assign
data = new_data;
owns_data = true;
}
StringView::StringView(const char* str, size_t len) : str(str), len(len) {}
StringView StringDb::GetString(const std::string& str) {
StringStorage lookup = StringStorage::CreateUnowned(str.c_str(), str.length());
auto it = data_.insert(str);
if (it.second)
it.first->Copy();
return StringView(it.first->c_str(), it.first->length());
}
StringView StringDb::GetString(CXString cx_string) {
assert(cx_string.data);
StringView result string=clang_getCString(cx_string);
clang_disposeString(cx_string);
}

4
src/typed_bidi_message_queue.h

@ -74,9 +74,7 @@ struct TypedBidiMessageQueue {
document.Parse(
reinterpret_cast<const char*>(buffer->data) + sizeof(MessageHeader),
buffer->capacity - sizeof(MessageHeader));
bool has_error = document.HasParseError();
auto error = document.GetParseError();
if (has_error) {
if (document.HasParseError()) {
std::cerr << "[FATAL]: Unable to parse IPC message" << std::endl;
exit(1);
}

Loading…
Cancel
Save