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: