1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2008 Google Inc. All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file or at 6 // https://developers.google.com/open-source/licenses/bsd 7 8 #import <Foundation/Foundation.h> 9 10 #import "GPBRuntimeTypes.h" 11 #import "GPBWireFormat.h" 12 13 #import "GPBArray.h" 14 #import "GPBUnknownFieldSet.h" 15 16 @class GPBUnknownFieldSet; 17 18 NS_ASSUME_NONNULL_BEGIN 19 20 /** 21 * @c GPBCodedOutputStream exception names. 22 **/ 23 extern NSString *const GPBCodedOutputStreamException_OutOfSpace; 24 extern NSString *const GPBCodedOutputStreamException_WriteFailed; 25 26 /** 27 * Writes out protocol message fields. 28 * 29 * The common uses of protocol buffers shouldn't need to use this class. 30 * GPBMessage's provide a -data method that will serialize the message for you. 31 * 32 * @note Any -write* api can raise the GPBCodedOutputStreamException_* 33 * exceptions. 34 * 35 * @note Subclassing of GPBCodedOutputStream is NOT supported. 36 **/ 37 __attribute__((objc_subclassing_restricted)) 38 @interface GPBCodedOutputStream : NSObject 39 40 /** 41 * Creates a stream to fill in the given data. Data must be sized to fit or 42 * an error will be raised when out of space. 43 * 44 * @param data The data where the stream will be written to. 45 * 46 * @return A newly instanced GPBCodedOutputStream. 47 **/ 48 + (instancetype)streamWithData:(NSMutableData *)data; 49 50 /** 51 * Creates a stream to write into the given NSOutputStream. 52 * 53 * @param output The output stream where the stream will be written to. 54 * 55 * @return A newly instanced GPBCodedOutputStream. 56 **/ 57 + (instancetype)streamWithOutputStream:(NSOutputStream *)output; 58 59 /** 60 * Initializes a stream to fill in the given data. Data must be sized to fit 61 * or an error will be raised when out of space. 62 * 63 * @param data The data where the stream will be written to. 64 * 65 * @return A newly initialized GPBCodedOutputStream. 66 **/ 67 - (instancetype)initWithData:(NSMutableData *)data; 68 69 /** 70 * Initializes a stream to write into the given @c NSOutputStream. 71 * 72 * @param output The output stream where the stream will be written to. 73 * 74 * @return A newly initialized GPBCodedOutputStream. 75 **/ 76 - (instancetype)initWithOutputStream:(NSOutputStream *)output; 77 78 /** 79 * Flush any buffered data out. 80 **/ 81 - (void)flush; 82 83 /** 84 * @return The number of bytes written out. Includes bytes not yet flused. 85 **/ 86 - (size_t)bytesWritten; 87 88 /** 89 * Write the raw byte out. 90 * 91 * @param value The value to write out. 92 **/ 93 - (void)writeRawByte:(uint8_t)value; 94 95 /** 96 * Write the tag for the given field number and wire format. 97 * 98 * @param fieldNumber The field number. 99 * @param format The wire format the data for the field will be in. 100 **/ 101 - (void)writeTag:(uint32_t)fieldNumber format:(GPBWireFormat)format; 102 103 /** 104 * Write a 32bit value out in little endian format. 105 * 106 * @param value The value to write out. 107 **/ 108 - (void)writeRawLittleEndian32:(int32_t)value; 109 /** 110 * Write a 64bit value out in little endian format. 111 * 112 * @param value The value to write out. 113 **/ 114 - (void)writeRawLittleEndian64:(int64_t)value; 115 116 /** 117 * Write a 32bit value out in varint format. 118 * 119 * @param value The value to write out. 120 **/ 121 - (void)writeRawVarint32:(int32_t)value; 122 /** 123 * Write a 64bit value out in varint format. 124 * 125 * @param value The value to write out. 126 **/ 127 - (void)writeRawVarint64:(int64_t)value; 128 129 /** 130 * Write a size_t out as a 32bit varint value. 131 * 132 * @note This will truncate 64 bit values to 32. 133 * 134 * @param value The value to write out. 135 **/ 136 - (void)writeRawVarintSizeTAs32:(size_t)value; 137 138 /** 139 * Writes the contents of an NSData out. 140 * 141 * @param data The data to write out. 142 **/ 143 - (void)writeRawData:(NSData *)data; 144 /** 145 * Writes out the given data. 146 * 147 * @param data The data blob to write out. 148 * @param offset The offset into the blob to start writing out. 149 * @param length The number of bytes from the blob to write out. 150 **/ 151 - (void)writeRawPtr:(const void *)data offset:(size_t)offset length:(size_t)length; 152 153 // Disable clang-format for the macros. 154 // clang-format off 155 156 //%PDDM-EXPAND _WRITE_DECLS() 157 // This block of code is generated, do not edit it directly. 158 159 /** 160 * Write a double for the given field number. 161 * 162 * @param fieldNumber The field number assigned to the value. 163 * @param value The value to write out. 164 **/ 165 - (void)writeDouble:(int32_t)fieldNumber value:(double)value; 166 /** 167 * Write a packed array of double for the given field number. 168 * 169 * @param fieldNumber The field number assigned to the values. 170 * @param values The values to write out. 171 * @param tag The tag assigned to the values. 172 **/ 173 - (void)writeDoubleArray:(int32_t)fieldNumber 174 values:(GPBDoubleArray *)values 175 tag:(uint32_t)tag; 176 /** 177 * Write a double without any tag. 178 * 179 * @param value The value to write out. 180 **/ 181 - (void)writeDoubleNoTag:(double)value; 182 183 /** 184 * Write a float for the given field number. 185 * 186 * @param fieldNumber The field number assigned to the value. 187 * @param value The value to write out. 188 **/ 189 - (void)writeFloat:(int32_t)fieldNumber value:(float)value; 190 /** 191 * Write a packed array of float for the given field number. 192 * 193 * @param fieldNumber The field number assigned to the values. 194 * @param values The values to write out. 195 * @param tag The tag assigned to the values. 196 **/ 197 - (void)writeFloatArray:(int32_t)fieldNumber 198 values:(GPBFloatArray *)values 199 tag:(uint32_t)tag; 200 /** 201 * Write a float without any tag. 202 * 203 * @param value The value to write out. 204 **/ 205 - (void)writeFloatNoTag:(float)value; 206 207 /** 208 * Write a uint64_t for the given field number. 209 * 210 * @param fieldNumber The field number assigned to the value. 211 * @param value The value to write out. 212 **/ 213 - (void)writeUInt64:(int32_t)fieldNumber value:(uint64_t)value; 214 /** 215 * Write a packed array of uint64_t for the given field number. 216 * 217 * @param fieldNumber The field number assigned to the values. 218 * @param values The values to write out. 219 * @param tag The tag assigned to the values. 220 **/ 221 - (void)writeUInt64Array:(int32_t)fieldNumber 222 values:(GPBUInt64Array *)values 223 tag:(uint32_t)tag; 224 /** 225 * Write a uint64_t without any tag. 226 * 227 * @param value The value to write out. 228 **/ 229 - (void)writeUInt64NoTag:(uint64_t)value; 230 231 /** 232 * Write a int64_t for the given field number. 233 * 234 * @param fieldNumber The field number assigned to the value. 235 * @param value The value to write out. 236 **/ 237 - (void)writeInt64:(int32_t)fieldNumber value:(int64_t)value; 238 /** 239 * Write a packed array of int64_t for the given field number. 240 * 241 * @param fieldNumber The field number assigned to the values. 242 * @param values The values to write out. 243 * @param tag The tag assigned to the values. 244 **/ 245 - (void)writeInt64Array:(int32_t)fieldNumber 246 values:(GPBInt64Array *)values 247 tag:(uint32_t)tag; 248 /** 249 * Write a int64_t without any tag. 250 * 251 * @param value The value to write out. 252 **/ 253 - (void)writeInt64NoTag:(int64_t)value; 254 255 /** 256 * Write a int32_t for the given field number. 257 * 258 * @param fieldNumber The field number assigned to the value. 259 * @param value The value to write out. 260 **/ 261 - (void)writeInt32:(int32_t)fieldNumber value:(int32_t)value; 262 /** 263 * Write a packed array of int32_t for the given field number. 264 * 265 * @param fieldNumber The field number assigned to the values. 266 * @param values The values to write out. 267 * @param tag The tag assigned to the values. 268 **/ 269 - (void)writeInt32Array:(int32_t)fieldNumber 270 values:(GPBInt32Array *)values 271 tag:(uint32_t)tag; 272 /** 273 * Write a int32_t without any tag. 274 * 275 * @param value The value to write out. 276 **/ 277 - (void)writeInt32NoTag:(int32_t)value; 278 279 /** 280 * Write a uint32_t for the given field number. 281 * 282 * @param fieldNumber The field number assigned to the value. 283 * @param value The value to write out. 284 **/ 285 - (void)writeUInt32:(int32_t)fieldNumber value:(uint32_t)value; 286 /** 287 * Write a packed array of uint32_t for the given field number. 288 * 289 * @param fieldNumber The field number assigned to the values. 290 * @param values The values to write out. 291 * @param tag The tag assigned to the values. 292 **/ 293 - (void)writeUInt32Array:(int32_t)fieldNumber 294 values:(GPBUInt32Array *)values 295 tag:(uint32_t)tag; 296 /** 297 * Write a uint32_t without any tag. 298 * 299 * @param value The value to write out. 300 **/ 301 - (void)writeUInt32NoTag:(uint32_t)value; 302 303 /** 304 * Write a uint64_t for the given field number. 305 * 306 * @param fieldNumber The field number assigned to the value. 307 * @param value The value to write out. 308 **/ 309 - (void)writeFixed64:(int32_t)fieldNumber value:(uint64_t)value; 310 /** 311 * Write a packed array of uint64_t for the given field number. 312 * 313 * @param fieldNumber The field number assigned to the values. 314 * @param values The values to write out. 315 * @param tag The tag assigned to the values. 316 **/ 317 - (void)writeFixed64Array:(int32_t)fieldNumber 318 values:(GPBUInt64Array *)values 319 tag:(uint32_t)tag; 320 /** 321 * Write a uint64_t without any tag. 322 * 323 * @param value The value to write out. 324 **/ 325 - (void)writeFixed64NoTag:(uint64_t)value; 326 327 /** 328 * Write a uint32_t for the given field number. 329 * 330 * @param fieldNumber The field number assigned to the value. 331 * @param value The value to write out. 332 **/ 333 - (void)writeFixed32:(int32_t)fieldNumber value:(uint32_t)value; 334 /** 335 * Write a packed array of uint32_t for the given field number. 336 * 337 * @param fieldNumber The field number assigned to the values. 338 * @param values The values to write out. 339 * @param tag The tag assigned to the values. 340 **/ 341 - (void)writeFixed32Array:(int32_t)fieldNumber 342 values:(GPBUInt32Array *)values 343 tag:(uint32_t)tag; 344 /** 345 * Write a uint32_t without any tag. 346 * 347 * @param value The value to write out. 348 **/ 349 - (void)writeFixed32NoTag:(uint32_t)value; 350 351 /** 352 * Write a int32_t for the given field number. 353 * 354 * @param fieldNumber The field number assigned to the value. 355 * @param value The value to write out. 356 **/ 357 - (void)writeSInt32:(int32_t)fieldNumber value:(int32_t)value; 358 /** 359 * Write a packed array of int32_t for the given field number. 360 * 361 * @param fieldNumber The field number assigned to the values. 362 * @param values The values to write out. 363 * @param tag The tag assigned to the values. 364 **/ 365 - (void)writeSInt32Array:(int32_t)fieldNumber 366 values:(GPBInt32Array *)values 367 tag:(uint32_t)tag; 368 /** 369 * Write a int32_t without any tag. 370 * 371 * @param value The value to write out. 372 **/ 373 - (void)writeSInt32NoTag:(int32_t)value; 374 375 /** 376 * Write a int64_t for the given field number. 377 * 378 * @param fieldNumber The field number assigned to the value. 379 * @param value The value to write out. 380 **/ 381 - (void)writeSInt64:(int32_t)fieldNumber value:(int64_t)value; 382 /** 383 * Write a packed array of int64_t for the given field number. 384 * 385 * @param fieldNumber The field number assigned to the values. 386 * @param values The values to write out. 387 * @param tag The tag assigned to the values. 388 **/ 389 - (void)writeSInt64Array:(int32_t)fieldNumber 390 values:(GPBInt64Array *)values 391 tag:(uint32_t)tag; 392 /** 393 * Write a int64_t without any tag. 394 * 395 * @param value The value to write out. 396 **/ 397 - (void)writeSInt64NoTag:(int64_t)value; 398 399 /** 400 * Write a int64_t for the given field number. 401 * 402 * @param fieldNumber The field number assigned to the value. 403 * @param value The value to write out. 404 **/ 405 - (void)writeSFixed64:(int32_t)fieldNumber value:(int64_t)value; 406 /** 407 * Write a packed array of int64_t for the given field number. 408 * 409 * @param fieldNumber The field number assigned to the values. 410 * @param values The values to write out. 411 * @param tag The tag assigned to the values. 412 **/ 413 - (void)writeSFixed64Array:(int32_t)fieldNumber 414 values:(GPBInt64Array *)values 415 tag:(uint32_t)tag; 416 /** 417 * Write a int64_t without any tag. 418 * 419 * @param value The value to write out. 420 **/ 421 - (void)writeSFixed64NoTag:(int64_t)value; 422 423 /** 424 * Write a int32_t for the given field number. 425 * 426 * @param fieldNumber The field number assigned to the value. 427 * @param value The value to write out. 428 **/ 429 - (void)writeSFixed32:(int32_t)fieldNumber value:(int32_t)value; 430 /** 431 * Write a packed array of int32_t for the given field number. 432 * 433 * @param fieldNumber The field number assigned to the values. 434 * @param values The values to write out. 435 * @param tag The tag assigned to the values. 436 **/ 437 - (void)writeSFixed32Array:(int32_t)fieldNumber 438 values:(GPBInt32Array *)values 439 tag:(uint32_t)tag; 440 /** 441 * Write a int32_t without any tag. 442 * 443 * @param value The value to write out. 444 **/ 445 - (void)writeSFixed32NoTag:(int32_t)value; 446 447 /** 448 * Write a BOOL for the given field number. 449 * 450 * @param fieldNumber The field number assigned to the value. 451 * @param value The value to write out. 452 **/ 453 - (void)writeBool:(int32_t)fieldNumber value:(BOOL)value; 454 /** 455 * Write a packed array of BOOL for the given field number. 456 * 457 * @param fieldNumber The field number assigned to the values. 458 * @param values The values to write out. 459 * @param tag The tag assigned to the values. 460 **/ 461 - (void)writeBoolArray:(int32_t)fieldNumber 462 values:(GPBBoolArray *)values 463 tag:(uint32_t)tag; 464 /** 465 * Write a BOOL without any tag. 466 * 467 * @param value The value to write out. 468 **/ 469 - (void)writeBoolNoTag:(BOOL)value; 470 471 /** 472 * Write a int32_t for the given field number. 473 * 474 * @param fieldNumber The field number assigned to the value. 475 * @param value The value to write out. 476 **/ 477 - (void)writeEnum:(int32_t)fieldNumber value:(int32_t)value; 478 /** 479 * Write a packed array of int32_t for the given field number. 480 * 481 * @param fieldNumber The field number assigned to the values. 482 * @param values The values to write out. 483 * @param tag The tag assigned to the values. 484 **/ 485 - (void)writeEnumArray:(int32_t)fieldNumber 486 values:(GPBEnumArray *)values 487 tag:(uint32_t)tag; 488 /** 489 * Write a int32_t without any tag. 490 * 491 * @param value The value to write out. 492 **/ 493 - (void)writeEnumNoTag:(int32_t)value; 494 495 /** 496 * Write a NSString for the given field number. 497 * 498 * @param fieldNumber The field number assigned to the value. 499 * @param value The value to write out. 500 **/ 501 - (void)writeString:(int32_t)fieldNumber value:(NSString *)value; 502 /** 503 * Write an array of NSString for the given field number. 504 * 505 * @param fieldNumber The field number assigned to the values. 506 * @param values The values to write out. 507 **/ 508 - (void)writeStringArray:(int32_t)fieldNumber 509 values:(NSArray<NSString*> *)values; 510 /** 511 * Write a NSString without any tag. 512 * 513 * @param value The value to write out. 514 **/ 515 - (void)writeStringNoTag:(NSString *)value; 516 517 /** 518 * Write a GPBMessage for the given field number. 519 * 520 * @param fieldNumber The field number assigned to the value. 521 * @param value The value to write out. 522 **/ 523 - (void)writeMessage:(int32_t)fieldNumber value:(GPBMessage *)value; 524 /** 525 * Write an array of GPBMessage for the given field number. 526 * 527 * @param fieldNumber The field number assigned to the values. 528 * @param values The values to write out. 529 **/ 530 - (void)writeMessageArray:(int32_t)fieldNumber 531 values:(NSArray<GPBMessage*> *)values; 532 /** 533 * Write a GPBMessage without any tag. 534 * 535 * @param value The value to write out. 536 **/ 537 - (void)writeMessageNoTag:(GPBMessage *)value; 538 539 /** 540 * Write a NSData for the given field number. 541 * 542 * @param fieldNumber The field number assigned to the value. 543 * @param value The value to write out. 544 **/ 545 - (void)writeBytes:(int32_t)fieldNumber value:(NSData *)value; 546 /** 547 * Write an array of NSData for the given field number. 548 * 549 * @param fieldNumber The field number assigned to the values. 550 * @param values The values to write out. 551 **/ 552 - (void)writeBytesArray:(int32_t)fieldNumber 553 values:(NSArray<NSData*> *)values; 554 /** 555 * Write a NSData without any tag. 556 * 557 * @param value The value to write out. 558 **/ 559 - (void)writeBytesNoTag:(NSData *)value; 560 561 /** 562 * Write a GPBMessage for the given field number. 563 * 564 * @param fieldNumber The field number assigned to the value. 565 * @param value The value to write out. 566 **/ 567 - (void)writeGroup:(int32_t)fieldNumber 568 value:(GPBMessage *)value; 569 /** 570 * Write an array of GPBMessage for the given field number. 571 * 572 * @param fieldNumber The field number assigned to the values. 573 * @param values The values to write out. 574 **/ 575 - (void)writeGroupArray:(int32_t)fieldNumber 576 values:(NSArray<GPBMessage*> *)values; 577 /** 578 * Write a GPBMessage without any tag (but does write the endGroup tag). 579 * 580 * @param fieldNumber The field number assigned to the value. 581 * @param value The value to write out. 582 **/ 583 - (void)writeGroupNoTag:(int32_t)fieldNumber 584 value:(GPBMessage *)value; 585 586 //%PDDM-EXPAND-END _WRITE_DECLS() 587 588 // clang-format on 589 590 /** 591 * Write a GPBUnknownFieldSet for the given field number. 592 * 593 * @param fieldNumber The field number assigned to the value. 594 * @param value The value to write out. 595 **/ 596 - (void)writeUnknownGroup:(int32_t)fieldNumber 597 value:(GPBUnknownFieldSet *)value 598 __attribute__((deprecated("GPBUnknownFieldSet is going away."))); 599 600 /** 601 * Write an array of GPBUnknownFieldSet for the given field number. 602 * 603 * @param fieldNumber The field number assigned to the values. 604 * @param values The values to write out. 605 **/ 606 - (void)writeUnknownGroupArray:(int32_t)fieldNumber 607 values:(NSArray<GPBUnknownFieldSet *> *)values 608 __attribute__((deprecated("GPBUnknownFieldSet is going away."))); 609 610 /** 611 * Write a GPBUnknownFieldSet without any tag (but does write the endGroup tag). 612 * 613 * @param fieldNumber The field number assigned to the value. 614 * @param value The value to write out. 615 **/ 616 - (void)writeUnknownGroupNoTag:(int32_t)fieldNumber 617 value:(GPBUnknownFieldSet *)value 618 __attribute__((deprecated("GPBUnknownFieldSet is going away."))); 619 620 /** 621 Write a MessageSet extension field to the stream. For historical reasons, 622 the wire format differs from normal fields. 623 624 @param fieldNumber The extension field number to write out. 625 @param value The message from where to get the extension. 626 */ 627 - (void)writeMessageSetExtension:(int32_t)fieldNumber value:(GPBMessage *)value; 628 629 /** 630 Write an unparsed MessageSet extension field to the stream. For historical 631 reasons, the wire format differs from normal fields. 632 633 @param fieldNumber The extension field number to write out. 634 @param value The raw message from where to get the extension. 635 */ 636 - (void)writeRawMessageSetExtension:(int32_t)fieldNumber value:(NSData *)value; 637 638 @end 639 640 NS_ASSUME_NONNULL_END 641 642 // Disable clang-format for the macros. 643 // clang-format off 644 645 // Write methods for types that can be in packed arrays. 646 //%PDDM-DEFINE _WRITE_PACKABLE_DECLS(NAME, ARRAY_TYPE, TYPE) 647 //%/** 648 //% * Write a TYPE for the given field number. 649 //% * 650 //% * @param fieldNumber The field number assigned to the value. 651 //% * @param value The value to write out. 652 //% **/ 653 //%- (void)write##NAME:(int32_t)fieldNumber value:(TYPE)value; 654 //%/** 655 //% * Write a packed array of TYPE for the given field number. 656 //% * 657 //% * @param fieldNumber The field number assigned to the values. 658 //% * @param values The values to write out. 659 //% * @param tag The tag assigned to the values. 660 //% **/ 661 //%- (void)write##NAME##Array:(int32_t)fieldNumber 662 //% NAME$S values:(GPB##ARRAY_TYPE##Array *)values 663 //% NAME$S tag:(uint32_t)tag; 664 //%/** 665 //% * Write a TYPE without any tag. 666 //% * 667 //% * @param value The value to write out. 668 //% **/ 669 //%- (void)write##NAME##NoTag:(TYPE)value; 670 //% 671 // Write methods for types that aren't in packed arrays. 672 //%PDDM-DEFINE _WRITE_UNPACKABLE_DECLS(NAME, TYPE) 673 //%/** 674 //% * Write a TYPE for the given field number. 675 //% * 676 //% * @param fieldNumber The field number assigned to the value. 677 //% * @param value The value to write out. 678 //% **/ 679 //%- (void)write##NAME:(int32_t)fieldNumber value:(TYPE *)value; 680 //%/** 681 //% * Write an array of TYPE for the given field number. 682 //% * 683 //% * @param fieldNumber The field number assigned to the values. 684 //% * @param values The values to write out. 685 //% **/ 686 //%- (void)write##NAME##Array:(int32_t)fieldNumber 687 //% NAME$S values:(NSArray<##TYPE##*> *)values; 688 //%/** 689 //% * Write a TYPE without any tag. 690 //% * 691 //% * @param value The value to write out. 692 //% **/ 693 //%- (void)write##NAME##NoTag:(TYPE *)value; 694 //% 695 // Special write methods for Groups. 696 //%PDDM-DEFINE _WRITE_GROUP_DECLS(NAME, TYPE) 697 //%/** 698 //% * Write a TYPE for the given field number. 699 //% * 700 //% * @param fieldNumber The field number assigned to the value. 701 //% * @param value The value to write out. 702 //% **/ 703 //%- (void)write##NAME:(int32_t)fieldNumber 704 //% NAME$S value:(TYPE *)value; 705 //%/** 706 //% * Write an array of TYPE for the given field number. 707 //% * 708 //% * @param fieldNumber The field number assigned to the values. 709 //% * @param values The values to write out. 710 //% **/ 711 //%- (void)write##NAME##Array:(int32_t)fieldNumber 712 //% NAME$S values:(NSArray<##TYPE##*> *)values; 713 //%/** 714 //% * Write a TYPE without any tag (but does write the endGroup tag). 715 //% * 716 //% * @param fieldNumber The field number assigned to the value. 717 //% * @param value The value to write out. 718 //% **/ 719 //%- (void)write##NAME##NoTag:(int32_t)fieldNumber 720 //% NAME$S value:(TYPE *)value; 721 //% 722 723 // One macro to hide it all up above. 724 //%PDDM-DEFINE _WRITE_DECLS() 725 //%_WRITE_PACKABLE_DECLS(Double, Double, double) 726 //%_WRITE_PACKABLE_DECLS(Float, Float, float) 727 //%_WRITE_PACKABLE_DECLS(UInt64, UInt64, uint64_t) 728 //%_WRITE_PACKABLE_DECLS(Int64, Int64, int64_t) 729 //%_WRITE_PACKABLE_DECLS(Int32, Int32, int32_t) 730 //%_WRITE_PACKABLE_DECLS(UInt32, UInt32, uint32_t) 731 //%_WRITE_PACKABLE_DECLS(Fixed64, UInt64, uint64_t) 732 //%_WRITE_PACKABLE_DECLS(Fixed32, UInt32, uint32_t) 733 //%_WRITE_PACKABLE_DECLS(SInt32, Int32, int32_t) 734 //%_WRITE_PACKABLE_DECLS(SInt64, Int64, int64_t) 735 //%_WRITE_PACKABLE_DECLS(SFixed64, Int64, int64_t) 736 //%_WRITE_PACKABLE_DECLS(SFixed32, Int32, int32_t) 737 //%_WRITE_PACKABLE_DECLS(Bool, Bool, BOOL) 738 //%_WRITE_PACKABLE_DECLS(Enum, Enum, int32_t) 739 //%_WRITE_UNPACKABLE_DECLS(String, NSString) 740 //%_WRITE_UNPACKABLE_DECLS(Message, GPBMessage) 741 //%_WRITE_UNPACKABLE_DECLS(Bytes, NSData) 742 //%_WRITE_GROUP_DECLS(Group, GPBMessage) 743 744 // clang-format on 745