KHPC_v000doc01
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* KHPC ver.0.00の内部資料的なもの
-(by [[K]], 2016.05.19)
** 基本仕様
-KHPCの最初のバージョン。KHPCは[[persistent-C>persistent_...
-基本方針: とにかくできるだけ手抜きをする。次のバージョ...
-persistent int a; などの「persistent命令」はまだサポート...
-ライブラリ関数があって、それを使えばpersistent命令の代わ...
** ダウンロード
-http://khfdpl.osask.jp/download/khpc000a.zip
--ソースはTab=4を想定。
** 関数群
-void persistent_grp(int grpId, const char *path, const c...
--grpIdはセーブファイルに対応した数値。defではセーブファ...
--pathはセーブファイルの名前。
--tmpは新セーブファイルを作るときの仮の名前。・・・セーブ...
-void persistent_def(void *p, int size, int grpId, const ...
--pは永続変数へのポインタ。sizeはバイト数。idはgrpId内で...
-int persistent_save(double t);
--永続変数をセーブする。tは秒数で、指定された秒数よりも頻...
--t=0なら必ず保存される。
-int persistent_load(double t);
--永続変数をロードする。
-void persistent_optFlgs(int grpId, const char *id, int f...
--永続変数の属性のflagsを設定する。未実装。
-void persistent_optTyp(int grpId, const char *id, const ...
--永続変数の属性のtypを設定する。未実装。
-void persistent_optRem(int grpId, const char *id, const ...
--永続変数の属性のremを設定する。未実装。
** サンプルコード
#include <stdio.h>
#include <khpc0.h>
int i = 0, sum = 0;
char str[16] = "hello, world";
int main()
{
persistent_grp(0, "p-vars.pbd", "p-vars.pb_", "@hkaw...
persistent_def(&i, sizeof(i), 0, "i" );
persistent_def(&sum, sizeof(sum), 0, "sum");
persistent_def(&str, sizeof(str), 0, "str");
persistent_load(0);
for (; i <= 100; i++) {
persistent_save(0);
sum += i;
}
printf("sum=%d\n", sum);
return 0;
}
// persistent_grpのmemoについて.
// これは「@hkawai3(人名)のkhpc000というアーカイブの中...
// セーブされた変数がどのフォルダに属するものなのかを...
// アーカイブ作成者のid的なものから書き始めれば、名前...
** メモなど
-永続変数は、いずれもなんらかの「グループ」に所属する必要...
--セーブファイルを複数使えるようにした背景としては、セー...
--セーブファイルが別ならば、永続変数idが共通でも、別のも...
-永続変数のidとは、変数名、変数の型、変数のサイズなどを反...
--当面の開発計画におけるデフォルトでは変数名以外の情報が...
---というかver.0.00ではpersistent_defしかないのだけど。
-persistent_loadを実行すると、それ以降はpersistent_defな...
-saveに先だって、loadを一度は実行しておかなければならない。
--loadし忘れを防止するため。loadしないでsaveしたらいつも...
--セーブファイルがない状態でloadしても何も起きないだけな...
-セーブされている変数と、メモリ上の変数とでサイズが違う時...
--メモリ上の方が大きい場合: ロード時にはファイルに存在し...
--ファイル上の方が大きい場合: まずメモリに読み込めるとこ...
---つまり末尾ゼロは削られるが、それ以外の場合は削らない。
---極力データを失わないようにするため。
---将来開発予定のセーブデータ管理ツールを使えば、末尾が'\...
-flagsの仕様:
--flagsのどこかのbitが1だと、型情報フィールドが存在する。...
--flagsのどこかのbitが1だと、リマークフィールドが存在する...
** 型情報の書き方(案):
-基本型はu#,s#,f#,#の4通りしかない。#は10進数の数字。s32...
-(s32*3:a,u8*4:c)*16は以下の意味になる。
struct {
int a[3];
unsigned char c[4];
} ???[16];
--コロンを打てばそのフィールドに名前をつけられる(名前は...
-型情報は今のところはリマーク扱いなので、KHPCはこれを感知...
//-s32*3:aと書くとint a[3];に相当して、(s32*3):aがstruct ...
** 既知の問題点
-エラーが起きた時に、idしか表示していない。grpIdも表示し...
* こめんと欄
#comment
終了行:
* KHPC ver.0.00の内部資料的なもの
-(by [[K]], 2016.05.19)
** 基本仕様
-KHPCの最初のバージョン。KHPCは[[persistent-C>persistent_...
-基本方針: とにかくできるだけ手抜きをする。次のバージョ...
-persistent int a; などの「persistent命令」はまだサポート...
-ライブラリ関数があって、それを使えばpersistent命令の代わ...
** ダウンロード
-http://khfdpl.osask.jp/download/khpc000a.zip
--ソースはTab=4を想定。
** 関数群
-void persistent_grp(int grpId, const char *path, const c...
--grpIdはセーブファイルに対応した数値。defではセーブファ...
--pathはセーブファイルの名前。
--tmpは新セーブファイルを作るときの仮の名前。・・・セーブ...
-void persistent_def(void *p, int size, int grpId, const ...
--pは永続変数へのポインタ。sizeはバイト数。idはgrpId内で...
-int persistent_save(double t);
--永続変数をセーブする。tは秒数で、指定された秒数よりも頻...
--t=0なら必ず保存される。
-int persistent_load(double t);
--永続変数をロードする。
-void persistent_optFlgs(int grpId, const char *id, int f...
--永続変数の属性のflagsを設定する。未実装。
-void persistent_optTyp(int grpId, const char *id, const ...
--永続変数の属性のtypを設定する。未実装。
-void persistent_optRem(int grpId, const char *id, const ...
--永続変数の属性のremを設定する。未実装。
** サンプルコード
#include <stdio.h>
#include <khpc0.h>
int i = 0, sum = 0;
char str[16] = "hello, world";
int main()
{
persistent_grp(0, "p-vars.pbd", "p-vars.pb_", "@hkaw...
persistent_def(&i, sizeof(i), 0, "i" );
persistent_def(&sum, sizeof(sum), 0, "sum");
persistent_def(&str, sizeof(str), 0, "str");
persistent_load(0);
for (; i <= 100; i++) {
persistent_save(0);
sum += i;
}
printf("sum=%d\n", sum);
return 0;
}
// persistent_grpのmemoについて.
// これは「@hkawai3(人名)のkhpc000というアーカイブの中...
// セーブされた変数がどのフォルダに属するものなのかを...
// アーカイブ作成者のid的なものから書き始めれば、名前...
** メモなど
-永続変数は、いずれもなんらかの「グループ」に所属する必要...
--セーブファイルを複数使えるようにした背景としては、セー...
--セーブファイルが別ならば、永続変数idが共通でも、別のも...
-永続変数のidとは、変数名、変数の型、変数のサイズなどを反...
--当面の開発計画におけるデフォルトでは変数名以外の情報が...
---というかver.0.00ではpersistent_defしかないのだけど。
-persistent_loadを実行すると、それ以降はpersistent_defな...
-saveに先だって、loadを一度は実行しておかなければならない。
--loadし忘れを防止するため。loadしないでsaveしたらいつも...
--セーブファイルがない状態でloadしても何も起きないだけな...
-セーブされている変数と、メモリ上の変数とでサイズが違う時...
--メモリ上の方が大きい場合: ロード時にはファイルに存在し...
--ファイル上の方が大きい場合: まずメモリに読み込めるとこ...
---つまり末尾ゼロは削られるが、それ以外の場合は削らない。
---極力データを失わないようにするため。
---将来開発予定のセーブデータ管理ツールを使えば、末尾が'\...
-flagsの仕様:
--flagsのどこかのbitが1だと、型情報フィールドが存在する。...
--flagsのどこかのbitが1だと、リマークフィールドが存在する...
** 型情報の書き方(案):
-基本型はu#,s#,f#,#の4通りしかない。#は10進数の数字。s32...
-(s32*3:a,u8*4:c)*16は以下の意味になる。
struct {
int a[3];
unsigned char c[4];
} ???[16];
--コロンを打てばそのフィールドに名前をつけられる(名前は...
-型情報は今のところはリマーク扱いなので、KHPCはこれを感知...
//-s32*3:aと書くとint a[3];に相当して、(s32*3):aがstruct ...
** 既知の問題点
-エラーが起きた時に、idしか表示していない。grpIdも表示し...
* こめんと欄
#comment
ページ名: