pr34641.c

来自「用于进行gcc测试」· C语言 代码 · 共 177 行

C
177
字号
// { dg-do compile }// { dg-require-effective-target fpic }// { dg-require-visibility "" }// { dg-options "-fPIC" }typedef __SIZE_TYPE__ size_t;extern "C" void *malloc (size_t __size)throw () __attribute__ ((__malloc__));     namespace std __attribute__ ((__visibility__ ("default"))){  using::size_t;}inline void *operatornew (std::size_t, void *__p)throw (){  return __p;}template < class _T1, class _T2 > struct pair{  _T1 first;  _T2 second;    pair (const _T1 & __a, const _T2 & __b):first (__a), second (__b)  {  }  template < class _U1, class _U2 >    pair (const pair < _U1, _U2 > &__p):first (__p.first), second (__p.second)  {  }};template < class _T1, class _T2 >  inline pair < _T1, _T2 > make_pair (_T1 __x, _T2 __y){  return pair < _T1, _T2 > (__x, __y);}template < typename _Tp > inline const _Tp &max (const _Tp & __a, const _Tp & __b){}typedef unsigned short int uint16_t;typedef unsigned long int uintptr_t;typedef uint16_t UChar;namespace std __attribute__ ((__visibility__ ("default"))){  struct __numeric_limits_base  {  };  template < typename _Tp > struct numeric_limits:public __numeric_limits_base  {    static _Tp max () throw ()    {    }  };}template < typename T > class VectorBufferBase{public:  void allocateBuffer (size_t newCapacity)  {    if (newCapacity > std::numeric_limits < size_t >::max () / sizeof (T))      *(int *) (uintptr_t) 0xbbadbeef = 0;  }};template < typename T, size_t inlineCapacity > class VectorBuffer;template < typename T > class VectorBuffer < T, 0 >:private VectorBufferBase <  T >{  typedef VectorBufferBase < T > Base;  using Base::allocateBuffer;};template < typename T, size_t inlineCapacity = 0 > class Vector{  typedef VectorBuffer < T, inlineCapacity > Impl;public:  typedef T *iterator;  size_t size () const  {    return m_size;  }  size_t capacity () const  {  }  iterator begin ()  {  }  iterator end ()  {    return begin () + m_size;  }  void shrink (size_t size);  void reserveCapacity (size_t newCapacity);  void clear ()  {    shrink (0);  }  template < typename U > void append (const U &);  void expandCapacity (size_t newMinCapacity);  template < typename U > U * expandCapacity (size_t newMinCapacity, U *);  size_t m_size;  Impl m_impl;};template < typename T, size_t inlineCapacity >  void Vector < T, inlineCapacity >::expandCapacity (size_t newMinCapacity){  reserveCapacity (max		   (newMinCapacity,		    max (static_cast < size_t > (16),			 capacity () + capacity () / 4 + 1)));}template < typename T, size_t inlineCapacity >  template < typename U >  inline U * Vector < T,  inlineCapacity >::expandCapacity (size_t newMinCapacity, U * ptr){  expandCapacity (newMinCapacity);}template < typename T, size_t inlineCapacity >  void Vector < T, inlineCapacity >::reserveCapacity (size_t newCapacity){  m_impl.allocateBuffer (newCapacity);}template < typename T, size_t inlineCapacity >  template < typename U >  inline void Vector < T, inlineCapacity >::append (const U & val){  const U *ptr = &val;  if (size () == capacity ())    ptr = expandCapacity (size () + 1, ptr);  new (end ())T (*ptr);}class Range;class TextIterator{public:  explicit TextIterator (const Range *,			 bool emitCharactersBetweenAllVisiblePositions =			 false);  bool atEnd () const  {  }  void advance ();  int length () const  {  }};UChar *plainTextToMallocAllocatedBuffer (const Range * r, unsigned &bufferLength){  static const unsigned cMaxSegmentSize = 1 << 16;  typedef pair < UChar *, unsigned >TextSegment;  Vector < TextSegment > *textSegments = 0;  Vector < UChar > textBuffer;  for (TextIterator it (r); !it.atEnd (); it.advance ())    {      if (textBuffer.size ()	  && textBuffer.size () + it.length () > cMaxSegmentSize)	{	  UChar *newSegmentBuffer =	    static_cast <	    UChar * >(malloc (textBuffer.size () * sizeof (UChar)));	  if (!textSegments)	    textSegments = new Vector < TextSegment >;	  textSegments->	    append (make_pair (newSegmentBuffer, textBuffer.size ()));	  textBuffer.clear ();	}    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?