/* ASTPrintString.h */

#ifndef Included_ASTPrintString_h
#define Included_ASTPrintString_h

/* ASTPrintString module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* TrashTracker */
/* Memory */
/* ASTExpression */
/* PcodeObject */
/* CompilerRoot */

#include "PcodeObject.h"
#include "CompilerRoot.h"

struct ASTPrintStringRec;
typedef struct ASTPrintStringRec ASTPrintStringRec;

/* all memory allocated in this module is through TrashTracker */

/* forwards */
struct TrashTrackRec;
struct ASTExpressionRec;

/* create a new AST string print */
ASTPrintStringRec*	NewPrintString(char* String, struct TrashTrackRec* TrashTracker,
											long LineNumber);

/* type check the string print node.  this returns eCompileNoError if */
/* everything is ok, and the appropriate type in *ResultingDataType. */
CompileErrors				TypeCheckPrintString(DataTypes* ResultingDataType,
											ASTPrintStringRec* PrintString, long* ErrorLineNumber,
											struct TrashTrackRec* TrashTracker);

/* generate code for a string print.  returns True if successful, or False if it fails. */
MyBoolean						CodeGenPrintString(struct PcodeRec* FuncCode,
											long* StackDepthParam, ASTPrintStringRec* PrintString);

#endif
