Annotation of researchv10dc/cmd/cfront/ooptcfront/demo/class.c, revision 1.1

1.1     ! root        1: /* Test nested instantiations in the presence of multiple base classes */
        !             2: 
        !             3:                                           
        !             4: template <class p1, class p2> class b1 {
        !             5: public:
        !             6:   p1 x1 ;
        !             7:   p2 y1 ;
        !             8:   void foo() ;
        !             9: } ;
        !            10: 
        !            11: 
        !            12: template <class p1, class p2> class c {
        !            13: public:
        !            14:   p1 x2 ;
        !            15:   p2 y2 ;
        !            16:   void foo() ;
        !            17: } ;
        !            18: 
        !            19:  
        !            20: 
        !            21: class c_arg {
        !            22: public:
        !            23:   int p ;
        !            24:   int q ;
        !            25:   inline foo (int i) { return (i == p); } ;
        !            26:   c_arg() ;
        !            27: } ;
        !            28: 
        !            29: c_arg::c_arg() {
        !            30:   p = 1 ;
        !            31:   q = 2 ;
        !            32: } ;
        !            33: 
        !            34: 
        !            35: int error = 0 ;
        !            36: 
        !            37: #define check(p)  if (!(p))printf("\nerror(%d): test failed at line %d",++error, __LINE__) 
        !            38: 
        !            39: 
        !            40: typedef char *pc ;
        !            41: typedef int *pi ;
        !            42: 
        !            43: extern "C" void printf(...) ;
        !            44: 
        !            45: extern "C" void exit(int) ;
        !            46: 
        !            47: void end_test(int error) 
        !            48: {
        !            49:   printf ("\n*End Testing %s", __FILE__) ;
        !            50:   if (error)
        !            51:     printf (" *** %d errors ***\n", error) ;
        !            52:   else printf (" no errors detected\n") ;
        !            53:   
        !            54:   exit(error) ;
        !            55: }
        !            56: 
        !            57: 
        !            58: main () {
        !            59:   printf ("\n*Begin Testing %s\n", __FILE__) ;
        !            60:   c<int, c_arg> v1 ;
        !            61:   check (v1.y2.p == 1) ;
        !            62:   check (v1.y2.q == 2) ;
        !            63:   check (v1.y2.foo(1)) ;  
        !            64: 
        !            65:   end_test(error) ;
        !            66: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.