.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 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 "CASTXML" "1" "Mar 26, 2026" "0.7.0" "CastXML" .SH "نام (NAME)" castxml \- خروجی XML از درخت نحو انتزاعی برای خانواده زبان‌های C .SH "خلاصه دستور (SYNOPSIS)" .INDENT 0.0 .INDENT 3.5 .sp .EX castxml ( | | )... .EE .UNINDENT .UNINDENT .SH "توضیحات (DESCRIPTION)" .sp فایل‌های منبع خانواده C را تجزیه کرده و به‌صورت اختیاری زیرمجموعه‌ای از درخت نحو انتزاعی (AST) را به عنوان نمایشی در قالب XML می‌نویسد. .sp فایل‌های منبع با استفاده از کامپایلر درونی Clang \% به عنوان واحدهای ترجمه کامل تجزیه می‌شوند. خروجی XML توسط گزینه \fB\-\-castxml\-output=\fP یا \fB\-\-castxml\-gccxml\fP فعال می‌گردد. .SH "گزینه‌ها (OPTIONS)" .sp گزینه‌های خط فرمان زیر توسط \fBcastxml\fP تفسیر می‌شوند. گزینه‌های باقی‌مانده به کامپایلر درونی Clang داده می‌شوند. .INDENT 0.0 .TP .B \fB\-\-castxml\-cc\- \fP, \fB\-\-castxml\-cc\- \(dq(\(dq ... \(dq)\(dq\fP پیش‌پردازنده درونی Clang و پلتفرم هدف را به‌گونه‌ای پیکربندی می‌کند که با دستور کامپایلر داده‌شده مطابقت داشته باشد. \fB\fP نام کامپایلر مرجعی را مشخص می‌کند که دستور داده‌شده با آن سازگار است. این مقدار باید یکی از موارد زیر باشد: .INDENT 7.0 .IP \(bu 2 \fBgnu\fP: کامپایلر GNU Compiler Collection C++ (g++) .IP \(bu 2 \fBgnu\-c\fP: کامپایلر GNU Compiler Collection C (gcc) .IP \(bu 2 \fBmsvc\fP: کامپایلر Microsoft Visual C++ (cl) .IP \(bu 2 \fBmsvc\-c\fP: کامپایلر Microsoft Visual C (cl) .UNINDENT .sp \fB\fP نام یک کامپایلر را مشخص می‌کند (مانند \fB/usr/bin/gcc\fP یا \fBcl\fP) و \fB...\fP گزینه‌هایی را مشخص می‌کند که ممکن است بر هدف آن تأثیر بگذارند (مانند \fB\-m32\fP). پلتفرم هدف تشخیص‌داده‌شده از کامپایلر مشخص‌شده را می‌توان با یک گزینه جداگانه \fB\-target\fP در Clang بازنویسی و جایگزین کرد. سطح استاندارد زبان تشخیص‌داده‌شده از کامپایلر داده‌شده را می‌توان با یک گزینه جداگانه \fB\-std=\fP در Clang بازنویسی کرد. .TP .B \fB\-\-castxml\-output=\fP خروجی XML را در \fB.xml\fP یا فایلی که با \fB\-o\fP مشخص شده می‌نویسد. \fB\fP شماره نسخه قالب «epic» را برای تولید مشخص می‌کند، و باید مقدار آن \fB1\fP باشد. .TP .B \fB\-\-castxml\-gccxml\fP خروجی XML را در قالبی نزدیک به gccxml \% تولید می‌کند. خروجی در \fB.xml\fP یا فایل تعیین‌شده توسط \fB\-o\fP نوشته می‌شود. قالب gccxml از حالت‌های زبان Clang غیر از \fB\-std=c++98\fP یا \fB\-std=c89\fP پشتیبانی نمی‌کند. این قالب خروجی ممکن است با حالت‌های زبان \fB\-std=c++11\fP، \fB\-std=c++14\fP، \fB\-std=c99\fP، و \fB\-std=c11\fP استفاده شود اما خروجی شامل سازنده‌های انتقال ضمنی (implicit move constructors) یا عملگرهای انتساب انتقال نخواهد بود، و ممکن است در ساختارهای غیر c++98 شامل عناصر \fB\fP باشد. .TP .B \fB\-\-castxml\-start [,]...\fP پیمایش AST را از اعلان(ها) با نام(های) کامل داده‌شده آغاز می‌کند. چندین نام را می‌توان به‌صورت فهرستی جداشده با کاما یا با تکرار این گزینه مشخص کرد. .TP .B \fB\-help\fP, \fB\-\-help\fP اطلاعات نحوه استفاده از \fBcastxml\fP و کامپایلر درونی Clang را چاپ می‌کند. .TP .B \fB\-o \fP در صورت تولید خروجی (مثلاً از طریق \fB\-\-castxml\-output=\fP)، خروجی را در \fB\fP می‌نویسد. حداکثر یک فایل \fB\fP می‌تواند به‌عنوان ورودی مشخص شود. .TP .B \fB\-\-version\fP اطلاعات نسخه \fBcastxml\fP و کامپایلر درونی Clang را چاپ می‌کند. .sp نسخه‌های رسمی CastXML از این قالب استفاده می‌کنند: .INDENT 7.0 .INDENT 3.5 .sp .EX ..[\-rc][\-] .EE .UNINDENT .UNINDENT .sp که در آن بخش \fB\fP کمتر از \fB20000000\fP است، \fB\fP یک شماره اختیاری کاندیدای انتشار (release candidate) است، و \fB\fP ممکن است شامل متن دلخواه باشد (در صورت توسعه بین نسخه‌های وصله). .sp نسخه‌های توسعه CastXML از این قالب استفاده می‌کنند: .INDENT 7.0 .INDENT 3.5 .sp .EX ..[\-] .EE .UNINDENT .UNINDENT .sp که در آن بخش \fB\fP به قالب \fBCCYYMMDD\fP است و \fB\fP ممکن است شامل متن دلخواه باشد. این بخش نمایانگر توسعه تا یک تاریخ مشخص پس از انتشار نسخه قابلیت‌های \fB.\fP است. .UNINDENT .SH "نسخه‌های قالب خروجی (OUTPUT FORMAT VERSIONS)" .SS با \fB\-\-castxml\-output=\fP .sp برچسب عنصر ریشه XML به شکل زیر خواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .EX .EE .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 بخش اول شماره نسخه قالب \fBepic\fP است که به پرچم \fB\-\-castxml\-output=\fP داده شده است، و در حال حاضر باید همیشه \fB1\fP باشد. .IP \(bu 2 بخش دوم شماره نسخه اصلی (\fBmajor\fP) قالب است و با افزوده شدن یک عنصر جدید XML یا تغییرات عمده دیگر افزایش می‌یابد. کلاینت‌ها نیازمند به‌روزرسانی خواهند بود. .IP \(bu 2 بخش سوم شماره نسخه فرعی (\fBminor\fP) قالب است و هر زمان که صفت (attribute) جدیدی از XML به یک عنصر موجود اضافه شود یا اشکال جزئی در خروجی XML مربوط به یک عنصر یا صفت موجود رفع گردد، افزایش می‌یابد (کلاینت‌ها بدون نیاز به تغییر به کار خود ادامه می‌دهند مگر اینکه اطلاعات جدید را بخواهند). .UNINDENT .SS با \fB\-\-castxml\-gccxml\fP .sp برچسب عنصر ریشه XML به شکل زیر خواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .EX .EE .UNINDENT .UNINDENT .sp شماره \fBversion\fP با آخرین نسخه gccxml \% که تاکنون منتشر شده است مطابقت دارد (برای سازگاری رو به عقب). شماره \fBcvs_revision\fP یک شماره ترتیبی متوالی است که با هر تغییر جزئی در قالب XML افزایش می‌یابد. .SH "طرحواره (SCHEMA)" .sp طرحواره XML که هر دو قالب خروجی را توصیف می‌کند در دسترس است: \fBcastxml.xsd\fP\&. .SH "پیش‌پردازش (PREPROCESSING)" .sp نرم‌افزار CastXML فایل‌های منبع را با استفاده از کامپایلر درونی Clang و به‌طور پیش‌فرض با بهره‌گیری از ماکروهای از پیش تعریف‌شده اختصاصی خود برای پلتفرم هدف، پیش‌پردازش می‌کند. گزینه \fB\-\-castxml\-cc\-\fP ماکروهای از پیش تعریف‌شده را تغییر می‌دهد تا با مواردی که از دستور کامپایلر داده‌شده شناسایی شده‌اند مطابقت پیدا کنند. در هر دو حالت، CastXML همواره ماکروهای از پیش تعریف‌شده زیر را اضافه می‌کند: .INDENT 0.0 .TP .B \fB__castxml_major__\fP به شماره نسخه اصلی CastXML در مبنای ۱۰ تعریف شده است. .TP .B \fB__castxml_minor__\fP به شماره نسخه فرعی CastXML در مبنای ۱۰ تعریف شده است. .TP .B \fB__castxml_patch__\fP به شماره نسخه وصله CastXML در مبنای ۱۰ تعریف شده است. .TP .B \fB__castxml_check(major,minor,patch)\fP به یک عبارت ثابت تعریف شده است که سه بخش نسخه را برای مقایسه با \fB__castxml__\fP کدگذاری می‌کند. روش کدگذاری دقیق مشخص نشده است. .TP .B \fB__castxml__\fP به یک عبارت ثابت تعریف شده است که مؤلفه‌های نسخه CastXML را کدگذاری می‌کند: .INDENT 7.0 .INDENT 3.5 .sp .EX __castxml_check(__castxml_major__,__castxml_minor__,__castxml_patch__) .EE .UNINDENT .UNINDENT .TP .B \fB__castxml_clang_major__\fP به مقدار \fB__clang_major__\fP از کامپایلر درونی Clang تعریف شده است. .TP .B \fB__castxml_clang_minor__\fP به مقدار \fB__clang_minor__\fP از کامپایلر درونی Clang تعریف شده است. .TP .B \fB__castxml_clang_patchlevel__\fP به مقدار \fB__clang_patchlevel__\fP از کامپایلر درونی Clang تعریف شده است. .UNINDENT .sp فایل‌های منبع می‌توانند از این ماکروها برای شناسایی ابزاری که در عمل در حال انجام پیش‌پردازش است استفاده کنند، حتی اگر \fB\-\-castxml\-cc\-\fP ماکروهای از پیش تعریف‌شده را تغییر دهد. .SH "پرسش‌های متداول (FAQ)" .SS چرا بدنه توابع C++ در خروجی XML قرار نمی‌گیرد؟ .sp این ویژگی پیاده‌سازی نشده است زیرا پروژه اصلی که CastXML برای آن نوشته شده بود نیازی به بدنه توابع نداشت. .SS چرا الگوها (Templates) در خروجی دیده نمی‌شوند؟ .sp این ویژگی پیاده‌سازی نشده است زیرا پروژه اصلی که CastXML برای آن نوشته شده بود نیازی به الگوهای نمونه‌سازی‌نشده نداشت. با این وجود، الگوهای نمونه‌سازی‌شده در خروجی درج خواهند شد. به عنوان مثال: .INDENT 0.0 .INDENT 3.5 .sp .EX template struct foo {}; typedef foo::foo foo_int; .EE .UNINDENT .UNINDENT .sp موجب نمونه‌سازی \fBfoo\fP خواهد شد که در خروجی گنجانده می‌شود. با این حال، به غیر از درون نام، هیچ جایی وجود نخواهد داشت که مجموعه‌ای از انواع داده استفاده‌شده برای نمونه‌سازی را صراحتاً فهرست کند. دلیل این امر آن است که شیوه مناسب برای انجام این کار، درج خود الگوها و ارجاع به آن‌ها از نمونه‌سازی‌ها با ذکر آرگومان‌های الگو است. از آنجا که این ویژگی‌ها به یکدیگر وابسته‌اند، باید همراه با یکدیگر پیاده‌سازی شوند. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" 2013-2022 Kitware, Inc. .\" End of generated man page.