blob: ae4acf5b610fe8c7beb464bc8032d7b9393361db [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
parcel Lucy;
/** Iterate over the files in a directory.
*/
abstract class Lucy::Store::DirHandle cnick DH
inherits Lucy::Object::Obj {
CharBuf *dir;
CharBuf *entry;
/** Abstract constructor.
*
* @param dir The path to the directory.
*/
inert DirHandle*
init(DirHandle *self, const CharBuf *dir);
/** Proceed to the next entry in the directory.
*
* @return true on success, false when finished.
*/
abstract bool_t
Next(DirHandle *self);
/** Attempt to close the DirHandle. Returns true on success, sets
* Err_error and returns false on failure.
*/
abstract bool_t
Close(DirHandle *self);
/** Return the object's <code>dir</code> attribute.
*/
CharBuf*
Get_Dir(DirHandle *self);
/** Return the path of the current entry. The value is updated by each
* call to Next(), and is only valid when Next() has returned
* successfully.
*/
CharBuf*
Get_Entry(DirHandle *self);
/** Returns true if the current entry is a directory, false otherwise.
*/
abstract bool_t
Entry_Is_Dir(DirHandle *self);
/** Returns true if the current entry is a symbolic link (or a Windows
* junction), false otherwise.
*/
abstract bool_t
Entry_Is_Symlink(DirHandle *self);
/** Invokes Close(), but ignores any errors.
*/
public void
Destroy(DirHandle *self);
}