@@ -484,17 +484,27 @@ class Context {
484
484
// / The lifetime of the returned node tree ends with the lifetime of the
485
485
// / context or with a call of clear().
486
486
NodePointer demangleTypeAsNode (llvm::StringRef MangledName);
487
-
487
+
488
488
// / Demangle the given symbol and return the readable name.
489
489
// /
490
490
// / \param MangledName The mangled symbol string, which start a mangling
491
491
// / prefix: _T, _T0, $S, _$S.
492
+ // / \param Options The DemangleOptions that will be used by the NodePrinter.
492
493
// /
493
494
// / \returns The demangled string.
494
495
std::string
495
496
demangleSymbolAsString (llvm::StringRef MangledName,
496
- const DemangleOptions &Options = DemangleOptions(),
497
- NodePrinter *printer = nullptr );
497
+ const DemangleOptions &Options = DemangleOptions());
498
+
499
+ // / Demangle the given symbol.
500
+ // /
501
+ // / \param MangledName The mangled symbol string, which start a mangling
502
+ // / prefix: _T, _T0, $S, _$S.
503
+ // / \param printer The NodePrinter that will be used to demangle the symbol.
504
+ // /
505
+ // / \returns The demangled string.
506
+ void demangleSymbolAsString (llvm::StringRef MangledName,
507
+ NodePrinter *printer);
498
508
499
509
// / Demangle the given type and return the readable name.
500
510
// /
@@ -551,8 +561,19 @@ class Context {
551
561
// / \returns The demangled string.
552
562
std::string
553
563
demangleSymbolAsString (const char *mangledName, size_t mangledNameLength,
554
- const DemangleOptions &options = DemangleOptions(),
555
- NodePrinter *printer = nullptr);
564
+ const DemangleOptions &options = DemangleOptions());
565
+
566
+ // / Standalone utility function to demangle the given symbol as string.
567
+ // /
568
+ // / If performance is an issue when demangling multiple symbols,
569
+ // / Context::demangleSymbolAsString should be used instead.
570
+ // / \param mangledName The mangled name string pointer.
571
+ // / \param mangledNameLength The length of the mangledName string.
572
+ // / \param printer The NodePrinter that will be used to demangle the symbol.
573
+ // /
574
+ // / \returns The demangled string.
575
+ void demangleSymbolAsString (const char *mangledName, size_t mangledNameLength,
576
+ NodePrinter *printer);
556
577
557
578
// / Standalone utility function to demangle the given symbol as string.
558
579
// /
@@ -562,10 +583,9 @@ demangleSymbolAsString(const char *mangledName, size_t mangledNameLength,
562
583
// / \returns The demangled string.
563
584
inline std::string
564
585
demangleSymbolAsString (const std::string &mangledName,
565
- const DemangleOptions &options = DemangleOptions(),
566
- NodePrinter *printer = nullptr) {
567
- return demangleSymbolAsString (mangledName.data (), mangledName.size (), options,
568
- printer);
586
+ const DemangleOptions &options = DemangleOptions()) {
587
+ return demangleSymbolAsString (mangledName.data (), mangledName.size (),
588
+ options);
569
589
}
570
590
571
591
// / Standalone utility function to demangle the given symbol as string.
@@ -576,10 +596,21 @@ demangleSymbolAsString(const std::string &mangledName,
576
596
// / \returns The demangled string.
577
597
inline std::string
578
598
demangleSymbolAsString (llvm::StringRef MangledName,
579
- const DemangleOptions &Options = DemangleOptions(),
580
- NodePrinter *printer = nullptr) {
581
- return demangleSymbolAsString (MangledName.data (), MangledName.size (), Options,
582
- printer);
599
+ const DemangleOptions &Options = DemangleOptions()) {
600
+ return demangleSymbolAsString (MangledName.data (), MangledName.size (),
601
+ Options);
602
+ }
603
+
604
+ // / Standalone utility function to demangle the given symbol as string.
605
+ // /
606
+ // / If performance is an issue when demangling multiple symbols,
607
+ // / Context::demangleSymbolAsString should be used instead.
608
+ // / \param MangledName The mangled name string.
609
+ // /
610
+ // / \returns The demangled string.
611
+ inline void demangleSymbolAsString (llvm::StringRef MangledName,
612
+ NodePrinter *printer) {
613
+ demangleSymbolAsString (MangledName.data (), MangledName.size (), printer);
583
614
}
584
615
585
616
// / Standalone utility function to demangle the given type as string.
@@ -753,8 +784,16 @@ ManglingErrorOr<const char *> mangleNodeAsObjcCString(NodePointer node,
753
784
// / \returns A string representing the demangled name.
754
785
// /
755
786
std::string nodeToString (NodePointer Root,
756
- const DemangleOptions &Options = DemangleOptions(),
757
- NodePrinter *printer = nullptr);
787
+ const DemangleOptions &Options = DemangleOptions());
788
+
789
+ // / Transform the node structure to a string.
790
+ // /
791
+ // / \endcode
792
+ // /
793
+ // / \param Root A pointer to a parse tree generated by the demangler.
794
+ // / \param Printer A NodePrinter used to pretty print the demangled Node.
795
+ // /
796
+ void nodeToString (NodePointer Root, NodePrinter *Printer);
758
797
759
798
// / Transforms a mangled key path accessor thunk helper
760
799
// / into the identfier/subscript that would be used to invoke it in swift code.
@@ -865,9 +904,12 @@ class NodePrinter {
865
904
866
905
virtual ~NodePrinter () {}
867
906
868
- std::string printRoot (NodePointer root) {
907
+ void printRoot (NodePointer root) {
869
908
isValid = true ;
870
909
print (root, 0 );
910
+ }
911
+
912
+ std::string takeString () {
871
913
if (isValid)
872
914
return std::move (Printer).str ();
873
915
return " " ;
0 commit comments