Мне нужно работать с некоторыми устаревшими Fortran, хотя я могу использовать последние компиляторы.Создать обертку Объекты для де-convolute ужасного кода Fortran?
В коде хранится огромное количество данных в одномерных массивах.
Например,
PROGRAM horrible_coding
IMPLICIT EVERYTHING ! Sarcasm
REAL, DIMENSION(1000) :: data
INTEGER, DIMENSION(50) :: info_location
! Somewhere, info is read in and stored temporarily as info_1, info_2, etc.
data(1:3) = info_1
data(4:9) = info_2
...
data(134:192) = info_n
ассоциация между которыми элементы в массиве DATA
пойти с, какие части info
хранятся во втором массиве. Что-то вроде:
info_location(1) = 1
info_location(2) = 4
info_location(n) = 134
Это верно. Значение каждого элемента массива info_location
относится к первому элементу массива данных, где вы можете найти соответствующую информацию.
Так, например, если вы хотите получить данные для info_7, вы должны сделать следующее:
size_of_info_7 = info_location(8) - info_location(7)
ALLOCATE(data_for_info_7(size_of_info_7))
data_for_info_7 = data(info_location(7) : info_location(7) + size_of_info_7 - 1)
В настоящем время, вид этого безумия мог вызвать кровь, чтобы начать стрельбу из ваши глаза, поэтому я приношу свои извинения.
Я хотел бы создать экземпляры объектов и сохранить все соответствующие данные для каждой части информации как данные экземпляра. И пока я привожу вещи в 2003 году, я бы создал методы экземпляра для получения и установки данных экземпляра.
Я не хочу переписывать код, но хочу поставить эту модернизацию поверх того, что уже есть.
Я считаю, что могу сделать это, сделав данные экземпляра объекта просто указателями, указывающими на фактические элементы массива data
, который содержит соответствующую информацию.
Это разумная вещь?
Могу ли я создавать объекты в Фортране, чьи данные экземпляра являются преимущественно указателями?
Я не решаюсь приступить к этой задаче, не отбросив идею до stackoverflow.
Так, очевидно, из редактирования pst я спрашиваю об объектах-оболочках. Уже чувствую себя лучше, зная, что есть имя того, что я пытаюсь сделать. – EMiller
Я не касался fortran в течение многих лет, поэтому не знаю о каких-либо расширениях объектов. Однако я бы рекомендовал, чтобы перед тем, как вы реорганизовали код, вы должны провести несколько проверочных тестов, которые гарантируют, что вы не сломаете какой-либо архановый фрагмент логики. –