blob: c37bd420244bbad5eeb06f315872eef0760b5ef9 [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
71 // Rule definition
72 string _strApplicationRule;
73 // Criteria defintion
74 const CSelectionCriteriaDefinition* _pSelectionCriteriaDefinition;
75 // Iterator
76 uint32_t _uiCurrentPos;
77 // Deepness
78 uint32_t _uiCurrentDeepness;
79 // Current Type
80 string _strRuleType;
81 // Status
82 Status _eStatus;
83 // Root rule
84 CCompoundRule* _pRootRule;
85 // Matches
86 static const char* _acDelimiters[ENbStatuses];
87};
88