#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/DataTypes.h"
-#include <cstring>
namespace llvm {
// Extra methods.
- const char *c_str() const {
- SmallString *This = const_cast<SmallString*>(this);
- // Ensure that there is a \0 at the end of the string.
- This->reserve(this->size()+1);
- This->End[0] = 0;
- return this->begin();
- }
-
StringRef str() const { return StringRef(this->begin(), this->size()); }
+ // Implicit conversion to StringRef.
+ operator StringRef() const { return str(); }
+
+ const char *c_str() {
+ this->push_back(0);
+ this->pop_back();
+ return this->data();
+ }
+
// Extra operators.
- const SmallString &operator=(const char *RHS) {
+ const SmallString &operator=(StringRef RHS) {
this->clear();
return *this += RHS;
}
- SmallString &operator+=(const char *RHS) {
- this->append(RHS, RHS+strlen(RHS));
+ SmallString &operator+=(StringRef RHS) {
+ this->append(RHS.begin(), RHS.end());
return *this;
}
SmallString &operator+=(char C) {
}
};
-
}
#endif