Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
idapro / opt / ida90 / libexec / idapro / python / ida_dirtree.py
Size: Mime:
"""Types involved in grouping of item into folders.

The dirtree_t class is used to organize a directory tree on top of any collection that allows for accessing its elements by an id (inode).
No requirements are imposed on the inodes apart from the forbidden value -1 (used to denote a bad inode).
The dirspec_t class is used to specialize the dirtree. It can be used to introduce a directory structure for:
* local types
* structs
* enums
* functions
* names
* etc


"""
from sys import version_info as _swig_python_version_info
if __package__ or '.' in __name__:
    from . import _ida_dirtree
else:
    import _ida_dirtree
try:
    import builtins as __builtin__
except ImportError:
    import __builtin__


def _swig_repr(self):
    try:
        strthis = 'proxy of ' + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ''
    return '<%s.%s; %s >' % (self.__class__.__module__, self.__class__.
        __name__, strthis)


def _swig_setattr_nondynamic_instance_variable(set):

    def set_instance_attr(self, name, value):
        if name == 'this':
            set(self, name, value)
        elif name == 'thisown':
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name),
            property):
            set(self, name, value)
        else:
            raise AttributeError('You cannot add instance attributes to %s' %
                self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):

    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError('You cannot add class attributes to %s' % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""

    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


import weakref
SWIG_PYTHON_LEGACY_BOOL = _ida_dirtree.SWIG_PYTHON_LEGACY_BOOL
from typing import Tuple, List, Union
import ida_idaapi


class direntry_vec_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, *args):
        _ida_dirtree.direntry_vec_t_swiginit(self, _ida_dirtree.
            new_direntry_vec_t(*args))
    __swig_destroy__ = _ida_dirtree.delete_direntry_vec_t

    def push_back(self, *args) ->'direntry_t &':
        return _ida_dirtree.direntry_vec_t_push_back(self, *args)

    def pop_back(self) ->None:
        return _ida_dirtree.direntry_vec_t_pop_back(self)

    def size(self) ->'size_t':
        return _ida_dirtree.direntry_vec_t_size(self)

    def empty(self) ->bool:
        return _ida_dirtree.direntry_vec_t_empty(self)

    def at(self, _idx: 'size_t') ->'direntry_t const &':
        return _ida_dirtree.direntry_vec_t_at(self, _idx)

    def qclear(self) ->None:
        return _ida_dirtree.direntry_vec_t_qclear(self)

    def clear(self) ->None:
        return _ida_dirtree.direntry_vec_t_clear(self)

    def resize(self, *args) ->None:
        return _ida_dirtree.direntry_vec_t_resize(self, *args)

    def grow(self, *args) ->None:
        return _ida_dirtree.direntry_vec_t_grow(self, *args)

    def capacity(self) ->'size_t':
        return _ida_dirtree.direntry_vec_t_capacity(self)

    def reserve(self, cnt: 'size_t') ->None:
        return _ida_dirtree.direntry_vec_t_reserve(self, cnt)

    def truncate(self) ->None:
        return _ida_dirtree.direntry_vec_t_truncate(self)

    def swap(self, r: 'direntry_vec_t') ->None:
        return _ida_dirtree.direntry_vec_t_swap(self, r)

    def extract(self) ->'direntry_t *':
        return _ida_dirtree.direntry_vec_t_extract(self)

    def inject(self, s: 'direntry_t', len: 'size_t') ->None:
        return _ida_dirtree.direntry_vec_t_inject(self, s, len)

    def __eq__(self, r: 'direntry_vec_t') ->bool:
        return _ida_dirtree.direntry_vec_t___eq__(self, r)

    def __ne__(self, r: 'direntry_vec_t') ->bool:
        return _ida_dirtree.direntry_vec_t___ne__(self, r)

    def begin(self, *args) ->'qvector< direntry_t >::const_iterator':
        return _ida_dirtree.direntry_vec_t_begin(self, *args)

    def end(self, *args) ->'qvector< direntry_t >::const_iterator':
        return _ida_dirtree.direntry_vec_t_end(self, *args)

    def insert(self, it: 'direntry_t', x: 'direntry_t'
        ) ->'qvector< direntry_t >::iterator':
        return _ida_dirtree.direntry_vec_t_insert(self, it, x)

    def erase(self, *args) ->'qvector< direntry_t >::iterator':
        return _ida_dirtree.direntry_vec_t_erase(self, *args)

    def find(self, *args) ->'qvector< direntry_t >::const_iterator':
        return _ida_dirtree.direntry_vec_t_find(self, *args)

    def has(self, x: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_vec_t_has(self, x)

    def add_unique(self, x: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_vec_t_add_unique(self, x)

    def _del(self, x: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_vec_t__del(self, x)

    def __len__(self) ->'size_t':
        return _ida_dirtree.direntry_vec_t___len__(self)

    def __getitem__(self, i: 'size_t') ->'direntry_t const &':
        return _ida_dirtree.direntry_vec_t___getitem__(self, i)

    def __setitem__(self, i: 'size_t', v: 'direntry_t') ->None:
        return _ida_dirtree.direntry_vec_t___setitem__(self, i, v)

    def append(self, x: 'direntry_t') ->None:
        return _ida_dirtree.direntry_vec_t_append(self, x)

    def extend(self, x: 'direntry_vec_t') ->None:
        return _ida_dirtree.direntry_vec_t_extend(self, x)
    front = ida_idaapi._qvector_front
    back = ida_idaapi._qvector_back
    __iter__ = ida_idaapi._bounded_getitem_iterator


_ida_dirtree.direntry_vec_t_swigregister(direntry_vec_t)


class dirtree_cursor_vec_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, *args):
        _ida_dirtree.dirtree_cursor_vec_t_swiginit(self, _ida_dirtree.
            new_dirtree_cursor_vec_t(*args))
    __swig_destroy__ = _ida_dirtree.delete_dirtree_cursor_vec_t

    def push_back(self, *args) ->'dirtree_cursor_t &':
        return _ida_dirtree.dirtree_cursor_vec_t_push_back(self, *args)

    def pop_back(self) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_pop_back(self)

    def size(self) ->'size_t':
        return _ida_dirtree.dirtree_cursor_vec_t_size(self)

    def empty(self) ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t_empty(self)

    def at(self, _idx: 'size_t') ->'dirtree_cursor_t const &':
        return _ida_dirtree.dirtree_cursor_vec_t_at(self, _idx)

    def qclear(self) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_qclear(self)

    def clear(self) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_clear(self)

    def resize(self, *args) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_resize(self, *args)

    def grow(self, *args) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_grow(self, *args)

    def capacity(self) ->'size_t':
        return _ida_dirtree.dirtree_cursor_vec_t_capacity(self)

    def reserve(self, cnt: 'size_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_reserve(self, cnt)

    def truncate(self) ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_truncate(self)

    def swap(self, r: 'dirtree_cursor_vec_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_swap(self, r)

    def extract(self) ->'dirtree_cursor_t *':
        return _ida_dirtree.dirtree_cursor_vec_t_extract(self)

    def inject(self, s: 'dirtree_cursor_t', len: 'size_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_inject(self, s, len)

    def __eq__(self, r: 'dirtree_cursor_vec_t') ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t___eq__(self, r)

    def __ne__(self, r: 'dirtree_cursor_vec_t') ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t___ne__(self, r)

    def begin(self, *args) ->'qvector< dirtree_cursor_t >::const_iterator':
        return _ida_dirtree.dirtree_cursor_vec_t_begin(self, *args)

    def end(self, *args) ->'qvector< dirtree_cursor_t >::const_iterator':
        return _ida_dirtree.dirtree_cursor_vec_t_end(self, *args)

    def insert(self, it: 'dirtree_cursor_t', x: 'dirtree_cursor_t'
        ) ->'qvector< dirtree_cursor_t >::iterator':
        return _ida_dirtree.dirtree_cursor_vec_t_insert(self, it, x)

    def erase(self, *args) ->'qvector< dirtree_cursor_t >::iterator':
        return _ida_dirtree.dirtree_cursor_vec_t_erase(self, *args)

    def find(self, *args) ->'qvector< dirtree_cursor_t >::const_iterator':
        return _ida_dirtree.dirtree_cursor_vec_t_find(self, *args)

    def has(self, x: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t_has(self, x)

    def add_unique(self, x: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t_add_unique(self, x)

    def _del(self, x: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_vec_t__del(self, x)

    def __len__(self) ->'size_t':
        return _ida_dirtree.dirtree_cursor_vec_t___len__(self)

    def __getitem__(self, i: 'size_t') ->'dirtree_cursor_t const &':
        return _ida_dirtree.dirtree_cursor_vec_t___getitem__(self, i)

    def __setitem__(self, i: 'size_t', v: 'dirtree_cursor_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t___setitem__(self, i, v)

    def append(self, x: 'dirtree_cursor_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_append(self, x)

    def extend(self, x: 'dirtree_cursor_vec_t') ->None:
        return _ida_dirtree.dirtree_cursor_vec_t_extend(self, x)
    front = ida_idaapi._qvector_front
    back = ida_idaapi._qvector_back
    __iter__ = ida_idaapi._bounded_getitem_iterator


_ida_dirtree.dirtree_cursor_vec_t_swigregister(dirtree_cursor_vec_t)


class direntry_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr
    idx: 'uval_t' = property(_ida_dirtree.direntry_t_idx_get, _ida_dirtree.
        direntry_t_idx_set)
    """diridx_t or inode_t
"""
    isdir: 'bool' = property(_ida_dirtree.direntry_t_isdir_get,
        _ida_dirtree.direntry_t_isdir_set)
    """is 'idx' a diridx_t, or an inode_t
"""
    BADIDX = _ida_dirtree.direntry_t_BADIDX
    ROOTIDX = _ida_dirtree.direntry_t_ROOTIDX

    def __init__(self, *args):
        _ida_dirtree.direntry_t_swiginit(self, _ida_dirtree.new_direntry_t(
            *args))

    def valid(self) ->bool:
        return _ida_dirtree.direntry_t_valid(self)

    def __eq__(self, r: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_t___eq__(self, r)

    def __ne__(self, r: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_t___ne__(self, r)

    def __lt__(self, r: 'direntry_t') ->bool:
        return _ida_dirtree.direntry_t___lt__(self, r)
    __swig_destroy__ = _ida_dirtree.delete_direntry_t


_ida_dirtree.direntry_t_swigregister(direntry_t)
DTN_FULL_NAME = _ida_dirtree.DTN_FULL_NAME
"""use long form of the entry name. That name is unique. 
          """
DTN_DISPLAY_NAME = _ida_dirtree.DTN_DISPLAY_NAME
"""use short, displayable form of the entry name. for example, 'std::string' instead of 'std::basic_string<char, ...>'. Note that more than one "full name" can have the same displayable name. 
          """


class dirspec_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr
    flags: 'uint32' = property(_ida_dirtree.dirspec_t_flags_get,
        _ida_dirtree.dirspec_t_flags_set)
    DSF_INODE_EA = _ida_dirtree.dirspec_t_DSF_INODE_EA
    DSF_PRIVRANGE = _ida_dirtree.dirspec_t_DSF_PRIVRANGE
    DSF_ORDERABLE = _ida_dirtree.dirspec_t_DSF_ORDERABLE
    id: 'qstring' = property(_ida_dirtree.dirspec_t_id_get, _ida_dirtree.
        dirspec_t_id_set)

    def __init__(self, nm: str=None, f: int=0):
        if self.__class__ == dirspec_t:
            _self = None
        else:
            _self = self
        _ida_dirtree.dirspec_t_swiginit(self, _ida_dirtree.new_dirspec_t(
            _self, nm, f))
    __swig_destroy__ = _ida_dirtree.delete_dirspec_t

    def get_name(self, inode: 'inode_t', name_flags: int=DTN_FULL_NAME) ->bool:
        """get the entry name. for example, the structure name 
        
@param inode: inode number of the entry
@param name_flags: how exactly the name should be retrieved. combination of bits for get_...name() methods bits
@returns false if the entry does not exist."""
        return _ida_dirtree.dirspec_t_get_name(self, inode, name_flags)

    def get_inode(self, dirpath: str, name: str) ->'inode_t':
        """get the entry inode in the specified directory 
        
@param dirpath: the absolute directory path with trailing slash
@param name: the entry name in the directory
@returns the entry inode"""
        return _ida_dirtree.dirspec_t_get_inode(self, dirpath, name)

    def get_attrs(self, inode: 'inode_t') ->str:
        return _ida_dirtree.dirspec_t_get_attrs(self, inode)

    def rename_inode(self, inode: 'inode_t', newname: str) ->bool:
        """rename the entry 
        
@returns success"""
        return _ida_dirtree.dirspec_t_rename_inode(self, inode, newname)

    def unlink_inode(self, inode: 'inode_t') ->None:
        """event: unlinked an inode 
        """
        return _ida_dirtree.dirspec_t_unlink_inode(self, inode)

    def is_orderable(self) ->bool:
        return _ida_dirtree.dirspec_t_is_orderable(self)
    nodename = id

    def __disown__(self):
        self.this.disown()
        _ida_dirtree.disown_dirspec_t(self)
        return weakref.proxy(self)


_ida_dirtree.dirspec_t_swigregister(dirspec_t)


class dirtree_cursor_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr
    parent: 'diridx_t' = property(_ida_dirtree.dirtree_cursor_t_parent_get,
        _ida_dirtree.dirtree_cursor_t_parent_set)
    """the parent directory
"""
    rank: 'size_t' = property(_ida_dirtree.dirtree_cursor_t_rank_get,
        _ida_dirtree.dirtree_cursor_t_rank_set)
    """the index into the parent directory
"""

    def __init__(self, *args):
        _ida_dirtree.dirtree_cursor_t_swiginit(self, _ida_dirtree.
            new_dirtree_cursor_t(*args))

    def valid(self) ->bool:
        return _ida_dirtree.dirtree_cursor_t_valid(self)

    def is_root_cursor(self) ->bool:
        return _ida_dirtree.dirtree_cursor_t_is_root_cursor(self)

    def set_root_cursor(self) ->None:
        return _ida_dirtree.dirtree_cursor_t_set_root_cursor(self)

    @staticmethod
    def root_cursor() ->'dirtree_cursor_t':
        return _ida_dirtree.dirtree_cursor_t_root_cursor()

    def __eq__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___eq__(self, r)

    def __ne__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___ne__(self, r)

    def __lt__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___lt__(self, r)

    def __gt__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___gt__(self, r)

    def __le__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___le__(self, r)

    def __ge__(self, r: 'dirtree_cursor_t') ->bool:
        return _ida_dirtree.dirtree_cursor_t___ge__(self, r)

    def compare(self, r: 'dirtree_cursor_t') ->int:
        return _ida_dirtree.dirtree_cursor_t_compare(self, r)
    __swig_destroy__ = _ida_dirtree.delete_dirtree_cursor_t


_ida_dirtree.dirtree_cursor_t_swigregister(dirtree_cursor_t)


class dirtree_selection_t(dirtree_cursor_vec_t):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self):
        _ida_dirtree.dirtree_selection_t_swiginit(self, _ida_dirtree.
            new_dirtree_selection_t())
    __swig_destroy__ = _ida_dirtree.delete_dirtree_selection_t


_ida_dirtree.dirtree_selection_t_swigregister(dirtree_selection_t)


class dirtree_iterator_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr
    pattern: 'qstring' = property(_ida_dirtree.
        dirtree_iterator_t_pattern_get, _ida_dirtree.
        dirtree_iterator_t_pattern_set)
    cursor: 'dirtree_cursor_t' = property(_ida_dirtree.
        dirtree_iterator_t_cursor_get, _ida_dirtree.
        dirtree_iterator_t_cursor_set)

    def __init__(self):
        _ida_dirtree.dirtree_iterator_t_swiginit(self, _ida_dirtree.
            new_dirtree_iterator_t())
    __swig_destroy__ = _ida_dirtree.delete_dirtree_iterator_t


_ida_dirtree.dirtree_iterator_t_swigregister(dirtree_iterator_t)
DTE_OK = _ida_dirtree.DTE_OK
"""ok
"""
DTE_ALREADY_EXISTS = _ida_dirtree.DTE_ALREADY_EXISTS
"""item already exists
"""
DTE_NOT_FOUND = _ida_dirtree.DTE_NOT_FOUND
"""item not found
"""
DTE_NOT_DIRECTORY = _ida_dirtree.DTE_NOT_DIRECTORY
"""item is not a directory
"""
DTE_NOT_EMPTY = _ida_dirtree.DTE_NOT_EMPTY
"""directory is not empty
"""
DTE_BAD_PATH = _ida_dirtree.DTE_BAD_PATH
"""invalid path
"""
DTE_CANT_RENAME = _ida_dirtree.DTE_CANT_RENAME
"""failed to rename an item
"""
DTE_OWN_CHILD = _ida_dirtree.DTE_OWN_CHILD
"""moving inside subdirectory of itself
"""
DTE_MAX_DIR = _ida_dirtree.DTE_MAX_DIR
"""maximum directory count achieved
"""
DTE_LAST = _ida_dirtree.DTE_LAST


class dirtree_visitor_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _ida_dirtree.delete_dirtree_visitor_t

    def visit(self, c: 'dirtree_cursor_t', de: 'direntry_t') ->'ssize_t':
        """Will be called for each entry in the dirtree_t If something other than 0 is returned, iteration will stop. 
        
@param c: the current cursor
@param de: the current entry
@returns 0 to keep iterating, or anything else to stop"""
        return _ida_dirtree.dirtree_visitor_t_visit(self, c, de)

    def __init__(self):
        if self.__class__ == dirtree_visitor_t:
            _self = None
        else:
            _self = self
        _ida_dirtree.dirtree_visitor_t_swiginit(self, _ida_dirtree.
            new_dirtree_visitor_t(_self))

    def __disown__(self):
        self.this.disown()
        _ida_dirtree.disown_dirtree_visitor_t(self)
        return weakref.proxy(self)


_ida_dirtree.dirtree_visitor_t_swigregister(dirtree_visitor_t)


class dirtree_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v),
        doc='The membership flag')
    __repr__ = _swig_repr

    def __init__(self, ds: 'dirspec_t'):
        _ida_dirtree.dirtree_t_swiginit(self, _ida_dirtree.new_dirtree_t(ds))
    __swig_destroy__ = _ida_dirtree.delete_dirtree_t

    @staticmethod
    def errstr(err: 'dterr_t') ->str:
        """Get textual representation of the error code.
"""
        return _ida_dirtree.dirtree_t_errstr(err)

    def is_orderable(self) ->bool:
        """Is dirtree orderable? 
        
@returns true if the dirtree is orderable"""
        return _ida_dirtree.dirtree_t_is_orderable(self)

    def chdir(self, path: str) ->'dterr_t':
        """Change current directory 
        
@param path: new current directory
@returns dterr_t error code"""
        return _ida_dirtree.dirtree_t_chdir(self, path)

    def getcwd(self) ->str:
        """Get current directory 
        
@returns the current working directory"""
        return _ida_dirtree.dirtree_t_getcwd(self)

    def get_abspath(self, *args) ->str:
        """This function has the following signatures:

    0. get_abspath(cursor: const dirtree_cursor_t &, name_flags: int=DTN_FULL_NAME) -> str
    1. get_abspath(relpath: str) -> str

# 0: get_abspath(cursor: const dirtree_cursor_t &, name_flags: int=DTN_FULL_NAME) -> str

Get absolute path pointed by the cursor 
        
@returns path; empty string if error

# 1: get_abspath(relpath: str) -> str

Construct an absolute path from the specified relative path. This function verifies the directory part of the specified path. The last component of the specified path is not verified. 
        
@returns path. empty path means wrong directory part of RELPATH
"""
        return _ida_dirtree.dirtree_t_get_abspath(self, *args)

    def resolve_cursor(self, cursor: 'dirtree_cursor_t') ->'direntry_t':
        """Resolve cursor 
        
@param cursor: to analyze
@returns directory entry; if the cursor is bad, the resolved entry will be invalid."""
        return _ida_dirtree.dirtree_t_resolve_cursor(self, cursor)

    def resolve_path(self, path: str) ->'direntry_t':
        """Resolve path 
        
@param path: to analyze
@returns directory entry"""
        return _ida_dirtree.dirtree_t_resolve_path(self, path)

    def isdir(self, *args) ->bool:
        """This function has the following signatures:

    0. isdir(path: str) -> bool
    1. isdir(de: const direntry_t &) -> bool

# 0: isdir(path: str) -> bool

Is a directory? 
        
@returns true if the specified path is a directory

# 1: isdir(de: const direntry_t &) -> bool

"""
        return _ida_dirtree.dirtree_t_isdir(self, *args)

    def isfile(self, *args) ->bool:
        """This function has the following signatures:

    0. isfile(path: str) -> bool
    1. isfile(de: const direntry_t &) -> bool

# 0: isfile(path: str) -> bool

Is a file? 
        
@returns true if the specified path is a file

# 1: isfile(de: const direntry_t &) -> bool

"""
        return _ida_dirtree.dirtree_t_isfile(self, *args)

    def get_entry_name(self, de: 'direntry_t', name_flags: int=DTN_FULL_NAME
        ) ->str:
        """Get entry name 
        
@param de: directory entry
@param name_flags: how exactly the name should be retrieved. combination of bits for get_...name() methods bits
@returns name"""
        return _ida_dirtree.dirtree_t_get_entry_name(self, de, name_flags)

    def is_dir_ordered(self, diridx: 'diridx_t') ->bool:
        """Is dir ordered? 
        
@returns true if the dirtree has natural ordering"""
        return _ida_dirtree.dirtree_t_is_dir_ordered(self, diridx)

    def set_natural_order(self, diridx: 'diridx_t', enable: bool) ->bool:
        """Enable/disable natural inode order in a directory. 
        
@param diridx: directory index
@param enable: action to do TRUE - enable ordering: re-order existing entries so that all subdirs are at the to beginning of the list, file entries are sorted and placed after the subdirs FALSE - disable ordering, no changes to existing entries
@returns SUCCESS"""
        return _ida_dirtree.dirtree_t_set_natural_order(self, diridx, enable)

    def get_dir_size(self, diridx: 'diridx_t') ->'ssize_t':
        """Get dir size 
        
@param diridx: directory index
@returns number of entries under this directory; if error, return -1"""
        return _ida_dirtree.dirtree_t_get_dir_size(self, diridx)

    def get_entry_attrs(self, de: 'direntry_t') ->str:
        """Get entry attributes 
        
@param de: directory entry
@returns name"""
        return _ida_dirtree.dirtree_t_get_entry_attrs(self, de)

    def findfirst(self, ff: 'dirtree_iterator_t', pattern: str) ->bool:
        """Start iterating over files in a directory 
        
@param ff: directory iterator. it will be initialized by the function
@param pattern: pattern to search for
@returns success"""
        return _ida_dirtree.dirtree_t_findfirst(self, ff, pattern)

    def findnext(self, ff: 'dirtree_iterator_t') ->bool:
        """Continue iterating over files in a directory 
        
@param ff: directory iterator
@returns success"""
        return _ida_dirtree.dirtree_t_findnext(self, ff)

    def mkdir(self, path: str) ->'dterr_t':
        """Create a directory. 
        
@param path: directory to create
@returns dterr_t error code"""
        return _ida_dirtree.dirtree_t_mkdir(self, path)

    def rmdir(self, path: str) ->'dterr_t':
        """Remove a directory. 
        
@param path: directory to delete
@returns dterr_t error code"""
        return _ida_dirtree.dirtree_t_rmdir(self, path)

    def link(self, *args) ->'dterr_t':
        """This function has the following signatures:

    0. link(path: str) -> dterr_t
    1. link(inode: inode_t) -> dterr_t

# 0: link(path: str) -> dterr_t

Add a file item into a directory. 
        
@returns dterr_t error code

# 1: link(inode: inode_t) -> dterr_t

Add an inode into the current directory 
        
@returns dterr_t error code
"""
        return _ida_dirtree.dirtree_t_link(self, *args)

    def unlink(self, *args) ->'dterr_t':
        """This function has the following signatures:

    0. unlink(path: str) -> dterr_t
    1. unlink(inode: inode_t) -> dterr_t

# 0: unlink(path: str) -> dterr_t

Remove a file item from a directory. 
        
@returns dterr_t error code

# 1: unlink(inode: inode_t) -> dterr_t

Remove an inode from the current directory 
        
@returns dterr_t error code
"""
        return _ida_dirtree.dirtree_t_unlink(self, *args)

    def rename(self, _from: str, to: str) ->'dterr_t':
        """Rename a directory entry. 
        
@param to: destination path
@returns dterr_t error code"""
        return _ida_dirtree.dirtree_t_rename(self, _from, to)

    def get_rank(self, diridx: 'diridx_t', de: 'direntry_t') ->'ssize_t':
        """Get ordering rank of an item. 
        
@param diridx: index of the parent directory
@param de: directory entry
@returns number in a range of [0..n) where n is the number of entries in the parent directory. -1 if error"""
        return _ida_dirtree.dirtree_t_get_rank(self, diridx, de)

    def change_rank(self, path: str, rank_delta: 'ssize_t') ->'dterr_t':
        """Change ordering rank of an item. 
        
@param path: path to the item
@param rank_delta: the amount of the change. positive numbers mean to move down in the list; negative numbers mean to move up.
@returns dterr_t error code"""
        return _ida_dirtree.dirtree_t_change_rank(self, path, rank_delta)

    def get_parent_cursor(self, cursor: 'dirtree_cursor_t'
        ) ->'dirtree_cursor_t':
        """Get parent cursor. 
        
@param cursor: a valid ditree cursor
@returns cursor's parent"""
        return _ida_dirtree.dirtree_t_get_parent_cursor(self, cursor)

    def load(self) ->bool:
        """Load the tree structure from the netnode. If dirspec_t::id is empty, the operation will be considered a success. In addition, calling load() more than once will not do anything, and will be considered a success. 
        
@returns success"""
        return _ida_dirtree.dirtree_t_load(self)

    def save(self) ->bool:
        """Save the tree structure to the netnode. 
        
@returns success"""
        return _ida_dirtree.dirtree_t_save(self)

    def get_id(self) ->str:
        """netnode name
"""
        return _ida_dirtree.dirtree_t_get_id(self)

    def set_id(self, nm: str) ->None:
        return _ida_dirtree.dirtree_t_set_id(self, nm)

    def notify_dirtree(self, added: bool, inode: 'inode_t') ->None:
        """Notify dirtree about a change of an inode. 
        
@param added: are we adding or deleting an inode?
@param inode: inode in question"""
        return _ida_dirtree.dirtree_t_notify_dirtree(self, added, inode)

    def traverse(self, v: 'dirtree_visitor_t') ->'ssize_t':
        """Traverse dirtree, and be notified at each entry If the the visitor returns anything other than 0, iteration will stop, and that value returned. The tree is traversed using a depth-first algorithm. It is forbidden to modify the dirtree_t during traversal; doing so will result in undefined behavior. 
        
@param v: the callback
@returns 0, or whatever the visitor returned"""
        return _ida_dirtree.dirtree_t_traverse(self, v)

    def find_entry(self, de: 'direntry_t') ->'dirtree_cursor_t':
        """Find the cursor corresponding to an entry of a directory 
        
@param de: directory entry
@returns cursor corresponding to the directory entry"""
        return _ida_dirtree.dirtree_t_find_entry(self, de)
    get_nodename = get_id
    set_nodename = set_id


_ida_dirtree.dirtree_t_swigregister(dirtree_t)
DIRTREE_LOCAL_TYPES = _ida_dirtree.DIRTREE_LOCAL_TYPES
DIRTREE_FUNCS = _ida_dirtree.DIRTREE_FUNCS
DIRTREE_NAMES = _ida_dirtree.DIRTREE_NAMES
DIRTREE_IMPORTS = _ida_dirtree.DIRTREE_IMPORTS
DIRTREE_IDAPLACE_BOOKMARKS = _ida_dirtree.DIRTREE_IDAPLACE_BOOKMARKS
DIRTREE_BPTS = _ida_dirtree.DIRTREE_BPTS
DIRTREE_LTYPES_BOOKMARKS = _ida_dirtree.DIRTREE_LTYPES_BOOKMARKS
DIRTREE_END = _ida_dirtree.DIRTREE_END


def get_std_dirtree(id: 'dirtree_id_t') ->'dirtree_t *':
    return _ida_dirtree.get_std_dirtree(id)