Skip to content

Instantly share code, notes, and snippets.

@roxlu
Created September 2, 2011 21:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save roxlu/1189963 to your computer and use it in GitHub Desktop.
Save roxlu/1189963 to your computer and use it in GitHub Desktop.
bool AMF3Serializer::WriteArray(IOBuffer &buffer, Variant &variant, bool writeType) {
WRITE_AMF3_TYPE(AMF3_ARRAY);
Variant v = variant;
uint32_t denseSize = v.MapDenseSize();
for (uint32_t i = 0; i < denseSize; i++) {
v.RemoveAt(i);
}
if (!WriteU29(buffer, (denseSize << 1) | 0x01)) {
FATAL("Unable to write dense size");
return false;
}
Variant key = "";
FOR_MAP(v, string, Variant, i) {
key = MAP_KEY(i);
if (!WriteString(buffer, key, false)) {
FATAL("Unable to write key");
return false;
}
if (!Write(buffer, MAP_VAL(i))) {
FATAL("Unable to write value");
return false;
}
}
key = "";
if (!WriteString(buffer, key, false)) {
FATAL("Unable to write key");
return false;
}
for (uint32_t i = 0; i < denseSize; i++) {
if (!Write(buffer, variant[i])) {
FATAL("Unable to write value");
return false;
}
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment