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 |