ML-NLFFIGEN(1)   ML-NLFFIGEN(1)

ml-nlffigen - تولیدکننده کد واسط توابع خارجی برای Standard ML

ml-nlffigen [OPTIONS] file

ML-Nlffigen ابزاری برای تولید کد واسط (glue code) از فایل‌های سرایند زبان C است. این مولد کدهای منبع C را خوانده و کدهای SML را به همراه یک فایل توضیحات برای مدیر کامپایل (CM) تولید می‌کند.

-d, -dir DIR

دایرکتوری خروجی را که تمام فایل‌های تولیدشده در آن قرار می‌گیرند مشخص می‌کند (پیش‌فرض NLFFI-Generated).

-allSU

به ml-nlffigen دستور می‌دهد تا تمام structها و unionها را شامل شود، حتی آن‌هایی که در فایل‌های ضمیمه‌شده (included) تعریف شده‌اند، برخلاف فایل‌هایی که صراحتاً به عنوان آرگومان فهرست شده‌اند.

-width WID

عرض خط خروجی را (صرفاً به عنوان یک تخمین) روی WID تنظیم می‌کند (پیش‌فرض 75).

-smloption OPT

به ml-nlffigen دستور می‌دهد تا OPT را به فهرست گزینه‌های مربوط به یادداشت‌گذاری ورودی‌های .sml در فایل .cm تولیدشده اضافه کند. به‌طور پیش‌فرض، این فهرست تنها شامل «noguid» است.

-guid

مقدار پیش‌فرض «noguid» را از فهرست گزینه‌های sml حذف می‌کند. این گزینه مدیریت سخت‌گیرانه هویت نوع و شیء را دوباره فعال می‌کند، اما اگر برنامه‌نویس در حین توسعه مرتباً کل درخت فایل‌های تولیدشده توسط ml-nlffigen را حذف کند، می‌تواند تأثیر منفی بر کارایی کامپایل مجدد تفکیکی (cutoff recompilation) در CM بگذارد.

-t, -target TGT

مقصد را روی TGT تنظیم می‌کند (که باید یکی از موارد «sparc-unix»، «x86-unix» یا «x86-win32» باشد). مقدار پیش‌فرض معماری میزبان است.

-l, -light

نسخه‌های «سنگین» (heavy) پوشاننده‌های توابع و دسترسی‌دهنده‌های فیلد را نادیده می‌گیرد؛ همچنین هر گزینه -heavy قبلی را لغو می‌کند.

-h, -heavy

نسخه‌های «سبک» (light) پوشاننده‌های توابع و دسترسی‌دهنده‌های فیلد را نادیده می‌گیرد؛ همچنین هر گزینه -light قبلی را لغو می‌کند.

-na, -namedargs

به ml-nlffigen دستور می‌دهد تا در صورت وجود اطلاعات کافی در کد منبع C، پوشاننده‌های توابعی را تولید کند که به جای چندتایی‌ها (tuples) از آرگومان‌های نام‌دار (رکوردهای SML) استفاده می‌کنند.

-nocollect

ثابت‌های enum را از شمارش‌های واقعاً بی‌نام (آن‌هایی که بدون برچسب هستند و در بالاترین سطح یا در یک زمینه بدون نام تعریف شده‌اند؛ یعنی نه در یک typedef و نه در یک struct یا union نام‌دار دیگر) در یک شمارش ساختگی با برچسب ' (آپوستروف تکی) جمع‌آوری نمی‌کند. نماینده متناظر آن در سمت SML یک ساختار به نام E_' خواهد بود.

-ec, -enum-constructors

در صورت امکان (یعنی اگر تمام مقادیر یک شمارش مشخص با یکدیگر متفاوت باشند)، نوع نمایش ML برای شمارش را به یک datatype تبدیل می‌کند. پیش‌فرض (و حالت بازگشتی) این است که آن نوع همانند MLRep.Signed.int تعیین شود.

-lh -libhandle H

از متغیر H برای ارجاع به هندل شیء کتابخانه اشتراکی استفاده می‌کند. با توجه به محدودیت‌های CM، آرگومان H باید در قالب یک شناسه طولانی SML باشد؛ مانند MyLibrary.libhandle (پیش‌فرض Library.libh است).

