URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
/* Handle C++ scoping ('::') operators in ObjC message receivers gracefully. */
|
/* Handle C++ scoping ('::') operators in ObjC message receivers gracefully. */
|
/* Author: Ziemowit Laski */
|
/* Author: Ziemowit Laski */
|
|
|
/* { dg-do run } */
|
/* { dg-do run } */
|
|
|
#include
|
#include
|
#include
|
#include
|
|
|
@class Derived;
|
@class Derived;
|
|
|
Derived *inst[3];
|
Derived *inst[3];
|
|
|
struct CxxClass {
|
struct CxxClass {
|
static Derived *get_instance(int);
|
static Derived *get_instance(int);
|
};
|
};
|
|
|
Derived *CxxClass::get_instance(int offs) {
|
Derived *CxxClass::get_instance(int offs) {
|
return inst[offs];
|
return inst[offs];
|
}
|
}
|
|
|
@interface Derived: Object {
|
@interface Derived: Object {
|
int value;
|
int value;
|
}
|
}
|
-(id)initWithValue:(int)val;
|
-(id)initWithValue:(int)val;
|
-(int)derived_meth;
|
-(int)derived_meth;
|
@end
|
@end
|
|
|
@implementation Derived
|
@implementation Derived
|
-(id)initWithValue:(int)val {
|
-(id)initWithValue:(int)val {
|
[super init];
|
[super init];
|
value = val;
|
value = val;
|
return self;
|
return self;
|
}
|
}
|
- (int)derived_meth {
|
- (int)derived_meth {
|
return value;
|
return value;
|
}
|
}
|
@end
|
@end
|
|
|
int main(void) {
|
int main(void) {
|
int r;
|
int r;
|
inst[1] = [[::Derived alloc] initWithValue:7];
|
inst[1] = [[::Derived alloc] initWithValue:7];
|
inst[2] = [[Derived alloc] initWithValue:77];
|
inst[2] = [[Derived alloc] initWithValue:77];
|
|
|
r = [CxxClass::get_instance(2) derived_meth];
|
r = [CxxClass::get_instance(2) derived_meth];
|
if (r != 77)
|
if (r != 77)
|
abort();
|
abort();
|
|
|
r = [CxxClass::get_instance(1) derived_meth];
|
r = [CxxClass::get_instance(1) derived_meth];
|
if (r != 7)
|
if (r != 7)
|
abort();
|
abort();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.