touched up qse_task_t

This commit is contained in:
hyung-hwan 2012-10-15 09:36:39 +00:00
parent 55ee23a255
commit b907296f4a
48 changed files with 1054 additions and 663 deletions

View File

@ -17,6 +17,7 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with QSE. If not, see <http://www.gnu.org/licenses/>. License along with QSE. If not, see <http://www.gnu.org/licenses/>.
*/ */
#if 0
#include <qse/sed/std.h> #include <qse/sed/std.h>
#include <qse/cmn/str.h> #include <qse/cmn/str.h>
@ -1037,3 +1038,6 @@ int qse_main (int argc, qse_achar_t* argv[])
return qse_runmain (argc, argv, sed_main); return qse_runmain (argc, argv, sed_main);
} }
#endif
#include "../../samples/cmn/task01.c"

8
qse/configure vendored
View File

@ -18587,13 +18587,13 @@ fi
if test "$enable_debug_is" = "yes" if test "$enable_debug_is" = "yes"
then then
CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG" CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG -U_FORTIFY_SOURCE"
CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG" CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG -U_FORTIFY_SOURCE"
BUILD_MODE="debug" BUILD_MODE="debug"
else else
CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE" CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE -U_FORTIFY_SOURCE"
CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE" CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE -U_FORTIFY_SOURCE"
BUILD_MODE="release" BUILD_MODE="release"
fi fi

View File

