blob: 486bd928ea5cba118f812b5cf8c546c7f6c04660 [file] [log] [blame]
export 'package:core_generator/src/field_types/bool_field_type.dart';
export 'package:core_generator/src/field_types/color_field_type.dart';
export 'package:core_generator/src/field_types/double_field_type.dart';
export 'package:core_generator/src/field_types/string_field_type.dart';
export 'package:core_generator/src/field_types/uint_field_type.dart';
Map<String, FieldType> _types = <String, FieldType>{};
abstract class FieldType {
final String name;
String _cppName;
final String include;
String get cppName => _cppName;
String get cppGetterName => _cppName;
String _runtimeCoreType;
String get runtimeCoreType => _runtimeCoreType;
FieldType(
this.name,
String runtimeCoreType, {
String cppName,
this.include,
}) {
_cppName = cppName ?? name;
_runtimeCoreType = runtimeCoreType;
_types[name] = this;
}
static FieldType find(dynamic key) {
if (key is! String) {
return null;
}
return _types[key];
}
@override
String toString() {
return name;
}
String equalityCheck(String varAName, String varBName) {
return "$varAName == $varBName";
}
String get defaultValue => null;
String get uncapitalizedName => '${name[0].toLowerCase()}${name.substring(1)}'
.replaceAll('<', '')
.replaceAll('>', '');
String get capitalizedName => '${name[0].toUpperCase()}${name.substring(1)}'
.replaceAll('<', '')
.replaceAll('>', '');
String get snakeName => name
.replaceAllMapped(RegExp('(.+?)([A-Z])'), (Match m) => '${m[1]}_${m[2]}')
.toLowerCase();
String get snakeRuntimeCoreName => _runtimeCoreType
.replaceAllMapped(RegExp('(.+?)([A-Z])'), (Match m) => '${m[1]}_${m[2]}')
.toLowerCase();
String convertCpp(String value) => value;
}