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ź.