aboutsummaryrefslogtreecommitdiff
path: root/project/dclib
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--project/dclib/dclib-basics.c34
-rw-r--r--project/dclib/dclib-basics.h43
-rw-r--r--project/dclib/dclib-cli.c2
-rw-r--r--project/dclib/dclib-color.c2
-rw-r--r--project/dclib/dclib-color.h2
-rw-r--r--project/dclib/dclib-debug.c16
-rw-r--r--project/dclib/dclib-debug.h2
-rw-r--r--project/dclib/dclib-file.c2
-rw-r--r--project/dclib/dclib-file.h2
-rw-r--r--project/dclib/dclib-gen-ui.h2
-rw-r--r--project/dclib/dclib-gen-ui.inc2
-rw-r--r--project/dclib/dclib-mysql.c2
-rw-r--r--project/dclib/dclib-mysql.h2
-rw-r--r--project/dclib/dclib-network-linux.c2
-rw-r--r--project/dclib/dclib-network-linux.h2
-rw-r--r--project/dclib/dclib-network.c2
-rw-r--r--project/dclib/dclib-network.h2
-rw-r--r--project/dclib/dclib-numeric.c2
-rw-r--r--project/dclib/dclib-numeric.h2
-rw-r--r--project/dclib/dclib-option.c2
-rw-r--r--project/dclib/dclib-option.h2
-rw-r--r--project/dclib/dclib-parser.c2
-rw-r--r--project/dclib/dclib-parser.h2
-rw-r--r--project/dclib/dclib-punycode.c2
-rw-r--r--project/dclib/dclib-punycode.h2
-rw-r--r--project/dclib/dclib-regex.c2
-rw-r--r--project/dclib/dclib-regex.h2
-rw-r--r--project/dclib/dclib-shift-jis.c2
-rw-r--r--project/dclib/dclib-system.h2
-rw-r--r--project/dclib/dclib-tables.c2
-rw-r--r--project/dclib/dclib-types.h2
-rw-r--r--project/dclib/dclib-ui.c2
-rw-r--r--project/dclib/dclib-ui.h2
-rw-r--r--project/dclib/dclib-utf8.c2
-rw-r--r--project/dclib/dclib-utf8.h2
-rw-r--r--project/dclib/dclib-vector.c2
-rw-r--r--project/dclib/dclib-xdump.c2
-rw-r--r--project/dclib/dclib-xdump.h2
-rw-r--r--project/dclib/lib-bmg.c2
-rw-r--r--project/dclib/lib-bmg.h2
-rw-r--r--project/dclib/lib-dol.c2
-rw-r--r--project/dclib/lib-dol.h2
-rw-r--r--project/dclib/lib-mkw-def.c2
-rw-r--r--project/dclib/lib-mkw-def.h54
-rw-r--r--project/dclib/lib-mkw.c127
-rw-r--r--project/dclib/lib-mkw.h18
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 ///////////////
///////////////////////////////////////////////////////////////////////////////