| 861 | std::string& GetString() { return mData.GetString(); } |
| 862 | |
| 863 | bool GetTypeString() |
| 864 | { |
| 865 | if(const SplitQualType splitted{mType.split()}; splitted.Quals.empty()) { |
| 866 | const auto& canonicalType = mType.getCanonicalType(); |
| 867 | |
| 868 | if(canonicalType->getPointeeType().getLocalFastQualifiers()) { |
| 869 | AddCVQualifiers(canonicalType->getPointeeType().getLocalQualifiers()); |
| 870 | } else if(canonicalType.getLocalFastQualifiers()) { |
| 871 | AddCVQualifiers(canonicalType.getLocalQualifiers()); |
| 872 | } |
| 873 | } else { |
| 874 | AddCVQualifiers(splitted.Quals); |
| 875 | } |
| 876 | |
| 877 | const auto* typePtr = mType.getTypePtrOrNull(); |
| 878 | mHasData = HandleType(typePtr); |
| 879 | mData.Append(mDataAfter); |
| 880 | |
| 881 | // Take care of 'char* const' |
| 882 | if(mType.getQualifiers().hasFastQualifiers()) { |
| 883 | const QualType fastQualifierType{typePtr, mType.getQualifiers().getFastQualifiers()}; |
| 884 | |
| 885 | mSkipSpace = true; |
| 886 | AddCVQualifiers(fastQualifierType.getCanonicalType()->getPointeeType().getLocalQualifiers()); |
| 887 | } |
| 888 | |
| 889 | return mHasData; |
| 890 | } |
| 891 | }; |
| 892 | //----------------------------------------------------------------------------- |
| 893 | |