1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "perfetto/trace_processor/trace_processor.h" 18 #include "src/trace_processor/table.h" 19 #include "src/trace_processor/trace_processor_impl.h" 20 21 namespace perfetto { 22 namespace trace_processor { 23 24 // static CreateInstance(const Config & config)25std::unique_ptr<TraceProcessor> TraceProcessor::CreateInstance( 26 const Config& config) { 27 return std::unique_ptr<TraceProcessor>(new TraceProcessorImpl(config)); 28 } 29 30 TraceProcessor::~TraceProcessor() = default; 31 Iterator(std::unique_ptr<IteratorImpl> iterator)32TraceProcessor::Iterator::Iterator(std::unique_ptr<IteratorImpl> iterator) 33 : iterator_(std::move(iterator)) {} 34 TraceProcessor::Iterator::~Iterator() = default; 35 36 TraceProcessor::Iterator::Iterator(TraceProcessor::Iterator&&) noexcept = 37 default; 38 TraceProcessor::Iterator& TraceProcessor::Iterator::operator=( 39 TraceProcessor::Iterator&&) = default; 40 Next()41bool TraceProcessor::Iterator::Next() { 42 return iterator_->Next(); 43 } 44 Get(uint32_t col)45SqlValue TraceProcessor::Iterator::Get(uint32_t col) { 46 return iterator_->Get(col); 47 } 48 GetColumName(uint32_t col)49std::string TraceProcessor::Iterator::GetColumName(uint32_t col) { 50 return iterator_->GetColumnName(col); 51 } 52 ColumnCount()53uint32_t TraceProcessor::Iterator::ColumnCount() { 54 return iterator_->ColumnCount(); 55 } 56 GetLastError()57base::Optional<std::string> TraceProcessor::Iterator::GetLastError() { 58 return iterator_->GetLastError(); 59 } 60 61 // static EnableSQLiteVtableDebugging()62void EnableSQLiteVtableDebugging() { 63 // This level of indirection is required to avoid clients to depend on table.h 64 // which in turn requires sqlite headers. 65 Table::debug = true; 66 } 67 } // namespace trace_processor 68 } // namespace perfetto 69