blob: 94a50b2b63ec965597aaf4f5ed031f8d40777fa3 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SMBPROVIDER_ITERATOR_PRE_DEPTH_FIRST_ITERATOR_H_
#define SMBPROVIDER_ITERATOR_PRE_DEPTH_FIRST_ITERATOR_H_
#include <string>
#include "smbprovider/iterator/depth_first_iterator.h"
namespace smbprovider {
struct DirectoryEntry;
class SambaInterface;
// PreDepthFirstIterator is a class that implements a preorder traversal of
// an SMB filesystem by extending the DepthFirstIterator class.
//
// Example:
// PreDepthFirstIterator it("smb://testShare/test/dogs",
// SambaInterface.get());
// result = it.Init();
// while (result == 0) {
// if it.IsDone: return 0
// // Do something with it.Get();
// result = it.Next();
// }
// return result;
class PreDepthFirstIterator : public DepthFirstIterator {
public:
PreDepthFirstIterator(const std::string& dir_path,
SambaInterface* samba_interface);
protected:
// Preorder traversal override of DepthFirstIterator.
int32_t OnPush(const DirectoryEntry& entry) override;
};
} // namespace smbprovider
#endif // SMBPROVIDER_ITERATOR_PRE_DEPTH_FIRST_ITERATOR_H_