	Filename	-	Notes
	--------		-----
-----------------------------------------------------------
STORAGE MANAGEMENT
-----------------------------------------------------------

	page.h		-	
		
				The structure of each storage unit
				(page), in other words, the I/O is
				performed in these units. Contains

				o avg. depth of the page
				o number of objects in the page
				o array of nodes (internal/leaf)

				The pages are completely filled before
				a new one is allocated.

	allocator.h	-

				The template class responsible for
				allocation of internal/leaf nodes
				during construction. This class also
				acts as the place to compute the
				average depth of the page. It pins the
				page currently being filled using the
				interface provided by the
				StorageManager.

	s_man.h		-	
				
				The base template class for all
				StorageManager
				implementations. Provides interfaces
				for:
				
				o Construction/Destruction
				o pin/unpin
				o fetch the required node, given its 
				  "smart pointer"
				o increment/decrement reference counts 
				  on the page
				o maintain the dirty state of the page

				Importantly, this is the place where all
				the buffer management action happens.
				
				The derived classes will differ in the 
				algorithm used for managing the buffer
				pool.
				
	s_man_lru.h	-	Needs for clarification ? LRU implementation.
	s_man_topq.h	-	TOP-Q buffer management policy.

	storage.h	-	
	
				The base class for all storage
				implementations. Provides interfaces
				for: 

				o Opening the storage for
				  read/write.  
				o Read / Write of pages,
				  given their address and in memory data
				  location.  

	ram_storage.h	-	Provides "storage" for in-memory image of the 
				suffix tree. Useful for fast 
				statistics-collection runs.

	disk_storage.h	-	Filebased persistent storage implementation. 
				Has options for sync/no_sync handling of 
				files.

	key.h		-	Some useful macros for converting from/to 
				a single integer representation of 
				smart-pointer to its constituent parts 
				(fileid, pageid, and offset).
	
	s_pagerec.h	-	The bufferpool slot structure. Used in s_man.h

-------------------------------------------------------------------------
SMART POINTERS
-------------------------------------------------------------------------
	smartref.h  
	smartref.C		(impl. of public methods)
	smartref_priv.C		(impl. of private methods)
			
				The "smart pointer" class. These are
				reference to suffix tree nodes
				(internal and leaf are distinguished
				within these pointers), to enable
				storage-independent addressing of
				nodes within the suffix tree
				structure. Provides ways to
				interconvert between a "unsigned long"
				format for easy storage, and in memory
				image. Also provides methods to
				de-reference the node being pointed
				to (internal and leaf have different
				dereferencing schemes). This hides
				the underlying complexity of interacting 
				with the storage manager for retrieving 
				the node from the disk if its page is not
				in the buffer pool currently.
	
-------------------------------------------------------------------------
SUFFIX TREE STRUCTURE
-------------------------------------------------------------------------

	sfxnode.h		
	sfxnode.C		(impl. of generic node methods)
	sfxintnode.C		(impl. of methods specific to internal nodes)

				The structure of leaf and internal nodes 
				are defined in these files.

-------------------------------------------------------------------------
ALGORITHM
-------------------------------------------------------------------------
	
	construct.[hC]

				Contains the code for the online
				construction of suffix tree (either on
				disk or in memory), using the
				algorithm of Ukkonen - as given in the
				book "Algorithms on Strings,
				Sequences, and Trees" by Dan Gusfield.

	search.[hC]		

				Simple exact matching algorithm over
				the already constructed suffix tree.

-------------------------------------------------------------------------
MISCELLANEOUS
-------------------------------------------------------------------------
	
	suffix.C		
				
				This the starting point for the program.
				Contains many options for deciding the
				type of run needed. Get the list of all 
				the available options by giving "-h" option.

	seqiter.h
	seqiter.C		
				
				Iterator class over FASTA formatted sequence
				files. Used for obtaining query strings from
				the biological sequence files.






