Example #1
0
Encoder& TextEncoder::writeStruct(const coda::runtime::Object* value, bool shared) {
  size_t stackLen = states.size();
  beginValue();
  if (value == NULL) {
    strm << "null";
  } else {
    if (shared) {
      int32_t index = addShared(value);
      if (index >= 0) {
        beginValue();
        strm << '%' << index;
        return *this;
      }
    }
    void* sid = (void*) value;
    if (inProgress.find(sid) != inProgress.end()) {
      throw EncodingError("Already serializing object of type " +
          value->descriptor()->getFullName());
    }
    inProgress.insert(sid);
    writeBeginStruct();
    int32_t index = getSharedIndex(value);
    assert(index != 0);
    if (index >= 0) {
      strm << " #" << index;
    }
    value->encode(this);
    writeEndStruct();
    inProgress.erase(sid);
  }
  assert(stackLen == states.size());
  return *this;
}
Example #2
0
 Writer& Writer::writeRawValue(const std::string& value)
 {
     beginValue();
     *m_Stream << value;
     m_State = AT_END_OF_VALUE;
     return *this;
 }
Example #3
0
Encoder& TextEncoder::writeString(const runtime::StringRef& value) {
  beginValue();
  strm << "'";
  strm << value; // TODO: Escapes
  strm << "'";
  return *this;
}
Example #4
0
Encoder& TextEncoder::writeBoolean(bool value) {
  beginValue();
  if (value) {
    strm << "true";
  } else {
    strm << "false";
  }
  return *this;
}
Example #5
0
Encoder& TextEncoder::writeSubtypeHeader(const runtime::StringRef& subtypeName, int32_t subtypeId) {
  states.push_back(state);
  beginValue();
  strm << '$' << subtypeId << " (" << subtypeName << "): {";
  indentLevel += 2;
  first = true;
  state = STRUCT;
  return *this;
}
Example #6
0
 Writer& Writer::writeValue(const std::string& value)
 {
     beginValue();
     *m_Stream << "\"";
     if (!Ystring::hasUnescapedCharacters(value))
         *m_Stream << value;
     else
         *m_Stream << Ystring::escape(value);
     *m_Stream << "\"";
     m_State = AT_END_OF_VALUE;
     return *this;
 }
Example #7
0
Encoder& TextEncoder::writeBeginSet(
    coda::descriptors::TypeKind elementKind, size_t length, bool fixed) {
  if (states.size() > maxDepth) {
    throw EncodingError("Maximum recursion depth exceeded");
  }
  states.push_back(state);
  beginValue();
  strm << '[';
  indentLevel += 2;
  state = CONTAINER;
  first = true;
  return *this;
}
Example #8
0
 Writer& Writer::writeIntValueImpl(T value)
 {
     beginValue();
     if (!(m_LanguagExtensions & INTEGERS_AS_HEX))
         *m_Stream << value;
     else if ((m_LanguagExtensions & INTEGERS_AS_HEX) == INTEGERS_AS_HEX)
         *m_Stream << "\"0x" << std::hex << std::uppercase << value << '"' << std::dec;
     else if (m_LanguagExtensions & INTEGERS_AS_OCT)
         *m_Stream << "\"0o" << std::oct << value << '"' << std::dec;
     else if (m_LanguagExtensions & INTEGERS_AS_BIN)
         writeBinary(*m_Stream, value);
     m_State = AT_END_OF_VALUE;
     return *this;
 }
Example #9
0
Encoder& TextEncoder::writeBeginMap(
    coda::descriptors::TypeKind keyKind,
    coda::descriptors::TypeKind valueKind,
    size_t length) {
  if (states.size() > maxDepth) {
    throw EncodingError("Maximum recursion depth exceeded");
  }
  states.push_back(state);
  beginValue();
  strm << '{';
  indentLevel += 2;
  state = MAP_KEY;
  first = true;
  return *this;
}
Example #10
0
 Writer& Writer::writeBeginStructure(char startChar, char endChar,
                                     Formatting formatting)
 {
     beginValue();
     *m_Stream << startChar;
     if (formatting == DEFAULT)
     {
         formatting = m_Context.empty() ? FORMAT
                                        : m_Context.top().formatting;
     }
     if (formatting == FORMAT)
         indent();
     m_Context.push(Context(endChar, formatting));
     m_State = AT_START_OF_STRUCTURE;
     return *this;
 }
//
// value type
//
void
GeneratorBase::doValue(IR__::ValueDef_ptr value)
{
	beginValue(value);

	IR__::ContainedSeq_var contained_seq = value->contents(CORBA__::dk_all, false);
	CORBA::ULong len = contained_seq->length();
	for(CORBA::ULong i = 0; i < len; i++)
	{
		// contained members
		if (((*contained_seq)[i])->def_kind() == CORBA__::dk_ValueMember)
		{
			IR__::ValueMemberDef_var act_member = IR__::ValueMemberDef::_narrow(((*contained_seq)[i]));
			doValueMember(act_member);
		}
	}

	endValue(value);
}
Example #12
0
 Writer& Writer::writeFloatValueImpl(T value)
 {
     if (std::isfinite(value))
     {
         beginValue();
         *m_Stream << value;
         m_State = AT_END_OF_VALUE;
     }
     else if (!languageExtension(NON_FINITE_FLOATS_AS_STRINGS))
     {
         YSON_THROW(std::string("Illegal floating point value '")
                    + std::to_string(value) + "'");
     }
     else
     {
         if (std::isnan(value))
             writeValue("NaN");
         else if (value < 0)
             writeValue("-infinity");
         else
             writeValue("infinity");
     }
     return *this;
 }
Example #13
0
Encoder& TextEncoder::writeDouble(double value) {
  beginValue();
  strm << value;
  return *this;
}
Example #14
0
Encoder& TextEncoder::writeFloat(float value) {
  beginValue();
  strm << value;
  return *this;
}
Example #15
0
Encoder& TextEncoder::writeFixed64(int64_t value) {
  beginValue();
  strm << value;
  return *this;
}
Example #16
0
Encoder& TextEncoder::writeInteger(int32_t value) {
  beginValue();
  strm << value;
  return *this;
}
Example #17
0
Encoder& TextEncoder::writeBytes(const runtime::StringRef& value) {
  beginValue();
  strm << "<[";
  strm << "]>";
  return *this;
}