[Adaptation Layer] Added rive-tizen adaptation layer class.
[platform/core/uifw/rive-tizen.git] / submodule / rive-cpp / dev / core_generator / lib / src / key.dart
1 import 'definition.dart';
2 import 'property.dart';
3
4 class Key {
5   final String stringValue;
6   final int intValue;
7
8   bool get isMissing => intValue == null;
9
10   Key(this.stringValue, this.intValue);
11   Key.forDefinition(Definition def)
12       : stringValue = def.name.toLowerCase(),
13         intValue = null;
14   Key.forProperty(Property field)
15       : stringValue = field.name.toLowerCase(),
16         intValue = null;
17
18   Key withIntValue(int id) => Key(stringValue, id);
19
20   factory Key.fromJSON(dynamic data) {
21     if (data is! Map<String, dynamic>) {
22       return null;
23     }
24     dynamic iv = data["int"];
25     dynamic sv = data["string"];
26     if (iv is int && sv is String) {
27       return Key(sv, iv);
28     }
29     return null;
30   }
31
32   Map<String, dynamic> serialize() =>
33       <String, dynamic>{"int": intValue, "string": stringValue};
34 }