.TH h2pas 1 "12 Dec 1999" "Free Pascal" "Free Pascal C header conversion utility" .SH "نام (NAME)" h2pas \- برنامه تبدیل فایل‌های هدر C به یونیت‌های pascal .SH "خلاصه دستور (SYNOPSIS)" .B h2pas .I "[options] filename" .SH "توضیحات (DESCRIPTION)" دستور .B h2pas تلاش می‌کند یک فایل هدر C را به یک یونیت pascal تبدیل کند. این برنامه می‌تواند اکثر ساختارهای C موجود در یک فایل هدر C را مدیریت کرده و آن‌ها را به معادل‌هایشان در pascal ترجمه کند. برای توضیحات کامل درباره آنچه این مترجم پشتیبانی می‌کند، بخش .B "ساختارها (CONSTRUCTS)" را ببینید. .SH "نحوه استفاده (USAGE)" ابزار H2pas یک ابزار خط فرمانی است که یک فایل هدر C را به یک یونیت pascal ترجمه می‌کند. این برنامه فایل هدر C را خوانده و اعلان‌های C را به اعلان‌های معادل در pascal ترجمه می‌کند که می‌توان از آن‌ها برای دسترسی به کدهای نوشته‌شده به زبان C استفاده کرد. خروجی برنامه h2pas در فایلی با همان نام فایل هدر C ورودی، اما با پسوند \fI.pp\fP ذخیره می‌شود. فایل خروجی ایجادشده توسط h2pas را می‌توان با استفاده از گزینه‌های متعدد به روش‌های مختلفی سفارشی‌سازی کرد. .SH "گزینه‌ها (OPTIONS)" خروجی .B h2pas را می‌توان با گزینه‌های زیر کنترل کرد: .TP .B \-d استفاده از .I external; برای اعلان تمام procedureها و functionها. .TP .B \-D استفاده از .B external .I libname .B name .I 'func\_name' برای اعلان‌های function و procedure. .TP .B \-e تولید مجموعه‌ای از ثوابت به جای یک نوع شمارشی (enumeration) برای ساختار .I enum در C. .TP .B \-i ایجاد یک فایل include به جای یک unit (سرآیند unit حذف می‌شود). .TP .BI \-l " libname" مشخص کردن نام کتابخانه برای اعلان‌های توابع خارجی (external). .TP .BI \-o " outfile" مشخص کردن نام فایل خروجی. مقدار پیش‌فرض، نام فایل ورودی با جایگزینی پسوند آن با .I ".pp" است. .TP .B \-p استفاده از حرف .B P در ابتدای پارامترهای نوع اشاره‌گر به جای «^». .TP .B \-s حذف کامنت‌ها از فایل ورودی. به‌طور پیش‌فرض کامنت‌ها به کامنت تبدیل می‌شوند، اما ممکن است جابه‌جا شوند؛ چرا که کامنت‌ها توسط اسکنر پردازش می‌شوند. .TP .B \-t افزودن حرف .B T به ابتدای نام انواع typedef (برای پیروی از شیوه نام‌گذاری Borland مبنی بر اینکه همه نوع‌ها باید با T تعریف شوند). .TP .B \-v جایگزینی پارامترهای اشاره‌گر با پارامترهای فراخوانی با ارجاع (call by reference). با احتیاط استفاده شود، زیرا برخی فراخوانی‌ها ممکن است انتظار یک اشاره‌گر NIL را داشته باشند. .TP .B \-w فایل هدر یک فایل هدر win32 است (پشتیبانی از برخی ماکروهای ویژه را اضافه می‌کند). .TP .B \-x مدیریت SYS\_TRAP در فایل‌های هدر PalmOS. .SH "ساختارها (CONSTRUCTS)" اعلان‌ها و دستورهای C زیر شناسایی می‌شوند: .TP .B defines دستورهای define در صورتی که ساده باشند، به ثوابت pascal تبدیل می‌شوند. ماکروها تا حد امکان به تابع تغییر می‌یابند؛ با این حال، آرگومان‌ها همگی عدد صحیح (integer) در نظر گرفته می‌شوند، بنابراین باید به صورت دستی اصلاح شوند. عبارت‌های ساده در دستورهای define و همچنین بیشتر عملگرهای حسابی شناسایی می‌شوند: جمع، تفریق، ضرب، تقسیم، عملگرهای منطقی، عملگرهای مقایسه‌ای و عملگرهای شیفت (انتقال بیتی). ساختار C عملگر شرطی ( A ? B : C) نیز شناسایی شده و به یک ساختار pascal همراه با دستور IF ترجمه می‌شود (البته این مورد دارای اشکالاتی است). .TP .B "preprocessor statements" دستورهای پیش‌پردازنده شرطی شناسایی شده و به دستورالعمل‌های معادل کامپایلر pascal ترجمه می‌شوند. دستور خاص .B "#ifdef \_\_cplusplus" نیز شناسایی و حذف می‌شود. .TP .B typedef یک دستور typedef به یک دستور type در pascal تبدیل می‌شود. نوع‌های پایه زیر شناسایی می‌شوند: .RS .TP .I char به char تبدیل می‌شود. .TP .I float به real (معادل double در free pascal) تبدیل می‌شود. .TP .I int به longint تبدیل می‌شود. .TP .I long به longint تبدیل می‌شود. .TP .I "long int" به longint تبدیل می‌شود. .TP .I short به integer تبدیل می‌شود. .TP .I unsigned به cardinal تبدیل می‌شود. .TP .I "unsigned char" به byte تبدیل می‌شود. .TP .I "unsigned int" به cardinal تبدیل می‌شود. .TP .I "unsigned long int" به cardinal تبدیل می‌شود. .TP .I "unsigned short" به word تبدیل می‌شود. .TP .I void نادیده گرفته می‌شود. .RE این نوع‌ها در صورتی که در آرگومان‌های یک function یا procedure نیز ظاهر شوند، تغییر می‌یابند. .TP .B "functions and procedures" توابع و رویه‌ها نیز ترجمه می‌شوند؛ نوع‌های اشاره‌گر می‌توانند با استفاده از آرگومان خط فرمان .B \-p به آرگومان‌های فراخوانی با ارجاع (با استفاده از آرگومان .B var ) تغییر یابند. توابعی که تعداد متغیری از آرگومان‌ها دارند به تابعی با یک آرگومان .B "array of const" تبدیل می‌شوند. .TP .B specifiers مشخص‌کننده .I extern شناسایی می‌شود؛ با این حال، نادیده گرفته خواهد شد. مشخص‌کننده .I packed نیز شناسایی شده و با دستورالعمل .I PACKRECORDS جایگزین می‌گردد. همچنین مشخص‌کننده .I const شناسایی شده ولی نادیده گرفته می‌شود. .TP .B modifiers در صورت مشخص شدن گزینه .B \-w ، اصلاح‌کننده‌های زیر طبق تعریف هدرهای win32 شناسایی می‌شوند: .I STDCALL , .I CDECL , .I CALLBACK , .I PASCAL , .I WINAPI , .I APIENTRY , .I WINGDIAPI . همچنین اگر گزینه .B \-x نیز مشخص شده باشد، مشخص‌کننده .I SYS\_TRAP هم شناسایی می‌شود. .TP .B enums ساختارهای enum به نوع‌های شمارشی (enumeration) تبدیل می‌شوند؛ به یاد داشته باشید که در C می‌توان مقادیری را به نوع‌های شمارشی اختصاص داد؛ Free Pascal نیز تا حد معینی این امکان را می‌دهد. اگر می‌دانید که مقادیری به enumها تخصیص یافته است، بهتر است از گزینه .B \-e برای تبدیل enumها به مجموعه‌ای از ثوابت عدد صحیح استفاده کنید. .TP .B unions نوع‌های union به رکوردهای variant تبدیل می‌شوند. .TP .B structs به رکوردهای pascal با بسته‌بندی (packing) از نوع .B C تبدیل می‌شوند. .IP .SH "همچنین ببینید (SEE ALSO)" .IP .BR ppc386 (1) .BR ppumove (1)