Lines Matching refs:rules
656 CheckGroup(XkbRF_RulesPtr rules, char *group_name, char *name)
662 for (i = 0, group = rules->groups; i < rules->num_groups; i++, group++) {
667 if (i == rules->num_groups)
681 XkbRF_RulesPtr rules)
693 if (!CheckGroup(rules, rule->model, mdefs->model))
718 if (!CheckGroup(rules, rule->layout,
737 if (!CheckGroup(rules, rule->variant,
758 XkbRF_ClearPartialMatches(XkbRF_RulesPtr rules)
763 for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) {
769 XkbRF_ApplyPartialMatches(XkbRF_RulesPtr rules, XkbComponentNamesPtr names)
774 for (rule = rules->rules, i = 0; i < rules->num_rules; i++, rule++) {
782 XkbRF_CheckApplyRules(XkbRF_RulesPtr rules,
791 for (rule = rules->rules, i = 0; i < rules->num_rules; rule++, i++) {
794 skip = XkbRF_CheckApplyRule(rule, mdefs, names, rules);
796 for (; (i < rules->num_rules) && (rule->number == skip);
912 XkbRF_GetComponents(XkbRF_RulesPtr rules,
921 XkbRF_ClearPartialMatches(rules);
922 XkbRF_CheckApplyRules(rules, &mdefs, names, XkbRF_Normal);
923 XkbRF_ApplyPartialMatches(rules, names);
924 XkbRF_CheckApplyRules(rules, &mdefs, names, XkbRF_Append);
925 XkbRF_ApplyPartialMatches(rules, names);
926 XkbRF_CheckApplyRules(rules, &mdefs, names, XkbRF_Option);
927 XkbRF_ApplyPartialMatches(rules, names);
948 XkbRF_AddRule(XkbRF_RulesPtr rules)
950 if (rules->sz_rules < 1) {
951 rules->sz_rules = 16;
952 rules->num_rules = 0;
953 rules->rules = _XkbTypedCalloc(rules->sz_rules, XkbRF_RuleRec);
955 else if (rules->num_rules >= rules->sz_rules) {
956 rules->sz_rules *= 2;
957 rules->rules = _XkbTypedReallocF(rules->rules, rules->sz_rules,
960 if (!rules->rules) {
961 rules->sz_rules = rules->num_rules = 0;
967 memset(&rules->rules[rules->num_rules], 0, sizeof(XkbRF_RuleRec));
968 return &rules->rules[rules->num_rules++];
972 XkbRF_AddGroup(XkbRF_RulesPtr rules)
974 if (rules->sz_groups < 1) {
975 rules->sz_groups = 16;
976 rules->num_groups = 0;
977 rules->groups = _XkbTypedCalloc(rules->sz_groups, XkbRF_GroupRec);
979 else if (rules->num_groups >= rules->sz_groups) {
980 rules->sz_groups *= 2;
981 rules->groups = _XkbTypedReallocF(rules->groups, rules->sz_groups,
984 if (!rules->groups) {
985 rules->sz_groups = rules->num_groups = 0;
989 memset(&rules->groups[rules->num_groups], 0, sizeof(XkbRF_GroupRec));
990 return &rules->groups[rules->num_groups++];
994 XkbRF_LoadRules(FILE *file, XkbRF_RulesPtr rules)
1001 if (!(rules && file))
1009 if ((group = XkbRF_AddGroup(rules)) != NULL) {
1015 if ((rule = XkbRF_AddRule(rules)) != NULL) {
1028 XkbRF_LoadRulesByName(char *base, char *locale, XkbRF_RulesPtr rules)
1034 if ((!base) || (!rules))
1053 ok = XkbRF_LoadRules(file, rules);
1103 XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules, char *name)
1105 if (rules->sz_extra < 1) {
1106 rules->num_extra = 0;
1107 rules->sz_extra = 1;
1108 rules->extra_names = _XkbTypedCalloc(rules->sz_extra, char *);
1110 rules->extra = _XkbTypedCalloc(rules->sz_extra, XkbRF_DescribeVarsRec);
1112 else if (rules->num_extra >= rules->sz_extra) {
1113 rules->sz_extra *= 2;
1114 rules->extra_names =
1115 _XkbTypedReallocF(rules->extra_names, rules->sz_extra, char *);
1116 rules->extra =
1117 _XkbTypedReallocF(rules->extra, rules->sz_extra,
1120 if ((!rules->extra_names) || (!rules->extra)) {
1122 rules->sz_extra = rules->num_extra = 0;
1123 free(rules->extra_names);
1124 rules->extra_names = NULL;
1125 free(rules->extra);
1126 rules->extra = NULL;
1129 rules->extra_names[rules->num_extra] = _XkbDupString(name);
1130 memset(&rules->extra[rules->num_extra], 0, sizeof(XkbRF_DescribeVarsRec));
1131 return &rules->extra[rules->num_extra++];
1135 XkbRF_LoadDescriptions(FILE *file, XkbRF_RulesPtr rules)
1161 for (i = 0; (i < rules->num_extra) && (extra_ndx < 0); i++) {
1162 if (_XkbStrCaseCmp(tok, rules->extra_names[i]))
1169 var = XkbRF_AddVarToDescribe(rules, tok);
1171 extra_ndx = var - rules->extra;
1208 XkbRF_AddVarDescCopy(&rules->models, &tmp);
1211 XkbRF_AddVarDescCopy(&rules->layouts, &tmp);
1214 XkbRF_AddVarDescCopy(&rules->variants, &tmp);
1217 XkbRF_AddVarDescCopy(&rules->options, &tmp);
1220 XkbRF_AddVarDescCopy(&rules->extra[extra_ndx], &tmp);
1225 if ((rules->models.num_desc == 0) && (rules->layouts.num_desc == 0) &&
1226 (rules->variants.num_desc == 0) && (rules->options.num_desc == 0) &&
1227 (rules->num_extra == 0)) {
1234 XkbRF_LoadDescriptionsByName(char *base, char *locale, XkbRF_RulesPtr rules)
1240 if ((!base) || (!rules))
1260 ok = XkbRF_LoadDescriptions(file, rules);
1270 XkbRF_RulesPtr rules;
1274 if ((rules = _XkbTypedCalloc(1, XkbRF_RulesRec)) == NULL)
1276 if (wantDesc && (!XkbRF_LoadDescriptionsByName(base, locale, rules))) {
1277 XkbRF_Free(rules, True);
1280 if (wantRules && (!XkbRF_LoadRulesByName(base, locale, rules))) {
1281 XkbRF_Free(rules, True);
1284 return rules;
1290 XkbRF_RulesPtr rules;
1292 if ((rules = _XkbTypedCalloc(1, XkbRF_RulesRec)) == NULL)
1295 rules->sz_rules = szRules;
1296 rules->rules = _XkbTypedCalloc(rules->sz_rules, XkbRF_RuleRec);
1297 if (!rules->rules) {
1298 _XkbFree(rules);
1303 rules->sz_extra = szExtra;
1304 rules->extra = _XkbTypedCalloc(rules->sz_extra, XkbRF_DescribeVarsRec);
1305 if (!rules->extra) {
1306 if (rules->rules)
1307 _XkbFree(rules->rules);
1308 _XkbFree(rules);
1312 return rules;
1336 XkbRF_Free(XkbRF_RulesPtr rules, Bool freeRules)
1342 if (!rules)
1344 XkbRF_ClearVarDescriptions(&rules->models);
1345 XkbRF_ClearVarDescriptions(&rules->layouts);
1346 XkbRF_ClearVarDescriptions(&rules->variants);
1347 XkbRF_ClearVarDescriptions(&rules->options);
1348 if (rules->extra) {
1349 for (i = 0; i < rules->num_extra; i++) {
1350 XkbRF_ClearVarDescriptions(&rules->extra[i]);
1352 _XkbFree(rules->extra);
1353 rules->num_extra = rules->sz_extra = 0;
1354 rules->extra = NULL;
1356 if (rules->rules) {
1357 for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) {
1380 _XkbFree(rules->rules);
1381 rules->num_rules = rules->sz_rules = 0;
1382 rules->rules = NULL;
1385 if (rules->groups) {
1386 for (i = 0, group = rules->groups; i < rules->num_groups; i++, group++) {
1392 _XkbFree(rules->groups);
1393 rules->num_groups = 0;
1394 rules->groups = NULL;
1397 _XkbFree(rules);