blob: 798cea354138160f531ae9b5ddfdd60566fa887d [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/zxdb/expr/expr_language.h"
#include <filesystem>
#include <map>
namespace zxdb {
std::optional<ExprLanguage> FileNameToLanguage(const std::string& name) {
static std::map<std::string, ExprLanguage> mapping;
if (mapping.empty()) {
mapping[".c"] = ExprLanguage::kC;
mapping[".cc"] = ExprLanguage::kC;
mapping[".cpp"] = ExprLanguage::kC;
mapping[".cxx"] = ExprLanguage::kC;
mapping[".c++"] = ExprLanguage::kC;
mapping[".h"] = ExprLanguage::kC;
mapping[".hh"] = ExprLanguage::kC;
mapping[".hpp"] = ExprLanguage::kC;
mapping[".hxx"] = ExprLanguage::kC;
mapping[".h++"] = ExprLanguage::kC;
mapping[".inc"] = ExprLanguage::kC;
mapping[".rs"] = ExprLanguage::kRust;
}
if (auto found = mapping.find(std::filesystem::path(name).extension()); found != mapping.end())
return found->second;
return std::nullopt;
}
} // namespace zxdb