Couche de compatibilité : shim GLib et en-têtes réduits
engine/compat/ remplace ce que le cœur de gnubg attend du reste de gnubg et de GLib : config.h écrit à la main (sans threads, C générique, NEON prévu), shim GLib minimal (dont un analyseur XML pour les tables d'équité et mmap pour les bases de fin de partie), en-têtes réduits et fonctions de support. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
792f6395bf
commit
42bfb6506d
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* multithread.h -- en-tête réduit remplaçant celui de GNU Backgammon.
|
||||
*
|
||||
* Copyright (C) 2026 les auteurs d'Ustagammon.
|
||||
* Licence : GPLv3 ou ultérieure (voir LICENSE).
|
||||
*
|
||||
* Le moteur embarqué est compilé sans USE_MULTITHREAD (ADR 0005). Ne restent
|
||||
* que les définitions de la branche monothread de l'original : les macros
|
||||
* MT_* et les données locales au fil unique (td.tld).
|
||||
*/
|
||||
|
||||
#ifndef MULTITHREAD_H
|
||||
#define MULTITHREAD_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#if defined(USE_MULTITHREAD)
|
||||
#error "Le moteur embarqué d'Ustagammon est compilé sans threads"
|
||||
#endif
|
||||
|
||||
#include "backgammon.h"
|
||||
|
||||
#define multi_debug(x)
|
||||
|
||||
typedef struct {
|
||||
int id;
|
||||
move *aMoves;
|
||||
NNState *pnnState;
|
||||
} ThreadLocalData;
|
||||
|
||||
typedef struct {
|
||||
ThreadLocalData *tld;
|
||||
} ThreadData;
|
||||
|
||||
extern ThreadData td;
|
||||
|
||||
/* Définies dans mtsupport.c (branche sans threads). */
|
||||
extern void MT_InitThreads(void);
|
||||
extern void MT_Close(void);
|
||||
extern ThreadLocalData *MT_CreateThreadLocalData(int id);
|
||||
|
||||
#if !defined(MAX_NUMTHREADS)
|
||||
#define MAX_NUMTHREADS 1
|
||||
#endif
|
||||
extern int asyncRet;
|
||||
#define MT_Exclusive() {}
|
||||
#define MT_Release() {}
|
||||
#define MT_GetNumThreads() 1
|
||||
#define MT_SetResultFailed() asyncRet = -1
|
||||
#define MT_SafeInc(x) (++(*x))
|
||||
#define MT_SafeIncValue(x) (++(*x))
|
||||
#define MT_SafeIncCheck(x) ((*x)++)
|
||||
#define MT_SafeAdd(x, y) ((*x) += y)
|
||||
#define MT_SafeDec(x) (--(*x))
|
||||
#define MT_SafeDecCheck(x) ((--(*x)) == 0)
|
||||
#define MT_SafeGet(x) (*x)
|
||||
#define MT_SafeSet(x, y) ((*x) = y)
|
||||
#define MT_SafeCompare(x, y) ((*x) == y)
|
||||
#define MT_GetThreadID() 0
|
||||
#define MT_Get_nnState() td.tld->pnnState
|
||||
#define MT_Get_aMoves() td.tld->aMoves
|
||||
#define MT_GetTLD() td.tld
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user