Code Search for Developers
 
 
  

ThreadedFile.h from redshed at Krugle


Show ThreadedFile.h syntax highlighted

/****************************************************************************************
	ThreadedFile.h $Revision: 1.2 $
		<http://rentzsch.com/redshedthreads>
	
	Copyright © 2000-2002 Red Shed Software. All rights reserved.
	by Jonathan 'Wolf' Rentzsch (jon at redshed dot net)
	
	************************************************************************************/

#ifndef		_ThreadedFile_
#define		_ThreadedFile_

#include	"RedShedThreads.h"

/**************************
*	
*	Types
*	
**************************/
#pragma mark	(Types)

#pragma options align=mac68k

typedef	struct	{
	RedShedThread	*thread;
	long			a5;
}	TPBHeader;

typedef	struct	{
	TPBHeader		header;
	union	{
		HFileInfo	hFileInfo;
		DirInfo		dirInfo;
	};
}	TCInfoPBRec, *TCInfoPBPtr;

typedef	struct	{
	TPBHeader		header;
	union {
		IOParam 						ioParam;
		FileParam 						fileParam;
		VolumeParam 					volumeParam;
		CntrlParam 						cntrlParam;
		SlotDevParam 					slotDevParam;
		MultiDevParam 					multiDevParam;
	};
}	TParamBlockRec, *TParmBlkPtr;
	

typedef	struct	{
	TPBHeader		header;
	union {
		HIOParam 						ioParam;
		HFileParam 						fileParam;
		HVolumeParam 					volumeParam;
		AccessParam 					accessParam;
		ObjParam 						objParam;
		CopyParam 						copyParam;
		WDParam 						wdParam;
		FIDParam 						fidParam;
		CSParam 						csParam;
		ForeignPrivParam 				foreignPrivParam;
	};
}	THParamBlockRec, *THParmBlkPtr;

typedef	struct	{
	TPBHeader						header;
	QElemPtr 						qLink;						/*queue link in header*/
	short 							qType;						/*type byte for safety check*/
	short 							ioTrap;						/*FS: the Trap*/
	Ptr 							ioCmdAddr;					/*FS: address to dispatch to*/
	IOCompletionUPP 				ioCompletion;				/*completion routine addr (0 for synch calls)*/
	volatile OSErr 					ioResult;					/*result code*/
	StringPtr 						ioNamePtr;					/*ptr to Vol:FileName string*/
	short 							ioVRefNum;					/*volume refnum (DrvNum for Eject and MountVol)*/
	short 							ioDTRefNum;					/* desktop refnum */
	short 							ioIndex;
	long 							ioTagInfo;
	Ptr 							ioDTBuffer;
	long 							ioDTReqCount;
	long 							ioDTActCount;
	SInt8 							ioFiller1;
	SInt8 							ioIconType;
	short 							ioFiller2;
	long 							ioDirID;
	OSType 							ioFileCreator;
	OSType 							ioFileType;
	long 							ioFiller3;
	long 							ioDTLgLen;
	long 							ioDTPyLen;
	short 							ioFiller4[14];
	long 							ioAPPLParID;
}	TDTPBRec, *TDTPBPtr;

#pragma options align=reset

