You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
726 lines
19 KiB
726 lines
19 KiB
/*++
|
|
|
|
Copyright (c) 1996-1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ppdparse.h
|
|
|
|
Abstract:
|
|
|
|
Declarations for PPD parser
|
|
|
|
Environment:
|
|
|
|
PostScript driver, PPD parser
|
|
|
|
Revision History:
|
|
|
|
08/20/96 -davidx-
|
|
Common coding style for NT 5.0 drivers.
|
|
|
|
03/26/96 -davidx-
|
|
Created it.
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _PPDPARSE_H_
|
|
#define _PPDPARSE_H_
|
|
|
|
//
|
|
// PPD parser memory management functions
|
|
//
|
|
// NOTE: newly allocated memory is always zero initialized
|
|
// The parser allocates its working memory from the heap and
|
|
// everything is freed at the end when the heap is destroyed.
|
|
//
|
|
|
|
#define ALLOC_PARSER_MEM(pParserData, size) \
|
|
((PVOID) HeapAlloc((pParserData)->hHeap, HEAP_ZERO_MEMORY, (size)))
|
|
|
|
//
|
|
// Character constants
|
|
//
|
|
|
|
#define KEYWORD_CHAR '*'
|
|
#define COMMENT_CHAR '%'
|
|
#define SYMBOL_CHAR '^'
|
|
#define SEPARATOR_CHAR ':'
|
|
#define XLATION_CHAR '/'
|
|
#define QUERY_CHAR '?'
|
|
#define QUOTE_CHAR '"'
|
|
#define TAB '\t'
|
|
#define SPACE ' '
|
|
#define CR '\r'
|
|
#define LF '\n'
|
|
#define IS_SPACE(c) ((c) == SPACE || (c) == TAB)
|
|
#define IS_NEWLINE(c) ((c) == CR || (c) == LF)
|
|
|
|
//
|
|
// Masks to indicate which characters can appear in what fields
|
|
//
|
|
|
|
#define KEYWORD_MASK 0x01
|
|
#define XLATION_MASK 0x02
|
|
#define QUOTED_MASK 0x04
|
|
#define STRING_MASK 0x08
|
|
#define DIGIT_MASK 0x10
|
|
#define HEX_DIGIT_MASK 0x20
|
|
|
|
extern const BYTE gubCharMasks[256];
|
|
|
|
#define IS_VALID_CHAR(ch) (gubCharMasks[(BYTE) (ch)] != 0)
|
|
#define IS_MASKED_CHAR(ch, mask) (gubCharMasks[(BYTE) (ch)] & (mask))
|
|
#define IS_DIGIT(ch) (gubCharMasks[(BYTE) (ch)] & DIGIT_MASK)
|
|
#define IS_HEX_DIGIT(ch) (gubCharMasks[(BYTE) (ch)] & (DIGIT_MASK|HEX_DIGIT_MASK))
|
|
#define IS_KEYWORD_CHAR(ch) ((ch) == KEYWORD_CHAR)
|
|
|
|
//
|
|
// Tags to identify various data types
|
|
//
|
|
|
|
#define VALUETYPE_NONE 0x01
|
|
#define VALUETYPE_STRING 0x02
|
|
#define VALUETYPE_QUOTED 0x04
|
|
#define VALUETYPE_SYMBOL 0x08
|
|
|
|
#define VALUETYPE_MASK 0xff
|
|
|
|
//
|
|
// Error code constants
|
|
//
|
|
|
|
#define PPDERR_NONE 0
|
|
#define PPDERR_MEMORY (-1)
|
|
#define PPDERR_FILE (-2)
|
|
#define PPDERR_SYNTAX (-3)
|
|
#define PPDERR_EOF (-4)
|
|
|
|
typedef INT PPDERROR;
|
|
|
|
//
|
|
// Special length value to indicate that an invocation string is defined by a symbol.
|
|
// Normal invocation strings must be shorter than this length.
|
|
//
|
|
|
|
#define SYMBOL_INVOCATION_LENGTH 0x80000000
|
|
|
|
#define MARK_SYMBOL_INVOC(pInvoc) ((pInvoc)->dwLength |= SYMBOL_INVOCATION_LENGTH)
|
|
#define CLEAR_SYMBOL_INVOC(pInvoc) ((pInvoc)->dwLength &= ~SYMBOL_INVOCATION_LENGTH)
|
|
#define IS_SYMBOL_INVOC(pInvoc) ((pInvoc)->dwLength & SYMBOL_INVOCATION_LENGTH)
|
|
|
|
typedef struct _INVOCOBJ {
|
|
|
|
DWORD dwLength; // length of invocation string
|
|
PVOID pvData; // points to invocation string data
|
|
|
|
} INVOCOBJ, *PINVOCOBJ;
|
|
|
|
//
|
|
// Data structure for representing a data buffer
|
|
//
|
|
|
|
typedef struct _BUFOBJ {
|
|
|
|
DWORD dwMaxLen;
|
|
DWORD dwSize;
|
|
PBYTE pbuf;
|
|
|
|
} BUFOBJ, *PBUFOBJ;
|
|
|
|
//
|
|
// Always reserve one byte in a buffer so that we can append a zero byte at the end.
|
|
//
|
|
|
|
#define IS_BUFFER_FULL(pbo) ((pbo)->dwSize + 1 >= (pbo)->dwMaxLen)
|
|
#define IS_BUFFER_EMPTY(pbo) ((pbo)->dwSize == 0)
|
|
#define CLEAR_BUFFER(pbo) { (pbo)->dwSize = 0; (pbo)->pbuf[0] = 0; }
|
|
#define ADD_CHAR_TO_BUFFER(pbo, c) (pbo)->pbuf[(pbo)->dwSize++] = (BYTE)(c)
|
|
#define SET_BUFFER(pbo, buf) \
|
|
{ (pbo)->pbuf = (PBYTE) (buf); (pbo)->dwMaxLen = sizeof(buf); (pbo)->dwSize = 0; }
|
|
|
|
//
|
|
// Maximum length for keyword, option, and translation strings.
|
|
// NOTE: we are being very lenient here because these limits are arbitrary and
|
|
// there is nothing that prevents us from handling longer lengths.
|
|
//
|
|
|
|
#define MAX_KEYWORD_LEN 64
|
|
#define MAX_OPTION_LEN 64
|
|
#define MAX_XLATION_LEN 256
|
|
|
|
//
|
|
// Constants to indicate whether an input slot requires PageRegion invocation
|
|
//
|
|
|
|
#define REQRGN_UNKNOWN 0
|
|
#define REQRGN_TRUE 1
|
|
#define REQRGN_FALSE 2
|
|
|
|
//
|
|
// Data structure for representing a mapped file object
|
|
//
|
|
|
|
typedef struct _FILEOBJ {
|
|
|
|
HFILEMAP hFileMap;
|
|
PBYTE pubStart;
|
|
PBYTE pubEnd;
|
|
PBYTE pubNext;
|
|
DWORD dwFileSize;
|
|
PTSTR ptstrFileName;
|
|
INT iLineNumber;
|
|
BOOL bNewLine;
|
|
|
|
} FILEOBJ, *PFILEOBJ;
|
|
|
|
#define END_OF_FILE(pFile) ((pFile)->pubNext >= (pFile)->pubEnd)
|
|
#define END_OF_LINE(pFile) ((pFile)->bNewLine)
|
|
|
|
//
|
|
// Data structure for representing a singly-linked list
|
|
//
|
|
|
|
typedef struct _LISTOBJ {
|
|
|
|
PVOID pNext; // pointer to next node
|
|
PSTR pstrName; // item name
|
|
|
|
} LISTOBJ, *PLISTOBJ;
|
|
|
|
//
|
|
// Data structure for representing symbol information
|
|
//
|
|
|
|
typedef struct _SYMBOLOBJ {
|
|
|
|
PVOID pNext; // pointer to the next symbol
|
|
PSTR pstrName; // symbol name
|
|
INVOCOBJ Invocation; // symbol data
|
|
|
|
} SYMBOLOBJ, *PSYMBOLOBJ;
|
|
|
|
//
|
|
// Data structure for representing job patch file information
|
|
//
|
|
|
|
typedef struct _PATCHFILEOBJ {
|
|
|
|
PVOID pNext; // pointer to the next patch
|
|
PSTR pstrName; // string of the patch number
|
|
LONG lPatchNo; // number of the patch as set in the PPD file
|
|
INVOCOBJ Invocation; // symbol data
|
|
|
|
} JOBPATCHFILEOBJ, *PJOBPATCHFILEOBJ;
|
|
|
|
//
|
|
// Data structure for representing a default font substitution entry
|
|
//
|
|
|
|
typedef struct _TTFONTSUB {
|
|
|
|
PVOID pNext; // pointer to the next entry
|
|
PSTR pstrName; // TT font family name
|
|
INVOCOBJ Translation; // TT font family name translation
|
|
INVOCOBJ PSName; // PS font family name
|
|
|
|
} TTFONTSUB, *PTTFONTSUB;
|
|
|
|
//
|
|
// Data structure for representing printer feature option information
|
|
//
|
|
// Need to change translation string field to make it ready for Unicode encoding.
|
|
//
|
|
|
|
typedef struct _OPTIONOBJ {
|
|
|
|
PVOID pNext; // pointer to the next option
|
|
PSTR pstrName; // option name
|
|
INVOCOBJ Translation; // translation string
|
|
INVOCOBJ Invocation; // invocation string
|
|
DWORD dwConstraint; // list of UIConstraints associated with this option
|
|
|
|
} OPTIONOBJ, *POPTIONOBJ;
|
|
|
|
//
|
|
// Data structure for representing paper size information
|
|
//
|
|
|
|
typedef struct _PAPEROBJ {
|
|
|
|
OPTIONOBJ Option; // generic option information
|
|
SIZE szDimension; // paper dimension
|
|
RECT rcImageArea; // imageable area
|
|
|
|
} PAPEROBJ, *PPAPEROBJ;
|
|
|
|
//
|
|
// Default paper size when the information in the PPD file is invalid
|
|
//
|
|
|
|
#define DEFAULT_PAPER_WIDTH 215900 // 8.5 inch measured in microns
|
|
#define DEFAULT_PAPER_LENGTH 279400 // 11 inch measured in microns
|
|
|
|
//
|
|
// paper size values for Letter and A4
|
|
//
|
|
|
|
#define LETTER_PAPER_WIDTH 215900 // 8.5 inch measured in microns
|
|
#define LETTER_PAPER_LENGTH 279400 // 11 inch measured in microns
|
|
|
|
#define A4_PAPER_WIDTH 210058 // 8.27 inch measured in microns
|
|
#define A4_PAPER_LENGTH 296926 // 11.69 inch measured in microns
|
|
|
|
//
|
|
// Data structure for representing input slot information
|
|
//
|
|
|
|
typedef struct _TRAYOBJ {
|
|
|
|
OPTIONOBJ Option; // generic option information
|
|
DWORD dwReqPageRgn; // whether PageRegion invocation is required
|
|
DWORD dwTrayIndex; // index used for DEVMODE.dmDefaultSource field
|
|
|
|
} TRAYOBJ, *PTRAYOBJ;
|
|
|
|
//
|
|
// Data structure for representing output bin information
|
|
//
|
|
|
|
typedef struct _BINOBJ {
|
|
|
|
OPTIONOBJ Option; // generic option information
|
|
BOOL bReversePrint; // first page comes out at bottom?
|
|
|
|
} BINOBJ, *PBINOBJ;
|
|
|
|
//
|
|
// Data structure for representing memory configuration information
|
|
//
|
|
|
|
typedef struct _MEMOBJ {
|
|
|
|
OPTIONOBJ Option; // generic option information
|
|
DWORD dwFreeVM; // amount of free VM
|
|
DWORD dwFontMem; // size of font cache memory
|
|
|
|
} MEMOBJ, *PMEMOBJ;
|
|
|
|
//
|
|
// Data structure for representing memory configuration information
|
|
//
|
|
|
|
typedef struct _RESOBJ {
|
|
|
|
OPTIONOBJ Option; // generic option information
|
|
FIX_24_8 fxScreenAngle; // suggested screen angle
|
|
FIX_24_8 fxScreenFreq; // suggested screen frequency
|
|
|
|
} RESOBJ, *PRESOBJ;
|
|
|
|
//
|
|
// Data structure for representing printer feature information
|
|
//
|
|
|
|
typedef struct _FEATUREOBJ {
|
|
|
|
PVOID pNext; // pointer to next printer feature
|
|
PSTR pstrName; // feature name
|
|
INVOCOBJ Translation; // translation string
|
|
PSTR pstrDefault; // default option name
|
|
DWORD dwFeatureID; // predefined feature identifier
|
|
BOOL bInstallable; // whether the feature is an installble option
|
|
DWORD dwUIType; // type of feature option list
|
|
INVOCOBJ QueryInvoc; // query invocation string
|
|
DWORD dwConstraint; // list of UIConstraints associated with this feature
|
|
DWORD dwOptionSize; // size of each option item
|
|
POPTIONOBJ pOptions; // pointer to list of options
|
|
|
|
} FEATUREOBJ, *PFEATUREOBJ;
|
|
|
|
//
|
|
// Data structure for representing device font information
|
|
//
|
|
// NOTE: The first three fields of this structure must match the
|
|
// first three fields of OPTIONOBJ structure.
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
PVOID pNext; // pointer to next device font
|
|
PSTR pstrName; // font name
|
|
INVOCOBJ Translation; // translation string
|
|
PSTR pstrEncoding; // font encoding information
|
|
PSTR pstrCharset; // charsets supported
|
|
PSTR pstrVersion; // version string
|
|
DWORD dwStatus; // status
|
|
|
|
} FONTREC, *PFONTREC;
|
|
|
|
//
|
|
// Data structure for maintain information used by the parser
|
|
//
|
|
|
|
typedef struct _PARSERDATA {
|
|
|
|
PVOID pvStartSig; // signature used for debugging
|
|
HANDLE hHeap; // memory heap used by the parser
|
|
PFILEOBJ pFile; // pointer to current file object
|
|
PDWORD pdwKeywordHashs; // precomputed hash values for built-in keywords
|
|
PBYTE pubKeywordCounts; // count the occurrence of built-in keywords
|
|
BOOL bErrorFlag; // semantic error flag
|
|
INT iIncludeLevel; // current include level
|
|
PFEATUREOBJ pOpenFeature; // pointer to the open feature
|
|
BOOL bJclFeature; // whether we're inside JCLOpenUI/JCLCloseUI
|
|
BOOL bInstallableGroup; // whether we're inside InstallableOptions group
|
|
PLISTOBJ pPpdFileNames; // list of source PPD filenames
|
|
|
|
INVOCOBJ NickName; // printer model name
|
|
DWORD dwChecksum32; // 32-bit CRC checksum of ASCII text PPD file
|
|
DWORD dwPpdFilever; // PPD file version
|
|
DWORD dwSpecVersion; // PPD spec version number
|
|
DWORD dwPSVersion; // PostScript interpreter version number
|
|
INVOCOBJ PSVersion; // PSVersion string
|
|
INVOCOBJ Product; // Product string
|
|
|
|
PFEATUREOBJ pFeatures; // List of printer features
|
|
PLISTOBJ pUIConstraints; // List of UIConstraints
|
|
PLISTOBJ pOrderDep; // List of OrderDependency
|
|
PLISTOBJ pQueryOrderDep; // List of QueryOrderPendency
|
|
PFONTREC pFonts; // List of device fonts
|
|
PJOBPATCHFILEOBJ pJobPatchFiles; // List of JobPatchFile invocation strings
|
|
PSYMBOLOBJ pSymbols; // List of symbol definitions
|
|
PTTFONTSUB pTTFontSubs; // List of TT font substitution entries
|
|
|
|
INVOCOBJ Password; // password invocation string
|
|
INVOCOBJ ExitServer; // exitserver invocation string
|
|
INVOCOBJ PatchFile; // PatchFile invocation string
|
|
INVOCOBJ JclBegin; // PJL job start invocation string
|
|
INVOCOBJ JclEnterPS; // PJL enter PS invocation string
|
|
INVOCOBJ JclEnd; // PJL job end invocation string
|
|
INVOCOBJ ManualFeedFalse; // ManualFeed False invocation string
|
|
|
|
DWORD dwLangEncoding; // language encoding
|
|
UINT uCodePage; // code page corresponding to language encoding
|
|
DWORD dwLangLevel; // PostScript language level
|
|
DWORD dwFreeMem; // default amount of free VM
|
|
DWORD dwThroughput; // throughput
|
|
DWORD dwJobTimeout; // suggested job timeout value
|
|
DWORD dwWaitTimeout; // suggested wait timeout value
|
|
DWORD dwColorDevice; // whether the device supports color
|
|
DWORD dwProtocols; // protocols supported by the device
|
|
DWORD dwTTRasterizer; // TrueType rasterizer option
|
|
DWORD dwLSOrientation; // default landscape orientation
|
|
FIX_24_8 fxScreenFreq; // default halftone screen frequency
|
|
FIX_24_8 fxScreenAngle; // default halftone screen angle
|
|
|
|
BOOL bDefReversePrint; // DefaultOutputOrder
|
|
BOOL bDefOutputOrderSet; // TRUE if bDefReversePrint is set through PPD
|
|
DWORD dwExtensions; // language extensions
|
|
DWORD dwSetResType; // how to set resolution
|
|
DWORD dwReqPageRgn; // RequiresPageRegion All: information
|
|
DWORD dwPpdFlags; // misc. PPD flags
|
|
PSTR pstrDefaultFont; // DefaultFont: information
|
|
|
|
DWORD dwCustomSizeFlags; // custom page size flags and parameters
|
|
CUSTOMSIZEPARAM CustomSizeParams[CUSTOMPARAM_MAX];
|
|
|
|
BOOL bEuroInformationSet;// the Euro keyword was found in the PPD
|
|
BOOL bHasEuro; // printer device fonts have the Euro
|
|
|
|
BOOL bTrueGray; // TrueGray shall be detected by default
|
|
|
|
//
|
|
// Use for mapping NT4 feature indices to NT5 feature indices
|
|
//
|
|
|
|
WORD wNt4Checksum;
|
|
INT iManualFeedIndex;
|
|
INT iDefInstallMemIndex;
|
|
INT iReqPageRgnIndex;
|
|
BYTE aubOpenUIFeature[MAX_GID];
|
|
|
|
//
|
|
// Buffers used to hold the content of various fields in the current entry
|
|
//
|
|
|
|
BUFOBJ Keyword;
|
|
BUFOBJ Option;
|
|
BUFOBJ Xlation;
|
|
BUFOBJ Value;
|
|
DWORD dwValueType;
|
|
|
|
CHAR achKeyword[MAX_KEYWORD_LEN];
|
|
CHAR achOption[MAX_OPTION_LEN];
|
|
CHAR achXlation[MAX_XLATION_LEN];
|
|
PSTR pstrValue;
|
|
|
|
//
|
|
// These are used for compacting parsed PPD information into
|
|
// binary printer description data.
|
|
//
|
|
|
|
PBYTE pubBufStart;
|
|
DWORD dwPageSize;
|
|
DWORD dwCommitSize;
|
|
DWORD dwBufSize;
|
|
PINFOHEADER pInfoHdr;
|
|
PUIINFO pUIInfo;
|
|
PPPDDATA pPpdData;
|
|
|
|
PVOID pvEndSig; // signature used for debugging
|
|
|
|
} PARSERDATA, *PPARSERDATA;
|
|
|
|
//
|
|
// Simple integrity check on the parser data structure
|
|
//
|
|
|
|
#define VALIDATE_PARSER_DATA(pParserData) \
|
|
ASSERT((pParserData) != NULL && \
|
|
(pParserData)->pvStartSig == pParserData && \
|
|
(pParserData)->pvEndSig == pParserData)
|
|
|
|
//
|
|
// Parse a PPD file
|
|
//
|
|
|
|
PPDERROR
|
|
IParseFile(
|
|
PPARSERDATA pParserData,
|
|
PTSTR ptstrFilename
|
|
);
|
|
|
|
//
|
|
// Grow a buffer object when it becomes full
|
|
//
|
|
|
|
PPDERROR
|
|
IGrowValueBuffer(
|
|
PBUFOBJ pBufObj
|
|
);
|
|
|
|
//
|
|
// Parse one entry from a PPD file
|
|
//
|
|
|
|
PPDERROR
|
|
IParseEntry(
|
|
PPARSERDATA pParserData
|
|
);
|
|
|
|
//
|
|
// Interpret an entry parsed from a PPD file
|
|
//
|
|
|
|
PPDERROR
|
|
IInterpretEntry(
|
|
PPARSERDATA pParserData
|
|
);
|
|
|
|
//
|
|
// Build up data structures to speed up keyword lookup
|
|
//
|
|
|
|
BOOL
|
|
BInitKeywordLookup(
|
|
PPARSERDATA pParserData
|
|
);
|
|
|
|
//
|
|
// Find a named item from a linked-list
|
|
//
|
|
|
|
PVOID
|
|
PvFindListItem(
|
|
PVOID pvList,
|
|
PCSTR pstrName,
|
|
PDWORD pdwIndex
|
|
);
|
|
|
|
//
|
|
// Convert embedded hexdecimal strings into binary data
|
|
//
|
|
|
|
BOOL
|
|
BConvertHexString(
|
|
PBUFOBJ pBufObj
|
|
);
|
|
|
|
//
|
|
// Search for a keyword from a string table
|
|
//
|
|
|
|
typedef struct _STRTABLE {
|
|
|
|
PCSTR pstrKeyword; // keyword name
|
|
DWORD dwValue; // corresponding value
|
|
|
|
} STRTABLE;
|
|
|
|
typedef const STRTABLE *PCSTRTABLE;
|
|
|
|
BOOL
|
|
BSearchStrTable(
|
|
PCSTRTABLE pTable,
|
|
PSTR pstrKeyword,
|
|
DWORD *pdwValue
|
|
);
|
|
|
|
//
|
|
// Parse an unsigned floating-point number from a character string
|
|
//
|
|
|
|
BOOL
|
|
BGetFloatFromString(
|
|
PSTR *ppstr,
|
|
PLONG plValue,
|
|
INT iType
|
|
);
|
|
|
|
#define FLTYPE_ERROR (-1)
|
|
#define FLTYPE_POINT 0
|
|
#define FLTYPE_INT 1
|
|
#define FLTYPE_FIX 2
|
|
#define FLTYPE_POINT_ROUNDUP 3
|
|
#define FLTYPE_POINT_ROUNDDOWN 4
|
|
|
|
//
|
|
// Parse an unsigned decimal integer value from a character string
|
|
//
|
|
|
|
BOOL
|
|
BGetIntegerFromString(
|
|
PSTR *ppstr,
|
|
LONG *plValue
|
|
);
|
|
|
|
//
|
|
// Strip off the keyword prefix character from the input string
|
|
//
|
|
|
|
PCSTR
|
|
PstrStripKeywordChar(
|
|
PCSTR pstrKeyword
|
|
);
|
|
|
|
//
|
|
// Find the next word in a character string (Words are separated by spaces)
|
|
//
|
|
|
|
BOOL
|
|
BFindNextWord(
|
|
PSTR *ppstr,
|
|
PSTR pstrWord
|
|
);
|
|
|
|
#define MAX_WORD_LEN MAX_KEYWORD_LEN
|
|
|
|
//
|
|
// Create an input file object
|
|
//
|
|
|
|
PFILEOBJ
|
|
PCreateFileObj(
|
|
PTSTR ptstrFilename
|
|
);
|
|
|
|
//
|
|
// Delete an input file object
|
|
//
|
|
|
|
VOID
|
|
VDeleteFileObj(
|
|
PFILEOBJ pFile
|
|
);
|
|
|
|
//
|
|
// Read the next character from the input file
|
|
// Special character to indicate end-of-file condition
|
|
//
|
|
|
|
INT
|
|
IGetNextChar(
|
|
PFILEOBJ pFile
|
|
);
|
|
|
|
#define EOF_CHAR (-1)
|
|
|
|
//
|
|
// Return the last character read to the input file
|
|
//
|
|
|
|
VOID
|
|
VUngetChar(
|
|
PFILEOBJ pFile
|
|
);
|
|
|
|
//
|
|
// Skip all characters until the next non-space character
|
|
//
|
|
|
|
VOID
|
|
VSkipSpace(
|
|
PFILEOBJ pFile
|
|
);
|
|
|
|
//
|
|
// Skip the remaining characters on the current input line
|
|
//
|
|
|
|
VOID
|
|
VSkipLine(
|
|
PFILEOBJ pFile
|
|
);
|
|
|
|
//
|
|
// Check if a character string only consists of printable 7-bit ASCII characters
|
|
//
|
|
|
|
BOOL
|
|
BIs7BitAscii(
|
|
PSTR pstr
|
|
);
|
|
|
|
//
|
|
// Display a syntax error message
|
|
//
|
|
|
|
PPDERROR
|
|
ISyntaxErrorMessage(
|
|
PFILEOBJ pFile,
|
|
PSTR pstrMsg
|
|
);
|
|
|
|
#if DBG
|
|
#define ISyntaxError(pFile, errmsg) ISyntaxErrorMessage(pFile, errmsg)
|
|
#else
|
|
#define ISyntaxError(pFile, errmsg) ISyntaxErrorMessage(pFile, NULL)
|
|
#endif
|
|
|
|
//
|
|
// Keyword string for various predefined features
|
|
//
|
|
|
|
extern const CHAR gstrDefault[];
|
|
extern const CHAR gstrPageSizeKwd[];
|
|
extern const CHAR gstrInputSlotKwd[];
|
|
extern const CHAR gstrManualFeedKwd[];
|
|
extern const CHAR gstrCustomSizeKwd[];
|
|
extern const CHAR gstrLetterSizeKwd[];
|
|
extern const CHAR gstrA4SizeKwd[];
|
|
extern const CHAR gstrLongKwd[];
|
|
extern const CHAR gstrShortKwd[];
|
|
extern const CHAR gstrTrueKwd[];
|
|
extern const CHAR gstrFalseKwd[];
|
|
extern const CHAR gstrOnKwd[];
|
|
extern const CHAR gstrOffKwd[];
|
|
extern const CHAR gstrNoneKwd[];
|
|
extern const CHAR gstrVMOptionKwd[];
|
|
extern const CHAR gstrInstallMemKwd[];
|
|
extern const CHAR gstrDuplexTumble[];
|
|
extern const CHAR gstrDuplexNoTumble[];
|
|
|
|
#endif // !_PPDPARSE_H_
|
|
|