Changes in directory llvm/include/llvm/ADT:
SmallString.h added (r1.1) SmallVector.h updated: 1.20 -> 1.21 --- Log message: Add SmallString a (currently) minimal class that adapts SmallVector to be more string-like. --- Diffs of the changes: (+58 -0) SmallString.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SmallVector.h | 1 + 2 files changed, 58 insertions(+) Index: llvm/include/llvm/ADT/SmallString.h diff -c /dev/null llvm/include/llvm/ADT/SmallString.h:1.1 *** /dev/null Sun Oct 29 21:39:30 2006 --- llvm/include/llvm/ADT/SmallString.h Sun Oct 29 21:39:20 2006 *************** *** 0 **** --- 1,57 ---- + //===- llvm/ADT/SmallString.h - 'Normally small' strings --------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Chris Lattner and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // This file defines the SmallString class. + // + //===----------------------------------------------------------------------===// + + #ifndef LLVM_ADT_SMALLSTRING_H + #define LLVM_ADT_SMALLSTRING_H + + #include "llvm/ADT/SmallVector.h" + #include <cstring> + + namespace llvm { + + /// SmallString - A SmallString is just a SmallVector with methods and accessors + /// that make it work better as a string (e.g. operator+ etc). + template<unsigned InternalLen> + class SmallString : public SmallVector<char, InternalLen> { + public: + // Default ctor - Initialize to empty. + SmallString() {} + + // Initialize with a range. + template<typename ItTy> + SmallString(ItTy S, ItTy E) : SmallVector<char, InternalLen>(S, E) {} + + // Copy ctor. + SmallString(const SmallString &RHS) : SmallVector<char, InternalLen>(RHS) {} + + + // 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(); + } + + // Extra operators. + SmallString &operator+=(const char *RHS) { + this->append(RHS, RHS+strlen(RHS)); + return *this; + } + }; + + + } + + #endif Index: llvm/include/llvm/ADT/SmallVector.h diff -u llvm/include/llvm/ADT/SmallVector.h:1.20 llvm/include/llvm/ADT/SmallVector.h:1.21 --- llvm/include/llvm/ADT/SmallVector.h:1.20 Mon Oct 9 14:05:44 2006 +++ llvm/include/llvm/ADT/SmallVector.h Sun Oct 29 21:39:20 2006 @@ -25,6 +25,7 @@ /// template parameter. template <typename T> class SmallVectorImpl { +protected: T *Begin, *End, *Capacity; // Allocate raw space for N elements of type T. If T has a ctor or dtor, we _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits