module CWellSurveyData
    use CWellSurveyDataVariables
    implicit none    
    public    
    contains    
        integer function SetSurveyData(count, array)
        !DEC$ ATTRIBUTES DLLEXPORT::SetSurveyData
        !DEC$ ATTRIBUTES ALIAS: 'SetSurveyData' :: SetSurveyData
            implicit none
            integer, intent(in) :: count
            integer :: i
            type(CSurveyDataItem), intent(inout), target :: array(count)            
			type(CSurveyDataItem), pointer :: item
            WellSurveyData%Count = count
            if(size(WellSurveyData%Items) > 0) then
                deallocate(WellSurveyData%Items)
            end if
            if(count > 0) then
                allocate(WellSurveyData%Items(count))
                do i = 1, count
			        item => array(i)
                    WellSurveyData%Items(i)%MeasuredDepth = item%MeasuredDepth  
                    WellSurveyData%Items(i)%Inclination = item%Inclination
                    WellSurveyData%Items(i)%Azimoth = item%Azimoth
                    WellSurveyData%Items(i)%TotalVerticalDepth = item%TotalVerticalDepth 
                    WellSurveyData%Items(i)%X = item%X
                    WellSurveyData%Items(i)%Y = item%Y
                    WellSurveyData%Items(i)%Z = item%Z
                end do  
            end if

            SetSurveyData = 0
        end function SetSurveyData
end module CWellSurveyData