| 373 | } |
| 374 | |
| 375 | const std::vector<const inverse_attribute*> all_inverse_attributes() const { |
| 376 | std::vector<const inverse_attribute*> attrs; |
| 377 | if (supertype_ != nullptr) { |
| 378 | const std::vector<const inverse_attribute*> supertype_inv_attrs = supertype_->all_inverse_attributes(); |
| 379 | std::copy(supertype_inv_attrs.begin(), supertype_inv_attrs.end(), std::back_inserter(attrs)); |
| 380 | } |
| 381 | std::copy(inverse_attributes_.begin(), inverse_attributes_.end(), std::back_inserter(attrs)); |
| 382 | return attrs; |
| 383 | } |
| 384 | |
| 385 | const attribute* attribute_by_index(size_t index) const { |
| 386 | const attribute* attr = attribute_by_index_(index); |