Lines Matching +full:write +full:- +full:0

1 //===-- APINotesWriter.cpp - API Notes Writer -------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
38 /// Information about contexts (Objective-C classes or protocols or C++
56 /// Information about Objective-C properties.
65 /// Information about Objective-C methods.
123 return 0;
127 return Known->second;
131 return Known->second;
146 return Known->second;
150 return Known->second;
176 llvm::SmallVector<char, 0> Buffer;
201 OS.write(Buffer.data(), Buffer.size());
230 Buffer[0] = ID;
280 ModuleName.emit(Scratch, this->ModuleName);
284 SourceFile.emit(Scratch, this->SourceFile->getSize(),
285 this->SourceFile->getModificationTime());
290 /// Used to serialize the on-disk identifier table.
308 writer.write<uint16_t>(KeyLength);
309 writer.write<uint16_t>(DataLength);
317 writer.write<uint32_t>(Data);
337 // Make sure that no bucket is at offset 0
338 llvm::support::endian::write<uint32_t>(BlobStream, 0,
348 /// Used to serialize the on-disk Objective-C context table.
368 writer.write<uint16_t>(KeyLength);
369 writer.write<uint16_t>(DataLength);
375 writer.write<uint32_t>(Key.parentContextID);
376 writer.write<uint8_t>(Key.contextKind);
377 writer.write<uint32_t>(Key.contextID);
382 writer.write<uint32_t>(Data);
391 /// on-disk hash tables.
430 descriptor = 0;
431 writer.write<uint8_t>(descriptor);
433 // Write the components.
434 writer.write<uint32_t>(VT.getMajor());
436 writer.write<uint32_t>(*minor);
438 writer.write<uint32_t>(*subminor);
440 writer.write<uint32_t>(*build);
452 const std::pair<VersionTuple, T> &RHS) -> bool {
459 writer.write<uint16_t>(VI.size());
466 /// On-disk hash table info key base for handling versioned data.
493 writer.write<uint16_t>(KeyLength);
494 writer.write<uint16_t>(DataLength);
510 uint8_t payload = 0;
512 payload |= 0x01;
514 payload |= 0x02;
521 writer.write<uint8_t>(payload);
523 writer.write<uint16_t>(CEI.UnavailableMsg.size());
524 OS.write(CEI.UnavailableMsg.c_str(), CEI.UnavailableMsg.size());
526 writer.write<uint16_t>(CEI.SwiftName.size());
527 OS.write(CEI.SwiftName.c_str(), CEI.SwiftName.size());
531 /// on-disk hash tables.
537 // in on-disk hash tables.
539 return 2 + (CTI.getSwiftBridge() ? CTI.getSwiftBridge()->size() : 0) + 2 +
540 (CTI.getNSErrorDomain() ? CTI.getNSErrorDomain()->size() : 0) +
550 writer.write<uint16_t>(swiftBridge->size() + 1);
551 OS.write(swiftBridge->c_str(), swiftBridge->size());
553 writer.write<uint16_t>(0);
556 writer.write<uint16_t>(nsErrorDomain->size() + 1);
557 OS.write(nsErrorDomain->c_str(), CTI.getNSErrorDomain()->size());
559 writer.write<uint16_t>(0);
563 /// Used to serialize the on-disk Objective-C property table.
571 writer.write<uint32_t>(Key);
585 uint8_t payload = 0;
587 payload |= (0x01 << 1) | (uint8_t)swiftImportAsNonGeneric.value();
590 payload |= (0x01 << 1) | (uint8_t)swiftObjCMembers.value();
593 payload |= (0x01 << 2) | static_cast<uint8_t>(*nullable);
594 payload = (payload << 1) | (OCI.hasDesignatedInits() ? 1 : 0);
617 // Make sure that no bucket is at offset 0
618 llvm::support::endian::write<uint32_t>(BlobStream, 0,
636 // Make sure that no bucket is at offset 0
637 llvm::support::endian::write<uint32_t>(BlobStream, 0,
649 /// on-disk hash tables.
658 uint8_t bytes[2] = {0, 0};
660 bytes[0] = 1;
666 OS.write(reinterpret_cast<const char *>(bytes), 2);
669 writer.write<uint16_t>(VI.getType().size());
670 OS.write(VI.getType().data(), VI.getType().size());
673 /// Used to serialize the on-disk Objective-C property table.
685 writer.write<uint32_t>(std::get<0>(Key));
686 writer.write<uint32_t>(std::get<1>(Key));
687 writer.write<uint8_t>(std::get<2>(Key));
701 uint8_t flags = 0;
703 flags |= 1 << 0;
727 // Make sure that no bucket is at offset 0
728 llvm::support::endian::write<uint32_t>(BlobStream, 0,
742 /// Used to serialize the on-disk Objective-C method table.
754 writer.write<uint32_t>(std::get<0>(Key));
755 writer.write<uint32_t>(std::get<1>(Key));
756 writer.write<uint8_t>(std::get<2>(Key));
768 uint8_t flags = 0;
772 writer.write<uint8_t>(flags);
778 /// Used to serialize the on-disk C++ method table.
789 writer.write<uint32_t>(Key.parentContextID);
790 writer.write<uint32_t>(Key.nameID);
823 // Make sure that no bucket is at offset 0
824 llvm::support::endian::write<uint32_t>(BlobStream, 0,
850 // Make sure that no bucket is at offset 0
851 llvm::support::endian::write<uint32_t>(BlobStream, 0,
862 /// Used to serialize the on-disk Objective-C selector table.
883 writer.write<uint16_t>(KeyLength);
884 writer.write<uint16_t>(DataLength);
890 writer.write<uint16_t>(Key.NumArgs);
892 writer.write<uint32_t>(Identifier);
897 writer.write<uint32_t>(Data);
918 // Make sure that no bucket is at offset 0
919 llvm::support::endian::write<uint32_t>(BlobStream, 0,
930 /// Used to serialize the on-disk global variable table.
941 writer.write<uint32_t>(Key.parentContextID);
942 writer.write<uint32_t>(Key.nameID);
975 // Make sure that no bucket is at offset 0
976 llvm::support::endian::write<uint32_t>(BlobStream, 0,
994 uint8_t flags = 0;
996 flags |= 0x01;
998 flags |= 0x02;
1005 writer.write<uint8_t>(flags);
1008 /// Retrieve the serialized size of the given FunctionInfo, for use in on-disk
1023 uint8_t flags = 0;
1031 writer.write<uint8_t>(flags);
1032 writer.write<uint8_t>(FI.NumAdjustedNullable);
1033 writer.write<uint64_t>(FI.NullabilityPayload);
1035 writer.write<uint16_t>(FI.Params.size());
1039 writer.write<uint16_t>(FI.ResultType.size());
1040 writer.write(ArrayRef<char>{FI.ResultType.data(), FI.ResultType.size()});
1043 /// Used to serialize the on-disk global function table.
1054 writer.write<uint32_t>(Key.parentContextID);
1055 writer.write<uint32_t>(Key.nameID);
1088 // Make sure that no bucket is at offset 0
1089 llvm::support::endian::write<uint32_t>(BlobStream, 0,
1100 /// Used to serialize the on-disk global enum constant.
1109 writer.write<uint32_t>(Key);
1142 // Make sure that no bucket is at offset 0
1143 llvm::support::endian::write<uint32_t>(BlobStream, 0,
1168 writer.write<uint32_t>(Key.parentContextID);
1169 writer.write<IdentifierID>(Key.nameID);
1185 /// Used to serialize the on-disk tag table.
1189 return 2 + (TI.SwiftImportAs ? TI.SwiftImportAs->size() : 0) +
1190 2 + (TI.SwiftRetainOp ? TI.SwiftRetainOp->size() : 0) +
1191 2 + (TI.SwiftReleaseOp ? TI.SwiftReleaseOp->size() : 0) +
1198 uint8_t Flags = 0;
1206 Flags |= (value.value() << 1 | 1 << 0);
1208 writer.write<uint8_t>(Flags);
1211 writer.write<uint8_t>(*Copyable ? kSwiftCopyable : kSwiftNonCopyable);
1213 writer.write<uint8_t>(0);
1216 writer.write<uint16_t>(ImportAs->size() + 1);
1217 OS.write(ImportAs->c_str(), ImportAs->size());
1219 writer.write<uint16_t>(0);
1222 writer.write<uint16_t>(RetainOp->size() + 1);
1223 OS.write(RetainOp->c_str(), RetainOp->size());
1225 writer.write<uint16_t>(0);
1228 writer.write<uint16_t>(ReleaseOp->size() + 1);
1229 OS.write(ReleaseOp->c_str(), ReleaseOp->size());
1231 writer.write<uint16_t>(0);
1255 // Make sure that no bucket is at offset 0
1256 llvm::support::endian::write<uint32_t>(BlobStream, 0,
1267 /// Used to serialize the on-disk typedef table.
1278 uint8_t Flags = 0;
1282 writer.write<uint8_t>(Flags);
1305 // Make sure that no bucket is at offset 0
1306 llvm::support::endian::write<uint32_t>(BlobStream, 0,
1324 Implementation->writeToStream(OS);
1331 IdentifierID NameID = Implementation->getIdentifier(Name);
1333 uint32_t RawParentCtxID = ParentCtxID ? ParentCtxID->Value : -1;
1335 auto Known = Implementation->Contexts.find(Key);
1336 if (Known == Implementation->Contexts.end()) {
1337 unsigned NextID = Implementation->Contexts.size() + 1;
1340 Known = Implementation->Contexts
1345 Implementation->ContextNames[NextID] = NameID;
1346 Implementation->ParentContexts[NextID] = RawParentCtxID;
1350 auto &VersionedVec = Known->second.second;
1363 return ContextID(Known->second.first);
1370 IdentifierID NameID = Implementation->getIdentifier(Name);
1372 ->ObjCProperties[std::make_tuple(CtxID.Value, NameID, IsInstanceProperty)]
1380 SelectorID SelID = Implementation->getSelector(Selector);
1383 Implementation->ObjCMethods[Key].push_back({SwiftVersion, Info});
1388 assert(Implementation->ParentContexts.contains(CtxID.Value));
1389 uint32_t ParentCtxID = Implementation->ParentContexts[CtxID.Value];
1392 Implementation->ContextNames[CtxID.Value]);
1393 assert(Implementation->Contexts.contains(CtxKey));
1394 auto &VersionedVec = Implementation->Contexts[CtxKey].second;
1414 IdentifierID NameID = Implementation->getIdentifier(Name);
1416 Implementation->CXXMethods[Key].push_back({SwiftVersion, Info});
1423 IdentifierID VariableID = Implementation->getIdentifier(Name);
1425 Implementation->GlobalVariables[Key].push_back({SwiftVersion, Info});
1432 IdentifierID NameID = Implementation->getIdentifier(Name);
1434 Implementation->GlobalFunctions[Key].push_back({SwiftVersion, Info});
1440 IdentifierID EnumConstantID = Implementation->getIdentifier(Name);
1441 Implementation->EnumConstants[EnumConstantID].push_back({SwiftVersion, Info});
1446 IdentifierID TagID = Implementation->getIdentifier(Name);
1448 Implementation->Tags[Key].push_back({SwiftVersion, Info});
1454 IdentifierID TypedefID = Implementation->getIdentifier(Name);
1456 Implementation->Typedefs[Key].push_back({SwiftVersion, Info});