00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #ifndef __SAT_DIR_H
00049 #define __SAT_DIR_H
00050
00059 #define SAT_CONTEXT 0x8071b
00060 #define SAT_USEROB 0x80711
00061
00062
00063
00075 typedef
00076 struct _sat_obj_dscr {
00077 char *name;
00078 unsigned addr;
00079 } SAT_OBJ_DSCR;
00080
00096 typedef
00097 struct _sat_dir_entry {
00098 SAT_OBJ_DSCR *sat_obj;
00099 struct _sat_dir_entry *next;
00100 } SAT_DIR_ENTRY;
00101
00121 typedef
00122 struct _sat_dir_node {
00123 char *name;
00124 struct _sat_dir_node *parent,*sibling,*child;
00125 struct _sat_dir_entry *object;
00126 } SAT_DIR_NODE;
00127
00139 typedef
00140 struct _sat_dir_slist {
00141 char *str;
00142 struct _sat_dir_slist *next;
00143 } SAT_DIR_SLIST;
00144
00145
00146
00147 extern SAT_DIR_NODE *__sat_cwd, *__sat_root;
00148
00149
00150
00151
00152
00153 int sat_skipob(int objaddr);
00154 int sat_objgetdir(int objaddr);
00155 int sat_dircurrent();
00156 int sat_objcurdir();
00157 int sat_dirhome();
00158 int sat_objhome();
00159 int sat_dirfindfirst(int diraddr);
00160 int sat_dirfindnext(int diritem);
00161 int sat_itemgetdir(int itemaddr);
00162 int sat_sknameup(int itemaddr);
00163 int sat_sknamedn(int objaddr);
00164 int sat_objgetitem(int objptr);
00165 int sat_itemgetname(int diritem,char *name);
00166
00167
00168
00176 SAT_DIR_NODE *_sat_find_path(char *path);
00177
00183 char *_sat_dir_path(SAT_DIR_NODE *p);
00184
00189 SAT_DIR_NODE *_sat_dir_getroot();
00190
00195 SAT_DIR_NODE *_sat_dir_getcwd();
00196
00204 void _sat_dir_destroy_slist(SAT_DIR_SLIST *s);
00205
00215 void _sat_dir_split_path(char *path,char **dir, char **base);
00216 int _sat_dir_getprolog(SAT_OBJ_DSCR *obj);
00217
00218
00219
00226 void sat_dir_open();
00227
00235 void sat_dir_close();
00236
00237
00238
00245 char *sat_dir_curdir();
00246
00254 int sat_dir_chdir(char *path);
00255
00267 SAT_OBJ_DSCR *sat_dir_getobject(char *path);
00268
00278 SAT_OBJ_DSCR *sat_dir_rclobject(char *path);
00279
00289 int sat_dir_searchobject(char *name, SAT_DIR_SLIST **path_list);
00290
00291
00292
00300 int sat_obj_is_real(SAT_OBJ_DSCR *obj);
00301
00311 double _sat_dir_fetchreal(char *path, double defval, char *mode);
00312
00317 #define sat_dir_getreal(p,v) _sat_dir_fetchreal((p),(v),"g")
00318
00323 #define sat_dir_rclreal(p,v) _sat_dir_fetchreal((p),(v),"r")
00324
00325 #endif