ラベル Boost の投稿を表示しています。 すべての投稿を表示
ラベル Boost の投稿を表示しています。 すべての投稿を表示

C/C++ / Pythonを組み込む

アプリケーションにPythonを組み込むサンプルです。

Python 3.3, boost 1.55で実装しました。

要求

  1. shared library(DLL)を作らない
  2. C/C++から外部へモジュールをexportする (== 外部から、C/C++内のモジュールをimportする)
  3. C/C++内から、文字列としてPythonスクリプトを実行する
  4. C/C++内から、外部のモジュールをimportする
  5. Pythonとboost::pythonのみを使用する
  6. C/C++クラスはnoncopyableである
  7. shared_ptr, intrusive_ptrに対応する
  8. factory, addref, releaseを持つクラスに対応する

C/C++ / Python風のデコレータを書いてみたい ── Buffered Loop

前回からの続きです。

デコレータを「テンプレートを使って関数ポインタと関数オブジェクトを受け取り、値を返す関数」として定義しました。 また、新しい名前を付けるために移譲する関数や関数オブジェクトを作りました。

これを使って次のような要求を実装してみようと思います。

要求

  • streamから読みとった値を加工してstreamに流したい。
  • この時、全てを読み込んでから加工するとバッファから溢れてしまうので、 一定サイズ毎にステップで処理したい。
  • 加工方法は複数あるが、バッファの取り回しを共通化したい。

C/C++ / 固定幅整数型

現在、この記事をgentoo Linux x86 (default/linux/x86/13.0/desktop)環境下で記述しています。今のご時世ながら32bit機という様です。

というのも、所持している64bit機はデスクトップであり、現在使用中のこいつはノートパソコン。可搬性に軍配があがり、マシンパワーを必要としない作業を担当してもらっています。あっと、64bit機の方もgentooです。amd64ですね。はい、gentoo心酔してます。

プログラミングをしていると、32bitと64bitの環境の両方で動かさなければならない状況に出くわします。