当前位置: 首页>>代码示例>>C++>>正文


C++ SmallPtrSetImpl::isSmall方法代码示例

本文整理汇总了C++中SmallPtrSetImpl::isSmall方法的典型用法代码示例。如果您正苦于以下问题:C++ SmallPtrSetImpl::isSmall方法的具体用法?C++ SmallPtrSetImpl::isSmall怎么用?C++ SmallPtrSetImpl::isSmall使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SmallPtrSetImpl的用法示例。


在下文中一共展示了SmallPtrSetImpl::isSmall方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: memcpy

SmallPtrSetImpl::SmallPtrSetImpl(const SmallPtrSetImpl& that) {
  NumElements = that.NumElements;
  NumTombstones = 0;
  if (that.isSmall()) {
    CurArraySize = that.CurArraySize;
    CurArray = &SmallArray[0];
    memcpy(CurArray, that.CurArray, sizeof(void*)*CurArraySize);
  } else {
    CurArraySize = that.NumElements < 64 ? 128 : that.NumElements*2;
    CurArray = new void*[CurArraySize+1];
    memset(CurArray, -1, CurArraySize*sizeof(void*));
    
    // The end pointer, always valid, is set to a valid element to help the
    // iterator.
    CurArray[CurArraySize] = 0;

    // Copy over all valid entries.
    for (void **BucketPtr = that.CurArray, **E = that.CurArray+CurArraySize;
         BucketPtr != E; ++BucketPtr) {
      // Copy over the element if it is valid.
      void *Elt = *BucketPtr;
      if (Elt != getTombstoneMarker() && Elt != getEmptyMarker())
        *const_cast<void**>(FindBucketFor(Elt)) = Elt;
    }
  }
}
开发者ID:BackupTheBerlios,项目名称:iphone-binutils-svn,代码行数:26,代码来源:SmallPtrSet.cpp

示例2: assert

SmallPtrSetImpl::SmallPtrSetImpl(const SmallPtrSetImpl& that) {
  // If we're becoming small, prepare to insert into our stack space
  if (that.isSmall()) {
    CurArray = &SmallArray[0];
  // Otherwise, allocate new heap space (unless we were the same size)
  } else {
    CurArray = (const void**)malloc(sizeof(void*) * (that.CurArraySize+1));
    assert(CurArray && "Failed to allocate memory?");
  }
  
  // Copy over the new array size
  CurArraySize = that.CurArraySize;

  // Copy over the contents from the other set
  memcpy(CurArray, that.CurArray, sizeof(void*)*(CurArraySize+1));
  
  NumElements = that.NumElements;
  NumTombstones = that.NumTombstones;
}
开发者ID:JehandadKhan,项目名称:roccc-2.0,代码行数:19,代码来源:SmallPtrSet.cpp


注:本文中的SmallPtrSetImpl::isSmall方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。