FFI
ይህ ሰነድ በWave ቋንቋ በውጭ የሚተገበሩ ተግባራትን ለመጥራት የFFI (ውጫዊ ተግባር በይነገጽ) መግለጫን ይገልጻል። በFFI፣ የWave ፕሮግራሞች በሌሎች ቋንቋዎች ከተፃፉ ቤተ-መጻህፍት ጋር በቀጥታ መገናኘት ይችላሉ።
አጠቃላይ እይታ
FFI of Wave የሚሰራው በማወጅ መሰረት ነው። ውጫዊ ተግባራት በWave ኮድ ውስጥ አልተተገበሩም እና የትኛውን ABI (መተግበሪያ ሁለትዮሽ በይነገጽ) ተግባሩን እንደሚከተል ብቻ ይግለጹ። ትክክለኛው አተገባበር በአገናኝ መንገዱ ከውጪ ቤተ-መጻሕፍት ተፈትቷል.
FFI የተግባር መኖሩን የሚገልጸው በተጠናቀረ ጊዜ ብቻ ነው፣ እና አገናኙ ተፈጻሚ ፋይል ሲፈጥር ትክክለኛውን ምልክት ያገናኛል።
የውጭ መግለጫ
ውጫዊ ተግባራት የሚታወቁት የውጭ ቁልፍ ቃልን በመጠቀም ነው።
በአሁኑ ጊዜ Wave የABI ዝርዝር መግለጫ ይፈልጋል፣ እና extern(c) ብቻ ነው የሚደገፈው።
extern(c) fun function_name(args...) -> return_type;
ABI ይግለጹ
የextern መግለጫ ABI መግለጽ አለበት።
በአሁኑ ጊዜ የሚደገፈው ABI c ነው።
extern(c) fun printf(fmt: ptr<u8>);
እንደ extern(rust) ያሉ መግለጫዎች ሊተነተኑ ቢችሉም፣ ስህተቶች የሚከሰቱት በትርጉም ትንተና ደረጃ ነው።
የተ ግባር ደረጃ የውጭ መግለጫ
ውጫዊ ተግባርን ሲያውጁ እንደሚከተለው ይፃፉ።
extern(c) fun InitWindow(width: i32, height: i32, title: ptr<u8>);
ይህ መግለጫ C ABIን የሚከተሉ የInitWindow ምልክቶች በውጫዊ ቤተ-መጽሐፍት ውስጥ ይኖራሉ ማለት ነው።
አግድ-ደረጃ የውጭ መግለጫ
ተመሳሳዩን ABI የሚጠቀሙ ብዙ ውጫዊ ተግባራት ካሉ በብሎክ መልክ ሊታወጁ ይችላሉ።
extern(c) {
fun InitWindow(width: i32, height: i32, title: ptr<u8>);
fun CloseWindow();
fun BeginDrawing();
fun EndDrawing();
}
የብሎክ ደረጃ መግለጫዎች በትርጉም ደረጃ ሙሉ ለሙሉ ከተግባር ደረጃ መግለጫዎች ጋር ተመሳሳይ ናቸው፣ እና በቀላሉ ለማንበብ እና ለማዋቀር አገባብ ናቸው።
