clang: include/clang/AST/ExprObjC.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_CLANG_AST_EXPROBJC_H
14#define LLVM_CLANG_AST_EXPROBJC_H
15
30#include "llvm/ADT/ArrayRef.h"
31#include "llvm/ADT/PointerIntPair.h"
32#include "llvm/ADT/PointerUnion.h"
33#include "llvm/ADT/StringRef.h"
34#include "llvm/ADT/iterator_range.h"
35#include "llvm/Support/Casting.h"
36#include "llvm/Support/Compiler.h"
37#include "llvm/Support/TrailingObjects.h"
38#include "llvm/Support/VersionTuple.h"
39#include "llvm/Support/type_traits.h"
40#include
41#include
42#include
43#include
44
46
49
50
51
55
56public:
64
68
71
74
75
77
81
83 return T->getStmtClass() == ObjCStringLiteralClass;
84 }
85};
86
87
89 bool Value;
91
92public:
99 : Expr(ObjCBoolLiteralExprClass, Empty) {}
100
103
106
109
110
114
118
120 return T->getStmtClass() == ObjCBoolLiteralExprClass;
121 }
122};
123
124
125
126
127
129 Stmt *SubExpr;
132
133public:
135
138 BoxingMethod(method), Range(R) {
140 }
143
146
148 return BoxingMethod;
149 }
150
151
152
154 return !BoxingMethod && SubExpr;
155 }
156
158
161
165
166
168
172
174
176 return reinterpret_cast<Stmt const * const*>(&SubExpr);
177 }
178
180 return reinterpret_cast<Stmt const * const*>(&SubExpr + 1);
181 }
182
184 return T->getStmtClass() == ObjCBoxedExprClass;
185 }
186};
187
188
189
190class ObjCArrayLiteral final
191 : public Expr,
192 private llvm::TrailingObjects<ObjCArrayLiteral, Expr *> {
193 unsigned NumElements;
196
200
201 explicit ObjCArrayLiteral(EmptyShell Empty, unsigned NumElements)
202 : Expr(ObjCArrayLiteralClass, Empty), NumElements(NumElements) {}
203
204public:
207
212
214 unsigned NumElements);
215
219
220
222
223
224 const Expr *const *getElements() const { return getTrailingObjects(); }
225
226
228
229
231 assert((Index < NumElements) && "Arg access out of range!");
233 }
235 assert((Index < NumElements) && "Arg access out of range!");
237 }
238
240 return ArrayWithObjectsMethod;
241 }
242
243
248
250 return const_cast<ObjCArrayLiteral *>(this)->children();
251 }
252
254 return T->getStmtClass() == ObjCArrayLiteralClass;
255 }
256};
257
258
259
261
263
264
266
267
269
270
271
273
274
276};
277
278}
279
281
282
287
288
289
290
292
293
295
296
297
299};
300
301
302
303class ObjCDictionaryLiteral final
304 : public Expr,
305 private llvm::TrailingObjects<ObjCDictionaryLiteral,
306 ObjCDictionaryLiteral_KeyValuePair,
307 ObjCDictionaryLiteral_ExpansionData> {
308
309 unsigned NumElements : 31;
310
311
312
313
314
315
316
317
318 LLVM_PREFERRED_TYPE(bool)
319 unsigned HasPackExpansions : 1;
320
323
326
328 bool HasPackExpansions,
331
332 explicit ObjCDictionaryLiteral(EmptyShell Empty, unsigned NumElements,
333 bool HasPackExpansions)
334 : Expr(ObjCDictionaryLiteralClass, Empty), NumElements(NumElements),
335 HasPackExpansions(HasPackExpansions) {}
336
337 size_t numTrailingObjects(OverloadToken) const {
338 return NumElements;
339 }
340
341public:
345
348 bool HasPackExpansions,
351
353 unsigned NumElements,
354 bool HasPackExpansions);
355
356
357
359
361 assert((Index < NumElements) && "Arg access out of range!");
362 const KeyValuePair &KV = getTrailingObjects()[Index];
364 std::nullopt};
365 if (HasPackExpansions) {
366 const ExpansionData &Expansion =
367 getTrailingObjects()[Index];
371 }
373 }
374
376 return DictWithObjectsMethod;
377 }
378
382
383
385
386
387 static_assert(sizeof(KeyValuePair) == sizeof(Stmt *) * 2,
388 "KeyValuePair is expected size");
390 reinterpret_cast<Stmt **>(getTrailingObjects()),
391 reinterpret_cast<Stmt **>(getTrailingObjects()) +
392 NumElements * 2);
393 }
394
396 return const_cast<ObjCDictionaryLiteral *>(this)->children();
397 }
398
400 return T->getStmtClass() == ObjCDictionaryLiteralClass;
401 }
402};
403
404
405
406
410
411public:
415 EncodedType(EncodedType), AtLoc(at), RParenLoc(rp) {
417 }
418
420
425
427
429
431 EncodedType = EncType;
432 }
433
436
437
441
445
447 return T->getStmtClass() == ObjCEncodeExprClass;
448 }
449};
450
451
455
456public:
460 SelName(selInfo), AtLoc(at), RParenLoc(rp) {
462 }
465
468
473
476
477
478 unsigned getNumArgs() const { return SelName.getNumArgs(); }
479
480
484
488
490 return T->getStmtClass() == ObjCSelectorExprClass;
491 }
492};
493
494
495
496
497
498
499
500
501
505
506public:
509
513 TheProtocol(protocol), AtLoc(at), ProtoLoc(protoLoc), RParenLoc(rp) {
515 }
518
521
527
530
531
535
539
541 return T->getStmtClass() == ObjCProtocolExprClass;
542 }
543};
544
545
550
551
553
554
555 LLVM_PREFERRED_TYPE(bool)
556 bool IsArrow : 1;
557
558
559 LLVM_PREFERRED_TYPE(bool)
560 bool IsFreeIvar : 1;
561
562public:
565 bool freeIvar = false)
568 D(d), Base(base), Loc(l), OpLoc(oploc), IsArrow(arrow),
569 IsFreeIvar(freeIvar) {
571 }
572
575
579
583
584 bool isArrow() const { return IsArrow; }
588
591
596
599
600
602
606
608 return T->getStmtClass() == ObjCIvarRefExprClass;
609 }
610};
611
612
613
615private:
616
617
618
619
620 llvm::PointerIntPair<NamedDecl *, 1, bool> PropertyOrGetter;
621
622
623
624
625 enum MethodRefFlags {
626 MethodRef_None = 0,
627 MethodRef_Getter = 0x1,
628 MethodRef_Setter = 0x2
629 };
630
631
632 llvm::PointerIntPair<ObjCMethodDecl *, 2, unsigned> SetterAndMethodRefFlags;
633
634
635
636
637
638
640
641
642
643
645 llvm::PointerUnion<Stmt *, const Type *, ObjCInterfaceDecl *> Receiver;
646
647public:
650 : Expr(ObjCPropertyRefExprClass, t, VK, OK), PropertyOrGetter(PD, false),
651 IdLoc(l), Receiver(base) {
654 }
655
659 : Expr(ObjCPropertyRefExprClass, t, VK, OK), PropertyOrGetter(PD, false),
660 IdLoc(l), ReceiverLoc(sl), Receiver(st.getTypePtr()) {
663 }
664
668 : Expr(ObjCPropertyRefExprClass, T, VK, OK),
669 PropertyOrGetter(Getter, true), SetterAndMethodRefFlags(Setter, 0),
670 IdLoc(IdLoc), Receiver(Base) {
671 assert(T->isSpecificPlaceholderType(BuiltinType::PseudoObject));
673 }
674
679 : Expr(ObjCPropertyRefExprClass, T, VK, OK),
680 PropertyOrGetter(Getter, true), SetterAndMethodRefFlags(Setter, 0),
681 IdLoc(IdLoc), ReceiverLoc(SuperLoc), Receiver(SuperTy.getTypePtr()) {
682 assert(T->isSpecificPlaceholderType(BuiltinType::PseudoObject));
684 }
685
690 : Expr(ObjCPropertyRefExprClass, T, VK, OK),
691 PropertyOrGetter(Getter, true), SetterAndMethodRefFlags(Setter, 0),
692 IdLoc(IdLoc), ReceiverLoc(ReceiverLoc), Receiver(Receiver) {
693 assert(T->isSpecificPlaceholderType(BuiltinType::PseudoObject));
695 }
696
698 : Expr(ObjCPropertyRefExprClass, Empty) {}
699
702
707
710 return cast_or_null(PropertyOrGetter.getPointer());
711 }
712
715 return SetterAndMethodRefFlags.getPointer();
716 }
717
723
729
730
731
732
734 return SetterAndMethodRefFlags.getInt() & MethodRef_Getter;
735 }
736
737
738
739
741 return SetterAndMethodRefFlags.getInt() & MethodRef_Setter;
742 }
743
745 setMethodRefFlag(MethodRef_Getter, val);
746 }
747
749 setMethodRefFlag(MethodRef_Setter, val);
750 }
751
754
756
758
762
766
770
771
773
778
780
781
784 Stmt **begin = reinterpret_cast<Stmt**>(&Receiver);
786 }
788 }
789
793
795 return T->getStmtClass() == ObjCPropertyRefExprClass;
796 }
797
798private:
801
802 void setExplicitProperty(ObjCPropertyDecl *D, unsigned methRefFlags) {
803 PropertyOrGetter.setPointer(D);
804 PropertyOrGetter.setInt(false);
805 SetterAndMethodRefFlags.setPointer(nullptr);
806 SetterAndMethodRefFlags.setInt(methRefFlags);
807 }
808
810 unsigned methRefFlags) {
811 PropertyOrGetter.setPointer(Getter);
812 PropertyOrGetter.setInt(true);
813 SetterAndMethodRefFlags.setPointer(Setter);
814 SetterAndMethodRefFlags.setInt(methRefFlags);
815 }
816
817 void setBase(Expr *Base) { Receiver = Base; }
818 void setSuperReceiver(QualType T) { Receiver = T.getTypePtr(); }
819 void setClassReceiver(ObjCInterfaceDecl *D) { Receiver = D; }
820
821 void setLocation(SourceLocation L) { IdLoc = L; }
822 void setReceiverLocation(SourceLocation Loc) { ReceiverLoc = Loc; }
823
824 void setMethodRefFlag(MethodRefFlags flag, bool val) {
825 unsigned f = SetterAndMethodRefFlags.getInt();
826 if (val)
827 f |= flag;
828 else
829 f &= ~flag;
830 SetterAndMethodRefFlags.setInt(f);
831 }
832};
833
834
835
837
839
840
841
842
843 enum { BASE, KEY, END_EXPR };
844 Stmt* SubExprs[END_EXPR];
845
847
848
849
851
852public:
856 : Expr(ObjCSubscriptRefExprClass, T, VK, OK), RBracket(RB),
857 GetAtIndexMethodDecl(getMethod), SetAtIndexMethodDecl(setMethod) {
858 SubExprs[BASE] = base;
859 SubExprs[KEY] = key;
861 }
862
864 : Expr(ObjCSubscriptRefExprClass, Empty) {}
865
868
870 return SubExprs[BASE]->getBeginLoc();
871 }
872
874
877
880
882 return GetAtIndexMethodDecl;
883 }
884
886 return SetAtIndexMethodDecl;
887 }
888
892
894 return child_range(SubExprs, SubExprs+END_EXPR);
895 }
896
900
902 return T->getStmtClass() == ObjCSubscriptRefExprClass;
903 }
904
905private:
907};
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935class ObjCMessageExpr final
936 : public Expr,
937 private llvm::TrailingObjects<ObjCMessageExpr, void *, SourceLocation> {
938public:
939
941
943
944
946
947
949
950
952 };
953
954private:
955
956
957
959
960 enum { NumArgsBitWidth = 16 };
961
962
963
964 unsigned NumArgs : NumArgsBitWidth;
965
966
967
968
969
971 unsigned Kind : 8;
972
973
974
975
976
977
978 LLVM_PREFERRED_TYPE(bool)
979 unsigned HasMethod : 1;
980
981
982
983 LLVM_PREFERRED_TYPE(bool)
984 unsigned IsDelegateInitCall : 1;
985
986
987
988 LLVM_PREFERRED_TYPE(bool)
989 unsigned IsImplicit : 1;
990
991
992
994 unsigned SelLocsKind : 2;
995
996
997
998 SourceLocation SuperLoc;
999
1000
1001
1002 SourceLocation LBracLoc, RBracLoc;
1003
1004 ObjCMessageExpr(EmptyShell Empty, unsigned NumArgs)
1005 : Expr(ObjCMessageExprClass, Empty), Kind(0), HasMethod(false),
1006 IsDelegateInitCall(false), IsImplicit(false), SelLocsKind(0) {
1007 setNumArgs(NumArgs);
1008 }
1009
1011 SourceLocation LBracLoc,
1012 SourceLocation SuperLoc,
1013 bool IsInstanceSuper,
1014 QualType SuperType,
1015 Selector Sel,
1016 ArrayRef SelLocs,
1018 ObjCMethodDecl *Method,
1019 ArrayRef<Expr *> Args,
1020 SourceLocation RBracLoc,
1023 SourceLocation LBracLoc,
1024 TypeSourceInfo *Receiver,
1025 Selector Sel,
1026 ArrayRef SelLocs,
1028 ObjCMethodDecl *Method,
1029 ArrayRef<Expr *> Args,
1030 SourceLocation RBracLoc,
1033 SourceLocation LBracLoc,
1034 Expr *Receiver,
1035 Selector Sel,
1036 ArrayRef SelLocs,
1038 ObjCMethodDecl *Method,
1039 ArrayRef<Expr *> Args,
1040 SourceLocation RBracLoc,
1042
1043 size_t numTrailingObjects(OverloadToken<void *>) const { return NumArgs + 1; }
1044
1045 void setNumArgs(unsigned Num) {
1046 assert((Num >> NumArgsBitWidth) == 0 && "Num of args is out of range!");
1047 NumArgs = Num;
1048 }
1049
1050 void initArgsAndSelLocs(ArrayRef<Expr *> Args,
1051 ArrayRef SelLocs,
1053
1054
1055 void *getReceiverPointer() const { return *getTrailingObjects<void *>(); }
1056
1057
1058 void setReceiverPointer(void *Value) {
1059 *getTrailingObjects<void *>() = Value;
1060 }
1061
1064 }
1065
1066 bool hasStandardSelLocs() const {
1068 }
1069
1070
1071
1072 SourceLocation *getStoredSelLocs() {
1073 return getTrailingObjects();
1074 }
1075 const SourceLocation *getStoredSelLocs() const {
1076 return getTrailingObjects();
1077 }
1078
1079
1080
1081 unsigned getNumStoredSelLocs() const {
1082 if (hasStandardSelLocs())
1083 return 0;
1085 }
1086
1087 static ObjCMessageExpr *alloc(const ASTContext &C,
1088 ArrayRef<Expr *> Args,
1089 SourceLocation RBraceLoc,
1090 ArrayRef SelLocs,
1091 Selector Sel,
1093 static ObjCMessageExpr *alloc(const ASTContext &C,
1094 unsigned NumArgs,
1095 unsigned NumStoredSelLocs);
1096
1097public:
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1131 bool IsInstanceSuper,
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1200 Expr *Receiver,
1207
1208
1209
1210
1211
1212
1213
1214
1216 unsigned NumArgs,
1217 unsigned NumStoredSelLocs);
1218
1219
1220
1221
1223
1224
1225
1227
1228
1229
1230
1231
1232
1234
1235
1236
1237
1238 std::pair<const NamedDecl *, const WarnUnusedResultAttr *>
1242
1243
1247
1248
1250
1251
1252
1256
1257
1258
1262
1263
1264
1267 return static_cast<Expr *>(getReceiverPointer());
1268
1269 return nullptr;
1270 }
1274
1275
1276
1279 setReceiverPointer(rec);
1280 }
1281
1282
1283
1286 return TSInfo->getType();
1287
1288 return {};
1289 }
1290
1291
1292
1295 return reinterpret_cast<TypeSourceInfo *>(getReceiverPointer());
1296 return nullptr;
1297 }
1298
1301 setReceiverPointer(TSInfo);
1302 }
1303
1304
1305
1308 return SuperLoc;
1309
1311 }
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1335
1336
1337
1338
1339
1340
1347
1350 SuperLoc = Loc;
1351 setReceiverPointer(T.getAsOpaquePtr());
1352 }
1353
1355
1357 HasMethod = false;
1359 }
1360
1362 if (HasMethod)
1363 return reinterpret_cast<const ObjCMethodDecl *>(SelectorOrMethod);
1364
1365 return nullptr;
1366 }
1367
1369 if (HasMethod)
1370 return reinterpret_cast<ObjCMethodDecl *>(SelectorOrMethod);
1371
1372 return nullptr;
1373 }
1374
1376 HasMethod = true;
1377 SelectorOrMethod = reinterpret_cast<uintptr_t>(MD);
1378 }
1379
1384
1385
1386
1388
1389
1390
1392 return reinterpret_cast<Expr **>(getTrailingObjects<void *>() + 1);
1393 }
1395 return reinterpret_cast<const Expr *const *>(getTrailingObjects<void *>() +
1396 1);
1397 }
1398
1399
1401 assert(Arg < NumArgs && "Arg access out of range!");
1403 }
1405 assert(Arg < NumArgs && "Arg access out of range!");
1407 }
1408
1409
1411 assert(Arg < NumArgs && "Arg access out of range!");
1412 getArgs()[Arg] = ArgExpr;
1413 }
1414
1415
1416
1417
1420
1423
1429
1432 if (hasStandardSelLocs())
1436 return getStoredSelLocs()[Index];
1437 }
1438
1440
1443 return 0;
1446 return 1;
1448 }
1449
1452 RBracLoc = R.getEnd();
1453 }
1454
1457
1458
1460
1462
1465
1469
1470 llvm::iterator_range<const_arg_iterator> arguments() const {
1472 }
1473
1475
1477 return reinterpret_cast<Stmt **>(getArgs() + NumArgs);
1478 }
1479
1481 return reinterpret_cast<Stmt const * const*>(getArgs());
1482 }
1483
1485 return reinterpret_cast<Stmt const * const*>(getArgs() + NumArgs);
1486 }
1487
1489 return T->getStmtClass() == ObjCMessageExprClass;
1490 }
1491};
1492
1493
1494
1496
1498
1499
1501
1502
1504
1505
1506 bool IsArrow;
1507
1508public:
1512 IsaMemberLoc(l), OpLoc(oploc), IsArrow(isarrow) {
1514 }
1515
1516
1518
1521
1522 bool isArrow() const { return IsArrow; }
1524
1525
1526
1529
1532
1536
1540
1542
1544
1545
1547
1551
1553 return T->getStmtClass() == ObjCIsaExprClass;
1554 }
1555};
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579class ObjCIndirectCopyRestoreExpr : public Expr {
1582
1583 Stmt *Operand;
1584
1585
1586
1588 : Expr(ObjCIndirectCopyRestoreExprClass, Empty) {}
1589
1590 void setShouldCopy(bool shouldCopy) {
1592 }
1593
1594public:
1597 Operand(operand) {
1600 }
1601
1604
1605
1606
1608
1610
1614
1615
1617 return Operand->getBeginLoc();
1618 }
1620 return Operand->getEndLoc();
1621 }
1622
1626
1628 return s->getStmtClass() == ObjCIndirectCopyRestoreExprClass;
1629 }
1630};
1631
1632
1633
1634
1635
1636
1637
1640 private llvm::TrailingObjects<ObjCBridgedCastExpr, CXXBaseSpecifier *> {
1644 friend TrailingObjects;
1645
1649 unsigned Kind : 2;
1650
1651public:
1657 LParenLoc(LParenLoc), BridgeKeywordLoc(BridgeKeywordLoc), Kind(Kind) {}
1658
1659
1662
1664
1665
1669
1670
1672
1673
1675
1677
1681
1683 return T->getStmtClass() == ObjCBridgedCastExprClass;
1684 }
1685};
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1702
1703 VersionTuple VersionToCheck;
1705
1706public:
1710 VersionToCheck(VersionToCheck), AtLoc(AtLoc), RParen(RParen) {
1712 }
1713
1715 : Expr(ObjCAvailabilityCheckExprClass, Shell) {}
1716
1720
1721
1722 bool hasVersion() const { return !VersionToCheck.empty(); }
1723 VersionTuple getVersion() const { return VersionToCheck; }
1724
1728
1732
1734 return T->getStmtClass() == ObjCAvailabilityCheckExprClass;
1735 }
1736};
1737
1738}
1739
1740#endif
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Defines the clang::SourceLocation class and associated facilities.
Defines various enumerations that describe declaration and type specifiers.
C Language Family Type Representation.
__device__ __2f16 float __ockl_bool s
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Represents a base class of a C++ class.
ExplicitCastExpr(StmtClass SC, QualType exprTy, ExprValueKind VK, CastKind kind, Expr *op, unsigned PathSize, bool HasFPFeatures, TypeSourceInfo *writtenTy)
This represents one expression.
static std::pair< const NamedDecl *, const WarnUnusedResultAttr * > getUnusedResultAttrImpl(const Decl *Callee, QualType ReturnType)
Returns the WarnUnusedResultAttr that is declared on the callee or its return type declaration,...
SourceLocation getExprLoc() const LLVM_READONLY
getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic exp...
void setDependence(ExprDependence Deps)
Each concrete expr subclass is expected to compute its dependence and call this in the constructor.
Expr * getElement(unsigned Index)
getElement - Return the Element at the specified index.
Definition ExprObjC.h:230
const Expr *const * getElements() const
Retrieve elements of array of literals.
Definition ExprObjC.h:224
child_range children()
Definition ExprObjC.h:244
static ObjCArrayLiteral * CreateEmpty(const ASTContext &C, unsigned NumElements)
const_child_range children() const
Definition ExprObjC.h:249
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:216
Expr ** getElements()
Retrieve elements of array of literals.
Definition ExprObjC.h:221
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c array literal.
Definition ExprObjC.h:227
friend TrailingObjects
Definition ExprObjC.h:206
const Expr * getElement(unsigned Index) const
Definition ExprObjC.h:234
SourceRange getSourceRange() const LLVM_READONLY
Definition ExprObjC.h:218
ObjCMethodDecl * getArrayWithObjectsMethod() const
Definition ExprObjC.h:239
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:217
friend class ASTStmtReader
Definition ExprObjC.h:205
static bool classof(const Stmt *T)
Definition ExprObjC.h:253
bool hasVersion() const
This may be '*', in which case this should fold to true.
Definition ExprObjC.h:1722
const_child_range children() const
Definition ExprObjC.h:1729
static bool classof(const Stmt *T)
Definition ExprObjC.h:1733
ObjCAvailabilityCheckExpr(EmptyShell Shell)
Definition ExprObjC.h:1714
SourceRange getSourceRange() const
Definition ExprObjC.h:1719
SourceLocation getBeginLoc() const
Definition ExprObjC.h:1717
SourceLocation getEndLoc() const
Definition ExprObjC.h:1718
VersionTuple getVersion() const
Definition ExprObjC.h:1723
friend class ASTStmtReader
Definition ExprObjC.h:1701
child_range children()
Definition ExprObjC.h:1725
ObjCAvailabilityCheckExpr(VersionTuple VersionToCheck, SourceLocation AtLoc, SourceLocation RParen, QualType Ty)
Definition ExprObjC.h:1707
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:105
void setLocation(SourceLocation L)
Definition ExprObjC.h:108
bool getValue() const
Definition ExprObjC.h:101
void setValue(bool V)
Definition ExprObjC.h:102
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:104
SourceLocation getLocation() const
Definition ExprObjC.h:107
const_child_range children() const
Definition ExprObjC.h:115
ObjCBoolLiteralExpr(bool val, QualType Ty, SourceLocation l)
Definition ExprObjC.h:93
static bool classof(const Stmt *T)
Definition ExprObjC.h:119
child_range children()
Definition ExprObjC.h:111
ObjCBoolLiteralExpr(EmptyShell Empty)
Definition ExprObjC.h:98
const_arg_iterator arg_begin() const
Definition ExprObjC.h:175
const Expr * getSubExpr() const
Definition ExprObjC.h:145
ConstExprIterator const_arg_iterator
Definition ExprObjC.h:173
Expr * getSubExpr()
Definition ExprObjC.h:144
SourceLocation getAtLoc() const
Definition ExprObjC.h:157
ObjCBoxedExpr(Expr *E, QualType T, ObjCMethodDecl *method, SourceRange R)
Definition ExprObjC.h:136
SourceRange getSourceRange() const LLVM_READONLY
Definition ExprObjC.h:162
static bool classof(const Stmt *T)
Definition ExprObjC.h:183
ObjCBoxedExpr(EmptyShell Empty)
Definition ExprObjC.h:141
const_child_range children() const
Definition ExprObjC.h:169
ObjCMethodDecl * getBoxingMethod() const
Definition ExprObjC.h:147
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:159
const_arg_iterator arg_end() const
Definition ExprObjC.h:179
bool isExpressibleAsConstantInitializer() const
Definition ExprObjC.h:153
friend class ASTStmtReader
Definition ExprObjC.h:134
child_range children()
Definition ExprObjC.h:167
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:160
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:1678
ObjCBridgedCastExpr(EmptyShell Shell)
Construct an empty Objective-C bridged cast.
Definition ExprObjC.h:1660
StringRef getBridgeKindName() const
Retrieve the kind of bridge being performed as a string.
SourceLocation getLParenLoc() const
Definition ExprObjC.h:1663
static bool classof(const Stmt *T)
Definition ExprObjC.h:1682
SourceLocation getBridgeKeywordLoc() const
The location of the bridge keyword.
Definition ExprObjC.h:1674
ObjCBridgeCastKind getBridgeKind() const
Determine which kind of bridge is being performed via this cast.
Definition ExprObjC.h:1666
friend class CastExpr
Definition ExprObjC.h:1643
ObjCBridgedCastExpr(SourceLocation LParenLoc, ObjCBridgeCastKind Kind, CastKind CK, SourceLocation BridgeKeywordLoc, TypeSourceInfo *TSInfo, Expr *Operand)
Definition ExprObjC.h:1652
friend class ASTStmtWriter
Definition ExprObjC.h:1642
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:1676
friend class ASTStmtReader
Definition ExprObjC.h:1641
static ObjCDictionaryLiteral * CreateEmpty(const ASTContext &C, unsigned NumElements, bool HasPackExpansions)
const_child_range children() const
Definition ExprObjC.h:395
child_range children()
Definition ExprObjC.h:384
unsigned getNumElements() const
getNumElements - Return number of elements of objective-c dictionary literal.
Definition ExprObjC.h:358
ObjCMethodDecl * getDictWithObjectsMethod() const
Definition ExprObjC.h:375
ObjCDictionaryElement getKeyValueElement(unsigned Index) const
Definition ExprObjC.h:360
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:379
friend TrailingObjects
Definition ExprObjC.h:344
friend class ASTStmtWriter
Definition ExprObjC.h:343
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:380
friend class ASTStmtReader
Definition ExprObjC.h:342
SourceRange getSourceRange() const LLVM_READONLY
Definition ExprObjC.h:381
static bool classof(const Stmt *T)
Definition ExprObjC.h:399
void setEncodedTypeSourceInfo(TypeSourceInfo *EncType)
Definition ExprObjC.h:430
TypeSourceInfo * getEncodedTypeSourceInfo() const
Definition ExprObjC.h:428
const_child_range children() const
Definition ExprObjC.h:442
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:434
SourceLocation getRParenLoc() const
Definition ExprObjC.h:423
void setRParenLoc(SourceLocation L)
Definition ExprObjC.h:424
static bool classof(const Stmt *T)
Definition ExprObjC.h:446
QualType getEncodedType() const
Definition ExprObjC.h:426
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:435
void setAtLoc(SourceLocation L)
Definition ExprObjC.h:422
ObjCEncodeExpr(QualType T, TypeSourceInfo *EncodedType, SourceLocation at, SourceLocation rp)
Definition ExprObjC.h:412
SourceLocation getAtLoc() const
Definition ExprObjC.h:421
child_range children()
Definition ExprObjC.h:438
ObjCEncodeExpr(EmptyShell Empty)
Definition ExprObjC.h:419
const Expr * getSubExpr() const
Definition ExprObjC.h:1603
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:1619
static bool classof(const Stmt *s)
Definition ExprObjC.h:1627
bool shouldCopy() const
shouldCopy - True if we should do the 'copy' part of the copy-restore.
Definition ExprObjC.h:1607
SourceLocation getExprLoc() const LLVM_READONLY
Definition ExprObjC.h:1623
ObjCIndirectCopyRestoreExpr(Expr *operand, QualType type, bool shouldCopy)
Definition ExprObjC.h:1595
child_range children()
Definition ExprObjC.h:1609
friend class ASTReader
Definition ExprObjC.h:1580
Expr * getSubExpr()
Definition ExprObjC.h:1602
const_child_range children() const
Definition ExprObjC.h:1611
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:1616
friend class ASTStmtReader
Definition ExprObjC.h:1581
Represents an ObjC class declaration.
SourceLocation getIsaMemberLoc() const
getMemberLoc - Return the location of the "member", in X->F, it is the location of 'F'.
Definition ExprObjC.h:1527
ObjCIsaExpr(EmptyShell Empty)
Build an empty expression.
Definition ExprObjC.h:1517
SourceLocation getOpLoc() const
Definition ExprObjC.h:1530
void setIsaMemberLoc(SourceLocation L)
Definition ExprObjC.h:1528
Expr * getBase() const
Definition ExprObjC.h:1520
static bool classof(const Stmt *T)
Definition ExprObjC.h:1552
SourceLocation getBaseLocEnd() const LLVM_READONLY
Definition ExprObjC.h:1537
bool isArrow() const
Definition ExprObjC.h:1522
child_range children()
Definition ExprObjC.h:1546
void setBase(Expr *E)
Definition ExprObjC.h:1519
void setArrow(bool A)
Definition ExprObjC.h:1523
void setOpLoc(SourceLocation L)
Definition ExprObjC.h:1531
SourceLocation getExprLoc() const LLVM_READONLY
Definition ExprObjC.h:1543
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:1541
const_child_range children() const
Definition ExprObjC.h:1548
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:1533
ObjCIsaExpr(Expr *base, bool isarrow, SourceLocation l, SourceLocation oploc, QualType ty)
Definition ExprObjC.h:1509
ObjCIvarDecl - Represents an ObjC instance variable.
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:592
void setIsArrow(bool A)
Definition ExprObjC.h:586
void setBase(Expr *base)
Definition ExprObjC.h:582
SourceLocation getLocation() const
Definition ExprObjC.h:589
SourceLocation getOpLoc() const
Definition ExprObjC.h:597
void setDecl(ObjCIvarDecl *d)
Definition ExprObjC.h:578
ObjCIvarDecl * getDecl()
Definition ExprObjC.h:576
ObjCIvarRefExpr(EmptyShell Empty)
Definition ExprObjC.h:573
bool isArrow() const
Definition ExprObjC.h:584
bool isFreeIvar() const
Definition ExprObjC.h:585
void setIsFreeIvar(bool A)
Definition ExprObjC.h:587
void setOpLoc(SourceLocation L)
Definition ExprObjC.h:598
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:595
const_child_range children() const
Definition ExprObjC.h:603
Expr * getBase()
Definition ExprObjC.h:581
const ObjCIvarDecl * getDecl() const
Definition ExprObjC.h:577
const Expr * getBase() const
Definition ExprObjC.h:580
child_range children()
Definition ExprObjC.h:601
void setLocation(SourceLocation L)
Definition ExprObjC.h:590
static bool classof(const Stmt *T)
Definition ExprObjC.h:607
ObjCIvarRefExpr(ObjCIvarDecl *d, QualType t, SourceLocation l, SourceLocation oploc, Expr *base, bool arrow=false, bool freeIvar=false)
Definition ExprObjC.h:563
const Expr * getArg(unsigned Arg) const
Definition ExprObjC.h:1404
Expr * getArg(unsigned Arg)
getArg - Return the specified argument.
Definition ExprObjC.h:1400
void getSelectorLocs(SmallVectorImpl< SourceLocation > &SelLocs) const
bool isImplicit() const
Indicates whether the message send was implicitly generated by the implementation.
Definition ExprObjC.h:1222
llvm::iterator_range< const_arg_iterator > arguments() const
Definition ExprObjC.h:1470
static ObjCMessageExpr * CreateEmpty(const ASTContext &Context, unsigned NumArgs, unsigned NumStoredSelLocs)
Create an empty Objective-C message expression, to be filled in by subsequent calls.
void setMethodDecl(ObjCMethodDecl *MD)
Definition ExprObjC.h:1375
Expr ** getArgs()
Retrieve the arguments to this message, not including the receiver.
Definition ExprObjC.h:1391
bool isDelegateInitCall() const
isDelegateInitCall - Answers whether this message send has been tagged as a "delegate init call",...
Definition ExprObjC.h:1418
ObjCMethodDecl * getMethodDecl()
Definition ExprObjC.h:1368
void setClassReceiver(TypeSourceInfo *TSInfo)
Definition ExprObjC.h:1299
void setInstanceReceiver(Expr *rec)
Turn this message send into an instance message that computes the receiver object with the given expr...
Definition ExprObjC.h:1277
const_arg_iterator arg_end() const
Definition ExprObjC.h:1484
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:1455
void setSuper(SourceLocation Loc, QualType T, bool IsInstanceSuper)
Definition ExprObjC.h:1348
SourceLocation getLeftLoc() const
Definition ExprObjC.h:1421
Expr * getInstanceReceiver()
Returns the object expression (receiver) for an instance message, or null for a message that is not a...
Definition ExprObjC.h:1265
QualType getCallReturnType(ASTContext &Ctx) const
SourceLocation getSuperLoc() const
Retrieve the location of the 'super' keyword for a class or instance message to 'super',...
Definition ExprObjC.h:1306
ObjCMethodFamily getMethodFamily() const
Definition ExprObjC.h:1380
Selector getSelector() const
ReceiverKind
The kind of receiver this message is sending to.
Definition ExprObjC.h:940
@ SuperInstance
The receiver is the instance of the superclass object.
Definition ExprObjC.h:951
@ Instance
The receiver is an object instance.
Definition ExprObjC.h:945
@ SuperClass
The receiver is a superclass.
Definition ExprObjC.h:948
@ Class
The receiver is a class.
Definition ExprObjC.h:942
ConstExprIterator const_arg_iterator
Definition ExprObjC.h:1464
TypeSourceInfo * getClassReceiverTypeInfo() const
Returns a type-source information of a class message send, or nullptr if the message is not a class m...
Definition ExprObjC.h:1293
QualType getClassReceiver() const
Returns the type of a class message send, or NULL if the message is not a class message.
Definition ExprObjC.h:1284
void setDelegateInitCall(bool isDelegate)
Definition ExprObjC.h:1419
bool isInstanceMessage() const
Determine whether this is an instance message to either a computed object or to super.
Definition ExprObjC.h:1253
llvm::iterator_range< arg_iterator > arguments()
Definition ExprObjC.h:1466
ObjCInterfaceDecl * getReceiverInterface() const
Retrieve the Objective-C interface to which this message is being directed, if known.
QualType getSuperType() const
Retrieve the type referred to by 'super'.
Definition ExprObjC.h:1341
const ObjCMethodDecl * getMethodDecl() const
Definition ExprObjC.h:1361
SourceRange getReceiverRange() const
Source range of the receiver.
bool isClassMessage() const
Determine whether this is an class message to either a specified class or to super.
Definition ExprObjC.h:1259
const Expr * getInstanceReceiver() const
Definition ExprObjC.h:1271
unsigned getNumSelectorLocs() const
Definition ExprObjC.h:1441
const Expr *const * getArgs() const
Definition ExprObjC.h:1394
ReceiverKind getReceiverKind() const
Determine the kind of receiver that this message is being sent to.
Definition ExprObjC.h:1226
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:1456
QualType getReceiverType() const
Retrieve the receiver type to which this message is being directed.
SourceLocation getSelectorLoc(unsigned Index) const
Definition ExprObjC.h:1430
ExprIterator arg_iterator
Definition ExprObjC.h:1463
SourceLocation getSelectorStartLoc() const
Definition ExprObjC.h:1424
friend class ASTStmtWriter
Definition ExprObjC.h:1099
arg_iterator arg_begin()
Definition ExprObjC.h:1474
static bool classof(const Stmt *T)
Definition ExprObjC.h:1488
friend TrailingObjects
Definition ExprObjC.h:1100
void setSourceRange(SourceRange R)
Definition ExprObjC.h:1450
SourceLocation getRightLoc() const
Definition ExprObjC.h:1422
unsigned getNumArgs() const
Return the number of actual arguments in this message, not counting the receiver.
Definition ExprObjC.h:1387
friend class ASTStmtReader
Definition ExprObjC.h:1098
std::pair< const NamedDecl *, const WarnUnusedResultAttr * > getUnusedResultAttr(ASTContext &Ctx) const
Returns the WarnUnusedResultAttr that is declared on the callee or its return type declaration,...
Definition ExprObjC.h:1239
void setSelector(Selector S)
Definition ExprObjC.h:1356
bool hasUnusedResultAttr(ASTContext &Ctx) const
Returns true if this message send should warn on unused results.
Definition ExprObjC.h:1244
void setArg(unsigned Arg, Expr *ArgExpr)
setArg - Set the specified argument.
Definition ExprObjC.h:1410
arg_iterator arg_end()
Definition ExprObjC.h:1476
const_arg_iterator arg_begin() const
Definition ExprObjC.h:1480
ObjCMethodDecl - Represents an instance or class method declaration.
Selector getSelector() const
ObjCMethodFamily getMethodFamily() const
Determines the family of this method.
Represents one property declaration in an Objective-C interface.
Selector getSetterName() const
Selector getGetterName() const
bool isMessagingGetter() const
True if the property reference will result in a message to the getter.
Definition ExprObjC.h:733
child_range children()
Definition ExprObjC.h:782
ObjCPropertyDecl * getExplicitProperty() const
Definition ExprObjC.h:703
Selector getSetterSelector() const
Definition ExprObjC.h:724
bool isMessagingSetter() const
True if the property reference will result in a message to the setter.
Definition ExprObjC.h:740
ObjCMethodDecl * getImplicitPropertyGetter() const
Definition ExprObjC.h:708
ObjCPropertyRefExpr(ObjCMethodDecl *Getter, ObjCMethodDecl *Setter, QualType T, ExprValueKind VK, ExprObjectKind OK, SourceLocation IdLoc, SourceLocation ReceiverLoc, ObjCInterfaceDecl *Receiver)
Definition ExprObjC.h:686
ObjCPropertyRefExpr(ObjCMethodDecl *Getter, ObjCMethodDecl *Setter, QualType T, ExprValueKind VK, ExprObjectKind OK, SourceLocation IdLoc, Expr *Base)
Definition ExprObjC.h:665
void setIsMessagingSetter(bool val=true)
Definition ExprObjC.h:748
SourceLocation getReceiverLocation() const
Definition ExprObjC.h:757
const Expr * getBase() const
Definition ExprObjC.h:752
const_child_range children() const
Definition ExprObjC.h:790
static bool classof(const Stmt *T)
Definition ExprObjC.h:794
Expr * getBase()
Definition ExprObjC.h:753
bool isObjectReceiver() const
Definition ExprObjC.h:767
bool isExplicitProperty() const
Definition ExprObjC.h:701
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:774
void setIsMessagingGetter(bool val=true)
Definition ExprObjC.h:744
QualType getSuperReceiverType() const
Definition ExprObjC.h:759
bool isImplicitProperty() const
Definition ExprObjC.h:700
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:779
ObjCMethodDecl * getImplicitPropertySetter() const
Definition ExprObjC.h:713
ObjCInterfaceDecl * getClassReceiver() const
Definition ExprObjC.h:763
SourceLocation getLocation() const
Definition ExprObjC.h:755
ObjCPropertyRefExpr(ObjCPropertyDecl *PD, QualType t, ExprValueKind VK, ExprObjectKind OK, SourceLocation l, Expr *base)
Definition ExprObjC.h:648
friend class ASTStmtWriter
Definition ExprObjC.h:800
ObjCPropertyRefExpr(ObjCMethodDecl *Getter, ObjCMethodDecl *Setter, QualType T, ExprValueKind VK, ExprObjectKind OK, SourceLocation IdLoc, SourceLocation SuperLoc, QualType SuperTy)
Definition ExprObjC.h:675
Selector getGetterSelector() const
Definition ExprObjC.h:718
friend class ASTStmtReader
Definition ExprObjC.h:799
ObjCPropertyRefExpr(EmptyShell Empty)
Definition ExprObjC.h:697
QualType getReceiverType(const ASTContext &ctx) const
Determine the type of the base, regardless of the kind of receiver.
ObjCPropertyRefExpr(ObjCPropertyDecl *PD, QualType t, ExprValueKind VK, ExprObjectKind OK, SourceLocation l, SourceLocation sl, QualType st)
Definition ExprObjC.h:656
bool isClassReceiver() const
Definition ExprObjC.h:769
bool isSuperReceiver() const
Definition ExprObjC.h:768
Represents an Objective-C protocol declaration.
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:528
ObjCProtocolDecl * getProtocol() const
Definition ExprObjC.h:519
ObjCProtocolExpr(QualType T, ObjCProtocolDecl *protocol, SourceLocation at, SourceLocation protoLoc, SourceLocation rp)
Definition ExprObjC.h:510
SourceLocation getProtocolIdLoc() const
Definition ExprObjC.h:522
const_child_range children() const
Definition ExprObjC.h:536
void setProtocol(ObjCProtocolDecl *P)
Definition ExprObjC.h:520
void setRParenLoc(SourceLocation L)
Definition ExprObjC.h:526
void setAtLoc(SourceLocation L)
Definition ExprObjC.h:525
SourceLocation getRParenLoc() const
Definition ExprObjC.h:524
static bool classof(const Stmt *T)
Definition ExprObjC.h:540
SourceLocation getAtLoc() const
Definition ExprObjC.h:523
friend class ASTStmtWriter
Definition ExprObjC.h:508
child_range children()
Definition ExprObjC.h:532
ObjCProtocolExpr(EmptyShell Empty)
Definition ExprObjC.h:516
friend class ASTStmtReader
Definition ExprObjC.h:507
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:529
static bool classof(const Stmt *T)
Definition ExprObjC.h:489
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:474
void setSelector(Selector S)
Definition ExprObjC.h:467
unsigned getNumArgs() const
getNumArgs - Return the number of actual arguments to this call.
Definition ExprObjC.h:478
ObjCSelectorExpr(EmptyShell Empty)
Definition ExprObjC.h:463
ObjCSelectorExpr(QualType T, Selector selInfo, SourceLocation at, SourceLocation rp)
Definition ExprObjC.h:457
child_range children()
Definition ExprObjC.h:481
void setAtLoc(SourceLocation L)
Definition ExprObjC.h:471
SourceLocation getRParenLoc() const
Definition ExprObjC.h:470
const_child_range children() const
Definition ExprObjC.h:485
Selector getSelector() const
Definition ExprObjC.h:466
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:475
void setRParenLoc(SourceLocation L)
Definition ExprObjC.h:472
SourceLocation getAtLoc() const
Definition ExprObjC.h:469
child_range children()
Definition ExprObjC.h:76
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:73
const StringLiteral * getString() const
Definition ExprObjC.h:66
SourceLocation getAtLoc() const
Definition ExprObjC.h:69
void setAtLoc(SourceLocation L)
Definition ExprObjC.h:70
void setString(StringLiteral *S)
Definition ExprObjC.h:67
const_child_range children() const
Definition ExprObjC.h:78
ObjCStringLiteral(EmptyShell Empty)
Definition ExprObjC.h:62
static bool classof(const Stmt *T)
Definition ExprObjC.h:82
StringLiteral * getString()
Definition ExprObjC.h:65
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:72
ObjCStringLiteral(StringLiteral *SL, QualType T, SourceLocation L)
Definition ExprObjC.h:57
SourceLocation getBeginLoc() const LLVM_READONLY
Definition ExprObjC.h:869
Expr * getKeyExpr() const
Definition ExprObjC.h:878
SourceLocation getEndLoc() const LLVM_READONLY
Definition ExprObjC.h:873
void setRBracket(SourceLocation RB)
Definition ExprObjC.h:867
bool isArraySubscriptRefExpr() const
Definition ExprObjC.h:889
ObjCSubscriptRefExpr(EmptyShell Empty)
Definition ExprObjC.h:863
child_range children()
Definition ExprObjC.h:893
ObjCSubscriptRefExpr(Expr *base, Expr *key, QualType T, ExprValueKind VK, ExprObjectKind OK, ObjCMethodDecl *getMethod, ObjCMethodDecl *setMethod, SourceLocation RB)
Definition ExprObjC.h:853
void setKeyExpr(Stmt *S)
Definition ExprObjC.h:879
static bool classof(const Stmt *T)
Definition ExprObjC.h:901
void setBaseExpr(Stmt *S)
Definition ExprObjC.h:876
Expr * getBaseExpr() const
Definition ExprObjC.h:875
const_child_range children() const
Definition ExprObjC.h:897
friend class ASTStmtReader
Definition ExprObjC.h:906
ObjCMethodDecl * getAtIndexMethodDecl() const
Definition ExprObjC.h:881
SourceLocation getRBracket() const
Definition ExprObjC.h:866
ObjCMethodDecl * setAtIndexMethodDecl() const
Definition ExprObjC.h:885
A (possibly-)qualified type.
static QualType getFromOpaquePtr(const void *Ptr)
Smart pointer class that efficiently represents Objective-C method names.
void * getAsOpaquePtr() const
ObjCMethodFamily getMethodFamily() const
Derive the conventional family of this method.
bool isUnarySelector() const
unsigned getNumArgs() const
Encodes a location in the source.
A trivial tuple used to represent a source range.
SourceLocation getEnd() const
SourceLocation getBegin() const
Stmt - This represents one statement.
SourceLocation getEndLoc() const LLVM_READONLY
StmtIterator child_iterator
Child Iterators: All subclasses must implement 'children' to permit easy iteration over the substatem...
ConstCastIterator< Expr > ConstExprIterator
llvm::iterator_range< child_iterator > child_range
ConstStmtIterator const_child_iterator
ObjCIndirectCopyRestoreExprBitfields ObjCIndirectCopyRestoreExprBits
SourceLocation getBeginLoc() const LLVM_READONLY
llvm::iterator_range< const_child_iterator > const_child_range
CastIterator< Expr > ExprIterator
StringLiteral - This represents a string literal expression, e.g.
A container of type source information.
bool isSpecificPlaceholderType(unsigned K) const
Test for a specific placeholder type.
bool isIntegralOrEnumerationType() const
Determine whether this type is an integral or enumeration type.
const internal::VariadicAllOfMatcher< Type > type
Matches Types in the clang AST.
The JSON file list parser is used to communicate input to InstallAPI.
bool isa(CodeGen::Address addr)
SelectorLocationsKind
Whether all locations of the selector identifiers are in a "standard" position.
@ SelLoc_StandardWithSpace
For nullary selectors, immediately before the end: "[foo release]" / "-(void)release;" Or with a spac...
@ SelLoc_NonStandard
Non-standard.
ExprObjectKind
A further classification of the kind of object referenced by an l-value or x-value.
@ OK_Ordinary
An ordinary object is located at an address in memory.
@ OK_BitField
A bitfield object is a bitfield on a C or C++ record.
ExprDependence computeDependence(FullExpr *E)
@ Create
'create' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...
ObjCMethodFamily
A family of Objective-C methods.
@ Result
The result type of a method or function.
const FunctionProtoType * T
ObjCBridgeCastKind
The kind of bridging performed by the Objective-C bridge cast.
CastKind
CastKind - The kind of operation required for a conversion.
SourceLocation getStandardSelectorLoc(unsigned Index, Selector Sel, bool WithArgSpace, ArrayRef< Expr * > Args, SourceLocation EndLoc)
Get the "standard" location of a selector identifier, e.g: For nullary selectors, immediately before ...
ExprValueKind
The categorization of expression values, currently following the C++11 scheme.
@ VK_PRValue
A pr-value expression (in the C++11 taxonomy) produces a temporary value.
@ VK_LValue
An l-value expression is a reference to an object with independent storage.
U cast(CodeGen::Address addr)
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
An element in an Objective-C dictionary literal.
Definition ExprObjC.h:260
Expr * Value
The value of the dictionary element.
Definition ExprObjC.h:265
bool isPackExpansion() const
Determines whether this dictionary element is a pack expansion.
Definition ExprObjC.h:275
SourceLocation EllipsisLoc
The location of the ellipsis, if this is a pack expansion.
Definition ExprObjC.h:268
UnsignedOrNone NumExpansions
The number of elements this pack expansion will expand to, if this is a pack expansion and is known.
Definition ExprObjC.h:272
Expr * Key
The key for the dictionary element.
Definition ExprObjC.h:262
Internal struct to describes an element that is a pack expansion, used if any of the elements in the ...
Definition ExprObjC.h:291
SourceLocation EllipsisLoc
The location of the ellipsis, if this element is a pack expansion.
Definition ExprObjC.h:294
unsigned NumExpansionsPlusOne
If non-zero, the number of elements that this pack expansion will expand to (+1).
Definition ExprObjC.h:298
Internal struct for storing Key/value pair.
Definition ExprObjC.h:283
Expr * Value
Definition ExprObjC.h:285
Expr * Key
Definition ExprObjC.h:284
A placeholder type used to construct an empty shell of a type, that will be filled in later (e....