Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    r6165ce7 rac10576  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:17:07 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 27 12:10:10 2017
    13 // Update Count     : 556
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Tus Jul 18 10:08:00 2017
     13// Update Count     : 550
    1414//
    1515
     
    6262        bool dec = true, Unsigned = false;                                      // decimal, unsigned constant
    6363        int size;                                                                                       // 0 => int, 1 => long, 2 => long long
    64         unsigned long long int v;                                                       // converted integral value
     64        unsigned long long int v;                                                               // converted integral value
    6565        size_t last = str.length() - 1;                                         // last character of constant
    66         Expression * ret;
    67 
    68         // special constants
    69         if ( str == "0" ) {
    70                 ret = new ConstantExpr( Constant( (Type *)new ZeroType( noQualifiers ), str, (unsigned long long int)0 ) );
    71                 goto CLEANUP;
    72         } // if
    73         if ( str == "1" ) {
    74                 ret = new ConstantExpr( Constant( (Type *)new OneType( noQualifiers ), str, (unsigned long long int)1 ) );
    75                 goto CLEANUP;
    76         } // if
    77        
     66
    7867        if ( str[0] == '0' ) {                                                          // octal/hex constant ?
    7968                dec = false;
     
    129118        } // if
    130119
    131         ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[Unsigned][size] ), str, v ) );
    132   CLEANUP:
     120        Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[Unsigned][size] ), str, v ) );
    133121        delete &str;                                                                            // created by lex
    134122        return ret;
     
    186174        return ret;
    187175} // build_constantStr
     176
     177Expression *build_constantZeroOne( const std::string & str ) {
     178        Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type *)new ZeroType( noQualifiers ) : (Type*)new OneType( noQualifiers ), str,
     179                                                                                                   str == "0" ? (unsigned long long int)0 : (unsigned long long int)1 ) );
     180        delete &str;                                                                            // created by lex
     181        return ret;
     182} // build_constantChar
    188183
    189184Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
     
    257252}
    258253
    259 
    260 Expression *build_virtual_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    261         Type *targetType = maybeMoveBuildType( decl_node );
    262         Expression *castArg = maybeMoveBuild< Expression >( expr_node );
    263         return new VirtualCastExpr( castArg, targetType );
    264 }
    265 
    266254Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) {
    267255        UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) );
Note: See TracChangeset for help on using the changeset viewer.