/*
 * System resources loading
 *
 * Copyright 1995 Alexandre Julliard
 */

#include "winbase.h"
#include "wine/winbase16.h"
#include "global.h"
#include "options.h"
#include "resource.h"
#include "wrc_rsc.h"

extern const wrc_resource32_t * const sysres_En_ResTable[];
extern const wrc_resource32_t * const sysres_Es_ResTable[];
extern const wrc_resource32_t * const sysres_De_ResTable[];
extern const wrc_resource32_t * const sysres_No_ResTable[];
extern const wrc_resource32_t * const sysres_Fr_ResTable[];
extern const wrc_resource32_t * const sysres_Fi_ResTable[];
extern const wrc_resource32_t * const sysres_Da_ResTable[];
extern const wrc_resource32_t * const sysres_Cs_ResTable[];
extern const wrc_resource32_t * const sysres_Eo_ResTable[];
extern const wrc_resource32_t * const sysres_It_ResTable[];
extern const wrc_resource32_t * const sysres_Ko_ResTable[];
extern const wrc_resource32_t * const sysres_Hu_ResTable[];
extern const wrc_resource32_t * const sysres_Pl_ResTable[];
extern const wrc_resource32_t * const sysres_Pt_ResTable[];
extern const wrc_resource32_t * const sysres_Sv_ResTable[];
extern const wrc_resource32_t * const sysres_Ca_ResTable[];
extern const wrc_resource32_t * const sysres_Nl_ResTable[];
extern const wrc_resource32_t * const sysres_Ru_ResTable[];
extern const wrc_resource32_t * const sysres_Wa_ResTable[];

static const wrc_resource32_t * const * SYSRES_Resources[] =
{
    sysres_En_ResTable,  /* LANG_En */
    sysres_Es_ResTable,  /* LANG_Es */
    sysres_De_ResTable,  /* LANG_De */
    sysres_No_ResTable,  /* LANG_No */
    sysres_Fr_ResTable,  /* LANG_Fr */
    sysres_Fi_ResTable,  /* LANG_Fi */
    sysres_Da_ResTable,  /* LANG_Da */
    sysres_Cs_ResTable,  /* LANG_Cs */
    sysres_Eo_ResTable,  /* LANG_Eo */
    sysres_It_ResTable,  /* LANG_It */
    sysres_Ko_ResTable,  /* LANG_Ko */
    sysres_Hu_ResTable,  /* LANG_Hu */
    sysres_Pl_ResTable,  /* LANG_Pl */
    sysres_Pt_ResTable,  /* LANG_Pt */
    sysres_Sv_ResTable,  /* LANG_Sv */
    sysres_Ca_ResTable,  /* LANG_Ca */
    sysres_Nl_ResTable,  /* LANG_Nl */
    sysres_Ru_ResTable,  /* LANG_Ru */
    sysres_Wa_ResTable   /* LANG_Wa */
};


/***********************************************************************
 *           SYSRES_GetResourcePtr
 *
 * Return a pointer to a system resource.
 */
LPCVOID SYSRES_GetResPtr( SYSTEM_RESOURCE id )
{
    return SYSRES_Resources[Options.language][id]->data;
}


/***********************************************************************
 *           SYSRES_LoadResource
 *
 * Create a global memory block for a system resource.
 */
HGLOBAL16 SYSRES_LoadResource( SYSTEM_RESOURCE id )
{
    const wrc_resource32_t *resPtr;

    resPtr = SYSRES_Resources[Options.language][id];
    return GLOBAL_CreateBlock( GMEM_FIXED, resPtr->data, resPtr->datasize,
			       GetCurrentPDB16(), FALSE, FALSE, TRUE, NULL );
}


/***********************************************************************
 *           SYSRES_FreeResource
 *
 * Free a global memory block for a system resource.
 */
void SYSRES_FreeResource( HGLOBAL16 handle )
{
    GLOBAL_FreeBlock( handle );
}