return DI;
}
+Init *RecordRecTy::convertValue(TypedInit *VI) {
+ // Ensure that VI is compatible with Rec.
+ if (RecordRecTy *RRT = dynamic_cast<RecordRecTy*>(VI->getType()))
+ if (RRT->getRecord()->isSubClassOf(getRecord()) ||
+ RRT->getRecord() == getRecord())
+ return VI;
+ return 0;
+}
+
//===----------------------------------------------------------------------===//
// Initializer implementations
//===----------------------------------------------------------------------===//
Record *getRecord() const { return Rec; }
Init *convertValue(UnsetInit *UI) { return (Init*)UI; }
- Init *convertValue( DefInit *DI);
+ Init *convertValue( DefInit *DI);
+ Init *convertValue(TypedInit *VI);
void print(std::ostream &OS) const;
};
return DI;
}
+Init *RecordRecTy::convertValue(TypedInit *VI) {
+ // Ensure that VI is compatible with Rec.
+ if (RecordRecTy *RRT = dynamic_cast<RecordRecTy*>(VI->getType()))
+ if (RRT->getRecord()->isSubClassOf(getRecord()) ||
+ RRT->getRecord() == getRecord())
+ return VI;
+ return 0;
+}
+
//===----------------------------------------------------------------------===//
// Initializer implementations
//===----------------------------------------------------------------------===//
Record *getRecord() const { return Rec; }
Init *convertValue(UnsetInit *UI) { return (Init*)UI; }
- Init *convertValue( DefInit *DI);
+ Init *convertValue( DefInit *DI);
+ Init *convertValue(TypedInit *VI);
void print(std::ostream &OS) const;
};