--- /dev/null
+/*\r
+ * naitive_interface.h\r
+ *\r
+ * このファイルは、ネイティブファンクションのテーブルを定義します。\r
+ * ネイティブファンクションコールは、TNativeFunctionItem_t\r
+ */\r
+\r
+#ifndef NAITIVE_INTERFACE_H_\r
+#define NAITIVE_INTERFACE_H_\r
+#include "NyLPC_mimicVm.h"\r
+\r
+typedef NyLPC_TBool (*NyLPC_TNativeFunction)(NyLPC_TcMiMicVM_t* i_vm);\r
+\r
+struct TNativeFunctionItem\r
+{\r
+ /**\r
+ * 関数id。関数のidを定義する。関数idはビットフィールドを持つ。フォーマットは以下の通り。\r
+ * <table>\r
+ * <tr><td>bit field</td><td>bit field</td></tr>\r
+ * <tr><td>31-24</td><td>Addr type</td></tr>\r
+ * <tr><td>23-0</td><td>Number</td></tr>\r
+ * </table>\r
+ * AddrType\r
+ * <ul>\r
+ * <li>0x00: LocalIDモード。23-0に、ユーザ定義IDが含まれていることを示す。他のシステムと重複の可能性があるので注意すること。</li>\r
+ * <li>0x01: MAC-OUIモード。23-0に、MACAddrのOUI値が含まれていることを示す。OUI所有事業者が、ベンダ固有の関数を定義する場合に使用する。</li>\r
+ * <li>0x02: MiMicDomainモード。23-0に、MiMic projectがユーザに割り当てたIDが格納されていることを示す。</li>\r
+ * <li>0x39: MiMic予約値。</li>\r
+ * <li>other: reserved</li>\r
+ * </ul>\r
+ */\r
+ NyLPC_TUInt32 id;\r
+ /**\r
+ * 関数の名前。Javaパッケージ風に定義すると良い。重複可。\r
+ * @example "jp.nyatla.sample"\r
+ */\r
+ const char* name;\r
+ /**\r
+ * 関数ポインタ。\r
+ */\r
+ NyLPC_TNativeFunction function;\r
+};\r
+typedef struct TNativeFunctionItem TNativeFunctionItem_t;\r
+\r
+/**\r
+ * ネイティブ関数テーブルから、idに一致する関数を検索する。\r
+ */\r
+NyLPC_TNativeFunction getNativeFunctionById(NyLPC_TUInt32 i_id);\r
+\r
+\r
+#endif /* NAITIVE_INTERFACE_H_ */\r