#ifdef		__cplusplus
extern	"C"	{
#endif	//	__cplusplus

/**************************
*	
*	Functions
*	
**************************/
#pragma mark	-
#pragma mark	(Functions)

	extern
	OSErr
TPBGetCatInfo(
	RedShedThread	*thread,
	TCInfoPBPtr		paramBlock );

	extern
	OSErr
TPBSetCatInfo(
	RedShedThread	*thread,
	TCInfoPBPtr		paramBlock );

	extern
	OSErr
TGetDirCount(
	RedShedThread		*thread,
	short				vRefNum,
	long				dirID,
	ConstStr255Param	name,
	UInt16				*count );

	extern
	OSErr
TPBHDelete(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBGetEOF(
	RedShedThread	*thread,
	TParmBlkPtr		paramBlock );

	extern
	OSErr
TPBSetEOF(
	RedShedThread	*thread,
	TParmBlkPtr		paramBlock );

	extern
	OSErr
TPBSetFPos(
	RedShedThread	*thread,
	TParmBlkPtr		paramBlock );

	extern
	OSErr
TPBRead(
	RedShedThread	*thread,
	TParmBlkPtr		paramBlock );

	extern
	OSErr
TPBWrite(
	RedShedThread	*thread,
	TParmBlkPtr		paramBlock );

	extern
	OSErr
TCopyFork(
	RedShedThread	*thread,
	short			fromRefNum,
	short			toRefNum,
	void			*buffer,		//	Can be nil.
	UInt32			bufferSize );	//	Can be zero.

//	Ignore this function. TCopyFork is faster.
	extern
	OSErr
TCopyFork2(
	RedShedThread	*thread,
	short			fromRefNum,
	short			toRefNum,
	void			*buffer,		//	Can be nil.
	UInt32			bufferSize );	//	Can be zero.

	extern
	OSErr
TPBHOpenDF(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBHOpenDF(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBHOpenRF(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBHCreate(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBDirCreate(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TFileCopy(
	RedShedThread		*thread,
	short				fromVRefNum,
	long				fromDirID,
	ConstStr255Param	fromName,
	short				fromDeskRefNum,
	short				toVRefNum,
	long				toDirID,
	short				toDeskRefNum,
	void				*buffer,		//	Can be nil.
	UInt32				bufferSize );	//	Can be zero.

	extern
	OSErr
TFolderCopy(	//	Doesn't copy contents.
	RedShedThread		*thread,
	short				fromVRefNum,
	long				fromDirID,
	ConstStr255Param	fromName,
	short				fromDeskRefNum,
	short				toVRefNum,
	long				*toDirID,
	short				toDeskRefNum );

	extern
	OSErr
TClose(
	RedShedThread	*thread,
	short			*refNum );

	extern
	OSErr
TPBHSetFLock(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBHSetFLock(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBHRstFLock(
	RedShedThread	*thread,
	THParmBlkPtr	paramBlock );

	extern
	OSErr
TPBDTGetComment(
	RedShedThread	*thread,
	TDTPBPtr		paramBlock );

	extern
	OSErr
TPBDTSetComment(
	RedShedThread	*thread,
	TDTPBPtr		paramBlock );

	extern
	OSErr
THCreate(
	RedShedThread		*thread,
	short				vRefNum,
	long				dirID,
	ConstStr255Param	fileName,
	OSType				creator,
	OSType				fileType );

//	TDTOpen must be called at SystemTask time. Read the comments in the source file
//	for the gory details.

	extern
	OSErr
TDTOpen(
	RedShedThread		*thread,			//	->
	ConstStr255Param	volName,			//	->	Can be nil if you set vRefNum.
	short				vRefNum,			//	->	Can be zero if you set volName.
	short				*dtRefNum,			//	<-	
	Boolean				*newDTDatabase );	//	<-	Can be nil.

	extern
	OSErr
TGetCatInfoNoName(
	RedShedThread		*thread,		//	->
	short				vRefNum,		//	->
	long				dirID,			//	->
	ConstStr255Param	name,			//	->	Can be nil.
	TCInfoPBPtr			paramBlock );	//	<-

	extern
	OSErr
TFSpGetCatInfoNoName(
			RedShedThread	*thread,		//	->
	const	FSSpec			*spec,			//	->
			TCInfoPBPtr		paramBlock );	//	<-

	extern
	OSErr
TFSpSetCatInfo(
			RedShedThread	*thread,		//	->
	const	FSSpec			*spec,			//	->
			TCInfoPBPtr		paramBlock );	//	->

	extern
	OSErr
TFSpOpenDF(
			RedShedThread	*thread,	//	->
	const	FSSpec			*spec,		//	->
			SInt8			permission,	//	->
			short			*refNum );	//	<-

	extern
	OSErr
TFSpOpenRF(
			RedShedThread	*thread,	//	->
	const	FSSpec			*spec,		//	->
			SInt8			permission,	//	->
			short			*refNum );	//	<-

	extern
	OSErr
TGetEOF(
	RedShedThread	*thread,	//	->
	short			refNum,		//	->
	long			*logEOF );	//	<-

	extern
	OSErr
TSetEOF(
	RedShedThread	*thread,	//	->
	short			refNum,		//	->
	long			logEOF );	//	->

	extern
	OSErr
TSetFPos(
	RedShedThread	*thread,	//	->
	short			refNum,		//	->
	short			posMode,	//	->
	long			posOff );	//	->

	extern
	OSErr
TFSRead(
	RedShedThread	*thread,	//	->
	short			refNum,		//	->
	long			*count,		//	<>	in: bytes to read. out: bytes read.
	void			*buffPtr );	//	<-

	extern
	OSErr
TFSWrite(
			RedShedThread	*thread,	//	->
			short			refNum,		//	->
			long			*count,		//	<>	in: bytes to write. out: bytes written.
	const	void			*buffPtr );	//	->

	extern
	OSErr
TFSpSetFLock(
			RedShedThread	*thread,	//	->
	const	FSSpec			*spec );	//	->

	extern
	OSErr
TFSpGetComment(
			RedShedThread	*thread,	//	->
	const	FSSpec			*spec,		//	->
			short			dtRefNum,	//	->	Desktop database refnum.
			StringPtr		comment );	//	<-	Must be a Str255.

	extern
	OSErr
TFSpSetComment(
			RedShedThread		*thread,	//	->
	const	FSSpec				*spec,		//	->
			short				dtRefNum,	//	->	Desktop database refnum.
			ConstStr255Param	comment );	//	->	

#ifdef	__cplusplus
}
#endif

#endif	//	_ThreadedFile_



See more files for this project here

redshed

Code for Mac+WebObjects.

Project homepage: http://sourceforge.net/projects/redshed
Programming language(s): C,Java,Objective C
License: other

  CFMA5.h
  ThreadedFile.c
  ThreadedFile.h
  ThreadedOT.c
  ThreadedOT.h
  WaitRedShedThread.c
  WaitRedShedThread.h