Program Listing for File NuMagSANSlib_FreeData.h#

↰ Return to documentation for file (src/wrapper/NuMagSANSlib_FreeData.h)

#pragma once

inline void FreeDataMulti(InputFileData* InputData, MagnetizationData* MagData, MagnetizationData* MagData_gpu,
                          NuclearData* NucData, NuclearData* NucData_gpu, StructureData* StructData,
                          StructureData* StructData_gpu, RotationData* RotData, RotationData* RotData_gpu,
                          ScatteringData* SANSData, ScatteringData* SANSData_gpu, SpectralData* SpecData,
                          SpectralData* SpecData_gpu) {

    if (InputData->NucData_activate_flag) {
        free_NuclearData(NucData, NucData_gpu);
    }

    if (InputData->MagData_activate_flag) {
        free_MagnetizationData(MagData, MagData_gpu);
    }

    if (InputData->StructData_activate_flag) {
        free_StructureData(StructData, StructData_gpu);
    }

    if (InputData->RotData_activate_flag) {
        free_RotationData(RotData, RotData_gpu);
    }

    // free scattering data
    free_ScatteringData(SANSData, SANSData_gpu);

    // free spectral data
    free_SpectralData(SpecData, SpecData_gpu);
}

inline void FreeData(InputFileData* InputData, NuMagSANSData* Data) {

    FreeDataMulti(InputData, &Data->MagData, &Data->MagData_gpu, &Data->NucData, &Data->NucData_gpu, &Data->StructData,
                  &Data->StructData_gpu, &Data->RotData, &Data->RotData_gpu, &Data->SANSData, &Data->SANSData_gpu,
                  &Data->SpecData, &Data->SpecData_gpu);
}