/***********************************************************************\
Common class for subclassing text converters in all Convert programs
Copyright (C) 1993 David John Burrowes

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

The author, David John Burrowes, can be reached at:
	davidjohn@kira.net.netcom.com
	David John Burrowes
	1926 Ivy #10
	San Mateo, CA 94403-1367
\***********************************************************************/

/*====================================================================
This is the implementation file for the TextConverter class.  Full documentation for this class can be found in the TextConverter.rtf file.  I will not duplicate all that fine information here.

NOTE: You may find that text doesn't line up properly unless you use the New Century Schoolbook Roman typeface, since this was created with it.

INFORMATION:
	This is $Revision: 1.2 $ of this file
	It was last modified by $Author: death $ on $Date: 93/04/04 23:45:22 $
 	$Log:	TextConverter.m,v $
Revision 1.2  93/04/04  23:45:22  death
Sun Apr  4 23:45:22 PDT 1993

Revision 1.1  93/01/10  15:08:51  death
Sun Jan 10 15:08:51 PST 1993

====================================================================*/

#import "TextConverter.h"
#import <string.h>	// for memcpy

@implementation TextConverter

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	Routine:		ConvertCharacter:
//	Parameters:	a character to be converted
//	Returns:		the converted character
//	Stores:		the character that we are returning.
//	Description:
//		This merely returns the chracter that we were passed, thus providing the
//		trivial text conversion algorithm (everything maps to itself)
//	Bugs:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (Character) ConvertCharacter: (Character) theCharacter
{
	[self ResetResults];
	[self	StoreErrorCode: errOK AndText: "Of course nothing went wrong!"];
	[self StoreCharacter: theCharacter];
	return theCharacter;
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	Routine:		ConvertString:WithLength:
//	Parameters:	a pointer to a string of data to be converted
//				the length of the data the poiner poins to.
//	Returns:		a poiner to a new block of data to be converted
//	Stores:		the pointer we are returning
//				the length of the new data
//	Description:
//		This converts the text in the source data area into a new area.
//		As with ConvertCharacter:, this really just returns to the caller exactly what
//		it passed us.
//	Bugs:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (Pointer) ConvertString: (Pointer) theData WithLength: (Integer) length
{
	Pointer	newData;
	[self	ResetResults];
	
	newData = NewPointer(length);
	memcpy(newData, theData, length);
	[self	StoreErrorCode: errOK AndText: "Of course nothing went wrong!"];
	[self StorePointer: theData];
	[self	PutPositiveInteger: length  Into: SECOND_RESULT];
	
	return theData;

}
@end
