| bfort(1) | bfort(1) |
نام (NAME)
bfort - برنامهای برای استخراج تعاریف کوتاه برای واسط Fortran به C
ورودی (INPUT)
- filenames
- - نام فایلهایی را مشخص میکند که تعاریف lint باید از آنها استخراج شوند.
- -nomsgs
- - برای روالهایی که امکان تبدیل آنها به Fortran وجود ندارد، پیامی تولید نمیکند.
- -nofort
- - برای تمام روالها/ماکروهایی که معادل Fortran ندارند، پیام تولید میکند.
- -dir name
- - دایرکتوری برای فایل خروجی
- -I name
- - فایلی که شامل includeهای مشترک است
- -mapptr
- - تبدیل اشارهگرها به اندیسهای عدد صحیح (integer)
- -ptrprefix
- - پیشوند برای نام توابعی که برای تبدیل به/از اشارهگرها استفاده میشوند (پیشفرض __ است). ماکرویی که شکل را بر اساس اندازه اشارهگر انتخاب میکند، میتواند با -ptr64 تغییر یابد.
- -anyname
- - با افزودن نامهای پیشپردازنده C، یک پوشش (wrapper) واحد برای Fortran تولید میکند که تقریباً روی تمام سیستمها کار میکند (پایین را ببینید). این نامها را میتوان با -fcaps ،-fuscore و -fduscore تغییر داد.
- -ferr
- - نسخههای Fortran مقدار روال را به عنوان آخرین آرگومان (یک عدد صحیح) برمیگردانند. این روش در MPI استفاده میشود و رویکردی متداول برای مدیریت خطاهای بازگشتی است.
- -shortargname
- - استفاده از نامهای کوتاه (تکنویسهای) برای آرگومانها به جای نام موجود در تعریف C.
- -fstring
- - فعالسازی مدیریت پارامترهای نویسهای Fortran با استفاده از رایجترین واسط فراخوانی. این حالت پیشفرض است مگر اینکه متغیر محیطی BFORT_STRINGHANDLING روی IGNORE تنظیم شده باشد.
- -fnostring
- - غیرفعالسازی مدیریت پارامترهای نویسهای Fortran. برای روالهایی که در C آرگومانهای char دارند، روال واسطی تولید نخواهد شد.
- -fstring
- - asis - عدم پردازش خاص برای آرگومانهای رشتهای. جهت سازگاری عقبروی با نسخههای قدیمیتر bfort که از رشتهها پشتیبانی نمیکردند ارائه شده است.
- -mpi
- - مدیریت انواع MPI (برخی موارد بر اساس تعریف، اشارهگر هستند)
- -no_pmpi
- - عدم تولید نامهای PMPI
- -pmpi name
- - تغییر ماکروی مورد استفاده برای انتخاب نسخه پروفایلسازی MPI
- -noprofile
- - غیرفعال کردن تولید نسخه پروفایلسازی
- -mnative
- - ارجاعهای چندگانه نامستقیم انواع داده بومی هستند (بدون تبدیل اجباری)
- -voidisptr
- - در نظر گرفتن “void *” به عنوان اشارهگر به یک ساختار (structure).
- -nodebug
- - عدم
افزودن
#ifndef DEBUG_ALL #define DEBUG_ALL #endif
به فایل پوشش (wrapper).
- -anyname
- - تولید یک
پوشش واحد
که
میتواند
سه حالت
بسیار رایج
را مدیریت
کند: زیرخط
در انتها،
بدون
زیرخط، و
تماماً با
حروف بزرگ.
انتخاب بر
این اساس
است که آیا
FORTRANCAPS: نامها با حروف بزرگ، بدون زیرخط در انتها FORTRANUNDERSCORE: نامها با حروف کوچک، همراه با زیرخط در انتها تعریف شده باشند. FORTRANDOUBLEUNDERSCORE: نامها با حروف کوچک، همراه با دو زیرخط در
انتها. این مورد زمانی لازم است که از برخی نسخههای “f2c” برای تولید کد C از روالهای Fortran استفاده میشود. توجه داشته باشید که f2c تنها زمانی از دو زیرخط استفاده میکند که نام از قبل حاوی یک زیرخط باشد (دستکم روی سیستم FreeBSD که من استفاده میکنم و از f2c بهره میبرد). برای مدیریت این حالت، کد تولیدشده تنها زمانی حاوی زیرخط دوم خواهد بود که نام از قبل دارای یک زیرخط باشد.
اگر -mapptr نیز انتخاب شده باشد، در این صورت
POINTER_64_BITS
نیز برای تعیین اینکه آیا اشارهگرها برای قرار گرفتن در یک عدد صحیح ۳۲ بیتی Fortran بیش از حد بزرگ هستند یا خیر استفاده خواهد شد. روالهایی که یک اشارهگر را نابود میکنند، باید بهصورت دستی فراخوانی __RmPointer را درج نمایند. روالهای مربوط به مدیریت اشارهگرها در ptrcvt.c قرار دارند.
علاوه بر این، اگر -mpi استفاده شود و -no_pmpi استفاده نشود، نامهای پروفایلسازی MPI نیز که با MPI_BUILD_PROFILING احاطه شدهاند تولید میشوند.
نکته (NOTE)
ما واقعاً به راهکاری برای تعیین یک نوع کلی به عنوان اشارهگر نیاز داریم تا مانند یک اشارهگر مدیریت شود. گزینه -mpi یک راهحل موقت و اضطراری برای یک نیاز مبرم است. در نهایت باید گزینه “-ptr name” فراهم شود و هنگام جستجو برای انواع شناختهشده در یک فضای جستجو نگهداری شود.
نویسنده (AUTHOR)
Bill Gropp
مکان (LOCATION)
bfort.c
| 6/25/2019 |