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: