| // 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_ |