mirror of
https://github.com/google/pebble.git
synced 2025-05-27 21:43:12 +00:00
Import of the watch repository from Pebble
This commit is contained in:
commit
3b92768480
10334 changed files with 2564465 additions and 0 deletions
98
tools/clar/clar_categorize.c
Normal file
98
tools/clar/clar_categorize.c
Normal file
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright 2024 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define CLAR_CATEGORY_DEFAULT "default"
|
||||
|
||||
typedef struct {
|
||||
const char **names;
|
||||
int count;
|
||||
int alloc;
|
||||
} clar_category_list;
|
||||
|
||||
static clar_category_list _clar_categorize_enabled;
|
||||
|
||||
static int clar_category_in_list(clar_category_list *list, const char *cat)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < list->count; ++i)
|
||||
if (strcasecmp(cat, list->names[i]) == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void clar_category_add_to_list(clar_category_list *list, const char *cat)
|
||||
{
|
||||
if (clar_category_in_list(list, cat))
|
||||
return;
|
||||
|
||||
if (list->count >= list->alloc) {
|
||||
list->alloc += 10;
|
||||
list->names = realloc(list->names, list->alloc * sizeof(const char *));
|
||||
}
|
||||
|
||||
list->names[list->count++] = cat;
|
||||
}
|
||||
|
||||
static void clar_category_enable(const char *category)
|
||||
{
|
||||
clar_category_add_to_list(&_clar_categorize_enabled, category);
|
||||
}
|
||||
|
||||
static void clar_category_enable_all(size_t suite_count, const struct clar_suite *suites)
|
||||
{
|
||||
size_t i;
|
||||
const char **cat;
|
||||
|
||||
clar_category_enable(CLAR_CATEGORY_DEFAULT);
|
||||
|
||||
for (i = 0; i < suite_count; i++)
|
||||
for (cat = suites[i].categories; cat && *cat; cat++)
|
||||
clar_category_enable(*cat);
|
||||
}
|
||||
|
||||
static int clar_category_cmp(const void *a, const void *b)
|
||||
{
|
||||
return - strcasecmp(a,b);
|
||||
}
|
||||
|
||||
static void clar_category_print_enabled(const char *prefix)
|
||||
{
|
||||
int i;
|
||||
|
||||
qsort(_clar_categorize_enabled.names, _clar_categorize_enabled.count,
|
||||
sizeof(const char *), clar_category_cmp);
|
||||
|
||||
for (i = 0; i < _clar_categorize_enabled.count; ++i)
|
||||
printf("%s%s\n", prefix, _clar_categorize_enabled.names[i]);
|
||||
}
|
||||
|
||||
static int clar_category_is_suite_enabled(const struct clar_suite *suite)
|
||||
{
|
||||
const char **scan;
|
||||
|
||||
if (!_clar_categorize_enabled.count)
|
||||
clar_category_enable(CLAR_CATEGORY_DEFAULT);
|
||||
|
||||
if (!suite->categories)
|
||||
return clar_category_in_list(
|
||||
&_clar_categorize_enabled, CLAR_CATEGORY_DEFAULT);
|
||||
|
||||
for (scan = suite->categories; *scan != NULL; scan++)
|
||||
if (clar_category_in_list(&_clar_categorize_enabled, *scan))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue