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 + -
显示快捷键?