C++でforeach

abdev C++でforeach はコメントを受け付けていません

vectorに複数のオブジェクトを突っ込んだときにfor文ですべてのオブジェクトを舐めたいときってありますよね。大体、

vector<string> strings;
//ここでstringsに何か突っ込む
for( int i=0; i<num; i++ ){
cout << strings[i];
}

こんな感じのコードになると思うのですが、実は最近のboostはイテレートを自動的に処理してくれるBOOST_FOREACHなるものがあるのです。どうやってるのか分かっちゃいないんですが、とても便利で手放せなくなっている自分がいます(汗)。

vector<string> strings
//ここでstringsに何か突っ込む
BOOST_FOREACH( string str, strings ){
cout << str;
}

“BOOST_FOREACH” ってのがちょっと長いし、タイプするのが大変そうなので、おいらは “#define BOOST_FOREACH foreach” などと定義してしまっています。もうC++が標準で提供しているかのような感じですね。

でも、このBOOST_FOREACHはまだboostのパッケージには含まれていないようなので、別途下記サイトからダウンロードする必要があるみたいです(最初ここでハマりました)。

http://boost-consulting.com/vault/index.php?directory=Algorithms

第2回AB開発チームミーティング

abdev 1 Comment »

第2回AB開発チームミーティング、無事に終わりました~

一番遠い型は熊本から、続いて岐阜、愛知と、皆さん貴重な休日の時間を割いて参加していただき、本当にありがとうございました。もう少し早く終わるかなと思った今回のミーティングも、結局は時間ギリギリまでミッチリとやってしまいましたね。とても充実した時間を過ごすことができ、今後の開発に繋がる話し合いができたと思っています。

今回のミーティングに参加できなかった方はその様子をなかなか想像し辛いかもしれませんが、場所は今の職場の会議室。プロジェクター&飲み物(?)完備の贅沢な場所です。協力してくださった会社の方々、ありがとうございました。

内容のほうも、AB5の開発進捗報告から始まり、今後実装予定の言語仕様バグ追跡管理システム「Trac」講義(by O隊長)、ライブラリ開発の方針という、今後のAB開発に直接的に関わる最重要な議題ばかりで、満腹感を味わっております。

ん~、これは早いところ一般公開向けのAB5 CP4リリースへ持っていきたいです。

