C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

NaCl tips; <embed>のパラメーターをpp::Instanceで取得

NaClインスタンスをホストしたHTMLの<embed>のパラメーター群をホストされたNaClインスタンスで得られる。設置する人がニーズに併せて設置に応じたコンフィグレーションを適用できるようにする簡単な方法としては良い選択肢の1つですね。

  • 得られるのはNaClをホストした<embed>の:
    • 属性の数 → uint32_t argc
    • 属性の名前のリスト → const char* argn[]
    • 属性の値のリスト → const char* argc[]

取得はpp::Instance::Initで行います。

source

.html
<embed
  id="nacl_target"
  type="application/x-nacl"
  src="Labyrinthian.nmf"
/>
.cxx
    virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]){
      auto m = std::string("Labyrinthian::Init\n");
      for(auto n = 0; n < argc; ++n){
        m += "attribute#";
        m += boost::lexical_cast<std::string>(n);
        m += "\n";
        m += "name : ";
        m += argn[n];
        m += "\n"
             "value: ";
        m += argv[n];
        m += "\n"
      }
      PostMessage(m);
    }
result
[1336030072756:on_message]  Labyrinthian::Init
attribute#0
name : id
value: nacl_target
attribute#1
name : type
value: application/x-nacl
attribute#2
name : src
value: Labyrinthian.nmf
attribute#3
name : @dev
value: 
 
wrp_nacl

参考

  • nacl_sdk/pepper_19/toolchain/linux_x86_glibv/x86_64-nacl/include/ppapi/cpp/instance.h