1
0
Fork 0

moved implementations to cpp files

This commit is contained in:
Jan Steemann 2014-08-05 16:10:39 +02:00
parent ccbcade0eb
commit 2471bee676
2 changed files with 88 additions and 84 deletions

View File

@ -105,7 +105,7 @@ AqlValue AqlValue::clone () const {
////////////////////////////////////////////////////////////////////////////////
v8::Handle<v8::Value> AqlValue::toV8 (AQL_TRANSACTION_V8* trx,
TRI_document_collection_t const* document) const {
TRI_document_collection_t const* document) const {
switch (_type) {
case JSON: {
return TRI_ObjectJson(_json->json());
@ -126,10 +126,92 @@ v8::Handle<v8::Value> AqlValue::toV8 (AQL_TRANSACTION_V8* trx,
return values;
}
default: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
case EMPTY: {
return v8::Object::New(); // TODO?
}
}
// should never get here
THROW_ARANGO_EXCEPTION(TRI_ERROR_INTERNAL);
}
////////////////////////////////////////////////////////////////////////////////
/// @brief toString method
////////////////////////////////////////////////////////////////////////////////
std::string AqlValue::toString (TRI_document_collection_t const* document) const {
switch (_type) {
case JSON: {
return _json->toString();
}
case SHAPED: {
// we're lazy and just stringify the json representation
// this does not matter as this code is not performance-sensitive
return toJson(document).toString();
}
case DOCVEC: {
std::stringstream s;
s << "I am a DOCVEC with " << _vector->size() << " blocks.";
return s.str();
}
case RANGE: {
std::stringstream s;
s << "I am a range: " << _range->_low << " .. " << _range->_high;
return s.str();
}
case EMPTY: {
return std::string("empty");
}
}
// should never get here
THROW_ARANGO_EXCEPTION(TRI_ERROR_INTERNAL);
}
////////////////////////////////////////////////////////////////////////////////
/// @brief toJson method
////////////////////////////////////////////////////////////////////////////////
Json AqlValue::toJson (TRI_document_collection_t const* document) const {
switch (_type) {
case JSON: {
return *_json;
}
case SHAPED: {
TRI_shaper_t* shaper = document->getShaper();
TRI_shaped_json_t shaped;
TRI_EXTRACT_SHAPED_JSON_MARKER(shaped, _marker);
triagens::basics::Json json(shaper->_memoryZone, TRI_JsonShapedJson(shaper, &shaped));
char const* key = TRI_EXTRACT_MARKER_KEY(_marker);
std::string id(document->_info._name);
id.push_back('/');
id += std::string(key);
json("_id", triagens::basics::Json(id));
json("_rev", triagens::basics::Json(std::to_string(TRI_EXTRACT_MARKER_RID(_marker) )));
json("_key", triagens::basics::Json(key));
return json;
}
case DOCVEC: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case RANGE: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case EMPTY: {
return triagens::basics::Json();
}
}
THROW_ARANGO_EXCEPTION(TRI_ERROR_INTERNAL);
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -167,97 +167,19 @@ namespace triagens {
////////////////////////////////////////////////////////////////////////////////
v8::Handle<v8::Value> toV8 (AQL_TRANSACTION_V8* trx,
TRI_document_collection_t const* document) const;
TRI_document_collection_t const*) const;
////////////////////////////////////////////////////////////////////////////////
/// @brief toString method
////////////////////////////////////////////////////////////////////////////////
std::string toString (TRI_document_collection_t const* document) {
switch (_type) {
case JSON: {
return _json->toString();
}
case SHAPED: {
TRI_shaper_t* shaper = document->getShaper();
TRI_shaped_json_t shaped;
TRI_EXTRACT_SHAPED_JSON_MARKER(shaped, _marker);
triagens::basics::Json json(shaper->_memoryZone, TRI_JsonShapedJson(shaper, &shaped));
char const* key = TRI_EXTRACT_MARKER_KEY(_marker);
std::string id(document->_info._name);
id.push_back('/');
id += std::string(key);
json("_id", triagens::basics::Json(id));
json("_rev", triagens::basics::Json(std::to_string(
TRI_EXTRACT_MARKER_RID(_marker) )));
json("_key", triagens::basics::Json(key));
return json.toString();
}
case DOCVEC: {
std::stringstream s;
s << "I am a DOCVEC with " << _vector->size() << " blocks.";
return s.str();
}
case RANGE: {
std::stringstream s;
s << "I am a range: " << _range->_low << " .. " << _range->_high;
return s.str();
}
default:
return std::string("");
}
}
std::string toString (TRI_document_collection_t const*) const;
////////////////////////////////////////////////////////////////////////////////
/// @brief toJson method
////////////////////////////////////////////////////////////////////////////////
triagens::basics::Json toJson (TRI_document_collection_t const* document) {
switch (_type) {
case JSON: {
return *_json;
}
case SHAPED: {
TRI_shaper_t* shaper = document->getShaper();
TRI_shaped_json_t shaped;
TRI_EXTRACT_SHAPED_JSON_MARKER(shaped, _marker);
triagens::basics::Json json(shaper->_memoryZone,
TRI_JsonShapedJson(shaper, &shaped));
char const* key = TRI_EXTRACT_MARKER_KEY(_marker);
std::string id(document->_info._name);
id.push_back('/');
id += std::string(key);
json("_id", triagens::basics::Json(id));
json("_rev", triagens::basics::Json(std::to_string(
TRI_EXTRACT_MARKER_RID(_marker) )));
json("_key", triagens::basics::Json(key));
return json;
}
case DOCVEC: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case RANGE: {
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}
case EMPTY: {
return triagens::basics::Json();
}
}
THROW_ARANGO_EXCEPTION(TRI_ERROR_INTERNAL);
}
triagens::basics::Json toJson (TRI_document_collection_t const*) const;
////////////////////////////////////////////////////////////////////////////////
/// @brief a quick method to decide whether a value is empty