Sauf que j'ai besoin au minimum du code, des registres, des flags et de la RAM. Et j'aime pas le multi-fenêtre, j'avais particulièrement insisté auprès de Romain pour avoir un dock unique, et il l'avait gentiment fait.
Le problème c'est qu'en GTK, ça prend une place folle. Les tailles de police auraient dû être fixées par défaut.
Kevin Kofler (./1570) :
Pas si on programme en C.
On peut parfaitement calculer les pointeurs de fonction et les appeler comme ça en C.
const unsigned char PdtlibFuncs[] =
{
PDTLIB__INIT_CMDLINE,
PDTLIB__MANAGE_ARGS,
PDTLIB__GET_CURRENT_ARG_PTR,
PDTLIB__SKIP_ARGS,
PDTLIB__GET_FILE_PTR,
PDTLIB__CHECK_FILE_TYPE,
0, /* End of table */
0
};
const unsigned short PdtLibOffsets[] =
{
(unsigned long)&Data.InitCmdline - (unsigned long)&Data,
(unsigned long)&Data.ManageArgs - (unsigned long)&Data,
(unsigned long)&Data.GetCurrentArgPtr - (unsigned long)&Data,
(unsigned long)&Data.SkipArgs - (unsigned long)&Data,
(unsigned long)&Data.GetFilePtr - (unsigned long)&Data,
(unsigned long)&Data.CheckFileType - (unsigned long)&Data
}; RegisterFunctionsPtr(&Data, Data.pdtlib, PdtlibFuncs, PdtLibOffsets);
...
if (Data.CheckFileType(CfgFilename, TEXT_TAG, NULL) == 0)
Data.printf(STR_NO_CONFIG_FILE);
else
{
ptr = Data.GetFilePtr(CfgFilename);
}void RegisterFunctionsPtr(SFRAME* Data, LibRef* Descriptor, const unsigned char* Func, const unsigned short* Offset)
{
while ((*Func != 0) || (*(Func + 1) != 0))
{
*(void**)((unsigned long) Data + *Offset) = kernel_LibsPtr(Descriptor, (short) *Func);
Offset ++;
Func ++;
}
}