'\" t .\" Title: ml-nlffigen .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.23 .\" Date: 2025-11-04 .\" Manual: \ \& .\" Source: SML/NJ .\" Language: English .\" .TH "ML\-NLFFIGEN" "1" "2025-11-04" "SML/NJ" "\ \&" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" ml-nlffigen \- تولیدکننده کد واسط توابع خارجی برای Standard ML .SH "خلاصه دستور (SYNOPSIS)" .sp \fBml\-nlffigen\fP [\fIOPTIONS\fP] \fIfile\fP .SH "توضیحات (DESCRIPTION)" .sp \fBML\-Nlffigen\fP ابزاری برای تولید کد واسط (glue code) از فایل‌های سرایند زبان \fBC\fP است. این مولد کدهای منبع \fBC\fP را خوانده و کدهای \fBSML\fP را به همراه یک فایل توضیحات برای مدیر کامپایل (CM) تولید می‌کند. .SH "گزینه‌ها (OPTIONS)" .sp \fB\-d, \-dir\fP \fIDIR\fP .RS 4 دایرکتوری خروجی را که تمام فایل‌های تولیدشده در آن قرار می‌گیرند مشخص می‌کند (پیش‌فرض \f(CRNLFFI\-Generated\fP). .RE .sp \fB\-allSU\fP .RS 4 به \fBml\-nlffigen\fP دستور می‌دهد تا تمام structها و unionها را شامل شود، حتی آن‌هایی که در فایل‌های ضمیمه‌شده (included) تعریف شده‌اند، برخلاف فایل‌هایی که صراحتاً به عنوان آرگومان فهرست شده‌اند. .RE .sp \fB\-width\fP \fIWID\fP .RS 4 عرض خط خروجی را (صرفاً به عنوان یک تخمین) روی \fIWID\fP تنظیم می‌کند (پیش‌فرض \f(CR75\fP). .RE .sp \fB\-smloption\fP \fIOPT\fP .RS 4 به \fBml\-nlffigen\fP دستور می‌دهد تا \fIOPT\fP را به فهرست گزینه‌های مربوط به یادداشت‌گذاری ورودی‌های \f(CR.sml\fP در فایل \f(CR.cm\fP تولیدشده اضافه کند. به‌طور پیش‌فرض، این فهرست تنها شامل «\f(CRnoguid\fP» است. .RE .sp \fB\-guid\fP .RS 4 مقدار پیش‌فرض «noguid» را از فهرست گزینه‌های sml حذف می‌کند. این گزینه مدیریت سخت‌گیرانه هویت نوع و شیء را دوباره فعال می‌کند، اما اگر برنامه‌نویس در حین توسعه مرتباً کل درخت فایل‌های تولیدشده توسط ml-nlffigen را حذف کند، می‌تواند تأثیر منفی بر کارایی کامپایل مجدد تفکیکی (cutoff recompilation) در CM بگذارد. .RE .sp \fB\-t, \-target\fP \fITGT\fP .RS 4 مقصد را روی \fITGT\fP تنظیم می‌کند (که باید یکی از موارد «sparc\-unix»، «x86\-unix» یا «x86\-win32» باشد). مقدار پیش‌فرض معماری میزبان است. .RE .sp \fB\-l, \-light\fP .RS 4 نسخه‌های «سنگین» (heavy) پوشاننده‌های توابع و دسترسی‌دهنده‌های فیلد را نادیده می‌گیرد؛ همچنین هر گزینه \fB\-heavy\fP قبلی را لغو می‌کند. .RE .sp \fB\-h, \-heavy\fP .RS 4 نسخه‌های «سبک» (light) پوشاننده‌های توابع و دسترسی‌دهنده‌های فیلد را نادیده می‌گیرد؛ همچنین هر گزینه \fB\-light\fP قبلی را لغو می‌کند. .RE .sp \fB\-na, \-namedargs\fP .RS 4 به \fBml\-nlffigen\fP دستور می‌دهد تا در صورت وجود اطلاعات کافی در کد منبع \fBC\fP، پوشاننده‌های توابعی را تولید کند که به جای چندتایی‌ها (tuples) از آرگومان‌های نام‌دار (رکوردهای \fBSML\fP) استفاده می‌کنند. .RE .sp \fB\-nocollect\fP .RS 4 ثابت‌های enum را از شمارش‌های واقعاً بی‌نام (آن‌هایی که بدون برچسب هستند و در بالاترین سطح یا در یک زمینه بدون نام تعریف شده‌اند؛ یعنی نه در یک typedef و نه در یک struct یا union نام‌دار دیگر) در یک شمارش ساختگی با برچسب \f(CR\*(Aq\fP (آپوستروف تکی) جمع‌آوری نمی‌کند. نماینده متناظر آن در سمت SML یک ساختار به نام \f(CRE_\*(Aq\fP خواهد بود. .RE .sp \fB\-ec, \-enum\-constructors\fP .RS 4 در صورت امکان (یعنی اگر تمام مقادیر یک شمارش مشخص با یکدیگر متفاوت باشند)، نوع نمایش ML برای شمارش را به یک datatype تبدیل می‌کند. پیش‌فرض (و حالت بازگشتی) این است که آن نوع همانند MLRep.Signed.int تعیین شود. .RE .sp \fB\-lh \-libhandle\fP \fIH\fP .RS 4 از متغیر \fIH\fP برای ارجاع به هندل شیء کتابخانه اشتراکی استفاده می‌کند. با توجه به محدودیت‌های CM، آرگومان \fIH\fP باید در قالب یک شناسه طولانی SML باشد؛ مانند \f(CRMyLibrary.libhandle\fP (پیش‌فرض \f(CRLibrary.libh\fP است). .RE .sp \fB\-add, \-include\fP \fIfile\fP .RS 4 فایل \fIfile\fP را در فایل \f(CR.cm\fP تولیدشده قرار می‌دهد. این گزینه حداقل یک بار برای ارائه هندل کتابخانه ضروری است. می‌توان از آن به دفعات دلخواه استفاده کرد که منجر به ذکر بیش از یک فایل ارائه‌شده توسط برنامه‌نویس می‌شود. اگر \fIfile\fP یک مسیر نسبی باشد، باید نسبت به دایرکتوری مشخص‌شده در گزینه \fB\-dir\fP در نظر گرفته شود. .RE .sp \fB\-cm \-cmfile\fP \fIfile\fP .RS 4 نام فایل \f(CR.cm\fP تولیدشده را نسبت به دایرکتوری مشخص‌شده توسط گزینه \fB\-dir\fP تعیین می‌کند (پیش‌فرض \f(CRnlffi\-generated.cm\fP است). .RE .sp \fB\-cppopt\fP \fIopt\fP .RS 4 رشته \fIopt\fP به فهرست گزینه‌هایی که باید به پیش‌پردازنده \fBC\fP ارسال شوند افزوده می‌شود. این فهرست گزینه‌ها جایگزین \f(CR%o\fP در الگوی خط فرمان cpp می‌شود. .RE .sp \fB\-U\fP\fIx\fP .RS 4 این گزینه (یعنی \fB\-U\fP\fIx\fP) به فهرست گزینه‌های cpp افزوده می‌شود. .RE .sp \fB\-D\fP\fIx\fP .RS 4 این گزینه (یعنی \fB\-D\fP\fIx\fP) به فهرست گزینه‌های cpp افزوده می‌شود. .RE .sp \fB\-I\fP\fIx\fP .RS 4 این گزینه (یعنی \fB\-I\fP\fIx\fP) به فهرست گزینه‌های cpp افزوده می‌شود. .RE .sp \fB\-version\fP .RS 4 شماره نسخه \fBml\-nlffigen\fP را در خروجی استاندارد چاپ کرده و سپس خارج می‌شود. .RE .sp \fB\-m, \-match\fP \fIRE\fP .RS 4 به‌طور معمول \fBml\-nlffigen\fP تعاریف ML را برای یک اعلان \fBC\fP در صورتی لحاظ می‌کند که آن اعلان \fBC\fP به‌صورت متنی در یکی از فایل‌های مشخص‌شده در خط فرمان ظاهر شده باشد. تعاریف موجود در فایل‌های ضمیمه‌شده معمولاً لحاظ نخواهند شد (مگر اینکه نبود آن‌ها منجر به ناسازگاری شود). با مشخص کردن \fB\-match\fP \fIRE\fP، \fBml\-nlffigen\fP تعاریفی را که در فایل‌های ضمیمه‌شده به‌صورت بازگشتی قرار دارند و عبارت باقاعده \fIRE\fP به سبک AWK با نام آن‌ها مطابقت دارد نیز لحاظ می‌کند. .RE .sp \fB\-p, \-prefix\fP \fIP\fP .RS 4 نام‌های تمام ساختارهای \fBSML\fP تولیدشده دارای پیشوند \fIP\fP خواهند بود (علاوه بر «\f(CRS_\fP» یا «\f(CRU_\fP» یا «\f(CRF_\fP» معمول). .RE .sp \fB\-g, \-gensym\fP \fIG\fP .RS 4 نام‌های تولیدشده توسط \fBml\-nlffigen\fP (برای struct/union/enumهای ناشناس) پسوند اضافی \f(CR_\fP\fIG\fP را دریافت خواهند کرد. اگر قرار باشد خروجی‌های چندین اجرای مستقل از \fBml\-nlffigen\fP در یک برنامه ML در کنار هم قرار گیرند، باید از این گزینه استفاده شود. .RE .sp \fB\-\-\fP .RS 4 پردازش گزینه‌ها را متوقف می‌کند؛ باقی آرگومان‌ها به عنوان منابع \fBC\fP در نظر گرفته می‌شوند. .RE .SH "محیط (ENVIRONMENT)" .sp \fBML\-Nlffigen\fP متغیر محیطی \f(CRFFIGEN_CPP\fP را بررسی می‌کند تا رشته الگوی خط فرمان پیش‌پردازنده \fBC\fP را به دست آورد. اگر \f(CRFFIGEN_CPP\fP تنظیم نشده باشد، مقدار پیش‌فرض الگو برابر با «\f(CRgcc \-E \-U__GNUC__ %o %s > %t\fP» خواهد بود. خط فرمان واقعی با جایگزین کردن موارد رخداد \f(CR%s\fP با نام فایل منبع و \f(CR%t\fP با نام یک فایل موقت حاوی کد پیش‌پردازش‌شده به دست می‌آید. .SH "نویسندگان (AUTHORS)" .sp \fBML\-Nlffigen\fP توسط Matthias Blume نوشته شده است. .SH "همچنین ببینید (SEE ALSO)" .sp sml(1) .sp \fINLFFI \(em A new SML/NJ Foreign\-Function Interface (User Manual)\fP (موجود در مستندات \fBSML/NJ\fP). .SH "گزارش باگ‌ها (BUGS)" .sp \fBML\-Nlffigen\fP هنوز از پلتفرم‌های ۶۴ بیتی پشتیبانی نمی‌کند. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .sp حق نشر (\fBC\fP) 2020 The Fellowship of SML/NJ .sp این یک نرم‌افزار آزاد است؛ برای شرایط تکثیر به منبع مراجعه کنید. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.