"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/compiler/glsl/ast_expr.cpp" (16 Sep 2020, 2272 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "ast_expr.cpp" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright © 2010 Intel Corporation
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
   10  *
   11  * The above copyright notice and this permission notice (including the next
   12  * paragraph) shall be included in all copies or substantial portions of the
   13  * Software.
   14  *
   15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   21  * DEALINGS IN THE SOFTWARE.
   22  */
   23 #include <assert.h>
   24 #include "ast.h"
   25 
   26 const char *
   27 ast_expression::operator_string(enum ast_operators op)
   28 {
   29    static const char *const operators[] = {
   30       "=",
   31       "+",
   32       "-",
   33       "+",
   34       "-",
   35       "*",
   36       "/",
   37       "%",
   38       "<<",
   39       ">>",
   40       "<",
   41       ">",
   42       "<=",
   43       ">=",
   44       "==",
   45       "!=",
   46       "&",
   47       "^",
   48       "|",
   49       "~",
   50       "&&",
   51       "^^",
   52       "||",
   53       "!",
   54 
   55       "*=",
   56       "/=",
   57       "%=",
   58       "+=",
   59       "-=",
   60       "<<=",
   61       ">>=",
   62       "&=",
   63       "^=",
   64       "|=",
   65 
   66       "?:",
   67 
   68       "++",
   69       "--",
   70       "++",
   71       "--",
   72       ".",
   73    };
   74 
   75    assert((unsigned int)op < sizeof(operators) / sizeof(operators[0]));
   76 
   77    return operators[op];
   78 }
   79 
   80 
   81 ast_expression_bin::ast_expression_bin(int oper, ast_expression *ex0,
   82                                        ast_expression *ex1) :
   83    ast_expression(oper, ex0, ex1, NULL)
   84 {
   85    assert((oper >= ast_plus) && (oper <= ast_logic_not));
   86 }
   87 
   88 
   89 void
   90 ast_expression_bin::print(void) const
   91 {
   92    subexpressions[0]->print();
   93    printf("%s ", operator_string(oper));
   94    subexpressions[1]->print();
   95 }