• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 "tooling/client/manager/breakpoint_manager.h"
17 
18 #include "common/log_wrapper.h"
19 #include "tooling/utils/utils.h"
20 #include "tooling/client/session/session.h"
21 
22 using PtJson = panda::ecmascript::tooling::PtJson;
23 using Result = panda::ecmascript::tooling::Result;
24 namespace OHOS::ArkCompiler::Toolchain {
Createbreaklocation(const std::unique_ptr<PtJson> json)25 void BreakPointManager::Createbreaklocation(const std::unique_ptr<PtJson> json)
26 {
27     if (json == nullptr) {
28         LOGE("arkdb: json parse error");
29         return;
30     }
31 
32     if (!json->IsObject()) {
33         LOGE("arkdb: json parse format error");
34         json->ReleaseRoot();
35         return;
36     }
37     Result ret;
38     std::unique_ptr<PtJson> result;
39     ret = json->GetObject("result", &result);
40     if (ret != Result::SUCCESS) {
41         LOGE("arkdb: find result error");
42         return;
43     }
44     std::string breakpointId;
45     ret = result->GetString("breakpointId", &breakpointId);
46     if (ret == Result::SUCCESS) {
47         Breaklocation breaklocation;
48         breaklocation.breakpointId = breakpointId;
49         std::vector<std::string> breaksplitstring;
50         breaksplitstring = Utils::SplitString(breakpointId, ":");
51         breaklocation.lineNumber = breaksplitstring[1]; // 1: linenumber
52         breaklocation.columnNumber = breaksplitstring[2]; // 2: columnnumber
53         breaklocation.url = breaksplitstring[3]; // 3: url
54         breaklist_.push_back(breaklocation);
55     } else {
56         LOGE("arkdb: find breakpointId error");
57         return;
58     }
59 }
60 
Show()61 void BreakPointManager::Show()
62 {
63     size_t size = breaklist_.size();
64     for (size_t i = 0; i < size; i++) {
65         std::cout << (i + 1) << ':' << " url:" << breaklist_[i].url;
66         std::cout << " lineNumber:" << (std::atoi(breaklist_[i].lineNumber.c_str()) + 1)
67             << " columnNumber:" << breaklist_[i].columnNumber << std::endl;
68     }
69 }
70 
Deletebreaklist(unsigned int num)71 void BreakPointManager::Deletebreaklist(unsigned int num)
72 {
73     std::vector<Breaklocation>::iterator it = breaklist_.begin() + num - 1;
74     breaklist_.erase(it);
75 }
76 
Getbreaklist() const77 std::vector<Breaklocation> BreakPointManager::Getbreaklist() const
78 {
79     return breaklist_;
80 }
81 }