InggrisPerancisSpanyol

Ad


favorit OnWorks

create-native-map - Online di Cloud

Jalankan create-native-map di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah create-native-map yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


create-native-map - C/C# Pencipta Pemetaan

RINGKASAN


buat-asli-peta [OPSI]* ASSEMBLY-FILE-NAME OUT-PREFIX

PILIHAN


--autoconf-header=HEADER
HEADER adalah nama file header dalam sintaks yang biasanya digunakan dengan C #include
pernyataan, misalnya #include or #include "lokal.h" .

Makro berformat Autoconf dihasilkan dari nama sertakan, dan a #include
direktif dibungkus dalam a #ifdef blok untuk makro Autoconf di dalam
dihasilkan .c file.

Sebagai contoh, --autoconf-header= akan menghasilkan kode:

#ifndef MEMILIKI_STDIO_H
#termasuk
#endif /*ndef HAVE_STDIO_H */

--autoconf-member=ANGGOTA
Tentukan bahwa setiap akses ke ANGGOTA harus dibungkus dalam a #ifdef PUNYA_MEMBER
blok. ANGGOTA dapat berupa nama-bidang atau nama kelas . nama-bidang
kombinasi.

Misalnya, diberikan deklarasi C#:

[Mono.Unix.Native.Map ("struktur dirent")]
struct Langsung {
d_off panjang publik;
}

kemudian --autoconf-member=d_off akan menghasilkan kode yang mirip dengan:

int
KeDirent (struct dirent *dari, struct Dirent *ke)
{
#ifdef HAVE_STRUCT_DIRENT_D_OFF
ke->d_off = dari->d_off;
#endif /*ndef HAVE_STRUCT_DIRENT_D_OFF */
}

--exclude-native-symbol=SIMBOL
SYMBOL adalah [DllImpor] -menandai metode yang seharusnya tidak memiliki prototipe yang dihasilkan
untuk itu.

--impl-header=HEADER
Sisipkan a #include pernyataan dalam yang dihasilkan .c file untuk HEADER .

Sebagai contoh, --impl-header= menghasilkan

#include

--impl-makro=MAKRO
Sisipkan a #menetapkan pernyataan dalam yang dihasilkan .c file. MAKRO dapat berisi = untuk
pisahkan nama makro dari nilai makro.

Sebagai contoh, --impl-makro=FOO=42 menghasilkan

#tentukan FOO 42

--perpustakaan=PERPUSTAKAAN
Buat prototipe untuk [DllImpor] -metode bertanda yang merujuk pada yang asli
perpustakaan PERPUSTAKAAN ke dalam yang dihasilkan .h file.

--header-publik=HEADER
Sisipkan a #include pernyataan dalam yang dihasilkan .h file untuk HEADER .

Sebagai contoh, --public-header= menghasilkan

#include

--public-makro=MAKRO
Sisipkan a #menetapkan pernyataan dalam yang dihasilkan .h file. MAKRO dapat berisi = untuk
pisahkan nama makro dari nilai makro.

Sebagai contoh, --public-makro=FOO=42 menghasilkan

#tentukan FOO 42

--rename-member=DARI=KE
Ini digunakan ketika DARI adalah makro C, dan karenanya harus diubah agar dapat digunakan
secara masuk akal. Semua referensi yang dihasilkan ke representasi terkelola akan menggunakan UNTUK sebagai gantinya
of DARI .

Misalnya, diberikan deklarasi C#:

[Mono.Unix.Native.Map ("struct stat")]
struktur Stat {
st_atime panjang publik;
}

dan argumen --ganti nama-anggota=st_atime=st_atime_ , yang dihasilkan .h file akan
berisi:

struktur Stat {
gint64 st_atime_;
};

(perhatikan nama bidang yang diubah), sedangkan yang dihasilkan .c file akan berisi:

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

--rename-namespace=DARI=UNTUK
Secara default, "namespace" C (awalan simbol) adalah namespace C#; jenis di dalam
C# ruang nama Mono.Unix.Asli akan berada di C "namespace" Mono_Unix_Native . Menggunakan
--ganti nama-ruang nama untuk mengubah default, mis --ganti nama-
namespace=Mono.Unix.Native=Mono_Posix .

DESKRIPSI


buat-asli-peta adalah program untuk skenario tertentu: menjaga kode yang erat
digabungkan antara C dan C# sinkron satu sama lain, berdasarkan tipe C#.

Platform Invoke hanya berguna jika kode yang dikelola mengetahui jenis dan tata letak yang tepat dari semua
struktur tidak terkelola yang digunakannya. Ini biasanya terjadi pada Windows, tetapi ini tidak kasus
di Unix. Sebagai contoh, struktur Stat memanfaatkan jenis dengan ukuran yang akan bervariasi dari
platform ke platform (atau bahkan berdasarkan makro kompiler yang ditentukan!). Sebagai contoh, mati_t
biasanya bilangan bulat 32-bit bertanda pada platform ILP32, tetapi mungkin bilangan bulat 64-bit bertanda
pada platform LP64, tetapi juga dapat berupa integer bertanda 64-bit pada platform ILP32 jika:
_FILE_OFFSET_BITS makro memiliki nilai 64. Singkatnya, semuanya fleksibel dalam Unix,
dan kode yang dikelola tidak dapat menangani fleksibilitas seperti itu.

