АнглийскийФранцузскийИспанский

Значок 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

СИНТАКСИС


создать родную карту [ОПЦИИ] * НАЗВАНИЕ-ФАЙЛ-СБОРКА ВЫХОД-ПРЕФИКС

ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ


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

Макрос в формате Autoconf создается из включаемого имени и #включают
директива заключена в #ифдеф блок для макроса Autoconf внутри
генерируется .c .

Например, --autoconf-header = сгенерирует код:

#ifndef HAVE_STDIO_H
#включает в себя
#endif / * ndef HAVE_STDIO_H * /

--autoconf-member = УЧАСТНИК
Укажите, что любой доступ к СЛУЖБА должны быть завернуты в #ифдеф HAVE_MEMBER
блок. СЛУЖБА может быть либо название поля или имя класса . название поля
сочетания клавиш.

Например, учитывая объявление C #:

[Mono.Unix.Native.Map ("struct dirent")]
структура Dirent {
публичный длинный d_off;
}

тогда --autoconf-member = d_off сгенерирует код, подобный:

Int
ToDirent (struct dirent * from, struct Dirent * to)
{
#ifdef HAVE_STRUCT_DIRENT_D_OFF
to-> d_off = from-> d_off;
#endif / * ndef HAVE_STRUCT_DIRENT_D_OFF * /
}

--exclude-native-symbol = СИМВОЛ
SYMBOL - это [Дллимпорт] -отмеченный метод, который должен создать прототип
за это.

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

Например, --impl-header = генерирует

#включают

--impl-macro = МАКРОС
Вставьте #define заявление в сгенерированном .c . MACRO может содержать = в
отделите имя макроса от значения макроса.

Например, --impl-macro = FOO = 42 генерирует

# определить FOO 42

--library = БИБЛИОТЕКА
Создавайте прототипы для [Дллимпорт] -отмеченные методы, которые ссылаются на родной
библиотека БИБЛИОТЕКА в сгенерированный .h .

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

Например, --public-header = генерирует

#включают

--public-macro = МАКРОС
Вставьте #define заявление в сгенерированном .h . MACRO может содержать = в
отделите имя макроса от значения макроса.

Например, --public-macro = FOO = 42 генерирует

# определить FOO 42

--rename-member = ОТ = ДО
Это используется, когда от является макросом C и, следовательно, должен быть изменен, чтобы его можно было использовать
разумно. Все сгенерированные ссылки на управляемое представление будут использовать К вместо
of от .

Например, учитывая объявление C #:

[Mono.Unix.Native.Map ("struct stat")]
структура статистики {
публичные длинные st_atime;
}

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

структура статистики {
gint64 st_atime_;
};

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

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

--rename-namespace = ОТ = ДО
По умолчанию «пространство имен» C (префикс символа) является пространством имен C #; типы в
C # пространство имен Моно.Unix.Native будет в C "пространстве имен" Mono_Unix_Native . Используйте
--rename-пространство имен чтобы изменить значение по умолчанию, например --переименовать-
namespace = Mono.Unix.Native = Mono_Posix .

ОПИСАНИЕ


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

Вызов платформы полезен только в том случае, если управляемый код знает точные типы и макет всех
неуправляемые структуры, которые он использует. Обычно это имеет место в Windows, но это не так. случай
в Unix. Например, структура состояние использует типы с размерами, которые будут отличаться от
платформу к платформе (или даже на основе определенных макросов компилятора!). Например, off_t
обычно является 32-битным целым числом со знаком на платформах ILP32, но может быть 64-битным целым числом со знаком
на платформах LP64, но также может быть 64-битным целым числом со знаком на платформах ILP32, если
_ФАЙЛ_OFFSET_BITS макрос имеет значение 64. Короче говоря, в Unix все гибко,
а управляемый код не может справиться с такой гибкостью.

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

создать родную карту будет проверять СБОРКА-ИМЯ-ФАЙЛ и выведите следующие файлы:

ВЫХОД-ПРЕФИКС.h
Содержит значения перечисления, объявления классов и структур, делегат
декларации и [Дллимпорт] отмеченные методы (из библиотеки, указанной
--библиотека ) внутри сборки СБОРКА-ИМЯ-ФАЙЛ .

ВЫХОД-ПРЕФИКС.c
Содержит реализацию перечисления и преобразования структуры
функции.

ВЫХОД-ПРЕФИКС.cs
Содержит частичный класс НативКонвертировать содержащий перевод перечисления
методы.

ВЫХОД-ПРЕФИКС.xml
Создает заглушки документации ECMA XML для перевода перечисления
методы в ВЫХОД-ПРЕФИКС.cs .

создать родную карту в первую очередь ищет Атрибут карты -одекорированные типы, и использует два
Атрибут карты свойства:

Родной тип
Содержит соответствующий тип C. Полезно, только если применяется к классам,
структуры и поля.

Подавить флаги
Если указано в члене перечисления [Flags] -декорированная нумерация
типа, отключает поддержка генератора нормального кода для перечисления с побитовой маской
типы.

Это полезно, когда информация о битовой и небитовой маске хранится в
тот же тип, и проверка битовой маски не должна использоваться для небитовой маски
ценности. Пример: Mono.Unix.Native.FilePermissions.S_IFREG , который не является
значение битовой маски, в то время как большая часть Разрешения на доступ к файлам состоит из значений битовой маски (
FilePermissions.S_IRUSR , FilePermissions.S_IWUSR И т.д.).

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

Делегаты
Генерация кода для делегатов игнорирует MapAttribute.NativeType собственность, и
генерирует указатель на функцию ЬурейеЕ что лучше всего соответствует объявлению делегата
в .h .

Например,

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

генерирует ЬурейеЕ :

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

Классы и структуры
A [Карта] -декорированный класс или структура получит объявление структуры C в пределах
.h файл:

[Карта]
структура Фу {
общественный интервал я;
}

становится

структура Фу {
общественный интервал я;
};

Если же линия индикатора MapAttribute.NativeType свойство установлено, то функции преобразования будут
заявлено в .h файл и создан в .c файл:

пространство имен Фу {
[Карта ("struct stat")]
структура статистики {
общедоступный uint st_uid;
}
}

становится

/ * Файл .h * /
структура Foo_Stat {
беззнаковый int st_uid;
};
Int
Foo_FromStat (struct Foo_Stat * from, struct stat * to);
Int
Foo_ToStat (struct stat * to, sxtruct Foo_Stat * to);

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

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

Для классов функции преобразования будут копировать только поля, объявленные в классе.
сам. Поля, объявленные в родительских классах, копироваться не будут. (Это потому что
создать родную карту не знает, как наследование реализовано в C. Поэтому
копирование полей из родительских классов остается на усмотрение вызывающего преобразователя
функции.)

Поля Если поле (1) имеет Атрибут карты атрибут, а (2) имеет
MapAttribute.NativeType набор свойств, то будет использоваться указанный собственный тип
для проверки переполнения. Например:

пространство имен Фу {
[Карта ("struct stat")]
структура статистики {
[Карта ("off_t")] общедоступный long st_size;
}
}

генерирует

/ * Файл .h * /
структура Foo_Stat {
gint64 st_size;
};
Int
Foo_FromStat (struct Foo_Stat * from, struct 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 (* до);
to-> st_size = from-> 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 (* до);
to-> st_size = from-> st_size;
0 вернуться;
}

Это полезно для лучшей проверки ошибок в функциях преобразования.
MapAttribute.NativeType для этого требуется, поскольку нет другого способа узнать, что
собственный тип (без разбора файлов системных заголовков ...).

Перечисления
Создает перечисление C и макросы для каждого из членов в пределах
перечисление. к и от функции также объявлены в .h файлов и
реализовано в .c .

Например,

пространство имен Фу {
[Карта]
перечисление Errno {
ЭИНВАЛ
}
}

сгенерирует следующее в .h файл:

перечисление Foo_Errno {
Foo_Errno_EINVAL = 0,
#define Foo_Errno_EINVAL Foo_Errno_EINVAL
};
int Foo_FromErrno (int от, int * до);
int Foo_ToErrno (int от, int * до);

и генерирует следующее в .c файл:

Int
Foo_FromErrno (целое от, целое * до)
{
* to = 0;
если (от == Foo_Errno_EPERM)
#ifdef ЭИНВАЛ
{* to = EINVAL;}
#еще
{ошибка = EINVAL; вернуть -1;}
#endif
0 вернуться;
}

Int
Foo_ToErrno (целое от, целое * до)
{
* to = 0;
#ifdef ЭИНВАЛ
если (от == EINVAL)
{* to = Foo_Errno_EPERM; return 0;}
#endif
возврат -1;
}

Другой код будет сгенерирован, если управляемое перечисление является [Flags] -украшенный
перечисление (для учета побитовых флагов), но это основная идея.

ПОЧТОВОЕ ОТПРАВЛЕНИЕ СПИСКИ


Войти http://lists.ximian.com/mailman/listinfo/mono-devel-list для получения информации.

Разработка САЙТ


Войти http://www.mono-project.com подробнее

создать родную карту(1)

Используйте create-native-map онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    Трассирование
    Трассирование
    Проект strace перенесен в
    https://strace.io. strace is a
    диагностика, отладка и обучение
    трассировщик пользовательского пространства для Linux. Это используется
    следить за...
    Скачать стрейс
  • 2
    Графический интерфейс извлечения gMKV
    Графический интерфейс извлечения gMKV
    Графический интерфейс для утилиты mkvextract (часть
    MKVToolNix), который включает большинство (если
    не все) функциональность mkvextract и
    утилиты мквинфо. Написано на C#NET 4.0,...
    Скачать gMKVExtractGUI
  • 3
    Библиотека JasperReports
    Библиотека JasperReports
    Библиотека JasperReports - это
    самый популярный в мире открытый исходный код
    бизнес-аналитика и отчетность
    двигатель. Он полностью написан на Java
    и это умеет ...
    Скачать библиотеку JasperReports
  • 4
    Книги Frappe
    Книги Frappe
    Frappe Books — это бесплатная книга с открытым исходным кодом.
    программное обеспечение для настольного бухгалтерского учета, которое
    простой и хорошо продуманный для использования
    малый бизнес и фрилансеры. Это'...
    Скачать книги фраппе
  • 5
    Числовой Python
    Числовой Python
    НОВОСТИ: NumPy 1.11.2 — последний релиз
    это будет сделано на sourceforge. Колеса
    для Windows, Mac и Linux, а также
    заархивированные исходные дистрибутивы могут быть четыре...
    Скачать числовой Python
  • 6
    КМУ Сфинкс
    КМУ Сфинкс
    CMUSphinx — это независимый от говорящих большой
    словарный запас распознавателя слитной речи
    выпущен под лицензией в стиле BSD. это
    также набор инструментов с открытым исходным кодом ...
    Скачать КМУ Сфинкс
  • Больше »

Команды Linux

Ad