1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20/*!
21 * \file source_utils.cc
22 */
23#include "source_utils.h"
24
25namespace tvm {
26namespace runtime {
27
28std::unordered_map<std::string, std::string> SplitKernels(std::string source,
29 std::string delimiter) {
30 std::unordered_map<std::string, std::string> split_kernels;
31 if (source.size()) {
32 size_t begin = source.find(delimiter);
33 size_t end = begin;
34 while (end != std::string::npos) {
35 begin += delimiter.size();
36 end = source.find('\n', begin);
37 std::string func_name = source.substr(begin, end - begin);
38 begin = ++end;
39 end = source.find(delimiter, begin);
40 std::string func_source =
41 source.substr(begin, (end == std::string::npos) ? end : end - begin);
42 split_kernels.insert({func_name, func_source});
43 begin = end;
44 }
45 }
46 return split_kernels;
47}
48} // namespace runtime
49} // namespace tvm
50