diff options
| author | levlam <levlam@telegram.org> | 2025-08-20 14:43:38 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2025-08-20 14:43:38 +0300 |
| commit | b9be841e7c92ab928bbcfca0a44b558e7d8b3c6c (patch) | |
| tree | 1fd44db95c47e4c65eb9922dd758fe44074f6dfa | |
| parent | 89ba93c0f1ca3cca1c6c4cc53afb3f9fcbf81e7b (diff) | |
Make class split stable.
| -rw-r--r-- | tdtl/td/tl/tl_generate.cpp | 11 |
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); } |
