位于 llvm/include/llvm/[[ADT]]/[[SmallString.h]]html
参见:http://llvm.org/docs/ProgrammersManual.html#dss_smallstring安全
注释:'Normally small' strings -- 普通的小的字符串app
这个头文件定义了类 SmallString。函数
SmallString 是 [[SmallVector]] 的子类,添加了一个方便的 API 来对字符串进行操做,如使用 [[StringRef]] 参数的 += 重载。SmallString 尽可能使用预先分配的空间来存放字符串数据,这样避免了没必要要的内存分配,在须要的时候才从堆中分配内存。由于 SmallString 本身拥有字符串数据,所以能够安全地使用它进行各类操做和变化。this
相似于 [[SmallVector]], SmallString 的大的缺陷是它的 sizeof()。通常放在堆栈(stack)中比较好,极少放在堆(heap)中,也极少用做某个堆中分配的对象的成员或当作返回值。code
== 类 SmallString 概要 ==orm
template<unsigned InternalLen> class SmallString : public SmallVector<char, InternalLen> { // 使用 SmallVector 作底层存储 // 从 SmallVector, SmallVectorBase 等基类得到数据成员。参见 SmallVector char *BeginX, *EndX, *CapacityX; char in_place_buffer[InternalLen]; // 在类中的字符串缓冲,用于说明,实际是 union U 类型的,大小也不是。 // SmallString 本身的。 this() // 多种形式的构造 assign(), append(), compare(), startswith(), endswith(), find() substr(), slice(), +=() 等众多的字符串操做函数。 }
这个类多处使用 [[StringRef]] 作为参数或返回值。
htm