sapling/eden/fs/inodes/TopLevelIgnores.h
Adam Simpkins aa5e6c7295 update license headers in C++ files
Summary:
Update the copyright & license headers in C++ files to reflect the
relicensing to GPLv2

Reviewed By: wez

Differential Revision: D15487078

fbshipit-source-id: 19f24c933a64ecad0d3a692d0f8d2a38b4194b1d
2019-06-19 17:02:45 -07:00

58 lines
1.7 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#pragma once
#include "eden/fs/model/git/GitIgnore.h"
#include "eden/fs/model/git/GitIgnoreStack.h"
namespace facebook {
namespace eden {
/**
* Encapsulate the system and user ignore files loaded from configuration files.
* They are created by ServerState and used to populate the DiffState.
*/
class TopLevelIgnores {
public:
/**
* Construct from provided user and system GitIgnore objects.
*/
TopLevelIgnores(GitIgnore userIgnore, GitIgnore systemIgnore)
: systemIgnoreStack_{nullptr, systemIgnore},
userIgnoreStack_{&systemIgnoreStack_, userIgnore} {}
/**
* Construct from user and system gitIgnore file contents.
* Intended for testing purposes.
*/
TopLevelIgnores(
folly::StringPiece systemIgnoreFileContents,
folly::StringPiece userIgnoreFileContents)
: systemIgnoreStack_{nullptr, systemIgnoreFileContents},
userIgnoreStack_{&systemIgnoreStack_, userIgnoreFileContents} {}
TopLevelIgnores(const TopLevelIgnores&) = delete;
TopLevelIgnores(TopLevelIgnores&&) = delete;
TopLevelIgnores& operator=(const TopLevelIgnores&) = delete;
TopLevelIgnores& operator=(TopLevelIgnores&&) = delete;
~TopLevelIgnores() {}
const GitIgnoreStack* getStack() const {
if (!userIgnoreStack_.empty()) {
return &userIgnoreStack_;
}
if (!systemIgnoreStack_.empty()) {
return &systemIgnoreStack_;
}
return nullptr;
}
private:
GitIgnoreStack systemIgnoreStack_;
GitIgnoreStack userIgnoreStack_;
};
} // namespace eden
} // namespace facebook