up-to-date submodule(rive-cpp)
[platform/core/uifw/rive-tizen.git] / submodule / dev / core_generator / lib / src / field_type.dart
1 export 'package:core_generator/src/field_types/bool_field_type.dart';
2 export 'package:core_generator/src/field_types/double_field_type.dart';
3 export 'package:core_generator/src/field_types/string_field_type.dart';
4 export 'package:core_generator/src/field_types/color_field_type.dart';
5 export 'package:core_generator/src/field_types/uint_field_type.dart';
6
7 Map<String, FieldType> _types = <String, FieldType>{};
8
9 abstract class FieldType {
10   final String name;
11   String _cppName;
12   final String include;
13   String get cppName => _cppName;
14
15   String _runtimeCoreType;
16   String get runtimeCoreType => _runtimeCoreType;
17
18   FieldType(
19     this.name,
20     String runtimeCoreType, {
21     String cppName,
22     this.include,
23   }) {
24     _cppName = cppName ?? name;
25     _runtimeCoreType = runtimeCoreType;
26     _types[name] = this;
27   }
28
29   static FieldType find(dynamic key) {
30     if (key is! String) {
31       return null;
32     }
33     return _types[key];
34   }
35
36   @override
37   String toString() {
38     return name;
39   }
40
41   String equalityCheck(String varAName, String varBName) {
42     return "$varAName == $varBName";
43   }
44
45   String get defaultValue => null;
46
47   String get uncapitalizedName => '${name[0].toLowerCase()}${name.substring(1)}'
48       .replaceAll('<', '')
49       .replaceAll('>', '');
50
51   String get capitalizedName => '${name[0].toUpperCase()}${name.substring(1)}'
52       .replaceAll('<', '')
53       .replaceAll('>', '');
54
55   String get snakeName => name
56       .replaceAllMapped(RegExp('(.+?)([A-Z])'), (Match m) => '${m[1]}_${m[2]}')
57       .toLowerCase();
58
59   String get snakeRuntimeCoreName => _runtimeCoreType
60       .replaceAllMapped(RegExp('(.+?)([A-Z])'), (Match m) => '${m[1]}_${m[2]}')
61       .toLowerCase();
62
63   String convertCpp(String value) => value;
64 }