Annotation of parser3/src/types/pa_valiased.C, revision 1.4
1.2 paf 1: /** @file
2: Parser: aliased class.
3:
1.1 paf 4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.2 paf 5:
1.1 paf 6: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
7:
1.4 ! paf 8: $Id: pa_valiased.C,v 1.3 2001/03/24 15:16:41 paf Exp $
1.1 paf 9: */
10:
11: #include "pa_valiased.h"
12: #include "pa_vstateless_class.h"
13:
1.4 ! paf 14: /**
! 15: uses VAliased::get_class_alias(), which default returns fclass_alias,
! 16: but for only-dynamic classses it returns 0.
! 17: */
1.1 paf 18: Value *VAliased::get_element(const String& aname) {
19: // $CLASS=my class=myself
1.4 ! paf 20: if(aname==CLASS_NAME) {
! 21: if(VStateless_class *lclass_alias=get_class_alias())
! 22: return lclass_alias;
! 23: else
! 24: bark("(%s) has no "CLASS_NAME" element");
! 25: }
! 26:
1.1 paf 27: // $BASE=my parent
1.3 paf 28: if(aname==BASE_NAME) {
1.4 ! paf 29: if(VStateless_class *lclass_alias=get_class_alias()) {
! 30: Value *result=lclass_alias->base();
! 31: // check whether result has base
! 32: // note:
! 33: // all classes have silent ROOT superclass.
! 34: // so we need to skip it in check
! 35: if(result->get_class()->base())
! 36: return result;
! 37: else
! 38: THROW(0, 0,
1.3 paf 39: &aname,
40: "undefined");
1.4 ! paf 41: } else
! 42: bark("%s has no "BASE_NAME" element");
1.3 paf 43: }
1.4 ! paf 44:
1.1 paf 45: return 0;
46: }
E-mail: