diff options
| author | levlam <levlam@telegram.org> | 2021-08-01 07:23:50 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2021-08-01 07:23:50 +0300 |
| commit | a4e1839089cddb459f5f3c733b386efbfc255c5b (patch) | |
| tree | 68a2625b8529288a3397a9adf47b18222598d139 /tdtl | |
| parent | 1223c72741444cf7b7eaad0f9e46c5dbf012be10 (diff) | |
Generate only needed telegram_api full constructors.
Diffstat (limited to 'tdtl')
| -rw-r--r-- | tdtl/td/tl/tl_generate.cpp | 4 | ||||
| -rw-r--r-- | tdtl/td/tl/tl_writer.cpp | 4 | ||||
| -rw-r--r-- | tdtl/td/tl/tl_writer.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/tdtl/td/tl/tl_generate.cpp b/tdtl/td/tl/tl_generate.cpp index 95e87947e..116cc1073 100644 --- a/tdtl/td/tl/tl_generate.cpp +++ b/tdtl/td/tl/tl_generate.cpp @@ -256,7 +256,7 @@ static void write_function(tl_outputer &out, const tl_combinator *t, const std:: if (w.is_default_constructor_generated(t, false, true)) { write_class_constructor(out, t, class_name, true, w); } - if (required_args) { + if (required_args && w.is_full_constructor_generated(t, false, true)) { write_class_constructor(out, t, class_name, false, w); } @@ -337,7 +337,7 @@ static void write_constructor(tl_outputer &out, const tl_combinator *t, const st if (w.is_default_constructor_generated(t, can_be_parsed, can_be_stored)) { write_class_constructor(out, t, class_name, true, w); } - if (required_args) { + if (required_args && w.is_full_constructor_generated(t, can_be_parsed, can_be_stored)) { write_class_constructor(out, t, class_name, false, w); } diff --git a/tdtl/td/tl/tl_writer.cpp b/tdtl/td/tl/tl_writer.cpp index 965dfdef1..940150789 100644 --- a/tdtl/td/tl/tl_writer.cpp +++ b/tdtl/td/tl/tl_writer.cpp @@ -139,6 +139,10 @@ bool TL_writer::is_default_constructor_generated(const tl_combinator *t, bool ca return true; } +bool TL_writer::is_full_constructor_generated(const tl_combinator *t, bool can_be_parsed, bool can_be_stored) const { + return true; +} + std::string TL_writer::gen_main_class_name(const tl_type *t) const { if (t->simple_constructors == 1) { for (std::size_t i = 0; i < t->constructors_num; i++) { diff --git a/tdtl/td/tl/tl_writer.h b/tdtl/td/tl/tl_writer.h index b2ccf55af..06dd9640f 100644 --- a/tdtl/td/tl/tl_writer.h +++ b/tdtl/td/tl/tl_writer.h @@ -57,6 +57,7 @@ class TL_writer { virtual bool is_combinator_supported(const tl_combinator *constructor) const; virtual bool is_documentation_generated() const; virtual bool is_default_constructor_generated(const tl_combinator *t, bool can_be_parsed, bool can_be_stored) const; + virtual bool is_full_constructor_generated(const tl_combinator *t, bool can_be_parsed, bool can_be_stored) const; virtual int get_parser_type(const tl_combinator *t, const std::string &parser_name) const; virtual int get_storer_type(const tl_combinator *t, const std::string &storer_name) const; |
