diff options
| author | Wiimm <wiimm@wiimm.de> | 2023-01-14 08:17:36 +0100 |
|---|---|---|
| committer | Wiimm <wiimm@wiimm.de> | 2023-01-14 08:17:36 +0100 |
| commit | f978a965248a5a082d6801ef394bdebb55c78e4f (patch) | |
| tree | fcf73a3829d81be281361fbc34c19d0e4bf706b3 /project/dclib | |
| parent | 7d8344f3637d59b982c2ca0b1d8fd2889ec5d4a6 (diff) | |
SZS v2.33a
Diffstat (limited to 'project/dclib')
46 files changed, 304 insertions, 68 deletions
diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c index c1eabd9..5aede90 100644 --- a/project/dclib/dclib-basics.c +++ b/project/dclib/dclib-basics.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * @@ -6329,8 +6329,20 @@ const KeywordTab_t * ScanKeywordEx } /////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// // new keyword list interface +void InitializeKeyListParam ( KeyListParam_t *par ) +{ + DASSERT(klist); + memset(par,0,sizeof(*par)); + par->force_case = LOUP_UPPER; + par->allow_prefix = true; + par->err_code = ERR_SYNTAX; +} + +/////////////////////////////////////////////////////////////////////////////// + s64 ScanKeywordListP ( KeyListParam_t * par, // NULL or parameters and extended result @@ -6343,10 +6355,7 @@ s64 ScanKeywordListP KeyListParam_t localpar; if (!par) { - memset(&localpar,0,sizeof(localpar)); - localpar.force_case = LOUP_UPPER; - localpar.allow_prefix = true; - localpar.err_code = ERR_SYNTAX; + InitializeKeyListParam(&localpar); par = &localpar; } @@ -6382,6 +6391,15 @@ s64 ScanKeywordListP arg++; } + if (par->func_arg) + { + const int stat = par->func_arg(par,key,arg-key,key_tab); + if ( stat < 0 && !(par->err_mode & 1) ) + break; + if (stat) + continue; + } + int prefix = 0, abbrev_count; const KeywordTab_t * cptr = ScanKeywordEx(&abbrev_count,key,arg-key,par->force_case,key_tab); if ( !cptr && par->allow_prefix && key[1] @@ -6443,13 +6461,13 @@ s64 ScanKeywordListP break; } - if (par->func) + if (par->func_key) { - const int stat = par->func(key,arg-key,par,key_tab,cptr,prefix); + const int stat = par->func_key(par,key,arg-key,key_tab,cptr,prefix); if ( stat < 0 && !(par->err_mode & 1) ) break; if (stat) - prefix = 0; + continue; } switch (prefix) diff --git a/project/dclib/dclib-basics.h b/project/dclib/dclib-basics.h index f7cda91..3993f48 100644 --- a/project/dclib/dclib-basics.h +++ b/project/dclib/dclib-basics.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * @@ -997,7 +997,13 @@ static inline exmem_t ExMemCalloc ( int size ) static inline exmem_t ExMemDup ( cvp src, int size ) { char *data = MEMDUP(src,size); - exmem_t em = { .data={ data, size+1 }, .is_original=true, .is_alloced=true }; + exmem_t em = { .data={ data, size }, .is_original=true, .is_alloced=true }; + return em; +} + +static inline exmem_t ExMemMove ( cvp src, int size ) +{ + exmem_t em = { .data={ src, size }, .is_original=true, .is_alloced=true }; return em; } @@ -3471,16 +3477,32 @@ static inline const KeywordTab_t * ScanKeyword return ScanKeywordEx(res_abbrev,arg,-1,LOUP_UPPER,key_tab); } +// +/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // new keyword list interface typedef struct KeyListParam_t KeyListParam_t; -typedef int (*KeywordListFunc) +typedef int (*KeywordListFuncArg) ( + // return : -1:error + abort, 0:ignored, 1 processed + next_arg + // function must set 'par->valid' and 'par->result'. + + KeyListParam_t *par, // parameters and current result ccp name, // name of option as written uint name_len, // length of 'name' + const KeywordTab_t *key_tab // valid pointer to command table +); + +typedef int (*KeywordListFuncKey) +( + // return : -1:error + abort, 0:ignored, 1 processed + next_arg + // function must set 'par->valid' and 'par->result'. + KeyListParam_t *par, // parameters and current result + ccp name, // name of option as written + uint name_len, // length of 'name' const KeywordTab_t *key_tab, // valid pointer to command table const KeywordTab_t *key, // valid pointer to found command char prefix // 0 | '-' | '+' | '=' @@ -3494,9 +3516,11 @@ typedef struct KeyListParam_t bool allow_prefix; // allow '-' | '+' | '=' as prefix LowerUpper_t force_case; // change case of scanned arg if LOUP_LOWER|LOUP_UPPER - // call back funtion - KeywordListFunc func; // NULL or calculation function - void *user_param; // user defined parameter + // call back funtions, functions must set 'valid' and 'result'. + KeywordListFuncArg func_arg; // NULL or function with raw argument. + KeywordListFuncKey func_key; // NULL or function with normalized argument, + // called after successfull 'key_tab' scanning + const void *user_param; // user defined parameter // Scan for integer numbers, if min_number < max_number // special case: if min_number >= 0 && max_number < 0 && min_number < (u64)max_number, @@ -3521,6 +3545,11 @@ typedef struct KeyListParam_t KeyListParam_t; //----------------------------------------------------------------------------- +// interface + +// Initialize with standard values as alternative to: KeyListParam_t par = {0}; +// Same as: par = { .force_case = LOUP_UPPER, allow_prefix = true, err_code = ERR_SYNTAX }; +void InitializeKeyListParam ( KeyListParam_t *par ); s64 ScanKeywordListP ( @@ -6199,7 +6228,7 @@ int FindStringFieldIndex ( const StringField_t * sf, ccp key, int not_found_valu ccp FindStringField ( const StringField_t * sf, ccp key ); // return: true if item inserted/deleted -bool InsertStringField ( StringField_t * sf, ccp key, bool move_key ); +bool InsertStringField ( StringField_t * sf, ccp key, bool move_key ); bool RemoveStringField ( StringField_t * sf, ccp key ); uint RemoveStringFieldByIndex ( StringField_t * sf, int index, int n ); diff --git a/project/dclib/dclib-cli.c b/project/dclib/dclib-cli.c index c4a5664..f4a8e3b 100644 --- a/project/dclib/dclib-cli.c +++ b/project/dclib/dclib-cli.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-color.c b/project/dclib/dclib-color.c index 05e7b67..43e4020 100644 --- a/project/dclib/dclib-color.c +++ b/project/dclib/dclib-color.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-color.h b/project/dclib/dclib-color.h index e36a9fe..d3e349a 100644 --- a/project/dclib/dclib-color.h +++ b/project/dclib/dclib-color.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-debug.c b/project/dclib/dclib-debug.c index ed3a2d1..a5d978f 100644 --- a/project/dclib/dclib-debug.c +++ b/project/dclib/dclib-debug.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * @@ -1100,7 +1100,7 @@ void * dclib_realloc ( MPARAM void * ptr, size_t size ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * dclib_strdup ( MPARAM ccp src ) +char * dclib_strdup ( MPARAM ccp src ) { char * res = strdup(src?src:""); if (!res) @@ -1331,7 +1331,7 @@ static void MemLogItem if (func) fprintf(stderr,"MEM-ERR[%s] %s() @ %s#%u\n", info, func, file, line ); - fprintf(stderr,"MEM-ERR[%s,%u] %s() @ %s#%u\n", + fprintf(stderr,"MEM-ERR[%s,%07u] %s() @ %s#%u\n", info, mi->seqnum, mi->func, mi->file, mi->line ); fflush(stderr); @@ -1340,13 +1340,13 @@ static void MemLogItem if (func) fprintf(MEM_LOG_FILE,"[%s] %s() @ %s#%u\n", info, func, file, line ); - fprintf(MEM_LOG_FILE,"[%s,%u] %s() @ %s#%u\n", + fprintf(MEM_LOG_FILE,"[%s,%07u] %s() @ %s#%u\n", info, mi->seqnum, mi->func, mi->file, mi->line ); if (mi->filler) { - HexDump16( MEM_LOG_FILE, 10, 0, + HexDump( MEM_LOG_FILE, 8, 0, 7, 16, mi->data - MEM_FILLER_SIZE, 2*MEM_FILLER_SIZE ); - HexDump16( MEM_LOG_FILE, 10, mi->size + MEM_FILLER_SIZE, + HexDump( MEM_LOG_FILE, 8, mi->size + MEM_FILLER_SIZE, 7, 16, mi->data + mi->size - MEM_FILLER_SIZE, 2 * MEM_FILLER_SIZE ); } fputc('\n',MEM_LOG_FILE); @@ -1431,8 +1431,8 @@ int CheckTraceAlloc ( ccp func, ccp file, uint line ) if (count) { - fprintf(stderr,"MEM-ERR: %u errors found -> %s() @ %s#%u\n", - count, func, file, line ); + fprintf(stderr,"MEM-ERR: %u error%s found -> %s() @ %s#%u\n", + count, count == 1 ? "" : "s", func, file, line ); fflush(stderr); if (OpenMemLog()) diff --git a/project/dclib/dclib-debug.h b/project/dclib/dclib-debug.h index 639670d..7328770 100644 --- a/project/dclib/dclib-debug.h +++ b/project/dclib/dclib-debug.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-file.c b/project/dclib/dclib-file.c index 24975e3..f075847 100644 --- a/project/dclib/dclib-file.c +++ b/project/dclib/dclib-file.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-file.h b/project/dclib/dclib-file.h index 9d37f0e..8215583 100644 --- a/project/dclib/dclib-file.h +++ b/project/dclib/dclib-file.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-gen-ui.h b/project/dclib/dclib-gen-ui.h index ed97cd4..bb3c57f 100644 --- a/project/dclib/dclib-gen-ui.h +++ b/project/dclib/dclib-gen-ui.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-gen-ui.inc b/project/dclib/dclib-gen-ui.inc index 0ac5694..a9aa0fd 100644 --- a/project/dclib/dclib-gen-ui.inc +++ b/project/dclib/dclib-gen-ui.inc @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-mysql.c b/project/dclib/dclib-mysql.c index e83838a..f2ad833 100644 --- a/project/dclib/dclib-mysql.c +++ b/project/dclib/dclib-mysql.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-mysql.h b/project/dclib/dclib-mysql.h index 8ae7e2c..208eac5 100644 --- a/project/dclib/dclib-mysql.h +++ b/project/dclib/dclib-mysql.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-network-linux.c b/project/dclib/dclib-network-linux.c index dc6c32b..d89365f 100644 --- a/project/dclib/dclib-network-linux.c +++ b/project/dclib/dclib-network-linux.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-network-linux.h b/project/dclib/dclib-network-linux.h index 1760bde..5d3ba43 100644 --- a/project/dclib/dclib-network-linux.h +++ b/project/dclib/dclib-network-linux.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-network.c b/project/dclib/dclib-network.c index adfa7c9..8593e49 100644 --- a/project/dclib/dclib-network.c +++ b/project/dclib/dclib-network.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-network.h b/project/dclib/dclib-network.h index b42cb5c..6dd0b34 100644 --- a/project/dclib/dclib-network.h +++ b/project/dclib/dclib-network.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-numeric.c b/project/dclib/dclib-numeric.c index e26376b..51a8bce 100644 --- a/project/dclib/dclib-numeric.c +++ b/project/dclib/dclib-numeric.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-numeric.h b/project/dclib/dclib-numeric.h index 8cca5a9..848b19b 100644 --- a/project/dclib/dclib-numeric.h +++ b/project/dclib/dclib-numeric.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-option.c b/project/dclib/dclib-option.c index ae7e3a8..6cc6a3a 100644 --- a/project/dclib/dclib-option.c +++ b/project/dclib/dclib-option.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-option.h b/project/dclib/dclib-option.h index 98fdb9c..d5f48fd 100644 --- a/project/dclib/dclib-option.h +++ b/project/dclib/dclib-option.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-parser.c b/project/dclib/dclib-parser.c index 2391cbc..b64914f 100644 --- a/project/dclib/dclib-parser.c +++ b/project/dclib/dclib-parser.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-parser.h b/project/dclib/dclib-parser.h index b7fa301..e9a4830 100644 --- a/project/dclib/dclib-parser.h +++ b/project/dclib/dclib-parser.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-punycode.c b/project/dclib/dclib-punycode.c index 691ebfe..7a022b7 100644 --- a/project/dclib/dclib-punycode.c +++ b/project/dclib/dclib-punycode.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-punycode.h b/project/dclib/dclib-punycode.h index b859223..9217cca 100644 --- a/project/dclib/dclib-punycode.h +++ b/project/dclib/dclib-punycode.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-regex.c b/project/dclib/dclib-regex.c index 3ee51bf..75f18e7 100644 --- a/project/dclib/dclib-regex.c +++ b/project/dclib/dclib-regex.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-regex.h b/project/dclib/dclib-regex.h index d314b63..0995eb7 100644 --- a/project/dclib/dclib-regex.h +++ b/project/dclib/dclib-regex.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-shift-jis.c b/project/dclib/dclib-shift-jis.c index affb167..e442fc7 100644 --- a/project/dclib/dclib-shift-jis.c +++ b/project/dclib/dclib-shift-jis.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-system.h b/project/dclib/dclib-system.h index aa518c4..19fe6fe 100644 --- a/project/dclib/dclib-system.h +++ b/project/dclib/dclib-system.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-tables.c b/project/dclib/dclib-tables.c index 32948fd..9395169 100644 --- a/project/dclib/dclib-tables.c +++ b/project/dclib/dclib-tables.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-types.h b/project/dclib/dclib-types.h index 1cea28e..d8fde33 100644 --- a/project/dclib/dclib-types.h +++ b/project/dclib/dclib-types.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-ui.c b/project/dclib/dclib-ui.c index 6a01793..ea1bcda 100644 --- a/project/dclib/dclib-ui.c +++ b/project/dclib/dclib-ui.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-ui.h b/project/dclib/dclib-ui.h index cc7f327..219e942 100644 --- a/project/dclib/dclib-ui.h +++ b/project/dclib/dclib-ui.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-utf8.c b/project/dclib/dclib-utf8.c index e998ac7..da82dff 100644 --- a/project/dclib/dclib-utf8.c +++ b/project/dclib/dclib-utf8.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-utf8.h b/project/dclib/dclib-utf8.h index 86556c5..ae1d75e 100644 --- a/project/dclib/dclib-utf8.h +++ b/project/dclib/dclib-utf8.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-vector.c b/project/dclib/dclib-vector.c index 378fa82..c9eb91a 100644 --- a/project/dclib/dclib-vector.c +++ b/project/dclib/dclib-vector.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-xdump.c b/project/dclib/dclib-xdump.c index 485c689..b43770d 100644 --- a/project/dclib/dclib-xdump.c +++ b/project/dclib/dclib-xdump.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/dclib-xdump.h b/project/dclib/dclib-xdump.h index 0cf9938..545e720 100644 --- a/project/dclib/dclib-xdump.h +++ b/project/dclib/dclib-xdump.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/lib-bmg.c b/project/dclib/lib-bmg.c index b7d0525..ce1b3ac 100644 --- a/project/dclib/lib-bmg.c +++ b/project/dclib/lib-bmg.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/lib-bmg.h b/project/dclib/lib-bmg.h index 7606b09..3002618 100644 --- a/project/dclib/lib-bmg.h +++ b/project/dclib/lib-bmg.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/lib-dol.c b/project/dclib/lib-dol.c index 94b73bb..2f322f7 100644 --- a/project/dclib/lib-dol.c +++ b/project/dclib/lib-dol.c @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/lib-dol.h b/project/dclib/lib-dol.h index c1d8b7b..6637a2e 100644 --- a/project/dclib/lib-dol.h +++ b/project/dclib/lib-dol.h @@ -14,7 +14,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * diff --git a/project/dclib/lib-mkw-def.c b/project/dclib/lib-mkw-def.c index 24489ee..4a4277c 100644 --- a/project/dclib/lib-mkw-def.c +++ b/project/dclib/lib-mkw-def.c @@ -11,7 +11,7 @@ * * * A library by Dirk Clemens * * * - * Copyright (c) 2014-2022 by Dirk Clemens <develop@cle-mens.de> * + * Copyright (c) 2014-2023 by Dirk Clemens <develop@cle-mens.de> * * * ************************************************************************ * * diff --git a/project/dclib/lib-mkw-def.h b/project/dclib/lib-mkw-def.h index a699197..18045bd 100644 --- a/project/dclib/lib-mkw-def.h +++ b/project/dclib/lib-mkw-def.h @@ -11,7 +11,7 @@ * * * A library by Dirk Clemens * * * - * Copyright (c) 2014-2022 by Dirk Clemens <develop@cle-mens.de> * + * Copyright (c) 2014-2023 by Dirk Clemens <develop@cle-mens.de> * * * ************************************************************************ * * @@ -145,6 +145,58 @@ DistribFlags_t; // /////////////////////////////////////////////////////////////////////////////// +///////////////////////////// Track Class Index /////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +// [[TrackClassIndex_t]] +typedef enum TrackClassIndex_t +{ + G_TCLSI_UNKNOWN = 0, + G_TCLSI_PRIVATE = 1, // P: marked as private + G_TCLSI_TEST = 2, // T: marked as test + G_TCLSI_BAD = 3, // B: marked as bad + G_TCLSI_FAIL = 4, // F: marked as fail + G_TCLSI_FREEZE = 5, // Z: marked as freeze + G_TCLSI_STOCK = 6, // K: part of stock + G_TCLSI_SELECT = 7, // S: selected track + G_TCLSI_NINTENDO = 8, // N: original Nintendo track + G_TCLSI_BOOST = 9, // O: boost track + G_TCLSI_INCOME = 10, // I: new track, not evaluated yet + G_TCLSI_WAIT = 11, // W: new track, not evaluated yet, have to wait until support + G_TCLSI__N = 12, +} +__attribute__ ((packed)) TrackClassIndex_t; + +#define DB_TRACK_CLASS_INDEX_TYPE "tinyint unsigned" + +// +/////////////////////////////////////////////////////////////////////////////// +//////////////////////////////// Track Class ////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +// [[TrackClass_t]] +typedef enum TrackClass_t +{ + G_TCLS_UNKNOWN = 0x0000, // u: unknown at all + G_TCLS_PRIVATE = 0x0002, // P: marked as private + G_TCLS_TEST = 0x0004, // T: marked as test + G_TCLS_BAD = 0x0008, // B: marked as bad + G_TCLS_FAIL = 0x0010, // F: marked as fail + G_TCLS_FREEZE = 0x0020, // Z: marked as freeze + G_TCLS_STOCK = 0x0040, // K: part of stock + G_TCLS_SELECT = 0x0080, // S: selected track + G_TCLS_NINTENDO = 0x0100, // N: original Nintendo track + G_TCLS_BOOST = 0x0200, // O: boost track + G_TCLS_INCOME = 0x0400, // I: new track, not evaluated yet + G_TCLS_WAIT = 0x0800, // W: new track, not evaluated yet, have to wait until support + G_TCLS__ALL = 0x0fff, +} +__attribute__ ((packed)) TrackClass_t; + +#define DB_TRACK_CLASS_TYPE "smallint unsigned" + +// +/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// misc ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// diff --git a/project/dclib/lib-mkw.c b/project/dclib/lib-mkw.c index 610e0d1..5213e72 100644 --- a/project/dclib/lib-mkw.c +++ b/project/dclib/lib-mkw.c @@ -15,7 +15,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * @@ -1517,6 +1517,131 @@ ccp PrintDTA ( DistribFlags_t flags, bool aligned ) // /////////////////////////////////////////////////////////////////////////////// +/////////////// track class /////////////// +/////////////////////////////////////////////////////////////////////////////// + +TrackClass_t ScanTrackClass ( ccp text, int text_len ) +{ + TrackClass_t res = 0; + if (text) + { + ccp end = text + ( text_len < 0 ? strlen(text) : text_len ); + while ( text < end ) + { + const int ch = tolower(*text++); + switch (ch) + { + case 'p': res |= G_TCLS_PRIVATE; break; + case 't': res |= G_TCLS_TEST; break; + case 'b': res |= G_TCLS_BAD; break; + case 'f': res |= G_TCLS_FAIL; break; + case 'z': res |= G_TCLS_FREEZE; break; + case 'k': res |= G_TCLS_STOCK; break; + case 's': res |= G_TCLS_SELECT; break; + case 'n': res |= G_TCLS_NINTENDO; break; + case 'o': res |= G_TCLS_BOOST; break; + case 'i': res |= G_TCLS_INCOME; break; + case 'w': res |= G_TCLS_WAIT; break; + } + } +PRINT0("%04x <= %.*s\n",res,text_len,text-text_len); + } + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + +ccp PrintTrackClass ( TrackClass_t flags, bool aligned ) +{ + char *buf = GetCircBuf(12); + + if (aligned) + { + buf[ 0] = flags & G_TCLS_PRIVATE ? 'P' : '-'; + buf[ 1] = flags & G_TCLS_TEST ? 'T' : '-'; + buf[ 2] = flags & G_TCLS_BAD ? 'B' : '-'; + buf[ 3] = flags & G_TCLS_FAIL ? 'F' : '-'; + buf[ 4] = flags & G_TCLS_FREEZE ? 'Z' : '-'; + buf[ 5] = flags & G_TCLS_STOCK ? 'K' : '-'; + buf[ 6] = flags & G_TCLS_SELECT ? 'S' : '-'; + buf[ 7] = flags & G_TCLS_NINTENDO ? 'N' : '-'; + buf[ 8] = flags & G_TCLS_BOOST ? 'O' : '-'; + buf[ 9] = flags & G_TCLS_INCOME ? 'I' : '-'; + buf[10] = flags & G_TCLS_WAIT ? 'W' : '-'; + buf[11] = 0; + } + else + { + char *d = buf; + if ( flags & G_TCLS_PRIVATE ) *d++ = 'P'; + if ( flags & G_TCLS_TEST ) *d++ = 'T'; + if ( flags & G_TCLS_BAD ) *d++ = 'B'; + if ( flags & G_TCLS_FAIL ) *d++ = 'F'; + if ( flags & G_TCLS_FREEZE ) *d++ = 'Z'; + if ( flags & G_TCLS_STOCK ) *d++ = 'K'; + if ( flags & G_TCLS_SELECT ) *d++ = 'S'; + if ( flags & G_TCLS_NINTENDO ) *d++ = 'N'; + if ( flags & G_TCLS_BOOST ) *d++ = 'O'; + if ( flags & G_TCLS_INCOME ) *d++ = 'I'; + if ( flags & G_TCLS_WAIT ) *d++ = 'W'; + if ( d == buf ) + *d++ = '-'; + *d = 0; + } + return buf; +} + +/////////////////////////////////////////////////////////////////////////////// + +TrackClassIndex_t GetTrackClassIndex ( TrackClass_t flags ) +{ + static const TrackClassIndex_t tab[] = + { + G_TCLSI_INCOME, + G_TCLSI_WAIT, + G_TCLSI_PRIVATE, + G_TCLSI_TEST, + G_TCLSI_FREEZE, + G_TCLSI_FAIL, + G_TCLSI_BAD, + G_TCLSI_NINTENDO, + G_TCLSI_SELECT, + G_TCLSI_BOOST, + G_TCLSI_STOCK, + 0, + }; + + for ( const TrackClassIndex_t *ptr = tab; *ptr; ptr++ ) + if ( 1 << *ptr & flags ) + return *ptr; + + return 0; +} +/////////////////////////////////////////////////////////////////////////////// + +ccp GetTrackClassName ( TrackClassIndex_t idx, ccp return_on_none ) +{ + static const char tab[G_TCLSI__N][9] = + { + "UNKNOWN", + "PRIVATE", + "TEST", + "BAD", + "FAIL", + "FREEZE", + "STOCK", + "SELECT", + "NINTENDO", + "BOOST", + "INCOME", + "WAIT", + }; + + return (uint)idx < G_TCLSI__N ? tab[idx] : return_on_none; +} + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// random slots /////////////// /////////////////////////////////////////////////////////////////////////////// diff --git a/project/dclib/lib-mkw.h b/project/dclib/lib-mkw.h index b3179df..71ef140 100644 --- a/project/dclib/lib-mkw.h +++ b/project/dclib/lib-mkw.h @@ -15,7 +15,7 @@ * * *************************************************************************** * * - * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> * + * Copyright (c) 2012-2023 by Dirk Clemens <wiimm@wiimm.de> * * * *************************************************************************** * * @@ -484,14 +484,26 @@ typedef ccp (*PrintLEFL_func) ( le_flags_t flags, bool aligned ); static inline PrintLEFL_func GetPrintLEFL ( uint flags_bits ) { return flags_bits == 16 ? PrintLEFL16 : PrintLEFL8; } -//----------------------------------------------------------------------------- -// distrib flags (G_DTA_*) +// +/////////////////////////////////////////////////////////////////////////////// +/////////////// distribution flags /////////////// +/////////////////////////////////////////////////////////////////////////////// DistribFlags_t ScanDTA ( ccp text ); ccp PrintDTA ( DistribFlags_t flags, bool aligned ); // /////////////////////////////////////////////////////////////////////////////// +/////////////// track class /////////////// +/////////////////////////////////////////////////////////////////////////////// + +TrackClass_t ScanTrackClass ( ccp text, int text_len ); +ccp PrintTrackClass ( TrackClass_t flags, bool aligned ); +TrackClassIndex_t GetTrackClassIndex ( TrackClass_t flags ); +ccp GetTrackClassName ( TrackClassIndex_t idx, ccp return_on_none ); + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// END /////////////// /////////////////////////////////////////////////////////////////////////////// |
