char *BencArray::Encode() const { str::Str<char> bytes(256); bytes.Append('l'); for (size_t i = 0; i < Length(); i++) { BencObj *val = value.At(i); if (val) bytes.AppendAndFree(val->Encode()); } bytes.Append('e'); return bytes.StealData(); }
char *BencDict::Encode() const { str::Str<char> bytes(256); bytes.Append('d'); for (size_t i = 0; i < Length(); i++) { char *key = keys.At(i); BencObj *val = values.At(i); if (key && val) { bytes.AppendFmt("%" PRIuPTR ":%s", str::Len(key), key); bytes.AppendAndFree(val->Encode()); } } bytes.Append('e'); return bytes.StealData(); }