1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "ast/ast_method.h" 17 18 #include "util/string_builder.h" 19 20 namespace OHOS { 21 namespace Idl { GetSignature()22String ASTMethod::GetSignature() 23 { 24 if (signature_.IsEmpty()) { 25 BuildSignature(); 26 } 27 return signature_; 28 } 29 BuildSignature()30void ASTMethod::BuildSignature() 31 { 32 StringBuilder sb; 33 34 sb.AppendFormat("(%s)", returnType_->GetSignature().string()); 35 for (size_t i = 0; i < parameters_.size(); i++) { 36 sb.Append(parameters_[i]->GetType()->GetSignature()); 37 } 38 signature_ = sb.ToString(); 39 } 40 AddParameter(ASTParameter * parameter)41void ASTMethod::AddParameter(ASTParameter* parameter) 42 { 43 if (parameter == nullptr) { 44 return; 45 } 46 parameters_.push_back(parameter); 47 } 48 GetParameter(size_t index)49AutoPtr<ASTParameter> ASTMethod::GetParameter(size_t index) 50 { 51 if (index >= parameters_.size()) { 52 return nullptr; 53 } 54 55 return parameters_[index]; 56 } 57 Dump(const String & prefix)58String ASTMethod::Dump(const String& prefix) 59 { 60 StringBuilder sb; 61 62 sb.Append(prefix); 63 sb.Append(returnType_->ToString()).Append(' '); 64 sb.Append(name_).Append('('); 65 if (parameters_.size() != 0) { 66 sb.Append('\n'); 67 for (auto parameter : parameters_) { 68 String info = parameter->Dump(prefix + " "); 69 sb.Append(info); 70 if (parameter != parameters_[parameters_.size() - 1]) { 71 sb.Append(",\n"); 72 } 73 } 74 } 75 sb.Append(");\n"); 76 77 return sb.ToString(); 78 } 79 } // namespace Idl 80 } // namespace OHOS 81