?? csmacred.c
字號:
#include "wwwsys.h"#include "HTUtils.h"#include "HTString.h"#include "CSParse.h"#include "CSMR.h"#include "CSMRSt.h"#define GetCSMachRead(A) ((A)->target.pCSMachRead)#define SETNEXTSTATE(target, subState) \ pCSParse->pTargetObject = target; \ pCSParse->currentSubState = subState;struct CSMachRead_s { CSMachReadData_t * pCSMachReadData; MachRead_category_t * pCurrentMachRead_category; MachRead_enum_t * pCurrentMachRead_enum; BOOL inDefault; MachReadTargetCallback_t * pMachReadTargetCallback; MRErrorHandler_t * pMRErrorHandler;};PRIVATE TargetObject_t MachRead_targetObject;PRIVATE TargetObject_t Version_targetObject;PRIVATE TargetObject_t System_targetObject;PRIVATE TargetObject_t Service_targetObject;PRIVATE TargetObject_t Icon_targetObject;PRIVATE TargetObject_t Name_targetObject;PRIVATE TargetObject_t Description_targetObject;PRIVATE TargetObject_t Default_targetObject;PRIVATE TargetObject_t Min_targetObject;PRIVATE TargetObject_t Max_targetObject;PRIVATE TargetObject_t Multi_targetObject;PRIVATE TargetObject_t Unord_targetObject;PRIVATE TargetObject_t Integer_targetObject;PRIVATE TargetObject_t Labeled_targetObject;PRIVATE TargetObject_t Category_targetObject;PRIVATE TargetObject_t Transmit_as_targetObject;PRIVATE TargetObject_t Enum_targetObject;PRIVATE TargetObject_t Value_targetObject;PRIVATE Prep_t postValueState;PRIVATE Prep_t Category_next;PRIVATE Prep_t Multi_setTrue;PRIVATE Prep_t Unord_setTrue;PRIVATE Prep_t Integer_setTrue;PRIVATE Prep_t Labeled_setTrue;PRIVATE Check_t Version_get;PRIVATE Check_t System_get;PRIVATE Check_t Service_get;PRIVATE Check_t Icon_get;PRIVATE Check_t Name_get;PRIVATE Check_t Description_get;PRIVATE Check_t Min_get;PRIVATE Check_t Max_get;PRIVATE Check_t Multi_get;PRIVATE Check_t Unord_get;PRIVATE Check_t Integer_get;PRIVATE Check_t Labeled_get;PRIVATE Check_t Transmit_as_get;PRIVATE Check_t Value_get;PRIVATE Open_t MachRead_open;PRIVATE Open_t Category_open;PRIVATE Open_t Default_open;PRIVATE Open_t Enum_open;PRIVATE Close_t MachRead_close;PRIVATE Close_t Category_close;PRIVATE Close_t Default_close;PRIVATE Close_t Enum_close;PRIVATE Destroy_t MachRead_destroy;PRIVATE Destroy_t Category_destroy;PRIVATE Destroy_t Default_destroy;PRIVATE Destroy_t Enum_destroy;PRIVATE TargetChangeCallback_t targetChangeCallback;PRIVATE ParseErrorHandler_t parseErrorHandler;/* CSParse_doc states *//* M A C H I N E R E A D A B L E P A R S E R S T A T E S *//* This contains all the states in the BNF for PICS service descriptions. * See User/Parsing.html for details. */PRIVATE StateToken_t MachRead_stateTokens[] = { /* A: 1st we need a version B: then a system C: and a service D: an open paren E: could be icondef - category F: back from category so open or close paren G: open paren so it is a category */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &MachRead_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"need version set", SubState_A, Punct_LPAREN, 0, 0, 0, 0, &Version_targetObject, SubState_N, 0, 0}, { "need system set", SubState_B, Punct_LPAREN, 0, 0, 0, 0, &System_targetObject, SubState_N, 0, 0}, {"need service set", SubState_C, Punct_LPAREN, 0, 0, 0, 0, &Service_targetObject, SubState_N, 0, 0}, {"need options set", SubState_D, Punct_LPAREN, 0, 0, 0, 0, &MachRead_targetObject, SubState_E, 0, 0}, { "icon", SubState_E, Punct_WHITE, 0, "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0}, { "name", SubState_E, Punct_WHITE, 0, "name", 0, 0, &Name_targetObject, SubState_N, 0, 0}, { "description", SubState_E, Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0}, { "default", SubState_E, Punct_LPAREN, 0, "default", 0, 0, &Default_targetObject, SubState_N, 0, 0}, { "category", SubState_E, Punct_LPAREN, 0, "category", 0, 0, &Category_targetObject, SubState_N, 0, 0}, { "open category", SubState_F, Punct_LPAREN, 0, 0, 0, 0, &MachRead_targetObject, SubState_G, 0, 0}, { "end", SubState_F, Punct_RPAREN, 0, 0, 0, 0, &MachRead_targetObject, SubState_N, Command_CLOSE, 0}, { "category", SubState_G, Punct_LPAREN, 0, "category", 0, 0, &Category_targetObject, SubState_N, 0, 0} };PRIVATE TargetObject_t MachRead_targetObject = {"MachRead", &MachRead_open, &MachRead_close, &MachRead_destroy, MachRead_stateTokens, raysize(MachRead_stateTokens), CSMRTC_MACHREAD};PRIVATE StateToken_t Version_stateTokens[] = { /* A: fresh Version B: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Version_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "text", SubState_A, Punct_WHITE, 0, "PICS-version", 0, 0, &Version_targetObject, SubState_B, 0, 0}, {"value", SubState_B, Punct_RPAREN, &Version_get, 0, 0, 0, &MachRead_targetObject, SubState_B, Command_CLOSE, 0} };PRIVATE TargetObject_t Version_targetObject = {"Version", 0, 0, 0, Version_stateTokens, raysize(Version_stateTokens), CSMRTC_VERSION};PRIVATE StateToken_t System_stateTokens[] = { /* A: fresh System B: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &System_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "text", SubState_A, Punct_WHITE, 0, "rating-system", 0, 0, &System_targetObject, SubState_B, 0, 0}, {"value", SubState_B, Punct_RPAREN, &System_get, 0, 0, 0, &MachRead_targetObject, SubState_C, Command_CLOSE, 0} };PRIVATE TargetObject_t System_targetObject = {"System", 0, 0, 0, System_stateTokens, raysize(System_stateTokens), CSMRTC_SYSTEM};PRIVATE StateToken_t Service_stateTokens[] = { /* A: fresh Service B: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Service_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "text", SubState_A, Punct_WHITE, 0, "rating-service", 0, 0, &Service_targetObject, SubState_B, 0, 0}, {"value", SubState_B, Punct_RPAREN, &Service_get, 0, 0, 0, &MachRead_targetObject, SubState_D, Command_CLOSE, 0} };PRIVATE TargetObject_t Service_targetObject = {"Service", 0, 0, 0, Service_stateTokens, raysize(Service_stateTokens), CSMRTC_SERVICE};PRIVATE StateToken_t Icon_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Icon_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Icon_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Icon_targetObject = {"Icon", 0, 0, 0, Icon_stateTokens, raysize(Icon_stateTokens), CSMRTC_ICON};PRIVATE StateToken_t Name_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Name_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Name_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Name_targetObject = {"Name", 0, 0, 0, Name_stateTokens, raysize(Name_stateTokens), CSMSRC_NAME};PRIVATE StateToken_t Value_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Value_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Value_get, 0, 0, 0, &Enum_targetObject, SubState_G, Command_CLOSE, 0} };PRIVATE TargetObject_t Value_targetObject = {"Name", 0, 0, 0, Value_stateTokens, raysize(Value_stateTokens), CSMSRC_VALUE};PRIVATE StateToken_t Description_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Description_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Description_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Description_targetObject = {"Description", 0, 0, 0, Description_stateTokens, raysize(Description_stateTokens), CSMSRC_DESC};PRIVATE StateToken_t Default_stateTokens[] = { /* A: need an open B: need option */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Default_targetObject, SubState_B, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "open", SubState_A, Punct_LPAREN, 0, 0, 0, 0, &Default_targetObject, SubState_B, 0, 0}, { "close", SubState_A, Punct_RPAREN, 0, 0, 0, 0, &MachRead_targetObject, SubState_D, Command_CLOSE, 0}, { "min", SubState_B, Punct_WHITE, 0, "min", 0, 0, &Min_targetObject, SubState_N, 0, 0}, { "max", SubState_B, Punct_WHITE, 0, "max", 0, 0, &Max_targetObject, SubState_N, 0, 0}, { "multi", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "multivalue", 0, 0, &Multi_targetObject, SubState_N, Command_CHAIN, 0}, { "unord", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "unordered", 0, 0, &Unord_targetObject, SubState_N, Command_CHAIN, 0}, {"integer", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "integer", 0, 0, &Integer_targetObject, SubState_N, Command_CHAIN, 0}, {"labeled", SubState_B, Punct_WHITE|Punct_RPAREN, 0, "label-only", 0, 0, &Labeled_targetObject, SubState_N, Command_CHAIN, 0}, };PRIVATE TargetObject_t Default_targetObject = {"Default", &Default_open, &Default_close, &Default_destroy, Default_stateTokens, raysize(Default_stateTokens), CSMRTC_DEF};PRIVATE StateToken_t Min_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Min_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Min_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Min_targetObject = {"Min", 0, 0, 0, Min_stateTokens, raysize(Min_stateTokens), CSMRTC_MIN};PRIVATE StateToken_t Max_stateTokens[] = { /* A: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Max_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"value", SubState_A, Punct_RPAREN, &Max_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Max_targetObject = {"Max", 0, 0, 0, Max_stateTokens, raysize(Max_stateTokens), CSMRTC_MAX};PRIVATE StateToken_t Multi_stateTokens[] = { /* A: chained text with optional close paren B: value */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Multi_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"binary", SubState_A, Punct_WHITE, 0, "multivalue", 0, 0, &Multi_targetObject, SubState_B, 0, 0}, { "unary", SubState_A, Punct_RPAREN, 0, "multivalue", 0, 0, 0, SubState_X, Command_CLOSE, &Multi_setTrue}, { "value", SubState_B, Punct_RPAREN, &Multi_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Multi_targetObject = {"Multi", 0, 0, 0, Multi_stateTokens, raysize(Multi_stateTokens), CSMRTC_MULTI};PRIVATE StateToken_t Unord_stateTokens[] = { /* A: chained text with optional close paren B: value */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Unord_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"binary", SubState_A, Punct_WHITE, 0, "unordered", 0, 0, &Unord_targetObject, SubState_B, 0, 0}, { "unary", SubState_A, Punct_RPAREN, 0, "unordered", 0, 0, 0, SubState_X, Command_CLOSE, &Unord_setTrue}, { "value", SubState_B, Punct_RPAREN, &Unord_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Unord_targetObject = {"Unord", 0, 0, 0, Unord_stateTokens, raysize(Unord_stateTokens), CSMRTC_UNORD};PRIVATE StateToken_t Integer_stateTokens[] = { /* A: chained text with optional close paren B: value */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Integer_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"binary", SubState_A, Punct_WHITE, 0, "integer", 0, 0, &Integer_targetObject, SubState_B, 0, 0}, { "unary", SubState_A, Punct_RPAREN, 0, "integer", 0, 0, 0, SubState_X, Command_CLOSE, &Integer_setTrue}, { "value", SubState_B, Punct_RPAREN, &Integer_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Integer_targetObject = {"Integer", 0, 0, 0, Integer_stateTokens, raysize(Integer_stateTokens), CSMRTC_INT};PRIVATE StateToken_t Labeled_stateTokens[] = { /* A: chained text with optional close paren B: value */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Labeled_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"binary", SubState_A, Punct_WHITE, 0, "label-only", 0, 0, &Labeled_targetObject, SubState_B, 0, 0}, { "unary", SubState_A, Punct_RPAREN, 0, "label-only", 0, 0, 0, SubState_X, Command_CLOSE, &Labeled_setTrue}, { "value", SubState_B, Punct_RPAREN, &Labeled_get, 0, 0, 0, 0, SubState_X, Command_CLOSE, &postValueState} };PRIVATE TargetObject_t Labeled_targetObject = {"Labeled", 0, 0, 0, Labeled_stateTokens, raysize(Labeled_stateTokens), CSMRTC_LABL};PRIVATE StateToken_t Category_stateTokens[] = { /* A: 1st we need a transmit-as B: an open paren C: could be icondef - enum, category D: back from enum so need open or close E: enum or category F: back from category so need open or close G: category */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Transmit_as_targetObject, SubState_N, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, {"need options set", SubState_B, Punct_LPAREN, 0, 0, 0, 0, &Category_targetObject, SubState_C, 0, 0}, { "end", SubState_B, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next}, { "icon", SubState_C, Punct_WHITE, 0, "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0}, { "name", SubState_C, Punct_WHITE, 0, "name", 0, 0, &Name_targetObject, SubState_N, 0, 0}, { "description", SubState_C, Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0}, { "min", SubState_C, Punct_WHITE, 0, "min", 0, 0, &Min_targetObject, SubState_N, 0, 0}, { "max", SubState_C, Punct_WHITE, 0, "max", 0, 0, &Max_targetObject, SubState_N, 0, 0}, { "multi", SubState_C, Punct_WHITE|Punct_RPAREN, 0, "multivalue", 0, 0, &Multi_targetObject, SubState_N, Command_CHAIN, 0}, { "unord", SubState_C, Punct_WHITE|Punct_RPAREN, 0, "unordered", 0, 0, &Unord_targetObject, SubState_N, Command_CHAIN, 0}, {"integer", SubState_C, Punct_WHITE|Punct_RPAREN, 0, "integer", 0, 0, &Integer_targetObject, SubState_N, Command_CHAIN, 0}, {"labeled", SubState_C, Punct_WHITE|Punct_RPAREN, 0, "label-only", 0, 0, &Labeled_targetObject, SubState_N, Command_CHAIN, 0}, { "enum", SubState_C, Punct_LPAREN, 0, "label", 0, 0, &Enum_targetObject, SubState_N, 0, 0}, { "category", SubState_C, Punct_LPAREN, 0, "category", 0, 0, &Category_targetObject, SubState_N, 0, 0}, {"open enum or cat", SubState_D, Punct_LPAREN, 0, 0, 0, 0, &Category_targetObject, SubState_E, 0, 0}, { "end", SubState_D, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next}, { "enum", SubState_E, Punct_LPAREN, 0, "label", 0, 0, &Enum_targetObject, SubState_N, 0, 0}, { "category", SubState_E, Punct_LPAREN, 0, "category", 0, 0, &Category_targetObject, SubState_N, 0, 0}, { "end", SubState_E, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next}, { "open or cat", SubState_F, Punct_LPAREN, 0, 0, 0, 0, &Category_targetObject, SubState_G, 0, 0}, { "end", SubState_F, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Category_next}, { "category", SubState_G, Punct_LPAREN, 0, "category", 0, 0, &Category_targetObject, SubState_N, 0, 0}, { "to MachRead", SubState_H, Punct_ALL, 0, 0, 0, 0, &MachRead_targetObject, SubState_F, Command_CHAIN, 0} };PRIVATE TargetObject_t Category_targetObject = {"Category", &Category_open, &Category_close, &Category_destroy, Category_stateTokens, raysize(Category_stateTokens), CSMRTC_CAT};PRIVATE StateToken_t Transmit_as_stateTokens[] = { /* A: fresh Service B: read value */ {"enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Transmit_as_targetObject, SubState_A, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "text", SubState_A, Punct_WHITE, 0, "transmit-as", 0, 0, &Transmit_as_targetObject, SubState_B, 0, 0}, {"value", SubState_B, Punct_RPAREN, &Transmit_as_get, 0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0} };PRIVATE TargetObject_t Transmit_as_targetObject = {"Transmit_as", 0, 0, 0, Transmit_as_stateTokens, raysize(Transmit_as_stateTokens), CSMRTC_TRANS};PRIVATE StateToken_t Enum_stateTokens[] = { /* A: 'label'( B: 'name' -> C C: ( D: 'description' -> E D: 'value' -> G E: ( F: 'value' -> G G: ( - expect an icon G: ) close H: 'icon' -> I I: close */ { "enter", SubState_N, Punct_ALL, 0, 0, 0, 0, &Enum_targetObject, SubState_B, Command_MATCHANY|Command_OPEN|Command_CHAIN, 0}, { "name", SubState_B, Punct_WHITE, 0, "name", 0, 0, &Name_targetObject, SubState_N, 0, 0}, { "open", SubState_C, Punct_LPAREN, 0, 0, 0, 0, &Enum_targetObject, SubState_D, 0, 0}, {"description", SubState_D, Punct_WHITE, 0, "description", 0, 0, &Description_targetObject, SubState_N, 0, 0}, { "value", SubState_D, Punct_WHITE, 0, "value", 0, 0, &Value_targetObject, SubState_N, 0, 0}, { "open", SubState_E, Punct_LPAREN, 0, 0, 0, 0, &Enum_targetObject, SubState_F, 0, 0}, { "value", SubState_F, Punct_WHITE, 0, "value", 0, 0, &Value_targetObject, SubState_N, 0, 0}, { "open", SubState_G, Punct_LPAREN, 0, 0, 0, 0, &Enum_targetObject, SubState_H, 0, 0}, { "close", SubState_G, Punct_RPAREN, 0, 0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0}, { "icon", SubState_H, Punct_WHITE, 0, "icon", 0, 0, &Icon_targetObject, SubState_N, 0, 0}, { "close", SubState_I, Punct_RPAREN, 0, 0, 0, 0, &Category_targetObject, SubState_B, Command_CLOSE, 0} };
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -