/* Copyright 1996 Acorn Computers Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
     This header describes the interface to the manipulation of
     large lumps of memory and files.

Revision History:

0.00  13-Jun-89  JSR  Created.
*/

/*
     For c.memmanage
*/
extern void action_slot( int );
extern os_error *init_memmanagement( void );
extern os_error *init_for_copying( void );

extern os_error *add_file_to_chain( char *dest, char *source, int size, int reload, int exec, int attr, int objtype, int force, int *full
#ifdef USE_PROGRESS_BAR
, unsigned int progress, void **ref
#endif
);


extern os_error *read_a_block( int *i_am_full, int *need_another_file, int *that_finished_a_file, unsigned int *progress);
extern os_error *write_a_block( int *i_am_empty, int *that_finished_a_file, unsigned int *progress );
extern char *next_file_to_be_written( void );
extern char *next_file_to_be_read( void );
extern void restart_file_read( void );
extern void restart_file_write( void );
extern void skip_file_read( void );
extern void skip_file_write( void );
extern int bytes_left_to_read( void );
extern int bytes_left_to_write( void );
extern void closedown_memmanagement( void );
extern void copy_go_faster( int do_it );
extern int size_of_finished_file;
extern char *source_of_finished_file;

#ifdef USE_PROGRESS_BAR
extern void modify_chain_file_progress(void *ref, unsigned int progress);
#endif