-add, -include file

فایل file را در فایل .cm تولیدشده قرار می‌دهد. این گزینه حداقل یک بار برای ارائه هندل کتابخانه ضروری است. می‌توان از آن به دفعات دلخواه استفاده کرد که منجر به ذکر بیش از یک فایل ارائه‌شده توسط برنامه‌نویس می‌شود. اگر file یک مسیر نسبی باشد، باید نسبت به دایرکتوری مشخص‌شده در گزینه -dir در نظر گرفته شود.

-cm -cmfile file

نام فایل .cm تولیدشده را نسبت به دایرکتوری مشخص‌شده توسط گزینه -dir تعیین می‌کند (پیش‌فرض nlffi-generated.cm است).

-cppopt opt

رشته opt به فهرست گزینه‌هایی که باید به پیش‌پردازنده C ارسال شوند افزوده می‌شود. این فهرست گزینه‌ها جایگزین %o در الگوی خط فرمان cpp می‌شود.

-Ux

این گزینه (یعنی -Ux) به فهرست گزینه‌های cpp افزوده می‌شود.

-Dx

این گزینه (یعنی -Dx) به فهرست گزینه‌های cpp افزوده می‌شود.

-Ix

این گزینه (یعنی -Ix) به فهرست گزینه‌های cpp افزوده می‌شود.

-version

شماره نسخه ml-nlffigen را در خروجی استاندارد چاپ کرده و سپس خارج می‌شود.

-m, -match RE

به‌طور معمول ml-nlffigen تعاریف ML را برای یک اعلان C در صورتی لحاظ می‌کند که آن اعلان C به‌صورت متنی در یکی از فایل‌های مشخص‌شده در خط فرمان ظاهر شده باشد. تعاریف موجود در فایل‌های ضمیمه‌شده معمولاً لحاظ نخواهند شد (مگر اینکه نبود آن‌ها منجر به ناسازگاری شود). با مشخص کردن -match RE، ml-nlffigen تعاریفی را که در فایل‌های ضمیمه‌شده به‌صورت بازگشتی قرار دارند و عبارت باقاعده RE به سبک AWK با نام آن‌ها مطابقت دارد نیز لحاظ می‌کند.

-p, -prefix P

نام‌های تمام ساختارهای SML تولیدشده دارای پیشوند P خواهند بود (علاوه بر «S_» یا «U_» یا «F_» معمول).

-g, -gensym G

نام‌های تولیدشده توسط ml-nlffigen (برای struct/union/enumهای ناشناس) پسوند اضافی _G را دریافت خواهند کرد. اگر قرار باشد خروجی‌های چندین اجرای مستقل از ml-nlffigen در یک برنامه ML در کنار هم قرار گیرند، باید از این گزینه استفاده شود.

--

پردازش گزینه‌ها را متوقف می‌کند؛ باقی آرگومان‌ها به عنوان منابع C در نظر گرفته می‌شوند.

ML-Nlffigen متغیر محیطی FFIGEN_CPP را بررسی می‌کند تا رشته الگوی خط فرمان پیش‌پردازنده C را به دست آورد. اگر FFIGEN_CPP تنظیم نشده باشد، مقدار پیش‌فرض الگو برابر با «gcc -E -U__GNUC__ %o %s > %t» خواهد بود. خط فرمان واقعی با جایگزین کردن موارد رخداد %s با نام فایل منبع و %t با نام یک فایل موقت حاوی کد پیش‌پردازش‌شده به دست می‌آید.

ML-Nlffigen توسط Matthias Blume نوشته شده است.

sml(1)

NLFFI — A new SML/NJ Foreign-Function Interface (User Manual) (موجود در مستندات SML/NJ).

ML-Nlffigen هنوز از پلتفرم‌های ۶۴ بیتی پشتیبانی نمی‌کند.

حق نشر (C) 2020 The Fellowship of SML/NJ

این یک نرم‌افزار آزاد است؛ برای شرایط تکثیر به منبع مراجعه کنید. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.

2025-11-04 SML/NJ