Rzutowanie danych na strukture - przejście na wersję obiektową

0

Witam.
Analizuję bibliotekę do czytania zmiennych z pliku o zapisie binarnym i wpisywania ich w taki sposób do pliku (pliki .mat z Matlaba). Dane o zmiennej zawierają się w typie strukturalnym:

typedef struct zmienna_typ {
    /* Inne pola z danymi */
    size_t bajty; /* Liczba bajtów zmiennej */
    int rozmiardanych; /* Bajty/element danych */
    int lwymiarow; /* Liczba wymiarów danych */
    size_t * wymiary; /* Długość kolejnych wymiarów */
    enum klasa klasadanych; /* Klasa danych zapisanych w zmiennej */
    char * nazwa; /* Nazwa */
    void * dane; /* Bufor danych zmiennej */
}

Funkcja wpisująca zmienną "danazmienna" do pliku po ustaleniu że jest ona tablicą komórek (więc "dane" stanowią następujące po sobie elementy tego samego typu strukturalnego o innych klasach danych) celem dostania się do danych i poprawnego zapisania ich dokonuje "chamskiego" rzutowania:

   zmienna_typ ** komorki =( zmienna_typ ** ) danazmienna->dane;
   liczbaelementow = danazmienna->bajty / danazmienna->rozmiardanych;
    for ( i = 0; i < liczbaelementow; i++ )
         ZapisPolaTablicyKomorek(mat,komorki[i]);
    break;

Następnie dla elementów tablicy "komorki" wywołuje funkcje zapisu charakterystyczne dla typu "zmienna_typ" (i w zależności od poziomu zagnieżdżenia danych może również dzięki temu wrócić w pewnym momencie do oryginalnej funkcji zapisu).

Problem polega na tym, że muszę cały ten proces przepisać na wersję opartą na klasach (czyli jak mniemam w tym przypadku "zmienna_typ" stanie się klasą) i nie bardzo wiem jak się do tego zabrać.
Czy istnieje jakiś "bezbolesny" sposób zrobienia tego? Zależy mi na jak najprostszym podejściu, aczkolwiek wszelkie sugestie i wskazówki są mile widziane.
Z góry dziękuję za odpowiedź.

1

Zapoznaj się z boost::archive zwyczajnie użyj lub zrób podobnie.
https://www.boost.org/doc/libs/1_70_0/libs/serialization/doc/tutorial.html

1

Ten plik .mat jest jakoś bardzo skomplikowany ? Bo jeśli nie, to może dowolna biblioteczka z obsługą HDF5 sobie poradzi ?

http://arma.sourceforge.net/docs.html

saving/loading matrices & cubes

1 użytkowników online, w tym zalogowanych: 0, gości: 1