#include #include #define RULES_COUNT 256 enum RuleType { RULETYPE_EMPTY = 0, RULETYPE_VALUE = 1, RULETYPE_RULES = 2, }; typedef struct { enum RuleType type; char value; int have_pipe; int rules1[4]; int rules2[4]; unsigned short rules1_count; unsigned short rules2_count; } Rule; int is_valid_message(Rule * rules, int rule_index, char ** message_pt, int is_last_rule) { unsigned short i; char * starting_point = *message_pt; if (rules[rule_index].type == RULETYPE_VALUE) { if (rules[rule_index].value == *message_pt[0]) { *message_pt += 1; return 1; } return 0; } for (i=0; i