.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "glib-genmarshal" "1" "" "" .SH "نام (NAME)" glib\-genmarshal \- ابزار تولید مارشالرهای سیگنال C برای رویدادهای GObject .\" This has to be duplicated from above to make it machine-readable by `reuse`: .\" SPDX-FileCopyrightText: 2003 Matthias Clasen .\" SPDX-FileCopyrightText: 2005, 2012, 2013, 2016 Red Hat, Inc. .\" SPDX-FileCopyrightText: 2010 Christian Persch .\" SPDX-FileCopyrightText: 2017, 2019, 2020 Emmanuele Bassi .\" SPDX-FileCopyrightText: 2020 Centricular .\" SPDX-License-Identifier: LGPL-2.1-or-later . .SH "خلاصه دستور (SYNOPSIS)" .nf \fBglib\-genmarshal\fP [OPTION…] [FILE…] .fi .sp .SH "توضیحات (DESCRIPTION)" .sp دستور \fBglib\-genmarshal\fP یک ابزار کوچک است که مارشالرهای کد C را برای توابع بازخوانی (callback) سازوکار GClosure در زیرکتابخانه GObject از GLib تولید می‌کند. توابع مارشالر دارای امضای استاندارد هستند؛ کلوژر فراخواننده‌شده، آرایه‌ای از ساختارهای مقادیر شامل پارامترهای تابع بازخوانی، و یک ساختار مقدار برای مقدار بازگشتی تابع بازخوانی به آن‌ها منتقل می‌شود. سپس مارشالر مسئول فراخوانی تابع کد C متناظر کلوژر با تمام پارامترها در پشته و جمع‌آوری مقدار بازگشتی آن است. .sp ابزار \fBglib\-genmarshal\fP فهرستی از مارشالرها را جهت تولید به عنوان ورودی دریافت می‌کند. این فهرست مارشالرها یا از فایل‌های ارائه‌شده به عنوان آرگومان‌های اضافی در خط فرمان خوانده می‌شود، یا از ورودی استاندارد با استفاده از \fB\-\fP به عنوان فایل ورودی دریافت می‌گردد. .SS "قالب فهرست مارشالر (MARSHALLER LIST FORMAT)" .sp فهرست‌های مارشالر خط‌به‌خط پردازش می‌شوند. یک خط می‌تواند حاوی یک کامنت به شکل زیر باشد: .INDENT 0.0 .INDENT 3.5 .sp .EX # this is a comment .EE .UNINDENT .UNINDENT .sp یا مشخصات یک مارشالر به شکل زیر: .INDENT 0.0 .INDENT 3.5 .sp .EX RTYPE:PTYPE RTYPE:PTYPE,PTYPE RTYPE:PTYPE,PTYPE,PTYPE … .EE .UNINDENT .UNINDENT .sp بخش \fBRTYPE\fP نوع بازگشتی تابع بازخوانی را مشخص می‌کند و نمونه‌های \fBPTYPE\fP در سمت راست دونقطه، فهرست پارامترهای تابع بازخوانی را مشخص می‌سازند، به‌جز آرگومان‌های اول و آخر که همیشه اشاره‌گر (pointer) هستند. .SS "انواع پارامترها (PARAMETER TYPES)" .sp در حال حاضر انواع زیر پشتیبانی می‌شوند: .sp \fBVOID\fP .INDENT 0.0 .INDENT 3.5 عدم وجود نوع بازگشتی یا عدم وجود پارامتر اضافی را نشان می‌دهد. اگر از \fBVOID\fP به عنوان فهرست پارامتر استفاده شود، هیچ پارامتر دیگری نباید وجود داشته باشد. .UNINDENT .UNINDENT .sp \fBBOOLEAN\fP .INDENT 0.0 .INDENT 3.5 برای انواع بولی (\fBgboolean\fP). .UNINDENT .UNINDENT .sp \fBCHAR\fP .INDENT 0.0 .INDENT 3.5 برای انواع کاراکتر علامت‌دار (\fBgchar\fP). .UNINDENT .UNINDENT .sp \fBUCHAR\fP .INDENT 0.0 .INDENT 3.5 برای انواع کاراکتر بدون علامت (\fBguchar\fP). .UNINDENT .UNINDENT .sp \fBINT\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح علامت‌دار (\fBgint\fP). .UNINDENT .UNINDENT .sp \fBUINT\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح بدون علامت (\fBguint\fP). .UNINDENT .UNINDENT .sp \fBLONG\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح بزرگ علامت‌دار (\fBglong\fP). .UNINDENT .UNINDENT .sp \fBULONG\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح بزرگ بدون علامت (\fBgulong\fP). .UNINDENT .UNINDENT .sp \fBINT64\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح ۶۴ بیتی علامت‌دار (\fBgint64\fP). .UNINDENT .UNINDENT .sp \fBUINT64\fP .INDENT 0.0 .INDENT 3.5 برای انواع عدد صحیح ۶۴ بیتی بدون علامت (\fBguint64\fP). .UNINDENT .UNINDENT .sp \fBENUM\fP .INDENT 0.0 .INDENT 3.5 برای انواع شمارشی (\fBgint\fP). .UNINDENT .UNINDENT .sp \fBFLAGS\fP .INDENT 0.0 .INDENT 3.5 برای انواع شمارشی پرچم (\fBguint\fP). .UNINDENT .UNINDENT .sp \fBFLOAT\fP .INDENT 0.0 .INDENT 3.5 برای انواع ممیز شناور با دقت تکی (\fBgfloat\fP). .UNINDENT .UNINDENT .sp \fBDOUBLE\fP .INDENT 0.0 .INDENT 3.5 برای انواع ممیز شناور با دقت مضاعف (\fBgdouble\fP). .UNINDENT .UNINDENT .sp \fBSTRING\fP .INDENT 0.0 .INDENT 3.5 برای انواع رشته (\fBgchar*\fP). .UNINDENT .UNINDENT .sp \fBBOXED\fP .INDENT 0.0 .INDENT 3.5 برای انواع باکس‌شده (ناشناس اما دارای شمارش ارجاع) (\fBGBoxed*\fP). .UNINDENT .UNINDENT .sp \fBPARAM\fP .INDENT 0.0 .INDENT 3.5 برای \fBGParamSpec\fP یا انواع مشتق‌شده (\fBGParamSpec*\fP). .UNINDENT .UNINDENT .sp \fBPOINTER\fP .INDENT 0.0 .INDENT 3.5 برای انواع اشاره‌گر ناشناس (\fBgpointer\fP). .UNINDENT .UNINDENT .sp \fBOBJECT\fP .INDENT 0.0 .INDENT 3.5 برای \fBGObject\fP یا انواع مشتق‌شده (\fBGObject*\fP). .UNINDENT .UNINDENT .sp \fBVARIANT\fP .INDENT 0.0 .INDENT 3.5 برای انواع \fBGVariant\fP (\fBGVariant*\fP). .UNINDENT .UNINDENT .sp \fBNONE\fP .INDENT 0.0 .INDENT 3.5 نام مستعار منسوخ‌شده برای \fBVOID\fP\&. .UNINDENT .UNINDENT .sp \fBBOOL\fP .INDENT 0.0 .INDENT 3.5 نام مستعار منسوخ‌شده برای \fBBOOLEAN\fP\&. .UNINDENT .UNINDENT .SH "گزینه‌ها (OPTIONS)" .sp \fB\-\-header\fP .INDENT 0.0 .INDENT 3.5 تولید محتوای فایل سرایند (header) برای مارشالرها. این گزینه مانعة‌الجمع با گزینه \fB\-\-body\fP است. .UNINDENT .UNINDENT .sp \fB\-\-body\fP .INDENT 0.0 .INDENT 3.5 تولید محتوای فایل کد C برای مارشالرها. این گزینه مانعة‌الجمع با گزینه \fB\-\-header\fP است. .UNINDENT .UNINDENT .sp \fB\-\-prefix \fP .INDENT 0.0 .INDENT 3.5 تعیین پیشوند مارشالر. پیشوند پیش‌فرض \fBg_cclosure_user_marshal\fP است. .UNINDENT .UNINDENT .sp \fB\-\-skip\-source\fP .INDENT 0.0 .INDENT 3.5 صرف‌نظر از درج توضیحات مکان مبدا در کامنت‌های تولیدشده. .UNINDENT .UNINDENT .sp \fB\-\-stdinc\fP .INDENT 0.0 .INDENT 3.5 استفاده از مارشالرهای استاندارد کتابخانه GObject، و درج \fBglib\-object.h\fP در فایل‌های سرایند تولیدشده. این گزینه مانعة‌الجمع با گزینه \fB\-\-nostdinc\fP است. .UNINDENT .UNINDENT .sp \fB\-\-nostdinc\fP .INDENT 0.0 .INDENT 3.5 عدم استفاده از مارشالرهای استاندارد کتابخانه GObject، و صرف‌نظر از دستور include برای \fBglib\-object.h\fP در فایل‌های سرایند تولیدشده. این گزینه مانعة‌الجمع با گزینه \fB\-\-stdinc\fP است. .UNINDENT .UNINDENT .sp \fB\-\-internal\fP .INDENT 0.0 .INDENT 3.5 علامت‌گذاری توابع تولیدشده به عنوان داخلی با استفاده از \fBG_GNUC_INTERNAL\fP\&. .UNINDENT .UNINDENT .sp \fB\-valist\-marshallers\fP .INDENT 0.0 .INDENT 3.5 تولید مارشالرهای \fBvalist\fP، برای استفاده با \fBg_signal_set_va_marshaller()\fP\&. .UNINDENT .UNINDENT .sp \fB\-v\fP, \fB\-\-version\fP .INDENT 0.0 .INDENT 3.5 نمایش اطلاعات نسخه و خروج. .UNINDENT .UNINDENT .sp \fB\-\-g\-fatal\-warnings\fP .INDENT 0.0 .INDENT 3.5 مهلک تلقی کردن هشدارها؛ بدین معنا که به محض وقوع هشدار، برنامه بلافاصله خارج می‌شود. .UNINDENT .UNINDENT .sp \fB\-h\fP, \fB\-\-help\fP .INDENT 0.0 .INDENT 3.5 نمایش راهنمای کوتاه و خروج. .UNINDENT .UNINDENT .sp \fB\-\-output \fP .INDENT 0.0 .INDENT 3.5 نوشتن خروجی در \fBFILE\fP به جای خروجی استاندارد. .UNINDENT .UNINDENT .sp \fB\-\-prototypes\fP .INDENT 0.0 .INDENT 3.5 تولید پیش‌نمونه‌های تابع (prototypes) پیش از تعریف تابع در فایل منبع C، به منظور جلوگیری از هشدار کامپایلر مبنی بر \fBmissing\-prototypes\fP. این گزینه فقط هنگام استفاده از گزینه \fB\-\-body\fP کاربرد دارد. .UNINDENT .UNINDENT .sp \fB\-\-pragma\-once\fP .INDENT 0.0 .INDENT 3.5 استفاده از عملگر عمل‌افزا \fBonce\fP به‌جای ساختار سنتی محافظ سرایند (header guard) هنگام تولید فایل سرایند C. این گزینه فقط هنگام استفاده از گزینه \fB\-\-header\fP کاربرد دارد. .UNINDENT .UNINDENT .sp \fB\-\-include\-header
\fP .INDENT 0.0 .INDENT 3.5 افزودن دستور \fB#include\fP برای فایل مشخص‌شده در فایل منبع C. این گزینه فقط هنگام استفاده از گزینه \fB\-\-body\fP کاربرد دارد. .UNINDENT .UNINDENT .sp \fB\-D [=]\fP .INDENT 0.0 .INDENT 3.5 افزودن دستور پیش‌پردازنده C به شکل \fB#define\fP برای \fBSYMBOL\fP و \fBVALUE\fP تعیین‌شده آن، یا \fB\(dq1\(dq\fP در صورت عدم تنظیم مقدار. می‌توانید چندین بار از این گزینه استفاده کنید؛ در این صورت، تمام نمادها به همان ترتیبی که در خط فرمان آمده‌اند تعریف خواهند شد، پیش از نمادهایی که با گزینه \fB\-U\fP لغو تعریف می‌شوند. این گزینه فقط هنگام استفاده از گزینه \fB\-\-body\fP کاربرد دارد. .UNINDENT .UNINDENT .sp \fB\-U \fP .INDENT 0.0 .INDENT 3.5 افزودن دستور پیش‌پردازنده C به شکل \fB#undef\fP برای لغو تعریف \fBSYMBOL\fP مشخص‌شده. می‌توانید چندین بار از این گزینه استفاده کنید؛ در این صورت، تمام نمادها به همان ترتیبی که در خط فرمان مشخص شده‌اند، پس از نمادهای تعریف‌شده توسط گزینه \fB\-D\fP، لغو تعریف خواهند شد. این گزینه فقط هنگام استفاده از گزینه \fB\-\-body\fP کاربرد دارد. .UNINDENT .UNINDENT .sp \fB\-\-quiet\fP .INDENT 0.0 .INDENT 3.5 به حداقل رساندن خروجی \fBglib\-genmarshal\fP، با چاپ تنها هشدارها و خطاها. این گزینه مانعة‌الجمع با گزینه \fB\-\-verbose\fP است. .UNINDENT .UNINDENT .sp \fB\-\-verbose\fP .INDENT 0.0 .INDENT 3.5 افزایش تفصیل خروجی \fBglib\-genmarshal\fP، با چاپ اطلاعات اشکال‌زدایی. این گزینه مانعة‌الجمع با گزینه \fB\-\-quiet\fP است. .UNINDENT .UNINDENT .SH "استفاده از GLIB-GENMARSHAL با MESON" .sp سیستم ساخت Meson از تولید مارشالرهای کلوژر با استفاده از \fBglib\-genmarshal\fP به‌طور توکار در ماژول \fBgnome\fP خود پشتیبانی می‌کند. .sp در فایل \fBmeson.build\fP خود معمولاً متد \fBgnome.genmarshal()\fP را به همراه فهرست منابع مارشالرها جهت تولید فراخوانی می‌کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX gnome = import(\(aqgnome\(aq) marshal_files = gnome.genmarshal(\(aqmarshal\(aq, sources: \(aqmarshal.list\(aq, internal: true, ) .EE .UNINDENT .UNINDENT .sp متغیر \fBmarshal_files\fP شامل آرایه‌ای از دو عنصر با ترتیب زیر خواهد بود: .INDENT 0.0 .IP \(bu 2 یک هدف ساخت (build target) برای فایل منبع .IP \(bu 2 یک هدف ساخت برای فایل سرایند (header) .UNINDENT .sp باید از شیء‌های بازگردانده‌شده برای ایجاد وابستگی در هر هدف ساخت دیگری که به فایل منبع یا سرایند ارجاع دارد استفاده کنید؛ به عنوان مثال، اگر از منبع برای ساخت یک کتابخانه استفاده می‌کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX mainlib = library(\(aqproject\(aq, sources: project_sources + marshal_files, … ) .EE .UNINDENT .UNINDENT .sp علاوه بر این، اگر فایل سرایند تولیدشده را درون هدف ساختی قرار می‌دهید که به کتابخانه‌ای که به تازگی ساخته‌اید وابسته است، باید مطمئن شوید که وابستگی داخلی شامل سرایند تولیدشده به عنوان یک فایل منبع الزامی است: .INDENT 0.0 .INDENT 3.5 .sp .EX mainlib_dep = declare_dependency(sources: marshal_files[1], link_with: mainlib) .EE .UNINDENT .UNINDENT .sp نباید فایل منبع تولیدشده را نیز اضافه کنید، در غیر این صورت برای هر هدفی که به آن وابسته است به‌طور جداگانه ساخته می‌شود و باعث خطای ساخت خواهد شد. برای کسب اطلاعات بیشتر در مورد علت نیاز به همه این موارد، لطفاً به مدخل متناظر در سوالات متداول Meson مراجعه کنید: \%\&. .sp برای اطلاعات بیشتر در مورد نحوه استفاده از این متد، مستندات Meson را برای \fBgnome.genmarshal()\fP در \% ببینید. .SH "استفاده از GLIB-GENMARSHAL با AUTOTOOLS" .sp به منظور استفاده از \fBglib\-genmarshal\fP در پروژه خود هنگام استفاده از Autotools به عنوان سیستم ساخت، ابتدا باید فایل \fBconfigure.ac\fP خود را ویرایش کنید تا اطمینان حاصل شود دستور مناسب را با استفاده از \fBpkg\-config\fP پیدا می‌کنید، مشابه روشی که فلگ‌های کامپایلر و پیونددهنده را برای GLib پیدا می‌کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX PKG_PROG_PKG_CONFIG([0.28]) PKG_CHECK_VAR([GLIB_GENMARSHAL], [glib\-2.0], [glib_genmarshal]) .EE .UNINDENT .UNINDENT .sp در فایل \fBMakefile.am\fP خود معمولاً به قواعد بسیار ساده‌ای برای تولید فایل‌های C مورد نیاز جهت ساخت احتیاج خواهید داشت: .INDENT 0.0 .INDENT 3.5 .sp .EX marshal.h: marshal.list $(AM_V_GEN)$(GLIB_GENMARSHAL) \e \-\-header \e \-\-output=$@ \e $< marshal.c: marshal.list marshal.h $(AM_V_GEN)$(GLIB_GENMARSHAL) \e \-\-include\-header=marshal.h \e \-\-body \e \-\-output=$@ \e $< BUILT_SOURCES += marshal.h marshal.c CLEANFILES += marshal.h marshal.c EXTRA_DIST += marshal.list .EE .UNINDENT .UNINDENT .sp در مثال بالا، قاعده اول فایل سرایند را تولید می‌کند و به یک فایل \fBmarshal.list\fP وابسته است تا در صورت به‌روزرسانی فهرست مارشالرها، نتیجه مجدداً تولید شود. قاعده دوم فایل منبع را برای همان \fBmarshal.list\fP تولید می‌کند و شامل فایل تولیدشده توسط قاعده سرایند می‌شود. .SH "مثال‌ها (EXAMPLES)" .sp برای تولید مارشالرها برای توابع بازخوانی زیر: .INDENT 0.0 .INDENT 3.5 .sp .EX void foo (gpointer data1, gpointer data2); void bar (gpointer data1, gint param1, gpointer data2); gfloat baz (gpointer data1, gboolean param1, guchar param2, gpointer data2); .EE .UNINDENT .UNINDENT .sp فایل \fBmarshaller.list\fP باید به این شکل باشد: .INDENT 0.0 .INDENT 3.5 .sp .EX VOID:VOID VOID:INT FLOAT:BOOLEAN,UCHAR .EE .UNINDENT .UNINDENT .sp و \fBglib\-genmarshal\fP را به این صورت فراخوانی می‌کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX glib\-genmarshal \-\-header marshaller.list > marshaller.h glib\-genmarshal \-\-body marshaller.list > marshaller.c .EE .UNINDENT .UNINDENT .sp مارشالرهای تولیدشده آرگومان‌ها را در نام تابع خود کدگذاری کرده‌اند. برای این فهرست خاص، آن‌ها عبارتند از: .INDENT 0.0 .INDENT 3.5 .sp .EX g_cclosure_user_marshal_VOID__VOID(...), g_cclosure_user_marshal_VOID__INT(...), g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR(...). .EE .UNINDENT .UNINDENT .sp آن‌ها می‌توانند مستقیماً برای GClosures استفاده شوند یا به عنوان آرگومان \fBGSignalCMarshaller c_marshaller\fP هنگام ایجاد سیگنال‌ها ارسال گردند: .INDENT 0.0 .INDENT 3.5 .sp .EX GClosure *cc_foo, *cc_bar, *cc_baz; cc_foo = g_cclosure_new (NULL, foo, NULL); g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID); cc_bar = g_cclosure_new (NULL, bar, NULL); g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT); cc_baz = g_cclosure_new (NULL, baz, NULL); g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR); .EE .UNINDENT .UNINDENT .SH "همچنین ببینید (SEE ALSO)" .sp glib\-mkenums(1) \% .\" End of generated man page.