yaz-asncomp -
کامپایلر ASN.1
برای YAZ
yaz-asncomp [-v]
[-c cfile]
[-h hfile]
[-p pfile]
[-d config]
[-I includeout]
[-i includedir]
[-m module] [filename]
yaz-asncomp یک
کامپایلر ASN.1
است که
مشخصات ASN.1 را
در filename
خوانده و
تعاریف C/C++ و
رمزگذارها/رمزگشاهای
BER را برای آن
تولید
میکند.
کد C/C++ و
فایلهای
سرآیند (header)
تولیدشده
از ماژول ODR
مربوط به YAZ
استفاده
میکنند که
کتابخانهای
برای
رمزگذاری/رمزگشایی/چاپ
بستههای BER
است. yaz-asncomp به
شما امکان
میدهد نام
فایل مبدأ
حاصل را از
طریق
گزینهها
مشخص کنید.
همچنین
میتوانید
یک فایل DEFINITIONS
مشخص کنید
که در صورت
متشکل بودن
مشخصات ASN.1 از
چندین
ماژول،
خروجی
سفارشیشدهای
را برای
چندین فایل
خروجی
فراهم
میسازد.
این ابزار
با Tcl نوشته
شده است. هر
نسخهای از
Tcl باید کار
کند.
-v
باعث
میشود
کامپایلر ASN.1
گزارش
مشروحتری
از مراحل
مختلف
عملیات چاپ
کند.
-c cfile
نام فایل
C/C++ شامل
رمزگذارها/رمزگشاها
را مشخص
میکند.
-h hfile
نام فایل
سرآیند
حاوی
تعاریف را
مشخص
میکند.
-p pfile
نام یک
فایل
سرآیند
اختصاصی
حاوی
تعاریف را
مشخص
میکند.
بهطور
پیشفرض
تمام
تعاریف در
فایل
سرآیند
عمومی قرار
داده
میشوند
(گزینه -h).
-d dfile
نام یک
فایل
تعاریف را
مشخص
میکند.
-I iout
بخش اول
دایرکتوری
را که
فایلهای
سرآیند در
آن نوشته
میشوند
مشخص
میکند.
-i idir
بخش دوم
دایرکتوری
را که
فایلهای
سرآیند در
آن نوشته
میشوند
مشخص
میکند.
-m module
مشخص
میکند که
کامپایلر ASN.1
فقط باید
ماژول
دادهشده
را پردازش
کند. اگر این
گزینه مشخص
نشود، تمام
ماژولهای
موجود در
فایل ASN.1
پردازش
میشوند.
فایل
تعاریف در
واقع یک
اسکریپت Tcl
است، اما از
قواعد سنتی
فایلهای
پیکربندی
مشابه
پوسته
پیروی
میکند؛
بدین معنی
که #
نشاندهنده
آغاز یک
توضیح است.
تعاریف
خطمحور
هستند.
فایلهای
تعاریف
معمولاً از
مجموعهای
از
انتسابهای
متغیر به
شکل زیر
تشکیل
شدهاند:
set name value
متغیرهای
دردسترس
عبارتند
از:
default-prefix
پیشوند
نامها را
در خروجی
تولیدشده
تنظیم
میکند. این
مقدار به
ترتیب شامل
سه بخش است:
پیشوند
تابع C،
پیشوند typedef در C
و پیشوند
پیشپردازنده.
prefix(module)
مقادیر
پیشوند را
برای ماژول
module تنظیم
میکند. این
مقدار
ساختاری
مشابه با default-prefix
دارد.
filename(module)
نام فایل
را برای
فایل
C/سرآیند
مربوط به
ماژول module
مشخص
میکند.
init(module,h)
قطعهکدی
که باید در
بخش
ابتدایی
سرآیند
عمومی برای
ماژول module
قرار گیرد.
body(module,h)
قطعهکدی
که باید در
بخش
انتهایی
سرآیند
عمومی برای
ماژول module
قرار گیرد
(دنباله یا
trailer).
init(module,c)
قطعهکدی
که باید در
بخش
ابتدایی
رمزگذار/رمزگشای
مبتنی بر C
برای ماژول
module قرار
گیرد.
body(module,c)
قطعهکدی
که باید در
بخش
انتهایی
رمزگذار/رمزگشای
مبتنی بر C
برای ماژول
module قرار
گیرد
(دنباله یا
trailer).
map(module,name)
نوع ASN.1 با
نام name در
ماژول module را
به یک مقدار
نگاشت
میکند.
membermap(module,name,member)
عضو member را
در SEQUENCE/CHOICE مربوط
به name در
ماژول module به
یک مقدار
نگاشت
میکند. این
مقدار شامل
یک یا دو بخش
است. بخش اول
نام قسمت
پیشپردازنده
C است. بخش دوم
نام عضو
حاصل در C است.
اگر بخش دوم
حذف شود،
مقدار
دادهشده
(تکبخشی) هم
بخش
پیشپردازنده
و هم struct,union در C
خواهد بود.
unionmap(module,name,member)
عضو member را
در CHOICE مربوط
به name در
ماژول module به
یک مقدار
نگاشت
میکند. این
مقدار شامل
دو یا سه بخش
است. بخش اول
نام مقدار
عدد صحیح در
union است که
بهعنوان
انتخابگر
(selector) برای خود union
استفاده
میشود. بخش
دوم نام union
است. بخش سوم
نام عضو CHOICE را
بازنویسی
میکند؛ در
صورت عدم
ذکر، از نام
عضو
استفاده
میشود.
/usr/share/yaz/z39.50/z.tcl
/usr/share/yaz/z39.50/*.asn
yaz(7)
بخش “The ODR Module”
در دفترچه
راهنمای YAZ.