PAlib: Fichier source de PA_GBFS.h

Page principale | Modules | Liste des fichiers | Portée globale | Rechercher

# PA_GBFS.h

Aller à la documentation de ce fichier.

    00001 #ifndef _PA_GBFS
    00002 #define _PA_GBFS
    00003
    00004 #ifdef __cplusplus
    00005 extern "C" {
    00006 #endif
    00007
    00013 #include "PA_Text.h"
    00014 #include "gbfs.h"
    00015
    00016
    00017
    00018
    00019 typedef struct{
    00020        void *File; // Position du fichier...
    00021        char Name[30]; // Nom du fichier, sans extension
    00022        char Ext[6]; // Extension du fichier !
    00023        u32 Length; // Longueur
    00024 } PA_GBFS_infos;
    00025 extern PA_GBFS_infos PA_GBFSfile[200];
    00026 extern s16 PA_GBFS_nfiles;
    00027 extern GBFS_FILE const* PA_GBFS_FILE;
    00028
    00039 extern inline u32 PA_InitGBFS(void){
    00040 s16 dot = 0;
    00041 s16 i = 0;
    00042
    00043        WAIT_CR &= ~0x80;
    00044
    00045        PA_GBFS_FILE = find_first_gbfs_file((void*)0x08000000);
    00046        PA_GBFS_nfiles = 0;
    00047        PA_GBFSfile[PA_GBFS_nfiles].File = (void*)gbfs_get_nth_obj(PA_GBFS_FILE, PA_GBFS_nfiles, (char*)PA_GBFSfile[PA_GBFS_nfiles].Name, &PA_GBFSfile[PA_GBFS_nfiles].Length);
    00048
    00049 while(PA_GBFSfile[PA_GBFS_nfiles].File != NULL){
    00050
    00051        // On cherche la fin du nom
    00052        while(PA_GBFSfile[PA_GBFS_nfiles].Name[i]) i++;
    00053        // On en déduit le dernier point, pour avoir l'extension
    00054        while(PA_GBFSfile[PA_GBFS_nfiles].Name[i] != '.') i--; // On cherche l'extension
    00055        dot = i+1;
    00056
    00057        for (i = 0; PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot] ; i++){
    00058               PA_GBFSfile[PA_GBFS_nfiles].Ext[i] = PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot];
    00059               if (('A' <= PA_GBFSfile[PA_GBFS_nfiles].Ext[i])&&(PA_GBFSfile[PA_GBFS_nfiles].Ext[i] <= 'Z')) PA_GBFSfile[PA_GBFS_nfiles].Ext[i] += 'a' - 'A'; // On passe en minuscule
    00060               PA_GBFSfile[PA_GBFS_nfiles].Ext[i+1] = 0;
    00061               PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-1] = 0;
    00062               if (PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-2] == '.') PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-2] = 0;
    00063        }
    00064        PA_GBFSfile[PA_GBFS_nfiles].Name[dot] = 0;
    00065        PA_GBFSfile[PA_GBFS_nfiles].Ext[dot] = 0;
    00066
    00067        ++PA_GBFS_nfiles; // On ajoute un objet...
    00068        PA_GBFSfile[PA_GBFS_nfiles].File = (void*)gbfs_get_nth_obj(PA_GBFS_FILE, PA_GBFS_nfiles, (char*)PA_GBFSfile[PA_GBFS_nfiles].Name, &PA_GBFSfile[PA_GBFS_nfiles].Length);
    00069 }
    00070
    00071 return PA_GBFS_nfiles;
    00072 }
    00073
    00074
    00075
    00090 extern inline s32 PA_GetGBFSFile(s16 start, char *name, char *extension){
    00091 s16 i;
    00092
    00093 for (i = start; i < PA_GBFS_nfiles; i++){
    00094        if (PA_CompareText(PA_GBFSfile[i].Name, name)&& PA_CompareText(PA_GBFSfile[i].Ext, extension))
    00095               return i;
    00096 }
    00097
    00098 return -1;
    00099 }
    00100
    00101
    00113 s16 PA_GBFSSearchExt(s16 *array, char *extension);
    00114
    00115  // end of GBFS
    00117
    00118
    00119 #ifdef __cplusplus
    00120 }
    00121 #endif
    00122
    00123 #endif
    00124
    00125