Annotation of researchv10no/cmd/cfront/ooptcfront/demo/base-nested.c, revision 1.1.1.1

1.1       root        1: #include "check.h"
                      2: 
                      3: /* Test nested instantiations, when the instantiations are via base classes */
                      4: /* the test should compile and run without any errors */
                      5:                                           
                      6: template <class p1, class p2> class b {
                      7: public:
                      8:   b(p1, p2) ;
                      9:   p1 x ;
                     10:   p2 y ;
                     11:   void foo() ;
                     12: } ;
                     13: 
                     14: template <class pd1, class pd2> class d : public b<pd1, pd2> {
                     15: public:
                     16:   d(pd1, pd2) ;
                     17:   pd1 *i ;
                     18:   int check_i(pd1 test) ;
                     19:   int check_x(pd1 test) ;
                     20:   int check_y(pd2 test) ;
                     21: } ;
                     22: 
                     23: 
                     24: // Check access from within a member function
                     25: template <class pd1, class pd2>int d<pd1,pd2>::check_i(pd1 test) {
                     26:   return (*i == test) ;
                     27: }
                     28: 
                     29: template <class pd1, class pd2>  d<pd1,pd2>::d(pd1 p1, pd2 p2) : (p1, p2) {
                     30: }
                     31: 
                     32: template <class pd1, class pd2> int d<pd1,pd2>::check_x(pd1 test) {
                     33:   return (x == test) ;
                     34: }
                     35: 
                     36: 
                     37: template <class pd1, class pd2> int d<pd1,pd2>::check_y(pd2 test) {
                     38:   return (y == test) ;
                     39: }
                     40:   
                     41: template  <class p1, class p2> b<p1,p2>::b(p1, p2 ) {
                     42: }
                     43:   
                     44:  
                     45: 
                     46: typedef char *pc ;
                     47: typedef int *pi ;
                     48: 
                     49: 
                     50: 
                     51: main () {
                     52:   start_test(__FILE__) ;
                     53: 
                     54:   {
                     55:     int i ; char c ;
                     56:       d<int, pc> v1(1, &c) ;
                     57: 
                     58: 
                     59:   v1.i = & i ;
                     60:   v1.x = i ;
                     61:   v1.y = & c ;
                     62: 
                     63:   check (v1.i == & i) ;
                     64:   check (v1.x == i) ;
                     65:   check(v1.y == & c) ;
                     66: 
                     67:   check (v1.check_i (i)) ;
                     68:   check (v1.check_x (i)) ;
                     69:   check (v1.check_y (&c)) ;
                     70: 
                     71: }
                     72: 
                     73:     {
                     74:       int i = 0 ; char c, *cc ;
                     75:         d<pc, int> v1(cc, i) ;
                     76: 
                     77: 
                     78:   v1.i = & cc  ;
                     79:   v1.x = &c ;
                     80:   v1.y =  i ;
                     81: 
                     82:   check (v1.i == &cc) ;
                     83:   check (v1.x == &c) ;
                     84:   check(v1.y == i) ;
                     85: 
                     86:   check (v1.check_i ( cc)) ;
                     87:   check (v1.check_x (&c)) ;
                     88:   check (v1.check_y (i)) ;
                     89: 
                     90: }
                     91: 
                     92:   
                     93: 
                     94:   end_test() ;
                     95: }

unix.superglobalmegacorp.com

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