Inlinec - เบงเบดเบ—เบตเปƒเบซเบกเปˆเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ” C เปƒเบ™ Python scripts

เป‚เบ„เบ‡เบเบฒเบ™ inlinec เบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” C เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Python scripts เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต. เบŸเบฑเบ‡เบŠเบฑเบ™ C เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบปเบ‡เปƒเบ™เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ” Python เบ”เบฝเบงเบเบฑเบ™, เป€เบ™เบฑเป‰เบ™เป‚เบ”เบ "@inlinec" decorator. เบชเบฐเบ„เบฃเบดเบšเบชเบฐเบซเบผเบธเบšเปเบกเปˆเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบ™เบฑเบเปเบ›เบžเบฒเบชเบฒ Python เปเบฅเบฐเบงเบดเป€เบ„เบฒเบฐเป‚เบ”เบเปƒเบŠเป‰เบเบปเบ™เป„เบเบ—เบตเปˆเปƒเบซเป‰เบขเบนเปˆเปƒเบ™ Python เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ parser เป€เบžเบทเปˆเบญเบซเบฑเบ™เบ›เปˆเบฝเบ™เบชเบฐเบ„เบดเบšเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปเบเบเบกเบฑเบ™เป‚เบ”เบเบ™เบฒเบเบžเบฒเบชเบฒ (เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เป‚เบกเบ”เบนเบ™ codecs เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ transcoding เบ‚เปเป‰เบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบช, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบฑเบ™เบ›เปˆเบฝเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ script เป„เบ”เป‰ arbitrarily).

parser เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ›เบฑเบ™เป‚เบกเบ”เบนเบ™ ("เบˆเบฒเบ inlinec เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ inlinec"), เป€เบŠเบดเปˆเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบฅเบฐเปƒเบ™เบเบฒเบ™เบšเบดเบ™เปเบ›เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ C เบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ @inlinec annotations เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ ctypes bindings เปเบฅเบฐเปเบ—เบ™เบ—เบตเปˆเบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ C เบเบฑเบš. เป‚เบ—เบซเบฒเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ™เบฒเบเบžเบฒเบชเบฒ Python เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเปเบซเบผเปˆเบ‡เบ—เบตเปˆเปเบ›เบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบชเบฐเบ„เบดเบš, เป€เบŠเบดเปˆเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ C เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰. เบ›เบฐเป€เบžเบ”. เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Pyxl4, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบฅเบฐเบซเบฑเบ” HTML เปเบฅเบฐ Python เปƒเบ™เป„เบŸเบฅเปŒเบ”เบฝเบง.

# เบฅเบฐเบซเบฑเบ”: inlinec
เบˆเบฒเบ inlinec เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ inlinec

@inlinec
def test():
#เบฅเบงเบก
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš void() {
printf("เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ");
}

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบšเบšเบ—เบปเบ”เบฅเบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ•เบปเบงเบŠเบตเป‰ (เบเบปเบเป€เบงเบฑเป‰เบ™เบชเบฒเบ) เปƒเบซเป‰เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™.
โ€œgcc -Eโ€ เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบฅเบฐเบซเบฑเบ”เบเปˆเบญเบ™, เบšเบฑเบ™เบ—เบถเบเป„เบŸเบฅเปŒ *.so, *.o เปเบฅเบฐ *.c เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบตเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบšเปเปˆเปƒเบซเป‰เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบงเบตเบŠเบฑเบ™เบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบฅเป‰เบง เปเบฅเบฐเป€เบฎเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เปเบเบเบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™ (เบเบฒเบ™เบฅเปˆเบฒเบŠเป‰เบฒเบซเบผเบฒเบเปƒเบ™เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบกเบฑเบ™เปเบฅเปˆเบ™).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™