Dengan demikian, ceruk untuk buat-asli-peta : asumsikan ABI tetap yang dapat ditargetkan oleh kode terkelola,
dan buat kode untuk "menganggap" representasi terkelola ke asli yang sesuai
representasi. Hal ini perlu dilakukan untuk segala sesuatu yang dapat bervariasi antar platform dan
flag compiler, dari nilai enumerasi ( SIGBUS memiliki nilai 10 di FreeBSD tetapi 7 di
Linux) untuk menyusun anggota (seberapa besar? mati_t ?).

buat-asli-peta akan memeriksa NAMA-FILE-PERAKITAN dan keluarkan file-file berikut:

OUTPUT-PREFIX.h
Berisi nilai enumerasi, deklarasi kelas dan struktur, delegasi
deklarasi, dan [DllImpor] -metode yang ditandai (dari perpustakaan yang ditentukan oleh
--Perpustakaan ) di dalam majelis NAMA-FILE-PERAKITAN .

OUTPUT-awalan.c
Berisi implementasi enumerasi dan konversi struktur
fungsi.

OUTPUT-PREFIX.cs
Berisi kelas parsial Konversi Asli berisi terjemahan enumerasi
metode.

KELUARAN-PREFIX.xml
Menghasilkan rintisan dokumentasi XML ECMA untuk terjemahan enumerasi
metode di OUTPUT-PREFIX.cs .

buat-asli-peta terutama mencari Atribut Peta -dihiasi jenis, dan memanfaatkan dua
Atribut Peta properti:

Tipe Asli
Berisi tipe C yang sesuai. Hanya berguna jika diterapkan ke kelas,
struktur, dan bidang.

MenekanBendera
Ketika ditentukan pada anggota enumerasi a [Bendera] -pencacahan yang dihias
jenis, menonaktifkan dukungan generator kode normal untuk enumerasi bit-masking
jenis.

Ini berguna ketika informasi bitmask dan non-bitmask disimpan di dalam
jenis yang sama, dan pemeriksaan bitmask tidak boleh digunakan untuk non-bitmask
nilai-nilai. Contoh: Mono.Unix.Native.FilePermissions.S_IFREG , yang bukan a
nilai bitmask, sementara sebagian besar Izin File terdiri dari nilai bitmask (
Izin File.S_IRUSR , Izin File.S_IWUSR , Dll).

Grafik Atribut Peta atribut dapat ditentukan pada kelas, struktur, delegasi, bidang, dan
enumerasi.

Delegasi
Pembuatan kode untuk delegasi mengabaikan MapAttribute.NativeType properti, dan
menghasilkan penunjuk fungsi mengetik yang paling cocok dengan deklarasi delegasi
ke dalam .h file.

Sebagai contoh,

ruang nama Foo {
[Peta]
delegasikan string MyCallback (string s);
}

menghasilkan mengetik :

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

Kelas dan Struktur
A [Peta] -kelas atau struktur yang didekorasi akan mendapatkan deklarasi struktur C di dalam
.h File:

[Peta]
struktur Foo {
int publik saya;
}

menjadi

struktur Foo {
int publik saya;
};

Jika MapAttribute.NativeType properti diatur, maka fungsi konversi akan menjadi
dideklarasikan dalam .h file dan dibuat dalam .c File:

ruang nama Foo {
[Peta ("statistik struktur")]
struktur Stat {
uint st_uid publik;
}
}

menjadi

/* File .h */
struct Foo_Stat {
tidak ditandatangani int st_uid;
};
int
Foo_FromStat (struct Foo_Stat *dari, struct stat *ke);
int
Foo_ToStat (struct stat *ke, sxtruct Foo_Stat *to);

/* File .c */
int
Foo_FromStat (struct Foo_Stat *dari, struct stat *ke)
{
memset (ke, 0, sizeof(*ke);
ke->st_uid = dari->st_uid;
0 kembali;
}

int
Foo_ToStat (struct stat *ke, sxtruct Foo_Stat *to)
{
memset (ke, 0, sizeof(*ke);
ke->st_uid = dari->st_uid;
0 kembali;
}

Untuk kelas, fungsi konversi hanya akan menyalin bidang yang dideklarasikan di kelas
diri. Bidang yang dideklarasikan di kelas induk tidak akan disalin. (Hal ini karena
buat-asli-peta tidak tahu bagaimana pewarisan diterapkan di C. Oleh karena itu
menyalin bidang dari kelas induk diserahkan kepada pemanggil konversi
fungsi.)

Bidang Jika bidang (1) memiliki Atribut Peta atribut, dan (2) memiliki
MapAttribute.NativeType set properti, maka tipe asli yang ditentukan akan digunakan
untuk pemeriksaan luapan. Sebagai contoh:

ruang nama Foo {
[Peta ("statistik struktur")]
struktur Stat {
[Peta ("off_t")] st_size panjang publik;
}
}

menghasilkan

/* File .h */
struct Foo_Stat {
gint64 st_size;
};
int
Foo_FromStat (struct Foo_Stat *dari, struct stat *ke);
int
Foo_ToStat (struct stat *ke, sxtruct Foo_Stat *to);

/* File .c */
int
Foo_FromStat (struct Foo_Stat *dari, struct stat *ke)
{
_cnm_return_val_if_overflow (off_t, dari->st_size, -1);

memset (ke, 0, sizeof(*ke);
ke->st_size = dari->st_size;
0 kembali;
}

int
Foo_ToStat (struct stat *ke, sxtruct Foo_Stat *to)
{
_cnm_return_val_if_overflow (gint64, dari->st_size, -1);

memset (ke, 0, sizeof(*ke);
ke->st_size = dari->st_size;
0 kembali;
}

Ini berguna untuk pemeriksaan kesalahan yang lebih baik dalam fungsi konversi.
MapAttribute.NativeType diperlukan untuk ini karena tidak ada cara lain untuk mengetahui apa
tipe aslinya adalah (tanpa mem-parsing file header sistem...).

Enumerasi
Menghasilkan pencacahan C dan makro untuk masing-masing anggota dalam
pencacahan. Untuk dan Dari fungsi juga dideklarasikan dalam .h file dan
dilaksanakan di .c file.

Sebagai contoh,

ruang nama Foo {
[Peta]
enum Errno {
ENVAL
}
}

akan menghasilkan yang berikut di .h File:

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

dan menghasilkan yang berikut di .c File:

int
Foo_FromErrno (int dari, int *ke)
{
*ke = 0;
jika (dari == Foo_Errno_EPERM)
#ifdef EINVAL
{*ke = EINVAL;}
#lain
{errno = EINVAL; kembali -1;}
#berakhir jika
0 kembali;
}

int
Foo_ToErrno (int dari, int *ke)
{
*ke = 0;
#ifdef EINVAL
jika (dari == EINVAL)
{*ke = Foo_Errno_EPERM; kembali 0;}
#berakhir jika
kembali -1;
}

Kode yang berbeda akan dihasilkan jika enum yang dikelola adalah [Bendera] -dihiasi
enumeration (untuk memperhitungkan flag bitwise), tetapi ini adalah ide dasarnya.

PENGIRIMAN DAFTAR


Mengunjungi http://lists.ximian.com/mailman/listinfo/mono-devel-list untuk rincian.

WEB SITE


Mengunjungi http://www.mono-project.com untuk rincian

buat-asli-peta(1)

Gunakan create-native-map online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    menenggak
    menenggak
    SWIG adalah alat pengembangan perangkat lunak
    yang menghubungkan program yang ditulis dalam C dan
    C++ dengan berbagai level tinggi
    bahasa pemrograman. SWIG digunakan dengan
    berbeda...
    Unduh SWIG.dll
  • 2
    Tema WooCommerce Nextjs React
    Tema WooCommerce Nextjs React
    Bereaksi tema WooCommerce, dibangun dengan
    JS berikutnya, Webpack, Babel, Node, dan
    Express, menggunakan GraphQL dan Apollo
    Klien. Toko WooCommerce di React(
    berisi: Produk...
    Unduh WooCommerce Nextjs React Theme
  • 3
    archlabs_repo
    archlabs_repo
    Repo paket untuk ArchLabs Ini adalah
    aplikasi yang juga bisa diambil
    dari
    https://sourceforge.net/projects/archlabs-repo/.
    Ini telah dihosting di OnWorks di ...
    Unduh archlabs_repo
  • 4
    Proyek Zephyr
    Proyek Zephyr
    Proyek Zephyr adalah generasi baru
    sistem operasi waktu-nyata (RTOS) yang
    mendukung banyak perangkat keras
    ilmu bangunan. Hal ini didasarkan pada
    kernel jejak kecil...
    Unduh Proyek Zephyr
  • 5
    SCon
    SCon
    SCons adalah alat konstruksi perangkat lunak
    itu adalah alternatif yang unggul untuk
    alat pembuatan "Buat" klasik yang
    kita semua tahu dan cinta. SCon adalah
    dilaksanakan...
    Unduh SCons.dll
  • 6
    PSeInt
    PSeInt
    PSeInt adalah penerjemah kode semu untuk
    siswa pemrograman berbahasa Spanyol.
    Tujuan utamanya adalah menjadi alat untuk
    belajar dan memahami dasar
    konsep...
    Unduh PSeInt.dll
  • Lebih banyak lagi »

Perintah Linux

Ad