2 #include "HDFconvert.hxx"
4 int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_container, const string& nomdataset)
7 HDFdataset * hdf_dataset;
14 // Ouverture du fichier source
15 if ( (fd = open(file.c_str(),O_RDONLY)) <0) {
16 perror("HDFConvert::FromAscii");
20 // Lit l'état du fichier
21 if ( fstat(fd,&status) < 0) {
22 perror("HDFConvert::FromAscii");
26 length = status.st_size; //Calcul la taille du fichier en octets
29 #ifdef _POSIX_MAPPED_FILES
31 // Map le fichier en mémoire
32 if ( (buffer = (char *) mmap(0,length,PROT_READ,MAP_SHARED,fd,0)) == MAP_FAILED ) {
33 perror("HDFConvert::FromAscii");
39 // Sort de la compilation
40 #error Necessite l''utilisation de la primitive mmap
44 // Creation du Dataset utilisateur
45 hdf_dataset = new HDFdataset::HDFdataset( (char *) nomdataset.c_str(), /*discard const */
46 (HDFcontainerObject*) &hdf_container, /*discard const, pas de constructeur par référence */
49 // Cree le Dataset sur le disk
50 hdf_dataset->CreateOnDisk();
53 hdf_dataset->WriteOnDisk(buffer);
55 // Ferme le fichier hdf
56 hdf_dataset->CloseOnDisk();
61 #ifdef _POSIX_MAPPED_FILES
63 // Desalloue le mapping
64 if (munmap(buffer,length) < 0 ) {
65 perror("HDFConvert::FromAscii");
70 // Ferme le fichier ASCII
72 perror("HDFConvert::FromAscii");