P.S.
結局、大人組は22時頃まで飲んでいましたf(^^;;;今日はもう寝ます…

もう一月終わりそうですね(汗

abdev もう一月終わりそうですね(汗 はコメントを受け付けていません

忙しいです~。寝る時間も勿体無いくらい充実しております。

AB5ですが、作れば作りこむほど、リリースが延期になってしまいます。困ったものです。

できれば、Vista発売と同時期にCP4を出したいのですが、ウーン、できるといいな~

定数メンバを実装

abdev 定数メンバを実装 はコメントを受け付けていません

今夜もなんとか時間を作ってAB開発を進めています。

 

本日のタスクはConst定義が可能なメンバ、即ち定数メンバの機能を使えるようにすることです。

 

例えば、C++では下記のように書けますね。

class Foo
    const int a;
public:
    Foo()
    :a(100)        //aの初期値として100をセット
    {
        ...
    }

    void spiteful()
    {
        // これはエラー
        a = 200;
    }
    ...
}

 

ABでは、コンストラクタに限り、定数メンバの書き込みを許可する仕様にしています。コンストラクタ内であれば何度でも書き直せてしまうというリスクはありますが、あまり複雑な文法を導入せずに初期化文法を実現することができています。”簡単” が一番です。例えば、上記のC++コードは下記のようなABコードに書き直せます。

 

Class Foo
    Const a As Long
Public
    Sub Foo()
        a = 100        'aの初期値として100をセット

        ...
    End Sub

    Sub spiteful()
        ' これはエラー
        a = 200;
    End Sub

    ...
End Class

 

最近、様々な開発補助ツールに手を出しているので、短時間でターゲットを絞っての開発が可能になりつつあります。良い傾向です。
さぁ、次に時間が空いたときは、2006年最終バージョンのパッケージングでも始めますか!

善は急げ

abdev 2 Comments »

早くも、HDDの増設に踏み切ってしまいました。増設の対象は開発用のメインPCではなく、dev.activebasic.comのほう。

 

行き着けの某電気店でのHDD購入でしたが、安いですね~。320GBで一万八千円なり。この容量、使いきれるのかしら・・・

 

さてさて、ハードも整ったので、これで心おきなく様々なファイルを置いたり、サービスを追加していくことができます。まずは、Tracを完全稼動させて開発効率の向上を図ること。こんなことを書いていたら今日もこんな時間です。寝ねばっ

dev.activebasic.com上サービス増加中…

abdev dev.activebasic.com上サービス増加中… はコメントを受け付けていません

そろそろdev.activebasic.comのコンテンツが増えてきました。開発者向けに特化したコンテンツになっているのですが、落ちていないか毎日のように心配してしまいます。稼動状況を携帯でチェックできるようにしたり、外出先でもリモート保守を心がけたりと、、、

 

さて、そんな心強いdev.activebasic.comサーバーですが、毎日の作業内容が逐一ハードディスク内に保存され、これからずぅ~っと蓄積されていきます。これはAB開発が終了するまでの期間(長~い期間)は少したりとも消えてもらっては困るものです。

 

ということで、軟弱ハードで動作させているこのサーバーにHDDを増設して本格的なバックアップ対応を行っていきたいところ。ネットワーク管理は本職ではありませんが、こんなことを考えながら、毎日ワクワクしているんですね。

一日が短すぎる~(><

abdev 一日が短すぎる~(>< はコメントを受け付けていません

忙しくて目標立てているAB開発がスムーズに進んでおりません。

いつも、帰ってきてから2~3時間は開発の時間をとるようにしているのですが、気が付くとAM2時、3時。

どうしたものか…。

まぁ、とにかくはコードを忘れないように、ちょこちょことコードメンテナンスを進めていく予定です。

今、定数管理部分の新コードを整理を行っていますが、もう風呂はいって寝なければマズいです。

最近は休日まで予定詰め込みすぎたから、次の土日はゆっくり茶でも飲みながらAB開発に取り組みたいところです。。。

AB5の定数はこうしたい

abdev 1 Comment »

AB5で改良予定の定数機能ですが、下記サイトのような構成で作業を進めていきたいと思います。

 

たかが定数、しかしこれから作りこむにはボリューム満点な内容です。。。

http://dev.activebasic.com/dev_wiki/index.php/%E5%AE%9A%E6%95%B0

 

今や、定数はただのリテラル値に置換するための文字列だという安易な考えはどこにもありません。定数はその値を変数領域に保有し、初期化タイミングの様々な挙動に身を任せなくてはなりません。オブジェクト定数の存在も忘れてはなりません。

 

そのような場合、大体は書き込みロックがかかった変数という扱いになりますが、見ての通り、APIで定義される定数の多さは尋常ではありません。あの量を実行時に初期化するという荒業は避けたいもの。

そこで、AB5ではリテラル値として扱える定数とそうでない定数(書き込みロック変数)を識別することにより、できる限り高速処理を追求しつつ、柔軟な型設計に対応可能な仕様を整えていきたいと思います。

 

オブジェクト指向を追及するあまり、実行時に降りかかる負担がバカにならない場合があります。せっかくネイティブなAB、利点を忘れずにいきたいものです。

休日のAB開発(レキシカルスコープ)

abdev 休日のAB開発(レキシカルスコープ) はコメントを受け付けていません

昨日は遅かったこともあり、起きたらPM2:00でした(凹

 

はぁ~まだ起きてからちょっとしか経ってないのに、暗くなってきやがりました…。

 

まぁ、気を取り直して中途半端に作業を終わらせていたABのコーディングを仕上げることにします。
最近している作業は、レキシカルスコープ概念の導入。変数がスコープ内で定義された場合はそのスコープ内からのみ参照可能になるってヤツです。
スコープになり得るステートメントは下記のようなものが挙げられます。

 

  • For~Next 
  • While~Wend
  • Do~Loop
  • If~End If
  • Select~End Select

 

これらのステートメントは条件分岐や繰り返しなどの意味を持ちますので、純粋にスコープのみの意味を示すScope~End Scopeなどの導入も考えています。他のBasic系の言語で、スコープのみを意味する構文ってどうなっているんでしょうかね…。ちょっと気になります。

 

さて、改めてレキシカルスコープを有効にするためにABコンパイラのソースコードをいじっているワケですが、ローカル領域のみならず、グローバル領域でのスコープ概念も十分に考えておかなければならないことに気づかされます。そう、ABはグローバル領域も実行可能領域になっているのです。

 

そんな問題も休日を使ってクリアしたいところ。次回は例外処理に入りたいと思います。

AB開発チームミーティング

abdev AB開発チームミーティング はコメントを受け付けていません

本日、開発チームミーティングを開催しました。

 

私が言うのもなんですが、皆さん若くてパワーが違います。なんかモタモタしていたら逆に指摘されてしまいそうな・・・。

 

まぁともかくは私が考えている開発方針をお伝えすることができ、開発チームの意見も聞くことができました。このような試みは初めてでしたが、まずは良い感触といったところでしょうか。

 

  • デリゲートの実装
  • クラス内での型定義機能の実装
  • Objectクラスの確定
  • エラー処理・例外処理の確定
  • ヒアドキュメントの実装(まぁ、これは最後でいいかf(^^;;;)

 

まず私が着手しなければならない作業が上記のように定まった感じです。来週中にはできれば2つ以上はこなしたいところ。最近仕事の関係で夜遅く帰宅することが多いので時間配分をうまくやってかにゃぁいけないです。

 

今日は遠いところから来ていただいた開発者の方もいらっしゃったので、感謝×感謝です。貴重な土曜日を使って集まっていただいた皆さん、ありがとうございました。

 

今後とも定期的にこのような意思統一の機会を設けていきたいですね!

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン