Daily bump.
[gcc.git] / gcc / testsuite / g++.dg / torture / pr33627.C
blobc17453641d6baa45a391e6c2af0d0c46f0489866
1 /* { dg-do compile } */
2 /* { dg-additional-options "-Wno-return-type" } */
4 typedef unsigned int UT_uint32;
5 typedef UT_uint32 PT_DocPosition;
6 typedef UT_uint32 PT_BlockOffset;
7 typedef enum _PTStruxType { PTX_Block } PTStruxType;
8 typedef UT_uint32 PL_ListenerId;
9 typedef const void * PL_StruxFmtHandle;
10 class PX_ChangeRecord;
11 class pf_Frag {
12   public:
13    typedef enum _PFType { PFT_Object } PFType;
14    inline PFType getType(void) const { return PFType(); }
15    inline pf_Frag * getNext(void) const { return 0; }
16    PT_DocPosition getPos(void) const { return PT_DocPosition(); }
18 class pf_Fragments {
19   public:
20    pf_Frag * getFirst() const;
22 class pt_PieceTable {
23    bool getStruxOfTypeFromPosition(PL_ListenerId listenerId, PT_DocPosition docPos, PTStruxType pts, PL_StruxFmtHandle * psfh) const;
24    bool _tellAndMaybeAddListener(PL_ListenerId listenerId, bool bAdd);
25    pf_Fragments m_fragments;
27 class pf_Frag_Object : public pf_Frag
29   public:
30    virtual bool createSpecialChangeRecord(PX_ChangeRecord ** ppcr, PT_DocPosition dpos, PT_BlockOffset blockOffset) const;
32 bool pt_PieceTable::_tellAndMaybeAddListener(PL_ListenerId listenerId, bool bAdd) 
34   PL_StruxFmtHandle sfh = 0;
35   PT_DocPosition sum = 0;
36   UT_uint32 blockOffset = 0;
37   for (pf_Frag * pf = m_fragments.getFirst(); (pf); pf=pf->getNext())
38   {
39       pf_Frag_Object * pfo = static_cast<pf_Frag_Object *> (pf);
40       PX_ChangeRecord * pcr = __null;
41       bool bStatus1 = false;
42       if(sfh != __null)     {
43        bStatus1 = pfo->createSpecialChangeRecord(&pcr,sum,blockOffset);
44        if (!(bStatus1))
45          return (false);
46       }
47       else
48       {
49        PT_DocPosition pos = pf->getPos();
50        getStruxOfTypeFromPosition(listenerId,pos,PTX_Block,&sfh);
51        bStatus1 = pfo->createSpecialChangeRecord(&pcr,pos,blockOffset);
52        if (!(bStatus1))
53          return (false); 
54       }
55       if (!(bStatus1))
56         return (false);
57   }