| 4634 | } |
| 4635 | |
| 4636 | void GeneratorKotlin::GenerateContainers(const std::shared_ptr<Package>& p, bool final) |
| 4637 | { |
| 4638 | std::string domain = (p->domain && !p->domain->empty()) ? (*p->domain + ".") : ""; |
| 4639 | CppCommon::Path path = CppCommon::Path(_output) / CreatePackagePath(domain, *p->name); |
| 4640 | |
| 4641 | // Create package path |
| 4642 | CppCommon::Directory::CreateTree(path); |
| 4643 | |
| 4644 | if (p->body) |
| 4645 | { |
| 4646 | // Check all structs in the package |
| 4647 | for (const auto& s : p->body->structs) |
| 4648 | { |
| 4649 | if (s->body) |
| 4650 | { |
| 4651 | // Check all fields in the struct |
| 4652 | for (const auto& field : s->body->fields) |
| 4653 | { |
| 4654 | if (field->array) |
| 4655 | { |
| 4656 | if (final) |
| 4657 | GenerateFBEFinalModelArray(domain, *p->name, (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), *field->type, field->optional, ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4658 | else |
| 4659 | GenerateFBEFieldModelArray(domain, *p->name, (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), *field->type, field->optional, ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4660 | } |
| 4661 | if (field->vector || field->list || field->set) |
| 4662 | { |
| 4663 | if (final) |
| 4664 | GenerateFBEFinalModelVector(domain, *p->name, (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4665 | else |
| 4666 | GenerateFBEFieldModelVector(domain, *p->name, (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4667 | } |
| 4668 | if (field->map || field->hash) |
| 4669 | { |
| 4670 | if (final) |
| 4671 | GenerateFBEFinalModelMap(domain, *p->name, ConvertTypeFieldName(*field->key), ConvertTypeFieldType(domain, *field->key, false), ConvertTypeFieldDeclaration(domain, *field->key, false, final), (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4672 | else |
| 4673 | GenerateFBEFieldModelMap(domain, *p->name, ConvertTypeFieldName(*field->key), ConvertTypeFieldType(domain, *field->key, false), ConvertTypeFieldDeclaration(domain, *field->key, false, final), (field->optional ? "Optional" : "") + ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, field->optional, final)); |
| 4674 | } |
| 4675 | if (field->optional) |
| 4676 | { |
| 4677 | if (final) |
| 4678 | GenerateFBEFinalModelOptional(domain, *p->name, ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, false, final)); |
| 4679 | else |
| 4680 | GenerateFBEFieldModelOptional(domain, *p->name, ConvertTypeFieldName(*field->type), ConvertTypeFieldType(domain, *field->type, field->optional), ConvertTypeFieldDeclaration(domain, *field->type, false, final)); |
| 4681 | } |
| 4682 | } |
| 4683 | } |
| 4684 | } |
| 4685 | } |
| 4686 | } |
| 4687 | |
| 4688 | void GeneratorKotlin::GeneratePackage(const std::shared_ptr<Package>& p) |
| 4689 | { |