suspend implementation on typedef
christian.templier
christian.templier@wanadoo.fr
Sat Dec 11 04:17:00 GMT 1999
I work on the new language PTBL : Parrallel and transactional
behaviour language
on corba interface .
ÃÂ
I have a lot of problems to compile generate code like that
:
ÃÂ
(SEGMENT::LIST can not be found in SECTOR because SEGMENT is
define after SECTOR ... )
ÃÂ
template < class T >
class BACK_REF
{public :
typedefÃÂ TÃÂ REFERENCE
;
} ;
ÃÂ
class SECTOR ;
ÃÂ
class SEGMENT ;
ÃÂ
typedef BACK_REF<SECTOR>::REFERENCE SECTOR_REF
;
ÃÂ
typedef BACK_REF<SEGMENT>::REFERENCE SEGMENT_REF
;
ÃÂ
class OBJECT_BASE
{public : /* ... */
ÃÂ ÃÂ ÃÂ virtual int Append(OBJECT_BASE *object) ;
static int _FAILÃÂ
static int _SUCCESS ;
} ;
ÃÂ
template < class T>
TEMPLATE_LIST : public OBJECT_BASE
{public : /* ...
*/ÃÂ ÃÂ
ÃÂ ÃÂ ÃÂ virtual int Append(OBJECT_BASE *object)
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ {T*
_obj=dynamic_cast<T*>(object));/* check the syntaxe ?*/
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ if (_obj!=NULL)
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ
{return(Append(_obj));
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ }
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ else
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ {throw
OBJECT_BASE::_FAIL ;
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ }
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ } ;
ÃÂ ÃÂ ÃÂ virtual int Append(T *object)
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ {/* ...
*/ return(OBJECT_BASE::_SUCCESS);
ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ }
;
} ;
class SECTOR : public OBJECT_BASE
{public :{/* ... */
class LIST : public TEMPLATE_LIST<SECTOR>
ÃÂ ÃÂ ÃÂ {{/* ...
*/
ÃÂ ÃÂ ÃÂ } ;
ÃÂ
typedef char * NAME ;
ÃÂ
SECTOR (NAME name);
ÃÂ
NAME _name ;
ÃÂ
typedef SEGMENT_REF::LIST SEGMENTS ;
ÃÂ
SEGMENTS flights_segments ;
ÃÂ
virtual
SEGMENT_REF ActivateFlight(int flightId);ÃÂ
ÃÂ
virtual
OBJECT_BASE *CreateList() ;ÃÂ
ÃÂ
virtual SEGMENT_REF::LIST *Flights() ;
ÃÂ
ÃÂ
} ;
ÃÂ
class SEGMENT : public OBJECT_BASE
{public : {/* ... */
class LIST : public TEMPLATE_LIST<SEGMENT>
ÃÂ ÃÂ ÃÂ {/* ...
*/
ÃÂ ÃÂ ÃÂ virtual int Append(OBJECT_BASE *object) ;
ÃÂ ÃÂ ÃÂ } ;
SECTOR_REF::LIST
next_sectors;
ÃÂ
SEGMENT(int flightId) ;
ÃÂ
intÃÂ _flightId ;
ÃÂ
virtual
OBJECT_BASE *CreateList() ;ÃÂ
ÃÂ
virtual int
Activate (SECTOR_REF::LIST *nextSectors) ;
ÃÂ
} ;
ÃÂ
class SECTOR_SPECIALIZED :
public SECTOR
{
class LIST : public TEMPLATE_LIST<SECTOR_SPECIALIZED
>
ÃÂ ÃÂ ÃÂ {/* ...
*/
ÃÂ ÃÂ ÃÂ int Append(OBJECT_BASE
*object) ;
ÃÂ ÃÂ ÃÂ } ;
ÃÂ
virtual OBJECT_BASE *CreateList()
;ÃÂ
} ;
ÃÂ
class SEGMENT_SPECIALIZED : public SEGMENT
{
class LIST : public TEMPLATE_LIST<SEGMENT_SPECIALIZED
>
ÃÂ ÃÂ ÃÂ {/* ...
*/
ÃÂ ÃÂ ÃÂ int Append(OBJECT_BASE
*object) ;
ÃÂ ÃÂ ÃÂ } ;
ÃÂ
virtual
OBJECT_BASE *CreateList() ;ÃÂ
} ;
ÃÂ
ÃÂ
I would like SECTOR and SEGMENT do not be a templates
.
ÃÂ
I hope you will take this request and implement a new version
of compiler gcc2.95
ÃÂ
ÃÂ
ÃÂ
thanks for your answer .
ÃÂ
regards
Christian TEMPLIER .
ÃÂ
ÃÂ
More information about the Gcc-bugs
mailing list