| OLD | NEW |
| 1 // Copyright (c) 2014, the Dartino project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dartino project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 #ifndef SRC_SHARED_SELECTORS_H_ | 5 #ifndef SRC_SHARED_SELECTORS_H_ |
| 6 #define SRC_SHARED_SELECTORS_H_ | 6 #define SRC_SHARED_SELECTORS_H_ |
| 7 | 7 |
| 8 #include "src/shared/utils.h" | 8 #include "src/shared/utils.h" |
| 9 | 9 |
| 10 namespace fletch { | 10 namespace dartino { |
| 11 | 11 |
| 12 class Selector { | 12 class Selector { |
| 13 public: | 13 public: |
| 14 enum Kind { METHOD, GETTER, SETTER }; | 14 enum Kind { METHOD, GETTER, SETTER }; |
| 15 | 15 |
| 16 static uword Encode(int id, Kind kind, int arity) { | 16 static uword Encode(int id, Kind kind, int arity) { |
| 17 return IdField::encode(id) | KindField::encode(kind) | | 17 return IdField::encode(id) | KindField::encode(kind) | |
| 18 ArityField::encode(arity); | 18 ArityField::encode(arity); |
| 19 } | 19 } |
| 20 | 20 |
| 21 static uword EncodeGetter(int id) { return Encode(id, GETTER, 0); } | 21 static uword EncodeGetter(int id) { return Encode(id, GETTER, 0); } |
| 22 | 22 |
| 23 static uword EncodeSetter(int id) { return Encode(id, SETTER, 1); } | 23 static uword EncodeSetter(int id) { return Encode(id, SETTER, 1); } |
| 24 | 24 |
| 25 static uword EncodeMethod(int id, int arity) { | 25 static uword EncodeMethod(int id, int arity) { |
| 26 return Encode(id, METHOD, arity); | 26 return Encode(id, METHOD, arity); |
| 27 } | 27 } |
| 28 | 28 |
| 29 class ArityField : public BitField<int, 0, 8> {}; | 29 class ArityField : public BitField<int, 0, 8> {}; |
| 30 class KindField : public BitField<Kind, 8, 2> {}; | 30 class KindField : public BitField<Kind, 8, 2> {}; |
| 31 class IdField : public BitField<int, 10, 22> {}; | 31 class IdField : public BitField<int, 10, 22> {}; |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 } // namespace fletch | 34 } // namespace dartino |
| 35 | 35 |
| 36 #endif // SRC_SHARED_SELECTORS_H_ | 36 #endif // SRC_SHARED_SELECTORS_H_ |
| OLD | NEW |