This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git
The following commit(s) were added to refs/heads/main by this push:
new 52f767639 chore: fix MetaStrEncoding (#2516)
52f767639 is described below
commit 52f767639e5036d7cfd6c926ff3813760fc20b8a
Author: co63oc <[email protected]>
AuthorDate: Mon Aug 25 13:58:07 2025 +0800
chore: fix MetaStrEncoding (#2516)
<!--
**Thanks for contributing to Fory.**
**If this is your first time opening a PR on fory, you can refer to
[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**
Contribution Checklist
- The **Apache Fory** community has requirements on the naming of pr
titles. You can also find instructions in
[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).
- Fory has a strong focus on performance. If the PR you submit will have
an impact on performance, please benchmark it first and provide the
benchmark result here.
-->
## Why?
fix MetaStrEncoding to MetaStringEncoding, similar to MetaStringBytes
dart/packages/fory/lib/src/meta/meta_string_byte.dart
```
final class MetaStringBytes{
// static late final MetaStringBytes empty;
// static const int defDynamicWriteStrId = -1;
static const int _headerMask = 0xff;
// bytes maybe a view of a larger buffer, do not modify it
final Uint8List _bytes;
final int _hashCode;
```
<!-- Describe the purpose of this PR. -->
## What does this PR do?
<!-- Describe the details of this PR. -->
## Related issues
<!--
Is there any related issue? If this PR closes them you say say
fix/closes:
- #xxxx0
- #xxxx1
- Fixes #xxxx2
-->
## Does this PR introduce any user-facing change?
<!--
If any user-facing interface changes, please [open an
issue](https://github.com/apache/fory/issues/new/choose) describing the
need to do so and update the document if necessary.
Delete section if not applicable.
-->
- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?
## Benchmark
<!--
When the PR has an impact on performance (if you don't know whether the
PR will have an impact on performance, you can submit the PR first, and
if it will have impact on performance, the code reviewer will explain
it), be sure to attach a benchmark data here.
Delete section if not applicable.
-->
---
.../src/codec/impl/meta_string_decoder_impl.dart | 12 ++++----
.../src/codec/impl/meta_string_encoder_impl.dart | 32 ++++++++++----------
.../fory/lib/src/codec/meta_string_decoder.dart | 2 +-
.../fory/lib/src/codec/meta_string_encoder.dart | 34 +++++++++++-----------
.../fory/lib/src/codec/meta_string_encoding.dart | 8 ++---
dart/packages/fory/lib/src/meta/meta_string.dart | 4 +--
.../fory/lib/src/meta/meta_string_byte.dart | 8 ++---
.../impl/tag_str_encode_resolver_impl.dart | 20 ++++++-------
8 files changed, 60 insertions(+), 60 deletions(-)
diff --git
a/dart/packages/fory/lib/src/codec/impl/meta_string_decoder_impl.dart
b/dart/packages/fory/lib/src/codec/impl/meta_string_decoder_impl.dart
index dc88a5a2e..c86ea52ad 100644
--- a/dart/packages/fory/lib/src/codec/impl/meta_string_decoder_impl.dart
+++ b/dart/packages/fory/lib/src/codec/impl/meta_string_decoder_impl.dart
@@ -152,18 +152,18 @@ class ForyMetaStringDecoder extends MetaStringDecoder {
@override
- String decode(Uint8List data, MetaStrEncoding encoding) {
+ String decode(Uint8List data, MetaStringEncoding encoding) {
if (data.isEmpty) return '';
switch (encoding) {
- case MetaStrEncoding.ls:
+ case MetaStringEncoding.ls:
return _decodeLowerSpecial(data);
- case MetaStrEncoding.luds:
+ case MetaStringEncoding.luds:
return _decodeLowerUpperDigitSpecial(data);
- case MetaStrEncoding.ftls:
+ case MetaStringEncoding.ftls:
return _decodeRepFirstLowerSpecial(data);
- case MetaStrEncoding.atls:
+ case MetaStringEncoding.atls:
return _decodeRepAllToLowerSpecial(data);
- case MetaStrEncoding.utf8:
+ case MetaStringEncoding.utf8:
return utf8.decode(data);
// default:
// throw ArgumentError('Unsupported encoding: $encoding');
diff --git
a/dart/packages/fory/lib/src/codec/impl/meta_string_encoder_impl.dart
b/dart/packages/fory/lib/src/codec/impl/meta_string_encoder_impl.dart
index a6505f6bc..418914e39 100644
--- a/dart/packages/fory/lib/src/codec/impl/meta_string_encoder_impl.dart
+++ b/dart/packages/fory/lib/src/codec/impl/meta_string_encoder_impl.dart
@@ -50,17 +50,17 @@ final class ForyMetaStringEncoder extends MetaStringEncoder
{
// Write the missing method
Uint8List _encodeLowerSpecial(String input){
- return _encodeGeneric(input.codeUnits, MetaStrEncoding.ls.bits);
+ return _encodeGeneric(input.codeUnits, MetaStringEncoding.ls.bits);
}
Uint8List _encodeLowerUpperDigitSpecial(String input){
- return _encodeGeneric(input.codeUnits, MetaStrEncoding.luds.bits);
+ return _encodeGeneric(input.codeUnits, MetaStringEncoding.luds.bits);
}
Uint8List _encodeFirstToLowerSpecial(String input){
Uint16List chars = Uint16List.fromList(input.codeUnits);
chars[0] += 32; // 'A' to 'a'
- return _encodeGeneric(chars, MetaStrEncoding.ftls.bits);
+ return _encodeGeneric(chars, MetaStringEncoding.ftls.bits);
}
Uint8List _encodeRepAllToLowerSpecial(String input, int upperCount){
@@ -74,7 +74,7 @@ final class ForyMetaStringEncoder extends MetaStringEncoder {
newChars[index++] = c;
}
}
- return _encodeGeneric(newChars, MetaStrEncoding.atls.bits);
+ return _encodeGeneric(newChars, MetaStringEncoding.atls.bits);
}
int _charToValueLowerUpperDigitSpecial(int codeUnit) {
@@ -145,30 +145,30 @@ final class ForyMetaStringEncoder extends
MetaStringEncoder {
return bytes;
}
- MetaString _encode(String input, MetaStrEncoding encoding) {
+ MetaString _encode(String input, MetaStringEncoding encoding) {
// TODO: Do not check input length here, this check should be done earlier
(remove this comment after writing)
assert(input.length < MetaStringConst.metaStrMaxLen);
- assert(encoding == MetaStrEncoding.utf8 || input.isNotEmpty); // Only utf8
encoding can be empty
+ assert(encoding == MetaStringEncoding.utf8 || input.isNotEmpty); // Only
utf8 encoding can be empty
if (input.isEmpty) return MetaString(input, encoding, specialChar1,
specialChar2, Uint8List(0));
- if (encoding != MetaStrEncoding.utf8 && StringUtil.hasNonLatin(input)){
+ if (encoding != MetaStringEncoding.utf8 && StringUtil.hasNonLatin(input)){
throw ArgumentError('non-latin characters are not allowed in non-utf8
encoding');
}
late final Uint8List bytes;
switch (encoding) {
- case MetaStrEncoding.ls:
+ case MetaStringEncoding.ls:
bytes = _encodeLowerSpecial(input);
break;
- case MetaStrEncoding.luds:
+ case MetaStringEncoding.luds:
bytes = _encodeLowerUpperDigitSpecial(input);
break;
- case MetaStrEncoding.ftls:
+ case MetaStringEncoding.ftls:
bytes = _encodeFirstToLowerSpecial(input);
break;
- case MetaStrEncoding.atls:
+ case MetaStringEncoding.atls:
final int upperCount = StringUtil.upperCount(input);
bytes = _encodeRepAllToLowerSpecial(input, upperCount);
break;
- case MetaStrEncoding.utf8:
+ case MetaStringEncoding.utf8:
bytes = Uint8List.fromList(utf8.encode(input));
break;
// default:
@@ -178,18 +178,18 @@ final class ForyMetaStringEncoder extends
MetaStringEncoder {
}
@override
- MetaString encodeByAllowedEncodings(String input, List<MetaStrEncoding>
encodings) {
- if (input.isEmpty) return MetaString(input, MetaStrEncoding.utf8,
specialChar1, specialChar2, Uint8List(0));
+ MetaString encodeByAllowedEncodings(String input, List<MetaStringEncoding>
encodings) {
+ if (input.isEmpty) return MetaString(input, MetaStringEncoding.utf8,
specialChar1, specialChar2, Uint8List(0));
if (StringUtil.hasNonLatin(input)){
return MetaString(
input,
- MetaStrEncoding.utf8,
+ MetaStringEncoding.utf8,
specialChar1,
specialChar2,
utf8.encode(input),
);
}
- MetaStrEncoding encoding = decideEncoding(input, encodings);
+ MetaStringEncoding encoding = decideEncoding(input, encodings);
return _encode(input, encoding);
}
}
diff --git a/dart/packages/fory/lib/src/codec/meta_string_decoder.dart
b/dart/packages/fory/lib/src/codec/meta_string_decoder.dart
index 6224b976e..a595815e8 100644
--- a/dart/packages/fory/lib/src/codec/meta_string_decoder.dart
+++ b/dart/packages/fory/lib/src/codec/meta_string_decoder.dart
@@ -26,6 +26,6 @@ import 'package:fory/src/meta/meta_string_byte.dart';
abstract class MetaStringDecoder extends MetaStringCodecs {
const MetaStringDecoder(super.specialChar1, super.specialChar2);
- String decode(Uint8List data, MetaStrEncoding encoding);
+ String decode(Uint8List data, MetaStringEncoding encoding);
String decodeMetaString(MetaStringBytes data);
}
\ No newline at end of file
diff --git a/dart/packages/fory/lib/src/codec/meta_string_encoder.dart
b/dart/packages/fory/lib/src/codec/meta_string_encoder.dart
index d0a48a612..4c0912a0f 100644
--- a/dart/packages/fory/lib/src/codec/meta_string_encoder.dart
+++ b/dart/packages/fory/lib/src/codec/meta_string_encoder.dart
@@ -28,8 +28,8 @@ import 'package:fory/src/util/char_util.dart';
abstract base class MetaStringEncoder extends MetaStringCodecs {
const MetaStringEncoder(super.specialChar1, super.specialChar2);
- // MetaString encode(String input, MetaStrEncoding encoding);
- MetaString encodeByAllowedEncodings(String input, List<MetaStrEncoding>
encodings);
+ // MetaString encode(String input, MetaStringEncoding encoding);
+ MetaString encodeByAllowedEncodings(String input, List<MetaStringEncoding>
encodings);
StrStat _computeStrStat(String input){
bool canLUDS = true;
@@ -46,36 +46,36 @@ abstract base class MetaStringEncoder extends
MetaStringCodecs {
}
@protected
- MetaStrEncoding decideEncoding(String input, List<MetaStrEncoding>
encodings) {
- List<bool> flags = List.filled(MetaStrEncoding.values.length, false);
+ MetaStringEncoding decideEncoding(String input, List<MetaStringEncoding>
encodings) {
+ List<bool> flags = List.filled(MetaStringEncoding.values.length, false);
for (var e in encodings) {
flags[e.index] = true;
}
// The encoding array is very small, so the List's contains method is
used. If more encodings need to be supported in the future, consider using a
Set.
- if(input.isEmpty && flags[MetaStrEncoding.ls.index]){
- return MetaStrEncoding.ls;
+ if(input.isEmpty && flags[MetaStringEncoding.ls.index]){
+ return MetaStringEncoding.ls;
}
StrStat stat = _computeStrStat(input);
- if (stat.canLS && flags[MetaStrEncoding.ls.index]){
- return MetaStrEncoding.ls;
+ if (stat.canLS && flags[MetaStringEncoding.ls.index]){
+ return MetaStringEncoding.ls;
}
if (stat.canLUDS){
- if (stat.digitCount != 0 && flags[MetaStrEncoding.luds.index]){
- return MetaStrEncoding.luds;
+ if (stat.digitCount != 0 && flags[MetaStringEncoding.luds.index]){
+ return MetaStringEncoding.luds;
}
- if (stat.upperCount == 1 && CharUtil.upper(input.codeUnitAt(0)) &&
flags[MetaStrEncoding.ftls.index]){
- return MetaStrEncoding.ftls;
+ if (stat.upperCount == 1 && CharUtil.upper(input.codeUnitAt(0)) &&
flags[MetaStringEncoding.ftls.index]){
+ return MetaStringEncoding.ftls;
}
if (
((input.length + stat.upperCount) * 5 < input.length * 6) &&
- flags[MetaStrEncoding.atls.index]
+ flags[MetaStringEncoding.atls.index]
) {
- return MetaStrEncoding.atls;
+ return MetaStringEncoding.atls;
}
- if (flags[MetaStrEncoding.luds.index]){
- return MetaStrEncoding.luds;
+ if (flags[MetaStringEncoding.luds.index]){
+ return MetaStringEncoding.luds;
}
}
- return MetaStrEncoding.utf8;
+ return MetaStringEncoding.utf8;
}
}
\ No newline at end of file
diff --git a/dart/packages/fory/lib/src/codec/meta_string_encoding.dart
b/dart/packages/fory/lib/src/codec/meta_string_encoding.dart
index fb8a14d92..2559e3d5d 100644
--- a/dart/packages/fory/lib/src/codec/meta_string_encoding.dart
+++ b/dart/packages/fory/lib/src/codec/meta_string_encoding.dart
@@ -17,7 +17,7 @@
* under the License.
*/
-enum MetaStrEncoding{
+enum MetaStringEncoding{
utf8(0x00, -1),
ls(0x01, 5),
luds(0x02, 6),
@@ -26,10 +26,10 @@ enum MetaStrEncoding{
final int id;
final int bits;
- const MetaStrEncoding(this.id, this.bits);
+ const MetaStringEncoding(this.id, this.bits);
- static MetaStrEncoding fromId(int id){
- for (var value in MetaStrEncoding.values){
+ static MetaStringEncoding fromId(int id){
+ for (var value in MetaStringEncoding.values){
if (value.id == id){
return value;
}
diff --git a/dart/packages/fory/lib/src/meta/meta_string.dart
b/dart/packages/fory/lib/src/meta/meta_string.dart
index 02722aeaa..f1dcde6f2 100644
--- a/dart/packages/fory/lib/src/meta/meta_string.dart
+++ b/dart/packages/fory/lib/src/meta/meta_string.dart
@@ -24,7 +24,7 @@ import 'package:fory/src/codec/meta_string_encoding.dart';
class MetaString {
final String value;
- final MetaStrEncoding encoding;
+ final MetaStringEncoding encoding;
final int specialChar1;
final int specialChar2;
final Uint8List bytes;
@@ -33,7 +33,7 @@ class MetaString {
int? _hash;
MetaString(this.value, this.encoding, this.specialChar1, this.specialChar2,
this.bytes){
- if (encoding != MetaStrEncoding.utf8){
+ if (encoding != MetaStringEncoding.utf8){
// if not utf8, then the bytes should not be empty
assert(bytes.isNotEmpty);
stripLastChar = (bytes[0] & 0x80) != 0;
diff --git a/dart/packages/fory/lib/src/meta/meta_string_byte.dart
b/dart/packages/fory/lib/src/meta/meta_string_byte.dart
index 282a51401..68e254304 100644
--- a/dart/packages/fory/lib/src/meta/meta_string_byte.dart
+++ b/dart/packages/fory/lib/src/meta/meta_string_byte.dart
@@ -30,7 +30,7 @@ final class MetaStringBytes{
// bytes maybe a view of a larger buffer, do not modify it
final Uint8List _bytes;
final int _hashCode;
- late final MetaStrEncoding _encoding;
+ late final MetaStringEncoding _encoding;
late final int _first8Bytes;
late final int _second8Bytes;
// int dynamicWriteStrId = defDynamicWriteStrId;
@@ -39,7 +39,7 @@ final class MetaStringBytes{
MetaStringBytes(this._bytes, this._hashCode){
assert(hashCode != 0);
int header = hashCode & _headerMask;
- _encoding = MetaStrEncoding.fromId(header);
+ _encoding = MetaStringEncoding.fromId(header);
// in case length is less than 16
Uint8List data = _bytes;
if (_bytes.length < 16){
@@ -59,7 +59,7 @@ final class MetaStringBytes{
hashCode = 256;
}
hashCode &= 0xffffffffffffff00;
- MetaStrEncoding encoding = ms.encoding;
+ MetaStringEncoding encoding = ms.encoding;
int header = encoding.id & _headerMask;
hashCode = hashCode | header;
return MetaStringBytes(bytes, hashCode);
@@ -68,7 +68,7 @@ final class MetaStringBytes{
// getter
Uint8List get bytes => _bytes;
int get length => _bytes.length;
- MetaStrEncoding get encoding => _encoding;
+ MetaStringEncoding get encoding => _encoding;
// bool get isDefWriteId => dynamicWriteStrId == defDynamicWriteStrId;
@override
diff --git
a/dart/packages/fory/lib/src/resolver/impl/tag_str_encode_resolver_impl.dart
b/dart/packages/fory/lib/src/resolver/impl/tag_str_encode_resolver_impl.dart
index 91a9a7c5a..77e3db48f 100644
--- a/dart/packages/fory/lib/src/resolver/impl/tag_str_encode_resolver_impl.dart
+++ b/dart/packages/fory/lib/src/resolver/impl/tag_str_encode_resolver_impl.dart
@@ -29,18 +29,18 @@ final class TagStringEncodeResolverImpl extends
TagStringEncodeResolver {
final MetaStringEncoder _tnEncoder = Encoders.typeNameEncoder;
final MetaStringEncoder _nsEncoder = Encoders.packageEncoder;
- static const List<MetaStrEncoding> _tagAllowedEncodings = [
- MetaStrEncoding.utf8,
- MetaStrEncoding.luds,
- MetaStrEncoding.ftls,
- MetaStrEncoding.atls,
+ static const List<MetaStringEncoding> _tagAllowedEncodings = [
+ MetaStringEncoding.utf8,
+ MetaStringEncoding.luds,
+ MetaStringEncoding.ftls,
+ MetaStringEncoding.atls,
];
- static const List<MetaStrEncoding> _nsAllowedEncodings = [
- MetaStrEncoding.utf8,
- MetaStrEncoding.luds,
- MetaStrEncoding.ftls,
- MetaStrEncoding.atls,
+ static const List<MetaStringEncoding> _nsAllowedEncodings = [
+ MetaStringEncoding.utf8,
+ MetaStringEncoding.luds,
+ MetaStringEncoding.ftls,
+ MetaStringEncoding.atls,
];
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]