Source-highlight Library
srchilite::HighlightState Class Reference

Represents a state during the highlighting (e.g., comment state, string state, etc.). More...

#include <highlightstate.h>

Collaboration diagram for srchilite::HighlightState:

Public Member Functions

 HighlightState (const std::string &e="normal")
 HighlightState (const HighlightState &copy)
 Copies all the elements of the highlight state, except for the id: a new id will be used.
void addRule (HighlightRulePtr rule)
 Adss a rule to this state.
HighlightRulePtr replaceRule (RuleList::size_type index, HighlightRulePtr rule)
 Substitutes the rule at the specified position.
unsigned int getId () const
const RuleListgetRuleList () const
const std::string & getDefaultElement () const
void setDefaultElement (const std::string &e)
bool findBestMatch (const std::string &s, HighlightToken &token, const MatchingParameters &params) const
 Tries to find the rule that matches best (and first): the first rule with the smallest prefix and longest matching sequence.
bool findBestMatch (std::string::const_iterator start, std::string::const_iterator end, HighlightToken &token, const MatchingParameters &params) const
 Tries to find the rule that matches best (and first): the first rule with the smallest prefix and longest matching sequence.
void replaceReferences (const ReplacementList &rep)
 Performs replacement of references in the rules of this state.
bool getNeedsReferenceReplacement () const
void setNeedsReferenceReplacement (bool b=true)
HighlightStatePtr getOriginalState () const
void setOriginalState (HighlightStatePtr orig)

Static Public Member Functions

static bool betterThan (const HighlightToken &t1, const HighlightToken &t2)
 Whether t1 is better than t2: t1 has a non-longer prefix and a longer matching string (this makes sense only if a string was matched, and in fact this should be used only after having matched something).

Private Attributes

const unsigned int id
 the identifier of the state
std::string defaultElement
 the name of the element for strings when no rule matches (default: "normal") for states this should always be "normal" while for environments it should be the same element that represents the new state (e.g., "comment", "string", etc.)
RuleList ruleList
 the list of rules of this state
bool needsReferenceReplacement
 whether one of the contained rules has dynamic references to be replaced
HighlightStatePtr originalState
 In case this state is a copy of another state, in this field we store the original state.

Static Private Attributes

static unsigned int global_id
 the global counter to assign unique state ids

Detailed Description

Represents a state during the highlighting (e.g., comment state, string state, etc.).

Constructor & Destructor Documentation

◆ HighlightState() [1/2]

srchilite::HighlightState::HighlightState ( const std::string & e = "normal")
Parameters
ethe element for strings when no rule matches (default: "normal")

◆ HighlightState() [2/2]

srchilite::HighlightState::HighlightState ( const HighlightState & copy)

Copies all the elements of the highlight state, except for the id: a new id will be used.

Parameters
copy

Member Function Documentation

◆ addRule()

Adss a rule to this state.

Parameters
rulethe rule to add at the end of the list

◆ betterThan()

bool srchilite::HighlightState::betterThan ( const HighlightToken & t1,
const HighlightToken & t2 )
static

Whether t1 is better than t2: t1 has a non-longer prefix and a longer matching string (this makes sense only if a string was matched, and in fact this should be used only after having matched something).

Parameters
t1
t2
Returns

◆ findBestMatch() [1/2]

bool srchilite::HighlightState::findBestMatch ( const std::string & s,
HighlightToken & token,
const MatchingParameters & params ) const

Tries to find the rule that matches best (and first): the first rule with the smallest prefix and longest matching sequence.

Parameters
sthe string for trying to match the rule
tokenwhere results will be inserted, if the rule matched
paramsadditional arguments for the matching
Returns
whether a matching rule was found

◆ findBestMatch() [2/2]

bool srchilite::HighlightState::findBestMatch ( std::string::const_iterator start,
std::string::const_iterator end,
HighlightToken & token,
const MatchingParameters & params ) const

Tries to find the rule that matches best (and first): the first rule with the smallest prefix and longest matching sequence.

Parameters
startthe beginning of the string for trying to match the rule
endthe beginning of the string for trying to match the rule
tokenwhere results will be inserted, if the rule matched
paramsadditional arguments for the matching
Returns
whether a matching rule was found

◆ replaceReferences()

Performs replacement of references in the rules of this state.

For each rule that needs replacement, it creates a copy of the rule.

Parameters
thelist of values for the replacement; the first element is the value for replacing the first dynamic back reference, and so on. (it should contain 9 possibly empty elements)

◆ replaceRule()

Substitutes the rule at the specified position.

The rule must exit at the specified position.

Parameters
index
rulethe new rule
Returns
the old rule

The documentation for this class was generated from the following file:
  • /cygdrive/d/a/scallywag/source-highlight/source-highlight-3.1.9-1.x86_64/src/source-highlight-3.1.9/lib/srchilite/highlightstate.h