@ -332,12 +332,12 @@ AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],[build the library in th
enable_debug_is=$enableval,enable_debug_is=no) enable_debug_is=$enableval,enable_debug_is=no)
if test "$enable_debug_is" = "yes" if test "$enable_debug_is" = "yes"
then then
[CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG"] [CFLAGS="$CFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG -U_FORTIFY_SOURCE"]
[CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG"] [CXXFLAGS="$CXXFLAGS -g -D_DEBUG -UNDEBUG -DQSE_BUILD_DEBUG -U_FORTIFY_SOURCE"]
AC_SUBST(BUILD_MODE, "debug") AC_SUBST(BUILD_MODE, "debug")
else else
[CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE"] [CFLAGS="$CFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE -U_FORTIFY_SOURCE"]
[CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE"] [CXXFLAGS="$CXXFLAGS -DNDEBUG -U_DEBUG -DQSE_BUILD_RELEASE -U_FORTIFY_SOURCE"]
AC_SUBST(BUILD_MODE, "release") AC_SUBST(BUILD_MODE, "release")
fi fi

View File

@ -24,28 +24,55 @@
#include <qse/types.h> #include <qse/types.h>
#include <qse/macros.h> #include <qse/macros.h>
typedef void (*qse_task_fnc_t) (void* ctx);
typedef struct qse_task_t qse_task_t; typedef struct qse_task_t qse_task_t;
typedef struct qse_task_slice_t qse_task_slice_t;
typedef qse_task_slice_t* (*qse_task_fnc_t) (
qse_task_t* task,
qse_task_slice_t* slice,
void* ctx
);
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
int qse_gettaskid ( qse_task_t* qse_task_open (
qse_mmgr_t* mmgr,
qse_size_t xtnsize
);
void qse_task_close (
qse_task_t* task qse_task_t* task
); );
qse_task_t* qse_maketask ( qse_mmgr_t* qse_task_getmmgr (
qse_task_t* task
);
void* qse_task_getxtn (
qse_task_t* task
);
qse_task_slice_t* qse_task_create (
qse_task_t* task,
qse_task_fnc_t fnc, qse_task_fnc_t fnc,
void* ctx, void* ctx,
qse_size_t stsize qse_size_t stksize
); );
int qse_task_boot ( int qse_task_boot (
void qse_task_t* task,
qse_task_slice_t* to
); );
void qse_task_schedule (
qse_task_t* task,
qse_task_slice_t* from,
qse_task_slice_t* to
);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -105,15 +105,14 @@
* The QSE_OFFSETOF() macro returns the offset of a field from the beginning * The QSE_OFFSETOF() macro returns the offset of a field from the beginning
* of a structure. * of a structure.
*/ */
#define QSE_OFFSETOF(type,member) \ #define QSE_OFFSETOF(type,member) ((qse_size_t)&((type*)0)->member)
((qse_size_t)&((type*)0)->member)
/** /**
* The QSE_ALIGNOF() macro returns the alignment size of a structure. * The QSE_ALIGNOF() macro returns the alignment size of a structure.
* Note that this macro may not work reliably depending on the type given. * Note that this macro may not work reliably depending on the type given.
*/ */
#define QSE_ALIGNOF(type) QSE_OFFSETOF(struct { qse_uint8_t d1; type d2 }, d2) #define QSE_ALIGNOF(type) QSE_OFFSETOF(struct { qse_uint8_t d1; type d2; }, d2)
/*(sizeof(struct { qse_uint8_t d1; type d2 }) - sizeof(type))*/ /*(sizeof(struct { qse_uint8_t d1; type d2; }) - sizeof(type))*/
/** /**
* The QSE_TYPE_IS_SIGNED() macro determines if a type is signed. * The QSE_TYPE_IS_SIGNED() macro determines if a type is signed.

View File

@ -1244,15 +1244,21 @@ qse_long_t qse_awk_rtx_hashval (qse_awk_rtx_t* rtx, qse_awk_val_t* v)
case QSE_AWK_VAL_INT: case QSE_AWK_VAL_INT:
/*hv = ((qse_awk_val_int_t*)v)->val;*/ /*hv = ((qse_awk_val_int_t*)v)->val;*/
hv = (qse_long_t)hash (&((qse_awk_val_int_t*)v)->val, QSE_SIZEOF(((qse_awk_val_int_t*)v)->val)); hv = (qse_long_t)hash (
(qse_uint8_t*)&((qse_awk_val_int_t*)v)->val,
QSE_SIZEOF(((qse_awk_val_int_t*)v)->val));
break; break;
case QSE_AWK_VAL_FLT: case QSE_AWK_VAL_FLT:
hv = (qse_long_t)hash (&((qse_awk_val_flt_t*)v)->val, QSE_SIZEOF(((qse_awk_val_flt_t*)v)->val)); hv = (qse_long_t)hash (
(qse_uint8_t*)&((qse_awk_val_flt_t*)v)->val,
QSE_SIZEOF(((qse_awk_val_flt_t*)v)->val));
break; break;
case QSE_AWK_VAL_STR: case QSE_AWK_VAL_STR:
hv = (qse_long_t)hash (((qse_awk_val_str_t*)v)->val.ptr, ((qse_awk_val_str_t*)v)->val.len * QSE_SIZEOF(qse_char_t)); hv = (qse_long_t)hash (
(qse_uint8_t*)((qse_awk_val_str_t*)v)->val.ptr,
((qse_awk_val_str_t*)v)->val.len * QSE_SIZEOF(qse_char_t));
break; break;
default: default:

View File

@ -31,38 +31,36 @@ int qse_runmain (
return handler (argc, (qse_char_t**)argv); return handler (argc, (qse_char_t**)argv);
#else #else
int i, ret;
qse_char_t** v;
qse_mmgr_t* mmgr = QSE_MMGR_GETDFL ();
v = (qse_char_t**) QSE_MMGR_ALLOC (
mmgr, (argc + 1) * QSE_SIZEOF(qse_char_t*));
if (v == QSE_NULL) return -1;
for (i = 0; i < argc + 1; i++) v[i] = QSE_NULL;
for (i = 0; i < argc; i++)
{ {
int i, ret; v[i]= qse_mbstowcsalldup (argv[i], mmgr);
qse_char_t** v; if (v[i] == QSE_NULL)
qse_mmgr_t* mmgr = QSE_MMGR_GETDFL ();
v = (qse_char_t**) QSE_MMGR_ALLOC (
mmgr, (argc + 1) * QSE_SIZEOF(qse_char_t*));
if (v == QSE_NULL) return -1;
for (i = 0; i < argc + 1; i++) v[i] = QSE_NULL;
for (i = 0; i < argc; i++)
{ {
v[i]= qse_mbstowcsalldup (argv[i], mmgr); ret = -1;
if (v[i] == QSE_NULL) goto oops;
{
ret = -1;
goto oops;
}
} }
ret = handler (argc, v);
oops:
for (i = 0; i < argc + 1; i++)
{
if (v[i] != QSE_NULL) QSE_MMGR_FREE (mmgr, v[i]);
}
QSE_MMGR_FREE (mmgr, v);
return ret;
} }
ret = handler (argc, v);
oops:
for (i = 0; i < argc + 1; i++)
{
if (v[i] != QSE_NULL) QSE_MMGR_FREE (mmgr, v[i]);
}
QSE_MMGR_FREE (mmgr, v);
return ret;
#endif #endif
} }
@ -72,50 +70,47 @@ int qse_runmainwithenv (
{ {
#if (defined(QSE_ACHAR_IS_MCHAR) && defined(QSE_CHAR_IS_MCHAR)) || \ #if (defined(QSE_ACHAR_IS_MCHAR) && defined(QSE_CHAR_IS_MCHAR)) || \
(defined(QSE_ACHAR_IS_WCHAR) && defined(QSE_CHAR_IS_WCHAR)) (defined(QSE_ACHAR_IS_WCHAR) && defined(QSE_CHAR_IS_WCHAR))
{ return handler (argc, (qse_char_t**)argv, (qse_char_t**)envp);
return handler (argc, (qse_char_t**)argv, (qse_char_t**)envp);
}
#else #else
int i, ret, envc;
qse_char_t** v;
qse_mmgr_t* mmgr = QSE_MMGR_GETDFL ();
if (envp) for (envc = 0; envp[envc]; envc++) ; /* count the number of env items */
else envc = 0;
v = (qse_char_t**) QSE_MMGR_ALLOC (
mmgr, (argc + 1 + envc + 1) * QSE_SIZEOF(qse_char_t*));
if (v == QSE_NULL) return -1;
for (i = 0; i < argc + 1 + envc + 1; i++) v[i] = QSE_NULL;
for (i = 0; i < argc + 1 + envc; i++)
{ {
int i, ret, envc; qse_achar_t* x;
qse_char_t** v;
qse_mmgr_t* mmgr = QSE_MMGR_GETDFL ();
for (envc = 0; envp[envc]; envc++) ; /* count the number of env items */ if (i < argc) x = argv[i];
else if (i == argc) continue;
else x = envp[i - argc - 1];
v = (qse_char_t**) QSE_MMGR_ALLOC ( v[i]= qse_mbstowcsalldup (x, mmgr);
mmgr, (argc + 1 + envc + 1) * QSE_SIZEOF(qse_char_t*)); if (v[i] == QSE_NULL)
if (v == QSE_NULL) return -1;
for (i = 0; i < argc + 1 + envc + 1; i++) v[i] = QSE_NULL;
for (i = 0; i < argc + 1 + envc; i++)
{ {
qse_achar_t* x; ret = -1;
goto oops;
if (i < argc) x = argv[i];
else if (i == argc) continue;
else x = envp[i - argc - 1];
v[i]= qse_mbstowcsalldup (x, mmgr);
if (v[i] == QSE_NULL)
{
ret = -1;
goto oops;
}
} }
ret = handler (argc, v, &v[argc + 1]);
oops:
for (i = 0; i < argc + 1 + envc + 1; i++)
{
if (v[i] != QSE_NULL) QSE_MMGR_FREE (mmgr, v[i]);
}
QSE_MMGR_FREE (mmgr, v);
return ret;
} }
ret = handler (argc, v, &v[argc + 1]);
oops:
for (i = 0; i < argc + 1 + envc + 1; i++)
{
if (v[i] != QSE_NULL) QSE_MMGR_FREE (mmgr, v[i]);
}
QSE_MMGR_FREE (mmgr, v);
return ret;
#endif #endif
} }

View File

@ -19,250 +19,254 @@
*/ */
#include <qse/cmn/task.h> #include <qse/cmn/task.h>
#include "mem.h"
#if defined(_WIN64) #if defined(_WIN64)
# include <windows.h> # include <windows.h>
#else #else
# include <setjmp.h>
# if defined(HAVE_UCONTEXT_H) # if defined(HAVE_UCONTEXT_H)
# include <ucontext.h> # include <ucontext.h>
# endif # endif
# include <setjmp.h> # if defined(HAVE_MAKECONTEXT) && defined(HAVE_SWAPCONTEXT) && \
defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
# define USE_UCONTEXT
# endif
#endif #endif
typedef struct tmgr_t tmgr_t; struct qse_task_t
struct tmgr_t
{ {
int count; qse_mmgr_t* mmgr;
int idinc;
qse_task_t* dead; qse_task_slice_t* dead;
qse_task_t* current; qse_task_slice_t* current;
qse_task_t* head;
qse_task_t* tail; qse_size_t count;
qse_task_slice_t* head;
qse_task_slice_t* tail;
#if defined(_WIN64) #if defined(_WIN64)
void* fiber; void* fiber;
#elif defined(HAVE_SWAPCONTEXT) #elif defined(USE_UCONTEXT)
ucontext_t uctx; ucontext_t uctx;
#else #else
jmp_buf backjmp; jmp_buf backjmp;
#endif #endif
}; };
struct qse_task_t struct qse_task_slice_t
{ {
/* queue */
tmgr_t* tmgr;
int id;
qse_task_fnc_t fnc;
void* ctx;
qse_size_t stsize;
#if defined(_WIN64) #if defined(_WIN64)
void* fiber; void* fiber;
#elif defined(HAVE_SWAPCONTEXT) #elif defined(USE_UCONTEXT)
ucontext_t uctx; ucontext_t uctx;
#else #else
jmp_buf jmpbuf; jmp_buf jmpbuf;
#endif #endif
qse_task_t* prev; qse_task_t* task;
qse_task_t* next;
int id;
qse_task_fnc_t fnc;
void* ctx;
qse_size_t stksize;
qse_task_slice_t* prev;
qse_task_slice_t* next;
}; };
static tmgr_t* tmgr; int qse_task_init (qse_task_t* task, qse_mmgr_t* mmgr);
void qse_task_fini (qse_task_t* task);
qse_task_t* qse_task_alloc (qse_task_fnc_t fnc, void* ctx, qse_size_t stsize) static void purge_slice (qse_task_t* task, qse_task_slice_t* slice);
static void purge_dead_slices (qse_task_t* task);
static void purge_current_slice (qse_task_slice_t* slice, qse_task_slice_t* to);
qse_task_t* qse_task_open (qse_mmgr_t* mmgr, qse_size_t xtnsize)
{ {
qse_task_t* task; qse_task_t* task;
task = malloc (QSE_SIZEOF(*task) + stsize); task = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(*task) + xtnsize);
if (task == QSE_NULL) return QSE_NULL; if (task == QSE_NULL) return QSE_NULL;
//QSE_MEMSET (task, 0, QSE_SIZEOF(*task)); if (qse_task_init (task, mmgr) <= -1)
QSE_MEMSET (task, 0, QSE_SIZEOF(*task) + stsize);
task->tmgr = tmgr;
task->fnc = fnc;
task->ctx = ctx;
task->stsize = stsize;
if (tmgr->head)
{ {
task->next= tmgr->head; QSE_MMGR_FREE (task->mmgr, task);
tmgr->head->prev = task; return QSE_NULL;
tmgr->head = task;
}
else
{
tmgr->head = task;
tmgr->tail = task;
} }
task->id = tmgr->idinc; QSE_MEMSET (task + 1, 0, xtnsize);
tmgr->count++;
tmgr->idinc++;
return task; return task;
} }
static void purge_dead_tasks (void) void qse_task_close (qse_task_t* task)
{ {
qse_task_t* x; qse_task_fini (task);
QSE_MMGR_FREE (task->mmgr, task);
}
while (tmgr->dead) int qse_task_init (qse_task_t* task, qse_mmgr_t* mmgr)
{
QSE_MEMSET (task, 0, QSE_SIZEOF(*task));
task->mmgr = mmgr;
return 0;
}
void qse_task_fini (qse_task_t* task)
{
QSE_ASSERT (task->dead == QSE_NULL);
QSE_ASSERT (task->current == QSE_NULL);
if (task->count > 0)
{ {
x = tmgr->dead; /* am i closing after boot failure? */
tmgr->dead = x->next; qse_task_slice_t* slice, * next;
#if defined(_WIN64)
DeleteFiber (x->fiber); slice = task->head;
#endif while (slice)
free (x); {
next = slice->next;
purge_slice (task, slice);
slice = next;
}
task->count = 0;
task->head = QSE_NULL;
task->tail = QSE_NULL;
} }
} }
void qse_task_schedule (void) qse_mmgr_t* qse_task_getmmgr (qse_task_t* task)
{ {
qse_task_t* current; return task->mmgr;
current = tmgr->current; /* old current */
tmgr->current = current->next? current->next: tmgr->head;
#if defined(_WIN64)
/* current->fiber is handled by SwitchToFiber() implicitly */
SwitchToFiber (tmgr->current->fiber);
purge_dead_tasks ();
#elif defined(HAVE_SWAPCONTEXT)
swapcontext (&current->uctx, &tmgr->current->uctx);
purge_dead_tasks ();
#else
//printf ("switch from %d to %d\n", current->id, tmgr->current->id);
if (setjmp (current->jmpbuf) != 0)
{
purge_dead_tasks ();
return;
}
longjmp (tmgr->current->jmpbuf, 1);
#endif
} }
static void purge_current_task (void) void* qse_task_getxtn (qse_task_t* task)
{ {
qse_task_t* current; return (void*)(task + 1);
}
if (tmgr->count == 1) static qse_task_slice_t* alloc_slice (
qse_task_t* task, qse_task_fnc_t fnc,
void* ctx, qse_size_t stksize)
{
qse_task_slice_t* slice;
slice = QSE_MMGR_ALLOC (task->mmgr, QSE_SIZEOF(*slice) + stksize);
if (slice == QSE_NULL) return QSE_NULL;
QSE_MEMSET (slice, 0, QSE_SIZEOF(*slice));
slice->task = task;
slice->fnc = fnc;
slice->ctx = ctx;
slice->stksize = stksize;
return slice;
}
static void link_task (qse_task_t* task, qse_task_slice_t* slice)
{
if (task->head)
{ {
/* to purge later */ slice->next = task->head;
tmgr->current->next = tmgr->dead; task->head->prev = slice;
tmgr->dead = tmgr->current; task->head = slice;
}
tmgr->current = QSE_NULL; else
tmgr->head = QSE_NULL; {
tmgr->tail = QSE_NULL; task->head = slice;
tmgr->count = 0; task->tail = slice;
tmgr->idinc = 0;
#if defined(_WIN64)
SwitchToFiber (tmgr->fiber);
#elif defined(HAVE_SWAPCONTEXT)
setcontext (&tmgr->uctx);
#else
longjmp (tmgr->backjmp, 1);
#endif
assert (!"must not reach here....");
} }
current = tmgr->current; task->count++;
tmgr->current = current->next? current->next: tmgr->head; }
if (current->prev) current->prev->next = current->next;
if (current->next) current->next->prev = current->prev;
if (current == tmgr->head) tmgr->head = current->next;
if (current == tmgr->tail) tmgr->tail = current->prev;
tmgr->count--;
/* to purge later */
current->next = tmgr->dead;
tmgr->dead = current;
#if defined(_WIN64) #if defined(_WIN64)
SwitchToFiber (tmgr->current->fiber); # define __CALL_BACK__ __stdcall
#elif defined(HAVE_SWAPCONTEXT)
setcontext (&tmgr->current->uctx);
#else #else
longjmp (tmgr->current->jmpbuf, 1); # define __CALL_BACK__
#endif #endif
}
#if defined(_WIN64) static void __CALL_BACK__ execute_current_slice (qse_task_slice_t* slice)
static void __stdcall execute_current_task (void* task)
{ {
assert (tmgr->current != QSE_NULL); qse_task_slice_t* to;
tmgr->current->fnc (tmgr->current->ctx);
purge_current_task ();
}
#else
static void execute_current_task (void) QSE_ASSERT (slice->task->current == slice);
{ to = slice->fnc (slice->task, slice, slice->ctx);
assert (tmgr->current != QSE_NULL);
tmgr->current->fnc (tmgr->current->ctx);
/* the task function is now terminated. we need to /* the task function is now terminated. we need to
* purge it from the task list */ * purge it from the slice list and switch to the next
purge_current_task (); * slice. */
purge_current_slice (slice, to);
QSE_ASSERT (!"must never reach here...");
} }
#endif
static qse_task_t* xxtask;
static void* xxoldsp;
#if defined(__WATCOMC__) #if defined(__WATCOMC__)
/* for watcom, i support i386/32bit only */ /* for watcom, i support i386/32bit only */
extern void* set_sp (void*);
#pragma aux set_sp = \ extern void* prepare_sp (void*);
"xchg eax, esp" \ #pragma aux prepare_sp = \
"mov dword ptr[eax+4], esp" \
"mov esp, eax" \
"mov eax, dword ptr[esp+0]" \
parm [eax] value [eax] modify [esp] parm [eax] value [eax] modify [esp]
extern void* restore_sp (void);
#pragma aux restore_sp = \
"mov esp, dword ptr[esp+4]" \
modify [esp]
extern void* get_slice (void);
#pragma aux get_slice = \
"mov eax, dword ptr[esp+0]" \
value [eax]
#endif #endif
qse_task_t* qse_maketask (qse_task_fnc_t fnc, void* ctx, qse_size_t stsize) qse_task_slice_t* qse_task_create (
qse_task_t* task, qse_task_fnc_t fnc,
void* ctx, qse_size_t stksize)
{ {
qse_task_t* task; qse_task_slice_t* slice;
void* newsp; register void* tmp;
stksize = ((stksize + QSE_SIZEOF(void*) - 1) / QSE_SIZEOF(void*)) * QSE_SIZEOF(void*);
#if defined(_WIN64) #if defined(_WIN64)
task = qse_task_alloc (fnc, ctx, 0); slice = alloc_slice (task, fnc, ctx, 0);
if (task == QSE_NULL) return QSE_NULL; if (slice == QSE_NULL) return QSE_NULL;
task->fiber = CreateFiberEx (stsize, stsize, FIBER_FLAG_FLOAT_SWITCH, execute_current_task, QSE_NULL); slice->fiber = CreateFiberEx (
if (task->fiber == QSE_NULL) stksize, stksize, FIBER_FLAG_FLOAT_SWITCH,
execute_current_slice, slice);
if (slice->fiber == QSE_NULL)
{ {
/* TODO: delete task */ QSE_MMGR_FREE (task->mmgr, slice);
return QSE_NULL; return QSE_NULL;
} }
#elif defined(HAVE_SWAPCONTEXT) #elif defined(USE_UCONTEXT)
task = qse_task_alloc (fnc, ctx, stsize); slice = alloc_slice (task, fnc, ctx, stksize);
if (task == QSE_NULL) return QSE_NULL; if (slice == QSE_NULL) return QSE_NULL;
if (getcontext (&task->uctx) <= -1) if (getcontext (&slice->uctx) <= -1)
{ {
/* TODO: delete task */ QSE_MMGR_FREE (task->mmgr, slice);
return QSE_NULL; return QSE_NULL;
} }
task->uctx.uc_stack.ss_sp = task + 1; slice->uctx.uc_stack.ss_sp = slice + 1;
task->uctx.uc_stack.ss_size = stsize; slice->uctx.uc_stack.ss_size = stksize;
task->uctx.uc_link = QSE_NULL; slice->uctx.uc_link = QSE_NULL;
makecontext (&task->uctx, execute_current_task, 0); makecontext (&slice->uctx, execute_current_slice, 1, slice);
#else #else
task = qse_task_alloc (fnc, ctx, stsize); if (stksize < QSE_SIZEOF(void*) * 3)
if (task == QSE_NULL) return QSE_NULL; stksize = QSE_SIZEOF(void*) * 3; /* for t1 & t2 */
slice = alloc_slice (task, fnc, ctx, stksize);
if (slice == QSE_NULL) return QSE_NULL;
/* setjmp() doesn't allow different stacks for /* setjmp() doesn't allow different stacks for
* each execution content. let me use some assembly * each execution content. let me use some assembly
@ -271,71 +275,65 @@ qse_task_t* qse_maketask (qse_task_fnc_t fnc, void* ctx, qse_size_t stsize)
* *
* this stack is used for the task function when * this stack is used for the task function when
* longjmp() is made. */ * longjmp() is made. */
xxtask = task; tmp = ((qse_uint8_t*)(slice + 1)) + stksize - QSE_SIZEOF(void*);
newsp = ((qse_uint8_t*)(task + 1)) + stsize - QSE_SIZEOF(void*);
tmp = (qse_uint8_t*)tmp - QSE_SIZEOF(void*);
*(void**)tmp = NULL; /* t1 */
tmp = (qse_uint8_t*)tmp - QSE_SIZEOF(void*);
*(void**)tmp = slice; /* t2 */
#if defined(__WATCOMC__) #if defined(__WATCOMC__)
xxoldsp = set_sp (newsp); tmp = prepare_sp (tmp);
#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64)) #elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64))
/*
__asm__ volatile ( __asm__ volatile (
"xchgq %0, %%rsp\n" "movq %%rsp, 8(%1)\n\t" /* t1 = %rsp */
: "=r"(xxoldsp) "movq %1, %%rsp\n\t" /* %rsp = tmp */
: "0"(newsp) "movq 0(%%rsp), %0\n" /* tmp = t2 */
: "%rsp" : "=r"(tmp)
); : "0"(tmp)
*/
__asm__ volatile (
"movq %%rsp, %0\n\t"
"movq %1, %%rsp\n"
: "=m"(xxoldsp)
: "r"(newsp)
: "%rsp", "memory" : "%rsp", "memory"
); );
#elif defined(__GNUC__) && (defined(__i386) || defined(i386)) #elif defined(__GNUC__) && (defined(__i386) || defined(i386))
__asm__ volatile ( __asm__ volatile (
"xchgl %0, %%esp\n" "movl %%esp, 4(%1)\n\t" /* t1 = %esp */
: "=r"(xxoldsp) "movl %1, %%esp\n\t" /* %esp = tmp */
: "0"(newsp) "movl 0(%%esp), %0\n" /* tmp = t2 */
: "%esp" : "=r"(tmp)
: "0"(tmp)
: "%esp", "memory"
); );
#elif defined(__GNUC__) && (defined(__mips) || defined(mips)) #elif defined(__GNUC__) && (defined(__mips) || defined(mips))
__asm__ volatile ( __asm__ volatile (
"sw $sp, %0\n\t" /* store $sp to xxoldsp */ "sw $sp, 4(%1)\n\t" /* t1 = $sp */
"move $sp, %1\n" /* move the register content for newsp to $sp */ "move $sp, %1\n\t" /* %sp = tmp */
: "=m"(xxoldsp) "lw %0, 0($sp)\n" /* tmp = t2 */
: "r"(newsp) : "=r"(tmp)
: "0"(tmp)
: "$sp", "memory" : "$sp", "memory"
); );
/*
__asm__ volatile (
"move %0, $sp\n\t"
"move $sp, %1\n"
: "=&r"(xxoldsp)
: "r"(newsp)
: "$sp", "memory"
);
*/
#elif defined(__GNUC__) && defined(__arm__) #elif defined(__GNUC__) && defined(__arm__)
__asm__ volatile ( __asm__ volatile (
"str sp, %0\n\t" "str sp, [%1, #4]\n\t" /* t1 = sp */
"mov sp, %1\n" "mov sp, %1\n" /* sp = tmp */
: "=m"(xxoldsp) "ldr %0, [sp, #0]\n" /* tmp = t2 */
: "r"(newsp) : "=r"(tmp)
: "0"(tmp)
: "sp", "memory" : "sp", "memory"
); );
/* TODO: support more architecture */
#else #else
/* TODO: support more architecture */
/* TODO: destroy task */ QSE_MMGR_FREE (task->mmgr, task);
//tmgr->errnum = QSE_TMGR_ENOIMPL;
return QSE_NULL; return QSE_NULL;
#endif /* __WATCOMC__ */ #endif /* __WATCOMC__ */
@ -349,112 +347,254 @@ qse_task_t* qse_maketask (qse_task_fnc_t fnc, void* ctx, qse_size_t stsize)
* this approach makes this function thread-unsafe. * this approach makes this function thread-unsafe.
*/ */
/* when qse_maketask() is called, /* when qse_task_task_create() is called,
* setjmp() saves the context and return 0. * setjmp() saves the context and return 0.
* *
* subsequently, when longjmp() is made * subsequently, when longjmp() is made
* for this saved context, setjmp() returns * for this saved context, setjmp() returns
* a non-zero value. * a non-zero value.
*/ */
if (setjmp (xxtask->jmpbuf) != 0) if (setjmp (((qse_task_slice_t*)tmp)->jmpbuf) != 0)
{ {
/* longjmp() is made to here. */ /* longjmp() is made to here. */
execute_current_task (); #if defined(__WATCOMC__)
assert (!"must never reach here....\n"); tmp = get_slice ();
#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64))
__asm__ volatile (
"movq 0(%%rsp), %0\n" /* tmp = t2 */
: "=r"(tmp)
);
#elif defined(__GNUC__) && (defined(__i386) || defined(i386))
__asm__ volatile (
"movl 0(%%esp), %0\n" /* tmp = t2 */
: "=r"(tmp)
);
#elif defined(__GNUC__) && (defined(__mips) || defined(mips))
__asm__ volatile (
"lw %0, 0($sp)\n" /* tmp = t2 */
: "=r"(tmp)
);
#elif defined(__GNUC__) && defined(__arm__)
__asm__ volatile (
"ldr %0, [sp, #0]\n" /* tmp = t2 */
: "=r"(tmp)
);
#endif /* __WATCOMC__ */
execute_current_slice ((qse_task_slice_t*)tmp);
QSE_ASSERT (!"must never reach here....\n");
} }
/* restore the stack pointer once i finish saving the longjmp() context. /* restore the stack pointer once i finish saving the longjmp() context.
* this part is reached only when qse_maketask() is invoked. */ * this part is reached only when qse_task_task_create() is invoked. */
#if defined(__WATCOMC__) #if defined(__WATCOMC__)
set_sp (xxoldsp); restore_sp ();
#elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64)) #elif defined(__GNUC__) && (defined(__x86_64) || defined(__amd64))
/* i assume that %rsp didn't change after the call to setjmp() */
__asm__ volatile ( __asm__ volatile (
"movq %0, %%rsp\n" "movq 8(%%rsp), %%rsp\n" /* %rsp = t1 */
:
: :
: "m"(xxoldsp) /*"r"(xxoldsp)*/
: "%rsp" : "%rsp"
); );
#elif defined(__GNUC__) && (defined(__i386) || defined(i386)) #elif defined(__GNUC__) && (defined(__i386) || defined(i386))
__asm__ volatile ( __asm__ volatile (
"movl %0, %%esp\n" "movl 4(%%esp), %%esp\n" /* %esp = t1 */
:
: :
: "r"(xxoldsp)
: "%esp" : "%esp"
); );
#elif defined(__GNUC__) && (defined(__mips) || defined(mips)) #elif defined(__GNUC__) && (defined(__mips) || defined(mips))
__asm__ volatile ( __asm__ volatile (
"lw $sp, %0\n" /*"move $sp, %0\n" */ "lw $sp, 4($sp)\n" /* $sp = t1 */
:
: :
: "m"(xxoldsp) /* "r"(xxoldsp) */
: "$sp" : "$sp"
); );
#elif defined(__GNUC__) && defined(__arm__) #elif defined(__GNUC__) && defined(__arm__)
__asm__ volatile ( __asm__ volatile (
"ldr sp, %0\n" "ldr sp, [sp, #4]\n" /* sp = t1 */
:
: :
: "m"(xxoldsp)
: "sp" : "sp"
); );
#endif /* __WATCOMC__ */ #endif /* __WATCOMC__ */
#endif #endif
return task; link_task (task, slice);
return slice;
} }
int qse_gettaskid (qse_task_t* task) int qse_task_boot (qse_task_t* task, qse_task_slice_t* to)
{ {
return task->id; QSE_ASSERT (task->current == QSE_NULL);
}
int qse_task_boot (void) if (to == QSE_NULL) to = task->head;
{
if (tmgr->count <= 0) return -1;
#if defined(_WIN64) #if defined(_WIN64)
tmgr->fiber = ConvertThreadToFiberEx (QSE_NULL, FIBER_FLAG_FLOAT_SWITCH); task->fiber = ConvertThreadToFiberEx (QSE_NULL, FIBER_FLAG_FLOAT_SWITCH);
if (tmgr->fiber == QSE_NULL) if (task->fiber == QSE_NULL) return -1;
{
/*TODO: destroy all the tasks created */
return -1;
}
tmgr->current = tmgr->tail; task->current = to;
SwitchToFiber (tmgr->current->fiber); SwitchToFiber (task->current->fiber);
ConvertFiberToThread (); ConvertFiberToThread ();
#elif defined(HAVE_SWAPCONTEXT) #elif defined(USE_UCONTEXT)
tmgr->current = tmgr->tail; task->current = to;
if (swapcontext (&tmgr->uctx, &tmgr->current->uctx) <= -1) if (swapcontext (&task->uctx, &task->current->uctx) <= -1)
{ {
/*TODO: destroy all the tasks created */ task->current = QSE_NULL;
return -1; return -1;
} }
#else #else
if (setjmp (tmgr->backjmp) != 0) if (setjmp (task->backjmp) != 0)
{ {
/* longjmp() back */ /* longjmp() back */
goto done; goto done;
} }
tmgr->current = tmgr->tail; task->current = to;
longjmp (tmgr->current->jmpbuf, 1); longjmp (task->current->jmpbuf, 1);
assert (!"must never reach here"); QSE_ASSERT (!"must never reach here");
done: done:
#endif #endif
assert (tmgr->current == QSE_NULL); QSE_ASSERT (task->current == QSE_NULL);
assert (tmgr->count == 0); QSE_ASSERT (task->count == 0);
purge_dead_tasks (); if (task->dead) purge_dead_slices (task);
printf ("END OF TASK_BOOT...\n");
return 0; return 0;
} }
/* NOTE for __WATCOMC__.
when the number of parameters are more than 2 for qse_task_schedule(),
this setjmp()/longjmp() based tasking didn't work.
if i change this to
void qse_task_schedule (qse_task_slice_t* from, qse_task_slice_t* to)
{
qse_task_t* task = from->task
....
}
it worked. i stopped investigating this problem. so i don't know the
real cause of this problem. let me get back to this later when i have
time for this.
*/
void qse_task_schedule (
qse_task_t* task, qse_task_slice_t* from, qse_task_slice_t* to)
{
QSE_ASSERT (from != QSE_NULL);
if (to == QSE_NULL)
{
/* round-robin if the target is not specified */
to = from->next? from->next: task->head;
}
QSE_ASSERT (task == to->task);
QSE_ASSERT (task == from->task);
QSE_ASSERT (task->current == from);
if (to == from) return;
task->current = to;
#if defined(_WIN64)
/* current->fiber is handled by SwitchToFiber() implicitly */
SwitchToFiber (to->fiber);
if (task->dead) purge_dead_slices (task);
#elif defined(USE_UCONTEXT)
swapcontext (&from->uctx, &to->uctx);
if (task->dead) purge_dead_slices (task);
#else
if (setjmp (from->jmpbuf) != 0)
{
if (task->dead) purge_dead_slices (task);
return;
}
longjmp (to->jmpbuf, 1);
#endif
}
static void purge_dead_slices (qse_task_t* task)
{
qse_task_slice_t* slice;
while (task->dead)
{
slice = task->dead;
task->dead = slice->next;
purge_slice (task, slice);
}
}
static void purge_slice (qse_task_t* task, qse_task_slice_t* slice)
{
#if defined(_WIN64)
if (slice->fiber) DeleteFiber (slice->fiber);
#endif
QSE_MMGR_FREE (task->mmgr, slice);
}
static void purge_current_slice (qse_task_slice_t* slice, qse_task_slice_t* to)
{
qse_task_t* task = slice->task;
QSE_ASSERT (task->current == slice);
if (task->count == 1)
{
/* to purge later */
slice->next = task->dead;
task->dead = slice;
task->current = QSE_NULL;
task->head = QSE_NULL;
task->tail = QSE_NULL;
task->count = 0;
#if defined(_WIN64)
SwitchToFiber (task->fiber);
#elif defined(USE_UCONTEXT)
setcontext (&task->uctx);
#else
longjmp (task->backjmp, 1);
#endif
QSE_ASSERT (!"must not reach here....");
}
task->current = (to && to != slice)? to: (slice->next? slice->next: task->head);
if (slice->prev) slice->prev->next = slice->next;
if (slice->next) slice->next->prev = slice->prev;
if (slice == task->head) task->head = slice->next;
if (slice == task->tail) task->tail = slice->prev;
task->count--;
/* to purge later */
slice->next = task->dead;
task->dead = slice;
#if defined(_WIN64)
SwitchToFiber (task->current->fiber);
#elif defined(USE_UCONTEXT)
setcontext (&task->current->uctx);
#else
longjmp (task->current->jmpbuf, 1);
#endif
}

View File

@ -281,10 +281,9 @@ typedef enum { STR_WIDE, STR_BYTE, STR_MBS, STR_USER } tre_str_type_t;
/* Returns number of bytes to add to (char *)ptr to make it /* Returns number of bytes to add to (char *)ptr to make it
properly aligned for the type. */ properly aligned for the type. */
#define ALIGN(ptr, type) \ #define ALIGN(ptr,type) \
((((qse_uintptr_t)ptr) % QSE_SIZEOF(type)) \ ((((qse_uintptr_t)ptr) % QSE_SIZEOF(type))? \
? (QSE_SIZEOF(type) - (((qse_uintptr_t)ptr) % QSE_SIZEOF(type))) \ (QSE_SIZEOF(type) - (((qse_uintptr_t)ptr) % QSE_SIZEOF(type))): 0)
: 0)
#undef MAX #undef MAX
#undef MIN #undef MIN

View File

@ -88,7 +88,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -115,7 +115,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -160,7 +160,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -449,7 +449,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -199,7 +199,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -219,7 +219,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -223,7 +223,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -37,6 +37,7 @@ bin_PROGRAMS = \
sll \ sll \
slmb01 \ slmb01 \
str01 \ str01 \
task01 \
time \ time \
tre01 \ tre01 \
uri01 \ uri01 \

View File

@ -41,8 +41,8 @@ bin_PROGRAMS = chr01$(EXEEXT) env$(EXEEXT) dll$(EXEEXT) fio01$(EXEEXT) \
mbwc02$(EXEEXT) nwad01$(EXEEXT) oht$(EXEEXT) path01$(EXEEXT) \ mbwc02$(EXEEXT) nwad01$(EXEEXT) oht$(EXEEXT) path01$(EXEEXT) \
pio$(EXEEXT) pma$(EXEEXT) rex01$(EXEEXT) rbt$(EXEEXT) \ pio$(EXEEXT) pma$(EXEEXT) rex01$(EXEEXT) rbt$(EXEEXT) \
sio01$(EXEEXT) sio02$(EXEEXT) sio03$(EXEEXT) sll$(EXEEXT) \ sio01$(EXEEXT) sio02$(EXEEXT) sio03$(EXEEXT) sll$(EXEEXT) \
slmb01$(EXEEXT) str01$(EXEEXT) time$(EXEEXT) tre01$(EXEEXT) \ slmb01$(EXEEXT) str01$(EXEEXT) task01$(EXEEXT) time$(EXEEXT) \
uri01$(EXEEXT) xma$(EXEEXT) tre01$(EXEEXT) uri01$(EXEEXT) xma$(EXEEXT)
@WCHAR_TRUE@@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) @WCHAR_TRUE@@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS)
subdir = samples/cmn subdir = samples/cmn
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@ -182,6 +182,10 @@ am_str01_OBJECTS = str01.$(OBJEXT)
str01_OBJECTS = $(am_str01_OBJECTS) str01_OBJECTS = $(am_str01_OBJECTS)
str01_LDADD = $(LDADD) str01_LDADD = $(LDADD)
str01_DEPENDENCIES = $(am__DEPENDENCIES_2) str01_DEPENDENCIES = $(am__DEPENDENCIES_2)
task01_SOURCES = task01.c
task01_OBJECTS = task01.$(OBJEXT)
task01_LDADD = $(LDADD)
task01_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_time_OBJECTS = time.$(OBJEXT) am_time_OBJECTS = time.$(OBJEXT)
time_OBJECTS = $(am_time_OBJECTS) time_OBJECTS = $(am_time_OBJECTS)
time_LDADD = $(LDADD) time_LDADD = $(LDADD)
@ -220,7 +224,7 @@ SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \
$(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \ $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
$(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \ $(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \
$(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \ $(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \
$(slmb01_SOURCES) $(str01_SOURCES) $(time_SOURCES) \ $(slmb01_SOURCES) $(str01_SOURCES) task01.c $(time_SOURCES) \
$(tre01_SOURCES) uri01.c $(xma_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES)
DIST_SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \ DIST_SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \
$(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \ $(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \
@ -231,7 +235,7 @@ DIST_SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \
$(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \ $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
$(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \ $(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \
$(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \ $(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \
$(slmb01_SOURCES) $(str01_SOURCES) $(time_SOURCES) \ $(slmb01_SOURCES) $(str01_SOURCES) task01.c $(time_SOURCES) \
$(tre01_SOURCES) uri01.c $(xma_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES)
ETAGS = etags ETAGS = etags
CTAGS = ctags CTAGS = ctags
@ -596,6 +600,9 @@ slmb01$(EXEEXT): $(slmb01_OBJECTS) $(slmb01_DEPENDENCIES) $(EXTRA_slmb01_DEPENDE
str01$(EXEEXT): $(str01_OBJECTS) $(str01_DEPENDENCIES) $(EXTRA_str01_DEPENDENCIES) str01$(EXEEXT): $(str01_OBJECTS) $(str01_DEPENDENCIES) $(EXTRA_str01_DEPENDENCIES)
@rm -f str01$(EXEEXT) @rm -f str01$(EXEEXT)
$(LINK) $(str01_OBJECTS) $(str01_LDADD) $(LIBS) $(LINK) $(str01_OBJECTS) $(str01_LDADD) $(LIBS)
task01$(EXEEXT): $(task01_OBJECTS) $(task01_DEPENDENCIES) $(EXTRA_task01_DEPENDENCIES)
@rm -f task01$(EXEEXT)
$(LINK) $(task01_OBJECTS) $(task01_LDADD) $(LIBS)
time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES)
@rm -f time$(EXEEXT) @rm -f time$(EXEEXT)
$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS) $(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
@ -645,6 +652,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sll.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slmb01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slmb01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tre01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tre01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uri01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uri01.Po@am__quote@

View File

@ -34,7 +34,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -62,7 +62,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -82,7 +82,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -81,7 +81,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -44,7 +44,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -194,7 +194,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -28,7 +28,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -33,7 +33,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -219,7 +219,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -299,7 +299,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -155,12 +155,12 @@ static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[]) int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
{ {
#if defined(_WIN32) #if defined(_WIN32)
char locale[100]; char locale[100];
UINT codepage = GetConsoleOutputCP(); UINT codepage = GetConsoleOutputCP();
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -71,7 +71,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -76,7 +76,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -98,7 +98,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -151,7 +151,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOutputCP (CP_UTF8);*/ /*SetConsoleOutputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -139,7 +139,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -200,7 +200,7 @@ int main ()
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

104
qse/samples/cmn/task01.c Normal file
View File

@ -0,0 +1,104 @@
#include <qse/cmn/task.h>
#include <qse/cmn/main.h>
#include <qse/cmn/mbwc.h>
#include <qse/cmn/mem.h>
#include <qse/cmn/stdio.h>
#include <locale.h>
#if defined(_WIN32)
# include <windows.h>
#endif
static qse_task_slice_t* print (
qse_task_t* task, qse_task_slice_t* slice, void* ctx)
{
int i;
int num = (int)ctx;
qse_printf (QSE_T("task[%03d] => starting\n"), num);
for (i = 0; i < 5; i++)
{
qse_printf (QSE_T("task[%03d] => %03d\n"), num, i);
qse_task_schedule (task, slice, QSE_NULL);
if (i == 2 && num == 1)
{
qse_task_create (task, print, (void*)99, 40000);
}
}
qse_printf (QSE_T("task[%03d] => exiting\n"), num);
return QSE_NULL;
}
static int start_task (qse_task_fnc_t fnc)
{
qse_task_t* task;
qse_task_slice_t* slice;
task = qse_task_open (QSE_MMGR_GETDFL(), 0);
if (task == NULL)
{
qse_printf (QSE_T("cannot initialize tasking system\n"));
return -1;
}
qse_printf (QSE_T("== END ==\n"));
if (qse_task_create (task, fnc, (void*)1, 40000) == QSE_NULL ||
(slice = qse_task_create (task, fnc, (void*)2, 40000)) == QSE_NULL ||
qse_task_create (task, fnc, (void*)3, 40000) == QSE_NULL ||
qse_task_create (task, fnc, (void*)4, 40000) == QSE_NULL)
{
qse_printf (QSE_T("cannot create task slice\n"));
qse_task_close (task);
return -1;
}
if (qse_task_boot (task, slice) <= -1)
{
qse_printf (QSE_T("cannot start task\n"));
qse_task_close (task);
return -1;
}
qse_printf (QSE_T("== END ==\n"));
qse_task_close (task);
return 0;
}
static int test_main (int argc, qse_char_t* argv[])
{
int ret;
ret = start_task (print);
qse_printf (QSE_T("== END ==\n"));
return ret;
}
int qse_main (int argc, qse_achar_t* argv[])
{
#if defined(_WIN32)
char locale[100];
UINT codepage = GetConsoleOutputCP();
if (codepage == CP_UTF8)
{
/*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgrbyid (QSE_CMGR_UTF8);
}
else
{
sprintf (locale, ".%u", (unsigned int)codepage);
setlocale (LC_ALL, locale);
qse_setdflcmgrbyid (QSE_CMGR_SLMB);
}
#else
setlocale (LC_ALL, "");
qse_setdflcmgrbyid (QSE_CMGR_SLMB);
#endif
return qse_runmain (argc, argv, test_main);
}

View File

@ -83,7 +83,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -122,7 +122,7 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -98,7 +98,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -226,7 +226,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -879,7 +879,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -76,7 +76,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -85,7 +85,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -100,7 +100,7 @@ int qse_main (int argc, qse_achar_t* argv[])
if (codepage == CP_UTF8) if (codepage == CP_UTF8)
{ {
/*SetConsoleOUtputCP (CP_UTF8);*/ /*SetConsoleOUtputCP (CP_UTF8);*/
qse_setdflcmgr (qse_utf8cmgr); qse_setdflcmgrbyid (QSE_CMGR_UTF8);
} }
else else
{ {

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
83 85
11 11
MItem MItem
3 3
@ -564,7 +564,7 @@ WVList
127 127
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwif.c
128 128
WString WString
4 4
@ -581,8 +581,8 @@ WVList
0 0
131 131
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
132 132
WString WString
4 4
@ -600,7 +600,7 @@ WVList
135 135
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
136 136
WString WString
4 4
@ -617,8 +617,8 @@ WVList
0 0
139 139
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
140 140
WString WString
4 4
@ -635,8 +635,8 @@ WVList
0 0
143 143
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
144 144
WString WString
4 4
@ -653,8 +653,8 @@ WVList
0 0
147 147
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
148 148
WString WString
4 4
@ -672,7 +672,7 @@ WVList
151 151
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
152 152
WString WString
4 4
@ -690,7 +690,7 @@ WVList
155 155
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
156 156
WString WString
4 4
@ -708,7 +708,7 @@ WVList
159 159
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
160 160
WString WString
4 4
@ -726,7 +726,7 @@ WVList
163 163
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
164 164
WString WString
4 4
@ -744,7 +744,7 @@ WVList
167 167
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
168 168
WString WString
4 4
@ -761,8 +761,8 @@ WVList
0 0
171 171
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
172 172
WString WString
4 4
@ -779,8 +779,8 @@ WVList
0 0
175 175
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
176 176
WString WString
4 4
@ -797,8 +797,8 @@ WVList
0 0
179 179
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
180 180
WString WString
4 4
@ -816,7 +816,7 @@ WVList
183 183
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
184 184
WString WString
4 4
@ -834,7 +834,7 @@ WVList
187 187
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
188 188
WString WString
4 4
@ -852,7 +852,7 @@ WVList
191 191
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
192 192
WString WString
4 4
@ -870,7 +870,7 @@ WVList
195 195
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
196 196
WString WString
4 4
@ -888,7 +888,7 @@ WVList
199 199
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
200 200
WString WString
4 4
@ -906,7 +906,7 @@ WVList
203 203
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
204 204
WString WString
4 4
@ -924,7 +924,7 @@ WVList
207 207
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
208 208
WString WString
4 4
@ -941,8 +941,8 @@ WVList
0 0
211 211
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
212 212
WString WString
4 4
@ -960,7 +960,7 @@ WVList
215 215
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
216 216
WString WString
4 4
@ -977,8 +977,8 @@ WVList
0 0
219 219
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
220 220
WString WString
4 4
@ -995,8 +995,8 @@ WVList
0 0
223 223
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
224 224
WString WString
4 4
@ -1014,7 +1014,7 @@ WVList
227 227
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
228 228
WString WString
4 4
@ -1031,8 +1031,8 @@ WVList
0 0
231 231
MItem MItem
34 33
../../../../../lib/cmn/str-fnmat.c ../../../../../lib/cmn/str-fcpy.c
232 232
WString WString
4 4
@ -1049,8 +1049,8 @@ WVList
0 0
235 235
MItem MItem
33 34
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fnmat.c
236 236
WString WString
4 4
@ -1067,8 +1067,8 @@ WVList
0 0
239 239
MItem MItem
32 33
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-incl.c
240 240
WString WString
4 4
@ -1086,7 +1086,7 @@ WVList
243 243
MItem MItem
32 32
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-len.c
244 244
WString WString
4 4
@ -1103,8 +1103,8 @@ WVList
0 0
247 247
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-pac.c
248 248
WString WString
4 4
@ -1121,8 +1121,8 @@ WVList
0 0
251 251
MItem MItem
32 33
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pbrk.c
252 252
WString WString
4 4
@ -1140,7 +1140,7 @@ WVList
255 255
MItem MItem
32 32
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-put.c
256 256
WString WString
4 4
@ -1158,7 +1158,7 @@ WVList
259 259
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-rev.c
260 260
WString WString
4 4
@ -1176,7 +1176,7 @@ WVList
263 263
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rot.c
264 264
WString WString
4 4
@ -1194,7 +1194,7 @@ WVList
267 267
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-set.c
268 268
WString WString
4 4
@ -1212,7 +1212,7 @@ WVList
271 271
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-spl.c
272 272
WString WString
4 4
@ -1230,7 +1230,7 @@ WVList
275 275
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spn.c
276 276
WString WString
4 4
@ -1247,8 +1247,8 @@ WVList
0 0
279 279
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-str.c
280 280
WString WString
4 4
@ -1265,8 +1265,8 @@ WVList
0 0
283 283
MItem MItem
32 34
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-subst.c
284 284
WString WString
4 4
@ -1284,7 +1284,7 @@ WVList
287 287
MItem MItem
32 32
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-tok.c
288 288
WString WString
4 4
@ -1301,8 +1301,8 @@ WVList
0 0
291 291
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-trm.c
292 292
WString WString
4 4
@ -1319,8 +1319,8 @@ WVList
0 0
295 295
MItem MItem
29 33
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-word.c
296 296
WString WString
4 4
@ -1337,8 +1337,8 @@ WVList
0 0
299 299
MItem MItem
28 29
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/task.c
300 300
WString WString
4 4
@ -1355,8 +1355,8 @@ WVList
0 0
303 303
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
304 304
WString WString
4 4
@ -1373,8 +1373,8 @@ WVList
0 0
307 307
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
308 308
WString WString
4 4
@ -1391,8 +1391,8 @@ WVList
0 0
311 311
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
312 312
WString WString
4 4
@ -1409,8 +1409,8 @@ WVList
0 0
315 315
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
316 316
WString WString
4 4
@ -1427,8 +1427,8 @@ WVList
0 0
319 319
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
320 320
WString WString
4 4
@ -1445,8 +1445,8 @@ WVList
0 0
323 323
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
324 324
WString WString
4 4
@ -1463,8 +1463,8 @@ WVList
0 0
327 327
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
328 328
WString WString
4 4
@ -1481,8 +1481,8 @@ WVList
0 0
331 331
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
332 332
WString WString
4 4
@ -1500,7 +1500,7 @@ WVList
335 335
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
336 336
WString WString
4 4
@ -1517,44 +1517,44 @@ WVList
0 0
339 339
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
340 340
WString WString
3 4
NIL COBJ
341 341
WVList WVList
0 0
342 342
WVList WVList
0 0
-1 11
1 1
1 1
0 0
343 343
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
344 344
WString WString
3 4
NIL COBJ
345 345
WVList WVList
0 0
346 346
WVList WVList
0 0
339 11
1 1
1 1
0 0
347 347
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
348 348
WString WString
3 3
@ -1565,7 +1565,43 @@ WVList
350 350
WVList WVList
0 0
339 -1
1
1
0
351
MItem
28
../../../../../lib/cmn/mem.h
352
WString
3
NIL
353
WVList
0
354
WVList
0
347
1
1
0
355
MItem
32
../../../../../lib/cmn/syscall.h
356
WString
3
NIL
357
WVList
0
358
WVList
0
347
1 1
1 1
0 0

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
83 85
11 11
MItem MItem
3 3
@ -576,7 +576,7 @@ WVList
130 130
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwif.c
131 131
WString WString
4 4
@ -593,8 +593,8 @@ WVList
0 0
134 134
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
135 135
WString WString
4 4
@ -612,7 +612,7 @@ WVList
138 138
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
139 139
WString WString
4 4
@ -629,8 +629,8 @@ WVList
0 0
142 142
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
143 143
WString WString
4 4
@ -647,8 +647,8 @@ WVList
0 0
146 146
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
147 147
WString WString
4 4
@ -665,8 +665,8 @@ WVList
0 0
150 150
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
151 151
WString WString
4 4
@ -684,7 +684,7 @@ WVList
154 154
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
155 155
WString WString
4 4
@ -702,7 +702,7 @@ WVList
158 158
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
159 159
WString WString
4 4
@ -720,7 +720,7 @@ WVList
162 162
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
163 163
WString WString
4 4
@ -738,7 +738,7 @@ WVList
166 166
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
167 167
WString WString
4 4
@ -756,7 +756,7 @@ WVList
170 170
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
171 171
WString WString
4 4
@ -773,8 +773,8 @@ WVList
0 0
174 174
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
175 175
WString WString
4 4
@ -791,8 +791,8 @@ WVList
0 0
178 178
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
179 179
WString WString
4 4
@ -809,8 +809,8 @@ WVList
0 0
182 182
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
183 183
WString WString
4 4
@ -828,7 +828,7 @@ WVList
186 186
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
187 187
WString WString
4 4
@ -846,7 +846,7 @@ WVList
190 190
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
191 191
WString WString
4 4
@ -864,7 +864,7 @@ WVList
194 194
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
195 195
WString WString
4 4
@ -882,7 +882,7 @@ WVList
198 198
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
199 199
WString WString
4 4
@ -900,7 +900,7 @@ WVList
202 202
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
203 203
WString WString
4 4
@ -918,7 +918,7 @@ WVList
206 206
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
207 207
WString WString
4 4
@ -936,7 +936,7 @@ WVList
210 210
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
211 211
WString WString
4 4
@ -953,8 +953,8 @@ WVList
0 0
214 214
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
215 215
WString WString
4 4
@ -972,7 +972,7 @@ WVList
218 218
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
219 219
WString WString
4 4
@ -989,8 +989,8 @@ WVList
0 0
222 222
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
223 223
WString WString
4 4
@ -1007,8 +1007,8 @@ WVList
0 0
226 226
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
227 227
WString WString
4 4
@ -1026,7 +1026,7 @@ WVList
230 230
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
231 231
WString WString
4 4
@ -1043,8 +1043,8 @@ WVList
0 0
234 234
MItem MItem
34 33
../../../../../lib/cmn/str-fnmat.c ../../../../../lib/cmn/str-fcpy.c
235 235
WString WString
4 4
@ -1061,8 +1061,8 @@ WVList
0 0
238 238
MItem MItem
33 34
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fnmat.c
239 239
WString WString
4 4
@ -1079,8 +1079,8 @@ WVList
0 0
242 242
MItem MItem
32 33
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-incl.c
243 243
WString WString
4 4
@ -1098,7 +1098,7 @@ WVList
246 246
MItem MItem
32 32
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-len.c
247 247
WString WString
4 4
@ -1115,8 +1115,8 @@ WVList
0 0
250 250
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-pac.c
251 251
WString WString
4 4
@ -1133,8 +1133,8 @@ WVList
0 0
254 254
MItem MItem
32 33
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pbrk.c
255 255
WString WString
4 4
@ -1152,7 +1152,7 @@ WVList
258 258
MItem MItem
32 32
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-put.c
259 259
WString WString
4 4
@ -1170,7 +1170,7 @@ WVList
262 262
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-rev.c
263 263
WString WString
4 4
@ -1188,7 +1188,7 @@ WVList
266 266
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rot.c
267 267
WString WString
4 4
@ -1206,7 +1206,7 @@ WVList
270 270
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-set.c
271 271
WString WString
4 4
@ -1224,7 +1224,7 @@ WVList
274 274
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-spl.c
275 275
WString WString
4 4
@ -1242,7 +1242,7 @@ WVList
278 278
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spn.c
279 279
WString WString
4 4
@ -1259,8 +1259,8 @@ WVList
0 0
282 282
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-str.c
283 283
WString WString
4 4
@ -1277,8 +1277,8 @@ WVList
0 0
286 286
MItem MItem
32 34
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-subst.c
287 287
WString WString
4 4
@ -1296,7 +1296,7 @@ WVList
290 290
MItem MItem
32 32
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-tok.c
291 291
WString WString
4 4
@ -1313,8 +1313,8 @@ WVList
0 0
294 294
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-trm.c
295 295
WString WString
4 4
@ -1331,8 +1331,8 @@ WVList
0 0
298 298
MItem MItem
29 33
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-word.c
299 299
WString WString
4 4
@ -1349,8 +1349,8 @@ WVList
0 0
302 302
MItem MItem
28 29
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/task.c
303 303
WString WString
4 4
@ -1367,8 +1367,8 @@ WVList
0 0
306 306
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
307 307
WString WString
4 4
@ -1385,8 +1385,8 @@ WVList
0 0
310 310
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
311 311
WString WString
4 4
@ -1403,8 +1403,8 @@ WVList
0 0
314 314
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
315 315
WString WString
4 4
@ -1421,8 +1421,8 @@ WVList
0 0
318 318
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
319 319
WString WString
4 4
@ -1439,8 +1439,8 @@ WVList
0 0
322 322
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
323 323
WString WString
4 4
@ -1457,8 +1457,8 @@ WVList
0 0
326 326
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
327 327
WString WString
4 4
@ -1475,8 +1475,8 @@ WVList
0 0
330 330
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
331 331
WString WString
4 4
@ -1493,8 +1493,8 @@ WVList
0 0
334 334
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
335 335
WString WString
4 4
@ -1512,7 +1512,7 @@ WVList
338 338
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
339 339
WString WString
4 4
@ -1529,44 +1529,44 @@ WVList
0 0
342 342
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
343 343
WString WString
3 4
NIL COBJ
344 344
WVList WVList
0 0
345 345
WVList WVList
0 0
-1 11
1 1
1 1
0 0
346 346
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
347 347
WString WString
3 4
NIL COBJ
348 348
WVList WVList
0 0
349 349
WVList WVList
0 0
342 11
1 1
1 1
0 0
350 350
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
351 351
WString WString
3 3
@ -1577,7 +1577,43 @@ WVList
353 353
WVList WVList
0 0
342 -1
1
1
0
354
MItem
28
../../../../../lib/cmn/mem.h
355
WString
3
NIL
356
WVList
0
357
WVList
0
350
1
1
0
358
MItem
32
../../../../../lib/cmn/syscall.h
359
WString
3
NIL
360
WVList
0
361
WVList
0
350
1 1
1 1
0 0

View File

@ -4,8 +4,8 @@ projectIdent
VpeMain VpeMain
1 1
WRect WRect
440 790
160 200
9320 9320
9680 9680
2 2
@ -76,11 +76,11 @@ WVList
VComponent VComponent
20 20
WRect WRect
1080 1070
2520 2520
5700 5700
4240 4240
0 1
0 0
21 21
WFileName WFileName
@ -128,14 +128,14 @@ WRect
480 480
5700 5700
4240 4240
0 1
0 0
30 30
WFileName WFileName
28 28
debug/os2/lib/cmn/qsecmn.tgt debug/os2/lib/cmn/qsecmn.tgt
45 45
45 48
31 31
VComponent VComponent
32 32
@ -189,10 +189,10 @@ VComponent
41 41
WRect WRect
2660 2660
66 40
5700 5700
4240 4240
0 1
0 0
42 42
WFileName WFileName
@ -256,14 +256,14 @@ WRect
560 560
5700 5700
4240 4240
1 0
0 0
54 54
WFileName WFileName
30 30
debug/dos32/cmd/sed/qsesed.tgt debug/dos32/cmd/sed/qsesed.tgt
0 0
0 1
55 55
VComponent VComponent
56 56

View File

@ -42,7 +42,7 @@ WVList
0 0
10 10
WPickList WPickList
81 83
11 11
MItem MItem
3 3
@ -576,7 +576,7 @@ WVList
131 131
MItem MItem
29 29
../../../../../lib/cmn/nwio.c ../../../../../lib/cmn/nwif.c
132 132
WString WString
4 4
@ -593,8 +593,8 @@ WVList
0 0
135 135
MItem MItem
28 29
../../../../../lib/cmn/oht.c ../../../../../lib/cmn/nwio.c
136 136
WString WString
4 4
@ -612,7 +612,7 @@ WVList
139 139
MItem MItem
28 28
../../../../../lib/cmn/opt.c ../../../../../lib/cmn/oht.c
140 140
WString WString
4 4
@ -629,8 +629,8 @@ WVList
0 0
143 143
MItem MItem
38 28
../../../../../lib/cmn/path-basename.c ../../../../../lib/cmn/opt.c
144 144
WString WString
4 4
@ -647,8 +647,8 @@ WVList
0 0
147 147
MItem MItem
35 38
../../../../../lib/cmn/path-canon.c ../../../../../lib/cmn/path-basename.c
148 148
WString WString
4 4
@ -665,8 +665,8 @@ WVList
0 0
151 151
MItem MItem
28 35
../../../../../lib/cmn/pio.c ../../../../../lib/cmn/path-canon.c
152 152
WString WString
4 4
@ -684,7 +684,7 @@ WVList
155 155
MItem MItem
28 28
../../../../../lib/cmn/pma.c ../../../../../lib/cmn/pio.c
156 156
WString WString
4 4
@ -702,7 +702,7 @@ WVList
159 159
MItem MItem
28 28
../../../../../lib/cmn/rbt.c ../../../../../lib/cmn/pma.c
160 160
WString WString
4 4
@ -720,7 +720,7 @@ WVList
163 163
MItem MItem
28 28
../../../../../lib/cmn/rex.c ../../../../../lib/cmn/rbt.c
164 164
WString WString
4 4
@ -738,7 +738,7 @@ WVList
167 167
MItem MItem
28 28
../../../../../lib/cmn/sio.c ../../../../../lib/cmn/rex.c
168 168
WString WString
4 4
@ -756,7 +756,7 @@ WVList
171 171
MItem MItem
28 28
../../../../../lib/cmn/sll.c ../../../../../lib/cmn/sio.c
172 172
WString WString
4 4
@ -773,8 +773,8 @@ WVList
0 0
175 175
MItem MItem
29 28
../../../../../lib/cmn/slmb.c ../../../../../lib/cmn/sll.c
176 176
WString WString
4 4
@ -791,8 +791,8 @@ WVList
0 0
179 179
MItem MItem
30 29
../../../../../lib/cmn/stdio.c ../../../../../lib/cmn/slmb.c
180 180
WString WString
4 4
@ -809,8 +809,8 @@ WVList
0 0
183 183
MItem MItem
32 30
../../../../../lib/cmn/str-beg.c ../../../../../lib/cmn/stdio.c
184 184
WString WString
4 4
@ -828,7 +828,7 @@ WVList
187 187
MItem MItem
32 32
../../../../../lib/cmn/str-cat.c ../../../../../lib/cmn/str-beg.c
188 188
WString WString
4 4
@ -846,7 +846,7 @@ WVList
191 191
MItem MItem
32 32
../../../../../lib/cmn/str-chr.c ../../../../../lib/cmn/str-cat.c
192 192
WString WString
4 4
@ -864,7 +864,7 @@ WVList
195 195
MItem MItem
32 32
../../../../../lib/cmn/str-cmp.c ../../../../../lib/cmn/str-chr.c
196 196
WString WString
4 4
@ -882,7 +882,7 @@ WVList
199 199
MItem MItem
32 32
../../../../../lib/cmn/str-cnv.c ../../../../../lib/cmn/str-cmp.c
200 200
WString WString
4 4
@ -900,7 +900,7 @@ WVList
203 203
MItem MItem
32 32
../../../../../lib/cmn/str-cpy.c ../../../../../lib/cmn/str-cnv.c
204 204
WString WString
4 4
@ -918,7 +918,7 @@ WVList
207 207
MItem MItem
32 32
../../../../../lib/cmn/str-del.c ../../../../../lib/cmn/str-cpy.c
208 208
WString WString
4 4
@ -936,7 +936,7 @@ WVList
211 211
MItem MItem
32 32
../../../../../lib/cmn/str-dup.c ../../../../../lib/cmn/str-del.c
212 212
WString WString
4 4
@ -953,8 +953,8 @@ WVList
0 0
215 215
MItem MItem
33 32
../../../../../lib/cmn/str-dynm.c ../../../../../lib/cmn/str-dup.c
216 216
WString WString
4 4
@ -972,7 +972,7 @@ WVList
219 219
MItem MItem
33 33
../../../../../lib/cmn/str-dynw.c ../../../../../lib/cmn/str-dynm.c
220 220
WString WString
4 4
@ -989,8 +989,8 @@ WVList
0 0
223 223
MItem MItem
32 33
../../../../../lib/cmn/str-end.c ../../../../../lib/cmn/str-dynw.c
224 224
WString WString
4 4
@ -1007,8 +1007,8 @@ WVList
0 0
227 227
MItem MItem
33 32
../../../../../lib/cmn/str-excl.c ../../../../../lib/cmn/str-end.c
228 228
WString WString
4 4
@ -1026,7 +1026,7 @@ WVList
231 231
MItem MItem
33 33
../../../../../lib/cmn/str-fcpy.c ../../../../../lib/cmn/str-excl.c
232 232
WString WString
4 4
@ -1043,8 +1043,8 @@ WVList
0 0
235 235
MItem MItem
34 33
../../../../../lib/cmn/str-fnmat.c ../../../../../lib/cmn/str-fcpy.c
236 236
WString WString
4 4
@ -1061,8 +1061,8 @@ WVList
0 0
239 239
MItem MItem
33 34
../../../../../lib/cmn/str-incl.c ../../../../../lib/cmn/str-fnmat.c
240 240
WString WString
4 4
@ -1079,8 +1079,8 @@ WVList
0 0
243 243
MItem MItem
32 33
../../../../../lib/cmn/str-len.c ../../../../../lib/cmn/str-incl.c
244 244
WString WString
4 4
@ -1098,7 +1098,7 @@ WVList
247 247
MItem MItem
32 32
../../../../../lib/cmn/str-pac.c ../../../../../lib/cmn/str-len.c
248 248
WString WString
4 4
@ -1115,8 +1115,8 @@ WVList
0 0
251 251
MItem MItem
33 32
../../../../../lib/cmn/str-pbrk.c ../../../../../lib/cmn/str-pac.c
252 252
WString WString
4 4
@ -1133,8 +1133,8 @@ WVList
0 0
255 255
MItem MItem
32 33
../../../../../lib/cmn/str-put.c ../../../../../lib/cmn/str-pbrk.c
256 256
WString WString
4 4
@ -1152,7 +1152,7 @@ WVList
259 259
MItem MItem
32 32
../../../../../lib/cmn/str-rev.c ../../../../../lib/cmn/str-put.c
260 260
WString WString
4 4
@ -1170,7 +1170,7 @@ WVList
263 263
MItem MItem
32 32
../../../../../lib/cmn/str-rot.c ../../../../../lib/cmn/str-rev.c
264 264
WString WString
4 4
@ -1188,7 +1188,7 @@ WVList
267 267
MItem MItem
32 32
../../../../../lib/cmn/str-set.c ../../../../../lib/cmn/str-rot.c
268 268
WString WString
4 4
@ -1206,7 +1206,7 @@ WVList
271 271
MItem MItem
32 32
../../../../../lib/cmn/str-spl.c ../../../../../lib/cmn/str-set.c
272 272
WString WString
4 4
@ -1224,7 +1224,7 @@ WVList
275 275
MItem MItem
32 32
../../../../../lib/cmn/str-spn.c ../../../../../lib/cmn/str-spl.c
276 276
WString WString
4 4
@ -1242,7 +1242,7 @@ WVList
279 279
MItem MItem
32 32
../../../../../lib/cmn/str-str.c ../../../../../lib/cmn/str-spn.c
280 280
WString WString
4 4
@ -1259,8 +1259,8 @@ WVList
0 0
283 283
MItem MItem
34 32
../../../../../lib/cmn/str-subst.c ../../../../../lib/cmn/str-str.c
284 284
WString WString
4 4
@ -1277,8 +1277,8 @@ WVList
0 0
287 287
MItem MItem
32 34
../../../../../lib/cmn/str-tok.c ../../../../../lib/cmn/str-subst.c
288 288
WString WString
4 4
@ -1296,7 +1296,7 @@ WVList
291 291
MItem MItem
32 32
../../../../../lib/cmn/str-trm.c ../../../../../lib/cmn/str-tok.c
292 292
WString WString
4 4
@ -1313,8 +1313,8 @@ WVList
0 0
295 295
MItem MItem
33 32
../../../../../lib/cmn/str-word.c ../../../../../lib/cmn/str-trm.c
296 296
WString WString
4 4
@ -1331,8 +1331,8 @@ WVList
0 0
299 299
MItem MItem
29 33
../../../../../lib/cmn/time.c ../../../../../lib/cmn/str-word.c
300 300
WString WString
4 4
@ -1349,8 +1349,8 @@ WVList
0 0
303 303
MItem MItem
28 29
../../../../../lib/cmn/tio.c ../../../../../lib/cmn/task.c
304 304
WString WString
4 4
@ -1367,8 +1367,8 @@ WVList
0 0
307 307
MItem MItem
32 29
../../../../../lib/cmn/tre-ast.c ../../../../../lib/cmn/time.c
308 308
WString WString
4 4
@ -1385,8 +1385,8 @@ WVList
0 0
311 311
MItem MItem
36 28
../../../../../lib/cmn/tre-compile.c ../../../../../lib/cmn/tio.c
312 312
WString WString
4 4
@ -1403,8 +1403,8 @@ WVList
0 0
315 315
MItem MItem
44 32
../../../../../lib/cmn/tre-match-backtrack.c ../../../../../lib/cmn/tre-ast.c
316 316
WString WString
4 4
@ -1421,8 +1421,8 @@ WVList
0 0
319 319
MItem MItem
43 36
../../../../../lib/cmn/tre-match-parallel.c ../../../../../lib/cmn/tre-compile.c
320 320
WString WString
4 4
@ -1439,8 +1439,8 @@ WVList
0 0
323 323
MItem MItem
34 44
../../../../../lib/cmn/tre-parse.c ../../../../../lib/cmn/tre-match-backtrack.c
324 324
WString WString
4 4
@ -1457,8 +1457,8 @@ WVList
0 0
327 327
MItem MItem
34 43
../../../../../lib/cmn/tre-stack.c ../../../../../lib/cmn/tre-match-parallel.c
328 328
WString WString
4 4
@ -1475,8 +1475,8 @@ WVList
0 0
331 331
MItem MItem
28 34
../../../../../lib/cmn/tre.c ../../../../../lib/cmn/tre-parse.c
332 332
WString WString
4 4
@ -1493,8 +1493,8 @@ WVList
0 0
335 335
MItem MItem
29 34
../../../../../lib/cmn/utf8.c ../../../../../lib/cmn/tre-stack.c
336 336
WString WString
4 4
@ -1512,7 +1512,7 @@ WVList
339 339
MItem MItem
28 28
../../../../../lib/cmn/xma.c ../../../../../lib/cmn/tre.c
340 340
WString WString
4 4
@ -1529,44 +1529,44 @@ WVList
0 0
343 343
MItem MItem
3 29
*.h ../../../../../lib/cmn/utf8.c
344 344
WString WString
3 4
NIL COBJ
345 345
WVList WVList
0 0
346 346
WVList WVList
0 0
-1 11
1 1
1 1
0 0
347 347
MItem MItem
28 28
../../../../../lib/cmn/mem.h ../../../../../lib/cmn/xma.c
348 348
WString WString
3 4
NIL COBJ
349 349
WVList WVList
0 0
350 350
WVList WVList
0 0
343 11
1 1
1 1
0 0
351 351
MItem MItem
32 3
../../../../../lib/cmn/syscall.h *.h
352 352
WString WString
3 3
@ -1577,7 +1577,43 @@ WVList
354 354
WVList WVList
0 0
343 -1
1
1
0
355
MItem
28
../../../../../lib/cmn/mem.h
356
WString
3
NIL
357
WVList
0
358
WVList
0
351
1
1
0
359
MItem
32
../../../../../lib/cmn/syscall.h
360
WString
3
NIL
361
WVList
0
362
WVList
0
351
1 1
1 1
0 0