Annotation of parser3/src/include/pa_valiased.h, revision 1.1
1.1 ! paf 1: /*
! 2: $Id: pa_vobject.h,v 1.6.2.1 2001/02/25 16:08:25 paf Exp $
! 3: */
! 4:
! 5: #ifndef PA_VALIASED_H
! 6: #define PA_VALIASED_H
! 7:
! 8: #include "pa_value.h"
! 9:
! 10: class Temp_alias;
! 11:
! 12: class VAliased : public Value {
! 13: friend Temp_alias;
! 14: public: // creation
! 15:
! 16: VAliased(Pool& apool, VClass& aclass_alias) :
! 17: Value(apool),
! 18: class_alias(&aclass_alias) {
! 19: }
! 20:
! 21: // valiased: this
! 22: VAliased *get_aliased() { return this; }
! 23:
! 24: private: // alias handling
! 25:
! 26: // VAliased replacement mechanism is 'protected' from direct usage
! 27: // Temp_alias object enforces paired set/restore
! 28: VClass *set_alias(VClass *aclass_alias){
! 29: VClass *result=class_alias;
! 30: class_alias=aclass_alias;
! 31: return result;
! 32: }
! 33: void restore_alias(VClass *aclass_alias) {
! 34: class_alias=aclass_alias;
! 35: }
! 36:
! 37: protected:
! 38:
! 39: VClass *class_alias;
! 40: };
! 41:
! 42: class Temp_alias {
! 43: VAliased& vobject;
! 44: VClass *saved_alias;
! 45: public:
! 46: Temp_alias(VAliased& avobject, VClass& alias) :
! 47: vobject(avobject),
! 48: saved_alias(avobject.set_alias(&alias)) {
! 49: }
! 50: ~Temp_alias() {
! 51: vobject.restore_alias(saved_alias);
! 52: }
! 53: };
! 54:
! 55: #endif
E-mail: