レベルアップを目指して

 Mingに物足りなさを感じたり、うまく動かなかったりしとき、 なにをしていますか。私の場合、何もできないので、次期バージョン を待ち望んでいます。
 でも本当はMingに手を加えれるようでないといけません。
Mingはソースが公開されていますし、win32の環境でmakeすることもできるのです。
 そこで、遠い未来、Mingを改造できるようになるために、 ソースを読んで見ることにしました

実態を探す

 src以下にある、名前を見れば、私たちがPHPで使っている機能がどこにあるかは一目瞭然だおといます。 今日は movie.c の SWFMovie_toOutput(SWFMovie movie, int level)に注目してもました。
なかでも。
SWFBlockList_writeBlocksToMethod(movie->blockList, SWFOutputMethod, buffer);
をのぞいて見ましょう。
そしてblocklist.cを見てみましょう。 名前のとおりblocklistはblockのlistです。
SWFBlockList_writeBlocksToMethod(SWFBlockList list,SWFByteOutputMethod method, void *data)
のなかの


writeSWFBlockToMethod(SWFBlock block, SWFByteOutputMethod method, void *data)

はblock.cのwriteSWFBlockToMethod(SWFBlock block, SWFByteOutputMethod method, void *data) のことです。
さらに、実態(データーをbufferに加えている部分)となるものは
writeSWFBlockToMethodの中の
block->writeBlock(block, method, data);

です。  このwriteBlockが、ファイルに書き込む前に bufferにデーターを加えている場所と思われます。(もちろんmovieてせもoutput.c をもちいてデーターをbufferに蓄えています。)
 
C言語でこんな風にプログラムできる?なんて私以前Mingのソースで知りました。入門書には あまり紹介されていない方法ですね。
text.c text.h や sprite.c sprite.hを を見てみると、 SWFCharacterを必ず保持しています SWFChracterの先頭はがSWFBlockであります。

関数ポインタ

 SWFMovieはSWFBlockListさえあつかっていれば、よいつくりになっているのですね。 あとはtextだとかspriteだとか bitmapだとかは blockを拡張してあげればよいと。
というとで、関数ポインターを使い方。
本当は、animalとか作って お決まりのパターン dogになったりするとワンワンとほえるものとか がよいと思いましたが、なぜか nuronです。
./nuron.h

typedef struct nuron_s *Nuron;
typedef void (*inputNuron)(void);
typedef void (*outputNuron)(void);

struct nuron_s{
  inputNuron input;
  outputNuron output;
        };

Nuron  newNuro();

 
./nuron.c
#include"nuron.h"

static int _inputNuron()
{
  printf("exe input \n");
}

static int _outputNuron()
{
  printf("exe output\n");
}

Nuron  newNuro()
{
  Nuron nuro;
  nuro = (Nuron)malloc(sizeof(struct nuron_s));
  nuro->input = (inputNuron)_inputNuron;
  nuro->output = (outputNuron)_inputNuron;
  return nuro;
}

./exe.h

#include"nuron.h"

./exe.c

#include"exe.h"
int main()
{
 
  Nuron nuro;
  nuro= newNuro();
  nuro->input();
   
}

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル