hi all, I have contributed a simple string dictionary class to the `general' package, which comprises
indexing by strings & cell string arrays indexed assignment inserting and deleting elements existence query (has) query with default value (get) it is intended to work with development version of Octave, as it uses some new features. The implementation uses binary lookup in a sorted array. operation complexity, w.r.t. number of existing keys N is: retrieve and query: O(log(N)) set existing entry: O(log(N)) with the recent subsasgn optimization (e79470be3ecb), O(N) without it. insert new key / delete existing: O(N) it is therefore not suitable for frequent insertions but good when query is the major operation. Example usage: octave:1> gnusoft = dict gnusoft = dict: {} octave:2> gnusoft("octave") = "www.octave.org" gnusoft = dict: { octave : www.octave.org } octave:3> gnusoft("gcc") = "gcc.gnu.org" gnusoft = dict: { gcc : gcc.gnu.org octave : www.octave.org } octave:4> gnusoft({"octave", "gcc", "octave"}) ans = { [1,1] = www.octave.org [1,2] = gcc.gnu.org [1,3] = www.octave.org } octave:5> getgnusoftaddress = @(name) get(gnusoft, name, "directory.fsf.org/GNU") getgnusoftaddress = @(name) get (gnusoft, name, "directory.fsf.org/GNU") octave:6> getgnusoftaddress ("octave") ans = www.octave.org octave:7> getgnusoftaddress ("bison") ans = directory.fsf.org/GNU octave:8> has(gnusoft, {"gcc", "bison"}) ans = 1 0 octave:9> mathgnusoft = gnusoft mathgnusoft = dict: { gcc : gcc.gnu.org octave : www.octave.org } octave:10> mathgnusoft ({"gcc"}) = [] mathgnusoft = dict: { octave : www.octave.org } octave:11> files = dir; octave:12> cache_file_stat = dict ({dir.name}, {dir.statinfo}); octave:13> cache_file_stat ("adresamp2.m") ans = { dev = 2051 ino = 14749998 mode = 33188 modestr = -rw-r--r-- nlink = 1 uid = 1000 gid = 100 rdev = 0 size = 2739 atime = 1.2464e+09 mtime = 1.2403e+09 ctime = 1.2403e+09 blksize = 4096 blocks = 16 } I welcome suggestions for improvements and enhancements. enjoy! -- RNDr. Jaroslav Hajek computing expert & GNU Octave developer Aeronautical Research and Test Institute (VZLU) Prague, Czech Republic url: www.highegg.matfyz.cz ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev