англійськафранцузькаіспанська

Значок OnWorks

create-native-map - онлайн у хмарі

Запустіть create-native-map у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда create-native-map, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.

ПРОГРАМА:

ІМ'Я


create-native-map - C/C# Mapping Creator

СИНТАКСИС


створити рідну карту [OPTIONS]* ASSEMBLY-FILE-NAME OUTUT-PREFIX

ВАРІАНТИ


--autoconf-header=ЗАГОЛОВНИК
HEADER - це ім'я заголовного файлу в синтаксисі, який зазвичай використовується з C #включати
заява, напр #включати or #включати "local.h" .

Макрос у форматі Autoconf генерується з імені включення та a #включати
Директива загорнута в a #ifdef блок для макросу Autoconf в межах
генерується .c файлу.

Наприклад, --autoconf-header= згенерує код:

#ifndef HAVE_STDIO_H
#включати
#endif /* ndef HAVE_STDIO_H */

--autoconf-member=ЧЛЕН
Вкажіть будь-який доступ до ЧЛЕН слід загорнути в а #ifdef HAVE_MEMBER
блок ЧЛЕН може бути або a ім'я поля або ім'я класу . ім'я поля
комбінація

Наприклад, враховуючи декларацію C#:

[Mono.Unix.Native.Map ("struct dirent")]
struct Dirent {
публічний довгий d_off;
}

потім --autoconf-member=d_off генеруватиме код, схожий на:

Int
ToDirent (структура dirent *від, структура Dirent *to)
{
#ifdef HAVE_STRUCT_DIRENT_D_OFF
до->d_off = від->d_off;
#endif /* ndef HAVE_STRUCT_DIRENT_D_OFF */
}

--exclude-native-symbol=СИМВОЛ
СИМВОЛ це [DllImport] -позначений метод, який слід НЕ мати згенерований прототип
за це.

--impl-header=ЗАГОЛОВНИК
Вставте a #включати заяву в межах сформованого .c файл для HEADER .

Наприклад, --impl-header= генерує

#включати

--impl-macro=МАКРО
Вставте a #визначити заяву в межах сформованого .c файлу. MACRO може містити a = до
відокремити назву макросу від значення макросу.

Наприклад, --impl-macro=FOO=42 генерує

#define FOO 42

--library=БІБЛІОТЕКА
Створіть прототипи для [DllImport] -позначені методи, які посилаються на рідний
бібліотека БІБЛІОТЕКА у створене .h файлу.

--public-header=ЗАГОЛОВНИК
Вставте a #включати заяву в межах сформованого .h файл для HEADER .

Наприклад, --public-header= генерує

#включати

--public-macro=МАКРО
Вставте a #визначити заяву в межах сформованого .h файлу. MACRO може містити a = до
відокремити назву макросу від значення макросу.

Наприклад, --public-macro=FOO=42 генерує

#define FOO 42

--rename-member=FROM=ДО
Це використовується, коли З є макросом C, тому його потрібно змінити для використання
розсудливо. Використовуватимуться всі згенеровані посилання на кероване представлення TO замість
of З .

Наприклад, враховуючи декларацію C#:

[Mono.Unix.Native.Map ("struct stat")]
struct Stat {
публічний довгий st_atime;
}

і аргумент --rename-member=st_atime=st_atime_ , створений .h файл буде
містять:

struct Stat {
gint64 st_atime_;
};

(зверніть увагу на змінене ім’я поля), а згенерований .c файл буде містити:

ToStat (struct stat *from, struct Stat *to)
{
to->st_atime_ = from->st_atime;
}

--rename-namespace=FROM=ДО
За замовчуванням "простір імен" C (префікс символу) є простором імен C#; типи всередині
Простір імен C# Mono.Unix.Native буде в "просторі імен" C Mono_Unix_Native . Використовувати
--rename-простір імен щоб змінити значення за замовчуванням, напр --перейменувати-
простір імен=Mono.Unix.Native=Mono_Posix .

ОПИС


створити рідну карту це програма для конкретного сценарію: збереження коду, який щільно
поєднані між C і C# синхронно один з одним, на основі типів C#.

Platform Invoke корисний лише в тому випадку, якщо керований код знає точні типи та розташування всіх
некеровані структури, які він використовує. Зазвичай це відбувається в Windows, але це так НЕ випадок
на Unix. Наприклад, структура stat використовує типи з розмірами, які будуть відрізнятися від
від платформи до платформи (або навіть на основі визначених макросів компілятора!). Наприклад, off_t
зазвичай це 32-розрядне ціле число зі знаком на платформах ILP32, але може бути 64-розрядним числом зі знаком
на платформах LP64, але також може бути 64-розрядним цілим числом зі знаком на платформах ILP32, якщо
_FILE_OFFSET_BITS макрос має значення 64. Коротше кажучи, все гнучке в Unix,
і керований код не може впоратися з такою гнучкістю.

Таким чином, ніша для створити рідну карту : припустимо фіксований ABI, на який може націлюватися керований код,
і генерувати код, щоб "перезавантажувати" керовані представлення до відповідного рідного
уявлення. Це потрібно зробити для все які можуть відрізнятися на різних платформах і
прапори компілятора зі значень перерахування ( СИГБУС має значення 10 у FreeBSD, але 7 на
Linux), щоб структурувати членів (наскільки великий off_t ?).

створити рідну карту буде оглядати ASSEMBLY-FILE-NAME і вивести такі файли:

OUTPUT-PREFIX.h
Містить значення перерахування, оголошення класів і структури, делегат
декларації та [DllImport] -позначені методи (з бібліотеки, зазначеної в
-- бібліотека ) в межах зборів ASSEMBLY-FILE-NAME .

OUTPUT-PREFIX.c
Містить реалізацію перерахування та перетворення структури
функції.

OUTPUT-PREFIX.cs
Містить частковий клас NativeConvert містить переклад перерахування
методи

OUTPUT-PREFIX.xml
Генерує заглушки документації ECMA XML для перекладу перерахування
методи в OUTPUT-PREFIX.cs .

створити рідну карту в першу чергу шукає MapAttribute -декоровані типи, і використовує два
MapAttribute властивості:

NativeType
Містить відповідний тип C. Корисно, лише якщо застосовано до класів,
структури та поля.

Придушити прапори
Якщо вказано на члені переліку a [Прапори] -оформлена нумерація
типу, відключає звичайна підтримка генератора коду для перерахування бітового маскування
типи.

Це корисно, коли інформація з бітовою та нерозрядною масками зберігається в файлі
одного типу, і перевірка бітової маски не повинна використовуватися для небітової маски
цінності. приклад: Mono.Unix.Native.FilePermissions.S_IFREG , що не є a
значення бітової маски, тоді як більшість з Дозволи файлів складається зі значень бітової маски (
FilePermissions.S_IRUSR , FilePermissions.S_IWUSR І т.д.).

Команда MapAttribute атрибут можна вказати для класів, структур, делегатів, полів і
перерахування.

Делегати
Генерація коду для делегатів ігнорує MapAttribute.NativeType майно, і
генерує покажчик функції typedef що найкраще відповідає декларації делегата
в .h файлу.

Наприклад,

простір імен Foo {
[Карта]
рядок делегату MyCallback (рядок s);
}

генерує typedef :

typedef char* (*Foo_MyCallback) (const char *s);

Класи та структури
A [Карта] -decorated клас або структура отримають оголошення структури C всередині
.h Файл:

[Карта]
struct Foo {
публічний int i;
}

стає

struct Foo {
публічний int i;
};

Якщо MapAttribute.NativeType властивість встановлено, то будуть функції перетворення
оголошені в межах .h файл і створений у межах .c Файл:

простір імен Foo {
[Карта ("struct stat")]
struct Stat {
public uint st_uid;
}
}

стає

/* Файл .h */
struct Foo_Stat {
unsigned int st_uid;
};
Int
Foo_FromStat (структура Foo_Stat *від, структура stat *to);
Int
Foo_ToStat (struct stat *to, sxtruct Foo_Stat *to);

/* Файл .c */
Int
Foo_FromStat (структура Foo_Stat *від, структура stat *до)
{
memset (до, 0, sizeof(*до);
до->st_uid = від->st_uid;
0 повернутися;
}

Int
Foo_ToStat (struct stat *to, sxtruct Foo_Stat *to)
{
memset (до, 0, sizeof(*до);
до->st_uid = від->st_uid;
0 повернутися;
}

Для класів функції перетворення копіюють лише поля, оголошені в класі
себе. Поля, оголошені в батьківських класах, не копіюватимуться. (Це відбувається тому
створити рідну карту не знає, як реалізується успадкування в C. Тому
копіювання полів із батьківських класів залишається на розпорядник перетворення
функції.)

Поля Якщо поле (1) має значення MapAttribute атрибут, і (2) має
MapAttribute.NativeType набір властивостей, то буде використаний вказаний рідний тип
для перевірки переповнення. Наприклад:

простір імен Foo {
[Карта ("struct stat")]
struct Stat {
[Map ("off_t")] public long st_size;
}
}

генерує

/* Файл .h */
struct Foo_Stat {
gint64 st_size;
};
Int
Foo_FromStat (структура Foo_Stat *від, структура stat *to);
Int
Foo_ToStat (struct stat *to, sxtruct Foo_Stat *to);

/* Файл .c */
Int
Foo_FromStat (структура Foo_Stat *від, структура stat *до)
{
_cnm_return_val_if_overflow (off_t, from->st_size, -1);

memset (до, 0, sizeof(*до);
до->st_size = від->st_size;
0 повернутися;
}

Int
Foo_ToStat (struct stat *to, sxtruct Foo_Stat *to)
{
_cnm_return_val_if_overflow (gint64, from->st_size, -1);

memset (до, 0, sizeof(*до);
до->st_size = від->st_size;
0 повернутися;
}

Це корисно для кращої перевірки помилок у функціях перетворення.
MapAttribute.NativeType для цього потрібно, оскільки немає іншого способу дізнатися, що
рідний тип (без аналізу файлів заголовків системи...).

Перерахування
Генерує перерахування C і макроси для кожного з членів у межах
перерахування. До та Від функції також оголошуються в .h файл і
реалізовано в .c файлу.

Наприклад,

простір імен Foo {
[Карта]
enum Errno {
EINVAL
}
}

генеруватиме наступне в .h Файл:

enum Foo_Errno {
Foo_Errno_EINVAL = 0,
#define Foo_Errno_EINVAL Foo_Errno_EINVAL
};
int Foo_FromErrno (int from, int *to);
int Foo_ToErrno (int from, int *to);

і створює наступне в файлі .c Файл:

Int
Foo_FromErrno (int from, int *to)
{
*до = 0;
якщо (з == Foo_Errno_EPERM)
#ifdef EINVAL
{*до = EINVAL;}
#else
{errno = EINVAL; повернути -1;}
#endif
0 повернутися;
}

Int
Foo_ToErrno (int from, int *to)
{
*до = 0;
#ifdef EINVAL
якщо (від == EINVAL)
{*to = Foo_Errno_EPERM; повернути 0;}
#endif
return -1;
}

Буде згенерований інший код, якщо керований перелік є a [Прапори] -декорований
перерахування (для врахування побітових прапорів), але це основна ідея.

ПОШТА СПИСКИ


Visit http://lists.ximian.com/mailman/listinfo/mono-devel-list for details.

WEB САЙТ


Visit http://www.mono-project.com докладніше

створити рідну карту(1)

Використовуйте create-native-map онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

  • 1
    AstrOrzPlayer
    AstrOrzPlayer
    AstrOrz Player — безкоштовний медіаплеєр
    програмне забезпечення, частина на основі WMP і VLC. The
    плеєр в мінімалістичному стилі, с
    більше десяти кольорів теми, а також можна
    б ...
    Завантажити AstrOrzPlayer
  • 2
    movistartv
    movistartv
    Kodi Movistar+ TV є ДОДАТКОМ для XBMC/
    Kodi que permite disponer de un
    decodificador de los servicios IPTV de
    Movistar інтегрований в один із одним
    медіацентри ма...
    Завантажити movistartv
  • 3
    Код :: Блоки
    Код :: Блоки
    Code::Blocks — безкоштовна програма з відкритим кодом,
    кросплатформенний C, C++ і Fortran IDE
    створений для задоволення найвимогливіших потреб
    своїх користувачів. Він розроблений, щоб бути дуже
    подовжує ...
    Завантажити Code::Blocks
  • 4
    Серед
    Серед
    Серед або розширений інтерфейс Minecraft
    а відстеження даних/структури є інструментом для
    відобразити огляд Minecraft
    світу, фактично не створюючи його. Це
    може ...
    Завантажити Midst
  • 5
    MSYS2
    MSYS2
    MSYS2 — це набір інструментів і
    бібліотеки, які надають вам
    просте у використанні середовище для будівництва,
    встановлення та запуск рідної Windows
    програмне забезпечення. Це кон...
    Завантажити MSYS2
  • 6
    libjpeg-турбо
    libjpeg-турбо
    libjpeg-turbo — це кодек зображень JPEG
    який використовує SIMD-інструкції (MMX, SSE2,
    NEON, AltiVec) для прискорення базового рівня
    Стиснення та декомпресія JPEG увімкнено
    х86, х8...
    Завантажте libjpeg-turbo
  • Детальніше »

Команди Linux

Ad