@@ -158,7 +158,7 @@ int parse_remapped_files(int argc, const char **argv, int start_arg,
158
158
159
159
int want_display_name = 0 ;
160
160
161
- static void PrintCursor (CXCursor Cursor ) {
161
+ static void PrintCursor (CXTranslationUnit TU , CXCursor Cursor ) {
162
162
if (clang_isInvalid (Cursor .kind )) {
163
163
CXString ks = clang_getCursorKindSpelling (Cursor .kind );
164
164
printf ("Invalid Cursor => %s" , clang_getCString (ks ));
@@ -277,6 +277,9 @@ static void PrintCursor(CXCursor Cursor) {
277
277
CXString Included = clang_getFileName (File );
278
278
printf (" (%s)" , clang_getCString (Included ));
279
279
clang_disposeString (Included );
280
+
281
+ if (clang_isFileMultipleIncludeGuarded (TU , File ))
282
+ printf (" [multi-include guarded]" );
280
283
}
281
284
}
282
285
}
@@ -426,7 +429,7 @@ enum CXChildVisitResult FilteredPrintingVisitor(CXCursor Cursor,
426
429
clang_getSpellingLocation (Loc , 0 , & line , & column , 0 );
427
430
printf ("// %s: %s:%d:%d: " , FileCheckPrefix ,
428
431
GetCursorSource (Cursor ), line , column );
429
- PrintCursor (Cursor );
432
+ PrintCursor (Data -> TU , Cursor );
430
433
PrintCursorExtent (Cursor );
431
434
printf ("\n" );
432
435
return CXChildVisit_Recurse ;
@@ -479,7 +482,7 @@ static enum CXChildVisitResult FunctionScanVisitor(CXCursor Cursor,
479
482
} else if (Ref .kind != CXCursor_FunctionDecl ) {
480
483
printf ("// %s: %s:%d:%d: " , FileCheckPrefix , GetCursorSource (Ref ),
481
484
curLine , curColumn );
482
- PrintCursor (Ref );
485
+ PrintCursor (Data -> TU , Ref );
483
486
printf ("\n" );
484
487
}
485
488
}
@@ -554,6 +557,8 @@ static enum CXChildVisitResult PrintLinkage(CXCursor cursor, CXCursor p,
554
557
CXClientData d ) {
555
558
const char * linkage = 0 ;
556
559
560
+ VisitorData * Data = (VisitorData * )d ;
561
+
557
562
if (clang_isInvalid (clang_getCursorKind (cursor )))
558
563
return CXChildVisit_Recurse ;
559
564
@@ -566,7 +571,7 @@ static enum CXChildVisitResult PrintLinkage(CXCursor cursor, CXCursor p,
566
571
}
567
572
568
573
if (linkage ) {
569
- PrintCursor (cursor );
574
+ PrintCursor (Data -> TU , cursor );
570
575
printf ("linkage=%s\n" , linkage );
571
576
}
572
577
@@ -579,11 +584,12 @@ static enum CXChildVisitResult PrintLinkage(CXCursor cursor, CXCursor p,
579
584
580
585
static enum CXChildVisitResult PrintTypeKind (CXCursor cursor , CXCursor p ,
581
586
CXClientData d ) {
587
+ VisitorData * Data = (VisitorData * )d ;
582
588
583
589
if (!clang_isInvalid (clang_getCursorKind (cursor ))) {
584
590
CXType T = clang_getCursorType (cursor );
585
591
CXString S = clang_getTypeKindSpelling (T .kind );
586
- PrintCursor (cursor );
592
+ PrintCursor (Data -> TU , cursor );
587
593
printf (" typekind=%s" , clang_getCString (S ));
588
594
if (clang_isConstQualifiedType (T ))
589
595
printf (" const" );
@@ -778,7 +784,7 @@ int perform_test_reparse_source(int argc, const char **argv, int trials,
778
784
/* Logic for testing clang_getCursor(). */
779
785
/******************************************************************************/
780
786
781
- static void print_cursor_file_scan (CXCursor cursor ,
787
+ static void print_cursor_file_scan (CXTranslationUnit TU , CXCursor cursor ,
782
788
unsigned start_line , unsigned start_col ,
783
789
unsigned end_line , unsigned end_col ,
784
790
const char * prefix ) {
@@ -787,7 +793,7 @@ static void print_cursor_file_scan(CXCursor cursor,
787
793
printf ("-%s" , prefix );
788
794
PrintExtent (stdout , start_line , start_col , end_line , end_col );
789
795
printf (" " );
790
- PrintCursor (cursor );
796
+ PrintCursor (TU , cursor );
791
797
printf ("\n" );
792
798
}
793
799
@@ -832,7 +838,7 @@ static int perform_file_scan(const char *ast_file, const char *source_file,
832
838
cursor = clang_getCursor (TU , clang_getLocation (TU , file , line , col ));
833
839
if ((c == EOF || !clang_equalCursors (cursor , prevCursor )) &&
834
840
prevCursor .kind != CXCursor_InvalidFile ) {
835
- print_cursor_file_scan (prevCursor , start_line , start_col ,
841
+ print_cursor_file_scan (TU , prevCursor , start_line , start_col ,
836
842
line , col , prefix );
837
843
start_line = line ;
838
844
start_col = col ;
@@ -1183,7 +1189,7 @@ int inspect_cursor_at(int argc, const char **argv) {
1183
1189
clang_getLocation (TU , file , Locations [Loc ].line ,
1184
1190
Locations [Loc ].column ));
1185
1191
if (I + 1 == Repeats ) {
1186
- PrintCursor (Cursor );
1192
+ PrintCursor (TU , Cursor );
1187
1193
printf ("\n" );
1188
1194
free (Locations [Loc ].filename );
1189
1195
}
@@ -1287,7 +1293,7 @@ int perform_token_annotation(int argc, const char **argv) {
1287
1293
PrintExtent (stdout , start_line , start_column , end_line , end_column );
1288
1294
if (!clang_isInvalid (cursors [i ].kind )) {
1289
1295
printf (" " );
1290
- PrintCursor (cursors [i ]);
1296
+ PrintCursor (TU , cursors [i ]);
1291
1297
}
1292
1298
printf ("\n" );
1293
1299
}
0 commit comments