blob: 9b85df31ce025c6fbe212a2b410ec636b6abd9f4 [file] [log] [blame]
Kevin Rocard93250d12012-07-19 17:48:30 +02001/*
Patrick Benavoli0bd50542011-11-29 11:10:27 +01002 * INTEL CONFIDENTIAL
3 * Copyright © 2011 Intel
4 * Corporation All Rights Reserved.
5 *
6 * The source code contained or described herein and all documents related to
7 * the source code ("Material") are owned by Intel Corporation or its suppliers
8 * or licensors. Title to the Material remains with Intel Corporation or its
9 * suppliers and licensors. The Material contains trade secrets and proprietary
10 * and confidential information of Intel or its suppliers and licensors. The
11 * Material is protected by worldwide copyright and trade secret laws and
12 * treaty provisions. No part of the Material may be used, copied, reproduced,
13 * modified, published, uploaded, posted, transmitted, distributed, or
14 * disclosed in any way without Intel’s prior express written permission.
15 *
16 * No license under any patent, copyright, trade secret or other intellectual
17 * property right is granted to or conferred upon you by disclosure or delivery
18 * of the Materials, either expressly, by implication, inducement, estoppel or
19 * otherwise. Any license under such intellectual property rights must be
20 * express and approved by Intel in writing.
21 *
Patrick Benavoli0bd50542011-11-29 11:10:27 +010022 * CREATED: 2011-06-01
23 * UPDATED: 2011-07-27
Patrick Benavoli0bd50542011-11-29 11:10:27 +010024 */
25#pragma once
26
27#include <string>
28#include <stdint.h>
29
30using namespace std;
31
32class CCompoundRule;
33class CSelectionCriteriaDefinition;
34
35class CRuleParser
36{
37public:
38 enum Status {
39 EInit,
40 EBeginCompoundRule,
41 EEndCompoundRule,
42 ECriterionRule,
43 EContinue,
44 EDone,
45
46 ENbStatuses
47 };
48
49 CRuleParser(const string& strApplicationRule, const CSelectionCriteriaDefinition* pSelectionCriteriaDefinition);
50 ~CRuleParser();
51
52 // Parse
53 bool parse(CCompoundRule* pParentRule, string& strError);
54
55 // Iterate
56 bool iterate(string& strError);
57
58 // Next word
59 bool next(string& strNext, string& strError);
60
61 // Rule type
62 const string& getType() const;
63
64 // Criteria defintion
65 const CSelectionCriteriaDefinition* getSelectionCriteriaDefinition() const;
66
67 // Root rule
68 CCompoundRule* grabRootRule();
69private:
70
JhinX Lee4ebc0982012-07-12 17:50:07 +020071 CRuleParser(const CRuleParser&);
72 CRuleParser& operator=(const CRuleParser&);
73
Patrick Benavoli0bd50542011-11-29 11:10:27 +010074 // Rule definition
75 string _strApplicationRule;
76 // Criteria defintion
77 const CSelectionCriteriaDefinition* _pSelectionCriteriaDefinition;
78 // Iterator
79 uint32_t _uiCurrentPos;
80 // Deepness
81 uint32_t _uiCurrentDeepness;
82 // Current Type
83 string _strRuleType;
84 // Status
85 Status _eStatus;
86 // Root rule
87 CCompoundRule* _pRootRule;
88 // Matches
89 static const char* _acDelimiters[ENbStatuses];
90};
91