Section Header
  
  
    + name    := ABSTRACT_ENTRY;
  
  
    - comment := "Abstract Entry.";
  
Section Inherit  
  
  
    - parent_object:OBJECT := 
  
Section Public
  
  
 Path.
  
  
  
    + path:STRING_CONSTANT;
  
  
    + name:STRING_CONSTANT; 
  
  
    + link_count:INTEGER;
  
  
  
 Date / Time.
  
  
  
    + access_time:TIME;
  
    + access_date:DATE;
  
  
    + update_time:TIME;
  
    + update_date:DATE;
    
  
  
 type.
  
  
  
    + is_directory:BOOLEAN;
  
  
    - is_file:BOOLEAN <- 
  
  
    - this:ENTRY <- 
  
  
  
 Size.
  
  
  
    + size:UINTEGER_32;
  
  
  
 Open / Close
  
  
  
    - is_open:BOOLEAN <- 
  
  
    - open:ENTRY <-
  
         Return FILE or DIRECTORY, NULL:error.
    
  
    - open_read_only:ENTRY <-
  
         Return FILE or DIRECTORY, NULL:error.
  
  
    - open_bmp:BMP_FILE <-
  
         Return FILE or DIRECTORY, NULL:error.
  
  
    - open_ai:AI_FILE <-
  
         Return FILE or DIRECTORY, NULL:error.
    
  
    - close:ENTRY <-
    
  
  
 Manager.
  
  
  
    - remove:BOOLEAN <-
  
         Remove file or directory (WARNING: delete recursive)
    
  
    - rename new_name:ABSTRACT_STRING :BOOLEAN <-
    
Section ENTRY  
  
  
    + child:ENTRY;
    
  
    - make_entry p:ABSTRACT_STRING :BOOLEAN <-
    
  
    - make e:ENTRY :BOOLEAN <- 
  
         Redefine in DIRECTORY and FILE
    
  
    - set_path n:ABSTRACT_STRING <-
    
  
    - reduce_path st:STRING <-
    
Section Public
    
  
  
 Alias Entry.
  
  
  
    - alias:HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING] := 
  
  
  
    - get_entry p:ABSTRACT_STRING :ENTRY <- 
    
  
    - get_parent_path p:ABSTRACT_STRING in tmp:STRING <-
    
  
    - get_parent_intern p:ABSTRACT_STRING :DIRECTORY <-
    
  
  
 Physical implementation.
  
  
    - physical_make:BOOLEAN <-
    
  
    - physical_remove_directory:BOOLEAN <-
    
  
    - physical_remove_file:BOOLEAN <-
    
  
    - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
    
  
  
 Service routine
  
  
    - string_tmp:STRING  := 
  
    - string_tmp2:STRING :=