@@ -317,6 +317,7 @@ class MethodDescriptorFlags {
317
317
KindMask = 0x0F , // 16 kinds should be enough for anybody
318
318
IsInstanceMask = 0x10 ,
319
319
IsDynamicMask = 0x20 ,
320
+ IsSignedAsDataMask = 0x40 ,
320
321
ExtraDiscriminatorShift = 16 ,
321
322
ExtraDiscriminatorMask = 0xFFFF0000 ,
322
323
};
@@ -345,6 +346,15 @@ class MethodDescriptorFlags {
345
346
return copy;
346
347
}
347
348
349
+ MethodDescriptorFlags withIsSignedAsData (bool isSignedAsData) const {
350
+ auto copy = *this ;
351
+ if (isSignedAsData)
352
+ copy.Value |= IsSignedAsDataMask;
353
+ else
354
+ copy.Value &= ~IsSignedAsDataMask;
355
+ return copy;
356
+ }
357
+
348
358
MethodDescriptorFlags withExtraDiscriminator (uint16_t value) const {
349
359
auto copy = *this ;
350
360
copy.Value = (copy.Value & ~ExtraDiscriminatorMask)
@@ -362,6 +372,8 @@ class MethodDescriptorFlags {
362
372
// / Note that 'init' is not considered an instance member.
363
373
bool isInstance () const { return Value & IsInstanceMask; }
364
374
375
+ bool isSignedAsData () const { return Value & IsSignedAsDataMask; }
376
+
365
377
uint16_t getExtraDiscriminator () const {
366
378
return (Value >> ExtraDiscriminatorShift);
367
379
}
@@ -527,6 +539,7 @@ class ProtocolRequirementFlags {
527
539
enum : int_type {
528
540
KindMask = 0x0F , // 16 kinds should be enough for anybody
529
541
IsInstanceMask = 0x10 ,
542
+ IsSignedAsDataMask = 0x20 ,
530
543
ExtraDiscriminatorShift = 16 ,
531
544
ExtraDiscriminatorMask = 0xFFFF0000 ,
532
545
};
@@ -546,6 +559,15 @@ class ProtocolRequirementFlags {
546
559
return copy;
547
560
}
548
561
562
+ ProtocolRequirementFlags withIsSignedAsData (bool isSignedAsData) const {
563
+ auto copy = *this ;
564
+ if (isSignedAsData)
565
+ copy.Value |= IsSignedAsDataMask;
566
+ else
567
+ copy.Value &= ~IsSignedAsDataMask;
568
+ return copy;
569
+ }
570
+
549
571
ProtocolRequirementFlags withExtraDiscriminator (uint16_t value) const {
550
572
auto copy = *this ;
551
573
copy.Value = (copy.Value & ~ExtraDiscriminatorMask)
@@ -560,6 +582,8 @@ class ProtocolRequirementFlags {
560
582
// / Note that 'init' is not considered an instance member.
561
583
bool isInstance () const { return Value & IsInstanceMask; }
562
584
585
+ bool isSignedAsData () const { return Value & IsSignedAsDataMask; }
586
+
563
587
bool isSignedWithAddress () const {
564
588
return getKind () != Kind::BaseProtocol;
565
589
}
0 commit comments