Machine-readable parser
/*
** (c) COPYRIGHT MIT 1996.
** Please first read the full copyright statement in the file COPYRIGH.
*/
This module provides the interface to CSMacRed.c.
Labels are parsed from strings (see CSParse.html).
These labels may then be kept in a CSMachRead_t structure for inspection by the
application.
#ifndef CSMR_H
#define CSMR_H
State Change Enumeration
Call to the TargetChangeCallback
will have one of the following values.
typedef enum {
CSMRTC_MACHREAD = 1,
CSMRTC_VERSION,
CSMRTC_SYSTEM,
CSMRTC_SERVICE,
CSMRTC_ICON,
CSMSRC_NAME,
CSMSRC_VALUE,
CSMSRC_DESC,
CSMRTC_DEF,
CSMRTC_MIN,
CSMRTC_MAX,
CSMRTC_MULTI,
CSMRTC_UNORD,
CSMRTC_INT,
CSMRTC_LABL,
CSMRTC_CAT,
CSMRTC_TRANS,
CSMRTC_ENUM,
CSMRTC_COUNT
} CSMRTC_t;
Data shell
All PICS Machine-readable data is stored in a CSMRData_t
typedef struct CSMachReadData_s CSMachReadData_t;
TargetChangeCallback
As the label is parsed, it will call the assigned TargetChangeCallback as it
passes from state to state.
typedef StateRet_t MachReadTargetCallback_t(CSMachRead_t * pCSMachRead,
CSParse_t * pCSParse,
CSMRTC_t target, BOOL closed,
void * pVoid);
ErrorHandler
All parsing error will be passed to the Apps MRErrorHandler for user display
or automatic dismissal.
typedef StateRet_t MRErrorHandler_t(CSMachRead_t * pCSMachRead,
CSParse_t * pCSParse, const char * token,
char demark, StateRet_t errorCode);
Construction/Destruction
These methods allow the user to create and get access to both the description
and the state. CSMachReads may be cloned so that one saves state while another
continues to iterate or parse. The states must all be freed. description data
will only be freed after all the CSMachReads that refer to it are deleted.
extern CSParse_t * CSParse_newMachRead(
MachReadTargetCallback_t * pMachReadTargetCallback,
MRErrorHandler_t * pMRErrorHandler);
extern BOOL CSParse_deleteMachRead(CSParse_t *);
extern CSMachRead_t * CSParse_getMachRead(CSParse_t * me);
extern char * CSMachRead_getSystem(CSMachRead_t * pCSMachRead);
extern char * CSMachRead_getService(CSMachRead_t * pCSMachRead);
Iterating methods
Callback function
The Iterators are passed a callback function to be called for each matching
element. For instance, when iterating through ranges, the callback function is
called once for each range, or, if a match is requested, only for the matching
range.
typedef CSError_t CSMachRead_callback_t(CSMachRead_t *,
State_Parms_t *,
const char *, void * pVoid);
typedef CSError_t CSMachRead_iterator_t(CSMachRead_t *,
CSMachRead_callback_t *,
State_Parms_t *, const char *,
void * pVoid);
extern CSMachRead_iterator_t CSMachRead_iterateCategories;
extern CSMachRead_iterator_t CSMachRead_iterateLabels;
#endif /* CSMR_H */
End of Declaration