// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMEOS_ASH_COMPONENTS_FILE_MANAGER_INDEXING_TERM_H_
#define CHROMEOS_ASH_COMPONENTS_FILE_MANAGER_INDEXING_TERM_H_
#include <string>
#include "base/component_export.h"
namespace ash::file_manager {
// Represents a term that can be associated with a file or used to query for a
// file. An example term would be a label given to a file. If the file has
// label "starred" associated with it, it would be represented by the
// Term("label", u"starred") object. Other terms could be generated from the
// files' content, name, path, etc.
class COMPONENT_EXPORT(FILE_MANAGER) Term {
public:
Term(const std::string& field, const std::u16string& token);
~Term();
// TODO(b:327535200): Reconsider copyability.
Term(const Term&) = default;
Term& operator=(const Term&) = default;
const std::string& field() const { return field_; }
const std::u16string token() const { return token_; }
const std::string& token_bytes() const { return token_bytes_; }
private:
std::string field_;
std::u16string token_;
std::string token_bytes_;
};
} // namespace ash::file_manager
#endif // CHROMEOS_ASH_COMPONENTS_FILE_MANAGER_INDEXING_TERM_H_