CXXMethodDecl* RecordInfo::DeclaresNewOperator() { for (CXXRecordDecl::method_iterator it = record_->method_begin(); it != record_->method_end(); ++it) { if (it->getNameAsString() == kNewOperatorName && it->getNumParams() == 1) return *it; } return 0; }
bool RecordInfo::IsOnlyPlacementNewable() { if (is_only_placement_newable_ == kNotComputed) { bool placement = false; bool new_deleted = false; for (CXXRecordDecl::method_iterator it = record_->method_begin(); it != record_->method_end(); ++it) { if (it->getNameAsString() == kNewOperatorName) { if (it->getNumParams() == 1) { new_deleted = it->isDeleted(); } else if (it->getNumParams() == 2) { placement = !it->isDeleted(); } } } is_only_placement_newable_ = (placement && new_deleted) ? kTrue : kFalse; } return is_only_placement_newable_; }