Annotation of parser3/src/types/pa_valiased.C, revision 1.6
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.6 ! paf 8: $Id: pa_valiased.C,v 1.5 2001/03/27 15:43:21 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) {
1.6 ! paf 21: if(hide_class())
1.5 paf 22: bark("(%s) has no "CLASS_NAME" element");
1.4 paf 23: else
1.5 paf 24: return fclass_alias;
1.4 paf 25: }
26:
1.1 paf 27: // $BASE=my parent
1.3 paf 28: if(aname==BASE_NAME) {
1.6 ! paf 29: if(hide_class())
1.5 paf 30: bark("%s has no "BASE_NAME" element");
31: else {
32: Value *result=fclass_alias->base();
1.4 paf 33: // check whether result has base
34: // note:
35: // all classes have silent ROOT superclass.
36: // so we need to skip it in check
37: if(result->get_class()->base())
38: return result;
39: else
40: THROW(0, 0,
1.5 paf 41: &aname,
42: "undefined");
43: }
1.3 paf 44: }
1.4 paf 45:
1.1 paf 46: return 0;
47: }
E-mail: