| 284 | } |
| 285 | |
| 286 | void* Message::AddMessage(const FieldDescriptor* field) |
| 287 | { |
| 288 | assert((Label) field->m_Label == LABEL_REPEATED); |
| 289 | assert(field->m_MessageDescriptor); |
| 290 | |
| 291 | if (!m_DryRun) |
| 292 | { |
| 293 | RepeatedField* repeated_field = (RepeatedField*) GetBuffer(field->m_Offset); |
| 294 | uintptr_t dest = repeated_field->m_Array + repeated_field->m_ArrayCount * field->m_MessageDescriptor->m_Size; |
| 295 | |
| 296 | memset((void*) dest, 0, field->m_MessageDescriptor->m_Size); |
| 297 | repeated_field->m_ArrayCount++; |
| 298 | |
| 299 | return (void*) dest; |
| 300 | } |
| 301 | return 0; |
| 302 | } |
| 303 | |
| 304 | void Message::SetRepeatedBuffer(const FieldDescriptor* field, void* buffer) |
| 305 | { |