aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2025-08-20 14:43:38 +0300
committerlevlam <levlam@telegram.org>2025-08-20 14:43:38 +0300
commitb9be841e7c92ab928bbcfca0a44b558e7d8b3c6c (patch)
tree1fd44db95c47e4c65eb9922dd758fe44074f6dfa
parent89ba93c0f1ca3cca1c6c4cc53afb3f9fcbf81e7b (diff)
Make class split stable.
-rw-r--r--tdtl/td/tl/tl_generate.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/tdtl/td/tl/tl_generate.cpp b/tdtl/td/tl/tl_generate.cpp
index 1bf07d821..3e1aa4f7f 100644
--- a/tdtl/td/tl/tl_generate.cpp
+++ b/tdtl/td/tl/tl_generate.cpp
@@ -899,6 +899,10 @@ bool write_tl_to_file(const tl_config &config, const std::string &file_name, con
return put_file_contents(file_name, out.get_result(), w.is_documentation_generated());
}
+static int get_file_num(const std::string &class_name, int file_count) {
+ return static_cast<int>(std::hash<std::string>()(class_name) % file_count);
+}
+
bool write_tl_to_fixed_file_count(const tl_config &config, const std::string &file_name_prefix,
const std::string &file_name_suffix, int file_count, const TL_writer &w) {
assert(file_count > 0);
@@ -906,7 +910,6 @@ bool write_tl_to_fixed_file_count(const tl_config &config, const std::string &fi
std::map<int, tl_string_outputer> outs;
- int file_num = 0;
tl_string_outputer *out = nullptr;
for (int i = 0; i < file_count; i++) {
outs[i].append(w.gen_output_begin(std::string()));
@@ -935,8 +938,7 @@ bool write_tl_to_fixed_file_count(const tl_config &config, const std::string &fi
}
object_types[w.gen_main_class_name(t)] = (t->simple_constructors != 1);
- file_num = (file_num + 1) % file_count;
- out = &outs[file_num];
+ out = &outs[get_file_num(w.gen_main_class_name(t), file_count)];
write_class(*out, t, request_types, result_types, w);
}
@@ -949,8 +951,7 @@ bool write_tl_to_fixed_file_count(const tl_config &config, const std::string &fi
}
function_types[w.gen_class_name(t->name)] = false;
- file_num = (file_num + 1) % file_count;
- out = &outs[file_num];
+ out = &outs[get_file_num(w.gen_class_name(t->name), file_count)];
write_function(*out, t, request_types, result_types, w);
}