1 // Copyright (c) 2003 Daniel Wallin and Arvid Norberg 2 3 // Permission is hereby granted, free of charge, to any person obtaining a 4 // copy of this software and associated documentation files (the "Software"), 5 // to deal in the Software without restriction, including without limitation 6 // the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 // and/or sell copies of the Software, and to permit persons to whom the 8 // Software is furnished to do so, subject to the following conditions: 9 10 // The above copyright notice and this permission notice shall be included 11 // in all copies or substantial portions of the Software. 12 13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 14 // ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 15 // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 16 // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 17 // SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 18 // ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 19 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 21 // OR OTHER DEALINGS IN THE SOFTWARE. 22 23 24 #ifndef LUABIND_OPERATOR_ID_HPP_INCLUDED 25 #define LUABIND_OPERATOR_ID_HPP_INCLUDED 26 27 #include <luabind/config.hpp> 28 29 namespace luabind { namespace detail { 30 31 enum operator_id 32 { 33 op_add = 0, 34 op_sub, 35 op_mul, 36 op_div, 37 op_pow, 38 op_lt, 39 op_le, 40 op_eq, 41 op_call, 42 op_unm, 43 op_tostring, 44 op_concat, 45 op_len, 46 47 number_of_operators 48 }; 49 get_operator_name(int i)50 inline const char* get_operator_name(int i) 51 { 52 static const char* a[number_of_operators] = { 53 "__add", "__sub", "__mul", "__div", "__pow", 54 "__lt", "__le", "__eq", "__call", "__unm", 55 "__tostring", "__concat", "__len" }; 56 return a[i]; 57 } 58 get_operator_symbol(int i)59 inline const char* get_operator_symbol(int i) 60 { 61 static const char* a[number_of_operators] = { 62 "+", "-", "*", "/", "^", "<", 63 "<=", "==", "()", "- (unary)", 64 "tostring", "..", "#" }; 65 return a[i]; 66 } 67 is_unary(int i)68 inline bool is_unary(int i) 69 { 70 // the reason why unary minus is not considered a unary operator here is 71 // that it always is given two parameters, where the second parameter always 72 // is nil. 73 return i == op_tostring; 74 } 75 76 77 }} 78 79 #endif // LUABIND_OPERATOR_ID_HPP_INCLUDED 80