検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
ws_0125_heap をテンプレートにして作成
メニュー
簡易掲示板
LINK集
y.tackの公式BBSブックマーク
practice room
?
最新の20件
2022-10-09
多角形の内外判定
2021-05-19
RecentDeleted
2018-08-01
FrontPage
文字列型変数管理サブルーチン
GAME作成システム
2018-07-31
double型変数管理サブルーチン
int型変数管理サブルーチン
2018-07-21
GUIとメイン分割処理。たたき台2
2018-07-11
memo
NO_579_sample
GUIとメイン分割処理。たたき台
2018-06-28
NO_714
NO_712
NO_706
NO_705
NO_704
NO_703
NO_702
2018-06-23
Shift_JIS
モートン番号テーブル化 / 八分木
total
0
today
0
yesterday
0
now
2
Menu
Total:0/Today:0
開始行:
*white_space企画の現状 heapモジュール ver 0.1.2.5 [#e8f8...
white_spaceでheap構造をデータ型の一つにしてるので
頑張って書きました
モジュール変数で要素を管理してるモジュールと
ラップしてモジュール変数決め打ちモジュールの二つを記述し...
stackとheapのスクリプト大体出来たから やっと次に進めそう...
*サブルーチン [#kce4e8c2]
[[ws_014_subr]]
*ws_bar_heap_014_submdl.hsp:サブモジュール [#w844a0a6]
heapの二つの要素を格納するサブモジュール~
別々に格納するよりデバッガで確認しやすい~
heap_youso_address:heapのindexを格納するモジュール変数~
数値を格納する~
heap_youso_value:heapの値を格納するモジュール変数~
mdl_one_value型なので数値、実数、文字列等格納できる~
#modinit~
コンスタラクタ。引数なし~
#modfunc local set_address~
引数:int __p_int~
heap_youso_addressのsetter~
#modfunc local set_value~
引数:var __p_value~
heap_youso_valueのsetter~
#modcfunc local get_address~
heap_youso_addressのgetter~
#modcfunc local get_value~
heap_youso_valueのgetter~
#modcfunc local ret_vartype_value~
heap_youso_valueの型を返す(数値)~
#modcfunc local tostr_vartype_value~
heap_youso_valueの型を返す(文字列)~
#include "mdl_value.as"
#include "mdl_value.as" //includeガードが効いてるかのTEST
#include "mdl_ws_define.as"
#include "mdl_ws_define.as" //includeガードが効いてるか...
//struct heap_model {
// long long* address;
// long long* value;
// long elements;
//} heap;
//heapの二つの要素を格納するサブモジュール
//別々に格納するよりデバッガで確認しやすい
//heap_youso_address:heapのindexを格納するモジュール変数
//数値を格納する
//heap_youso_value:heapの値を格納するモジュール変数
//mdl_one_value型なので数値、実数、文字列等格納できる
#module heap_2youso heap_youso_address,heap_youso_value
//コンスタラクタ。引数なし
#modinit
heap_youso_address=-1
newmod heap_youso_value,mdl_one_value
return
//heap_youso_addressのsetter
#modfunc local set_address int __p_int
heap_youso_address=__p_int
return 1
//heap_youso_valueのsetter
#modfunc local set_value var __p_value,local loc_tmp_value
loc_tmp_value=__p_value
set@mdl_one_value heap_youso_value,loc_tmp_value
return 1
//heap_youso_addressのgetter
#modcfunc local get_address
return heap_youso_address
//heap_youso_valueのgetter
#modcfunc local get_value
return get@mdl_one_value(heap_youso_value)
//heap_youso_valueの型を返す(数値)
#modcfunc local ret_vartype_value
return ret_vartype@mdl_one_value(heap_youso_value)
//heap_youso_valueの型を返す(文字列)
#modcfunc local tostr_vartype_value
return tostr_vartype@mdl_one_value(heap_youso_value)
#global
//そういえばこのモジュールテストしてないっすw
*サブな本体 [#v5f228f7]
#include "mdl_value.as"
#include "mdl_value.as" //includeガードが効いてるかのTEST
#include "mdl_ws_define.as"
#include "mdl_ws_define.as" //includeガードが効いてるか...
#include "ws_bar_heap_014_submdl.hsp"
#include "ws_bar_heap_014_submdl.hsp" //includeガードが...
#module heap_model heap_youso,heap_size,heap_address,hea...
#modinit int p_size
heap_size = p_size
repeat p_size
newmod heap_youso,heap_2youso
loop
heap_elements=0
return
#modcfunc local get_size
return heap_size
#modfunc local set_address var p_value,int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
set_address@heap_2youso heap_youso.p_index,p_value
return 1
#modfunc local set_value var p_value,int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
set_value@heap_2youso heap_youso.p_index,p_value
return 1
#modfunc local set_elements int p_int
heap_elements = p_int
return
#modcfunc local get_address int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return get_address@heap_2youso(heap_youso.p_index)
#modcfunc local get_value int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return get_value@heap_2youso(heap_youso.p_index)
#modcfunc local get_elements
return heap_elements
//bool heap_put(long long val, long long addr)
//{
// // First see if the address is already in use
// for (int i = 0; i < heap.elements; i++) {
// if (heap.address[i] == addr) {
// heap.value[i] = val;
// return true;
// }
// // If not, then it needs to be added if there is room...
// if (heap.elements < HEAP_MEMBERS) {
// int i = heap.elements;
// heap.address[i] = addr;
// heap.value[i] = val;
// heap.elements++;
// return true;
// }
// return false;
//}
#modfunc local put var _p_val,int _p_addr,local loc_e,lo...
// First see if the address is already in use
loc_e=heap_elements
for i,0,loc_e,1
loc_ad=get_address@heap_2youso(heap_youso.i)
if loc_ad == _p_addr {
set_address@heap_2youso heap_youso.i,_p_addr
set_value@heap_2youso heap_youso.i,_p_val
return 1
}
next
// If not, then it needs to be added if there is room l...
if loc_e < heap_size {
i = loc_e
loc_ad_b=_p_addr
set_address@heap_2youso heap_youso.i,loc_ad_b
set_value@heap_2youso heap_youso.i,_p_val
loc_e2 = heap_elements
loc_e2++
heap_elements=loc_e2
return 1
}
return 0
// Trying to get data from an address that doesn't exist...
//long long heap_get(long long addr)
//{
// for (int i = 0; i < HEAP_MEMBERS; i++) {
// if (heap.address[i] == addr) return heap.value[i];
// }
// return 0;
//}
#modcfunc local get_youso int _p_addr,local loc_ad
for i,0,heap_size,1
loc_ad=get_address@heap_2youso(heap_youso.i)
if loc_ad == _p_addr{
return get_value@heap_2youso(heap_youso.i)
}
next
return 0
;#modcfunc local ret_vartype_address int p_index
; if p_index < 0:return -1
; if p_index >= heap_size:return -1
; return ret_vartype@mdl_one_value(heap_address.p_index)
;#modcfunc local tostr_vartype_address int p_index
; return tostr_vartype@mdl_one_value(heap_address.p_index)
#modcfunc local ret_vartype_value int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return ret_vartype_value@heap_2youso(heap_youso.p_index)
#modcfunc local tostr_vartype_value int p_index
return tostr_vartype_value@heap_2youso(heap_youso.p_ind...
#modfunc local cleanup
i=0
for i,heap_size-1,-1,-1
delmod heap_address.i
delmod heap_value.i
next
return
#global
//↓重要w
newmod heap,heap_model,HEAP_MEMBERS@
#if 1
repeat 5
tmp=cnt*3
set_address@heap_model heap,tmp,cnt
tmp=cnt*4
set_value@heap_model heap,tmp,cnt
loop
set_elements@heap_model heap,7
repeat 10
logmes "heap address "+cnt+":"+get_address@heap_model(he...
loop
repeat 10
logmes "heap value "+cnt+":"+get_value@heap_model(heap,c...
loop
logmes "heap elements:"+get_elements@heap_model(heap)
repeat 10
logmes "heap type "+ret_vartype_value@heap_model(heap,cnt)
logmes "heap type "+tostr_vartype_value@heap_model(heap,...
loop
#endif
//bool create_heap(void)
//{
// if (heap.address = (long long*)calloc(HEAP_MEMBERS, s...
// if (heap.value = (long long*)calloc(HEAP_MEMBERS, si...
// heap.elements = 0;
// return true;
// }
// free (heap.address);
// }
// return false;
//}
#module
#deffunc create_heap local loc_tmp
// stackのsizeは途中から変えれなくなったw
loc_tmp=0
repeat HEAP_MEMBERS
set_address@heap_model heap@,loc_tmp,cnt
set_value@heap_model heap@,loc_tmp,cnt
loop
set_elements@heap_model heap@,0
return 1
#deffunc heap_set_elements int _p_int
set_elements@heap_model heap@,_p_int
return
#defcfunc heap_get_elements
return set_elements@heap_model(heap@)
#defcfunc heap_get_size int _p_int
get_size@heap_model(heap@)
return
#deffunc heap_put var p_val,int p_addr
put@heap_model heap@,p_val,p_addr
return stat
#defcfunc heap_get int p_addr
return get_youso@heap_model(heap@,p_addr)
;#defcfunc heap_ret_vartype_address int _p_int
; return ret_vartype_address@heap_model(heap@,_p_int)
;#defcfunc heap_tostr_vartype_address int _p_int
; return tostr_vartype_address@heap_model(heap@,_p_int)
#defcfunc heap_ret_vartype_value int _p_int
return ret_vartype_value@heap_model(heap@,_p_int)
#defcfunc heap_tostr_vartype_value int _p_int
return tostr_vartype_value@heap_model(heap@,_p_int)
#deffunc heap_cleanup
cleanup@heap_model(heap@)
delmod heap@
return
#global
#if 1
create_heap
baz=10.23
put@heap_model heap@,baz,1
baz=123.456
put@heap_model heap@,baz,2
baz="abcde"
put@heap_model heap@,baz,3
foo=30
heap_put foo,4
foo=345.678
heap_put foo,5
foo="fghij"
heap_put foo,6
foo=1
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=2
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=3
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=4
logmes "heap get "+heap_get(foo)
foo=5
logmes "heap get "+heap_get(foo)
foo=6
logmes "heap get "+heap_get(foo)
foo=1
logmes "heap type "+heap_ret_vartype_value(foo)
logmes "heap type "+heap_tostr_vartype_value(foo)
;logmes "heap type "+heap_ret_vartype_address(foo)
;logmes "heap type "+heap_tostr_vartype_address(foo)
logmes "heap type "+tostr_vartype_value@heap_model(heap@...
logmes "heap type "+ret_vartype_value@heap_model(heap@,f...
;logmes "heap type "+tostr_vartype_address@heap_model(he...
;logmes "heap type "+ret_vartype_address@heap_model(heap...
#endif
#if 0
heap_cleanup
#endif
終了行:
*white_space企画の現状 heapモジュール ver 0.1.2.5 [#e8f8...
white_spaceでheap構造をデータ型の一つにしてるので
頑張って書きました
モジュール変数で要素を管理してるモジュールと
ラップしてモジュール変数決め打ちモジュールの二つを記述し...
stackとheapのスクリプト大体出来たから やっと次に進めそう...
*サブルーチン [#kce4e8c2]
[[ws_014_subr]]
*ws_bar_heap_014_submdl.hsp:サブモジュール [#w844a0a6]
heapの二つの要素を格納するサブモジュール~
別々に格納するよりデバッガで確認しやすい~
heap_youso_address:heapのindexを格納するモジュール変数~
数値を格納する~
heap_youso_value:heapの値を格納するモジュール変数~
mdl_one_value型なので数値、実数、文字列等格納できる~
#modinit~
コンスタラクタ。引数なし~
#modfunc local set_address~
引数:int __p_int~
heap_youso_addressのsetter~
#modfunc local set_value~
引数:var __p_value~
heap_youso_valueのsetter~
#modcfunc local get_address~
heap_youso_addressのgetter~
#modcfunc local get_value~
heap_youso_valueのgetter~
#modcfunc local ret_vartype_value~
heap_youso_valueの型を返す(数値)~
#modcfunc local tostr_vartype_value~
heap_youso_valueの型を返す(文字列)~
#include "mdl_value.as"
#include "mdl_value.as" //includeガードが効いてるかのTEST
#include "mdl_ws_define.as"
#include "mdl_ws_define.as" //includeガードが効いてるか...
//struct heap_model {
// long long* address;
// long long* value;
// long elements;
//} heap;
//heapの二つの要素を格納するサブモジュール
//別々に格納するよりデバッガで確認しやすい
//heap_youso_address:heapのindexを格納するモジュール変数
//数値を格納する
//heap_youso_value:heapの値を格納するモジュール変数
//mdl_one_value型なので数値、実数、文字列等格納できる
#module heap_2youso heap_youso_address,heap_youso_value
//コンスタラクタ。引数なし
#modinit
heap_youso_address=-1
newmod heap_youso_value,mdl_one_value
return
//heap_youso_addressのsetter
#modfunc local set_address int __p_int
heap_youso_address=__p_int
return 1
//heap_youso_valueのsetter
#modfunc local set_value var __p_value,local loc_tmp_value
loc_tmp_value=__p_value
set@mdl_one_value heap_youso_value,loc_tmp_value
return 1
//heap_youso_addressのgetter
#modcfunc local get_address
return heap_youso_address
//heap_youso_valueのgetter
#modcfunc local get_value
return get@mdl_one_value(heap_youso_value)
//heap_youso_valueの型を返す(数値)
#modcfunc local ret_vartype_value
return ret_vartype@mdl_one_value(heap_youso_value)
//heap_youso_valueの型を返す(文字列)
#modcfunc local tostr_vartype_value
return tostr_vartype@mdl_one_value(heap_youso_value)
#global
//そういえばこのモジュールテストしてないっすw
*サブな本体 [#v5f228f7]
#include "mdl_value.as"
#include "mdl_value.as" //includeガードが効いてるかのTEST
#include "mdl_ws_define.as"
#include "mdl_ws_define.as" //includeガードが効いてるか...
#include "ws_bar_heap_014_submdl.hsp"
#include "ws_bar_heap_014_submdl.hsp" //includeガードが...
#module heap_model heap_youso,heap_size,heap_address,hea...
#modinit int p_size
heap_size = p_size
repeat p_size
newmod heap_youso,heap_2youso
loop
heap_elements=0
return
#modcfunc local get_size
return heap_size
#modfunc local set_address var p_value,int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
set_address@heap_2youso heap_youso.p_index,p_value
return 1
#modfunc local set_value var p_value,int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
set_value@heap_2youso heap_youso.p_index,p_value
return 1
#modfunc local set_elements int p_int
heap_elements = p_int
return
#modcfunc local get_address int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return get_address@heap_2youso(heap_youso.p_index)
#modcfunc local get_value int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return get_value@heap_2youso(heap_youso.p_index)
#modcfunc local get_elements
return heap_elements
//bool heap_put(long long val, long long addr)
//{
// // First see if the address is already in use
// for (int i = 0; i < heap.elements; i++) {
// if (heap.address[i] == addr) {
// heap.value[i] = val;
// return true;
// }
// // If not, then it needs to be added if there is room...
// if (heap.elements < HEAP_MEMBERS) {
// int i = heap.elements;
// heap.address[i] = addr;
// heap.value[i] = val;
// heap.elements++;
// return true;
// }
// return false;
//}
#modfunc local put var _p_val,int _p_addr,local loc_e,lo...
// First see if the address is already in use
loc_e=heap_elements
for i,0,loc_e,1
loc_ad=get_address@heap_2youso(heap_youso.i)
if loc_ad == _p_addr {
set_address@heap_2youso heap_youso.i,_p_addr
set_value@heap_2youso heap_youso.i,_p_val
return 1
}
next
// If not, then it needs to be added if there is room l...
if loc_e < heap_size {
i = loc_e
loc_ad_b=_p_addr
set_address@heap_2youso heap_youso.i,loc_ad_b
set_value@heap_2youso heap_youso.i,_p_val
loc_e2 = heap_elements
loc_e2++
heap_elements=loc_e2
return 1
}
return 0
// Trying to get data from an address that doesn't exist...
//long long heap_get(long long addr)
//{
// for (int i = 0; i < HEAP_MEMBERS; i++) {
// if (heap.address[i] == addr) return heap.value[i];
// }
// return 0;
//}
#modcfunc local get_youso int _p_addr,local loc_ad
for i,0,heap_size,1
loc_ad=get_address@heap_2youso(heap_youso.i)
if loc_ad == _p_addr{
return get_value@heap_2youso(heap_youso.i)
}
next
return 0
;#modcfunc local ret_vartype_address int p_index
; if p_index < 0:return -1
; if p_index >= heap_size:return -1
; return ret_vartype@mdl_one_value(heap_address.p_index)
;#modcfunc local tostr_vartype_address int p_index
; return tostr_vartype@mdl_one_value(heap_address.p_index)
#modcfunc local ret_vartype_value int p_index
if p_index < 0:return -1
if p_index >= heap_size:return -1
return ret_vartype_value@heap_2youso(heap_youso.p_index)
#modcfunc local tostr_vartype_value int p_index
return tostr_vartype_value@heap_2youso(heap_youso.p_ind...
#modfunc local cleanup
i=0
for i,heap_size-1,-1,-1
delmod heap_address.i
delmod heap_value.i
next
return
#global
//↓重要w
newmod heap,heap_model,HEAP_MEMBERS@
#if 1
repeat 5
tmp=cnt*3
set_address@heap_model heap,tmp,cnt
tmp=cnt*4
set_value@heap_model heap,tmp,cnt
loop
set_elements@heap_model heap,7
repeat 10
logmes "heap address "+cnt+":"+get_address@heap_model(he...
loop
repeat 10
logmes "heap value "+cnt+":"+get_value@heap_model(heap,c...
loop
logmes "heap elements:"+get_elements@heap_model(heap)
repeat 10
logmes "heap type "+ret_vartype_value@heap_model(heap,cnt)
logmes "heap type "+tostr_vartype_value@heap_model(heap,...
loop
#endif
//bool create_heap(void)
//{
// if (heap.address = (long long*)calloc(HEAP_MEMBERS, s...
// if (heap.value = (long long*)calloc(HEAP_MEMBERS, si...
// heap.elements = 0;
// return true;
// }
// free (heap.address);
// }
// return false;
//}
#module
#deffunc create_heap local loc_tmp
// stackのsizeは途中から変えれなくなったw
loc_tmp=0
repeat HEAP_MEMBERS
set_address@heap_model heap@,loc_tmp,cnt
set_value@heap_model heap@,loc_tmp,cnt
loop
set_elements@heap_model heap@,0
return 1
#deffunc heap_set_elements int _p_int
set_elements@heap_model heap@,_p_int
return
#defcfunc heap_get_elements
return set_elements@heap_model(heap@)
#defcfunc heap_get_size int _p_int
get_size@heap_model(heap@)
return
#deffunc heap_put var p_val,int p_addr
put@heap_model heap@,p_val,p_addr
return stat
#defcfunc heap_get int p_addr
return get_youso@heap_model(heap@,p_addr)
;#defcfunc heap_ret_vartype_address int _p_int
; return ret_vartype_address@heap_model(heap@,_p_int)
;#defcfunc heap_tostr_vartype_address int _p_int
; return tostr_vartype_address@heap_model(heap@,_p_int)
#defcfunc heap_ret_vartype_value int _p_int
return ret_vartype_value@heap_model(heap@,_p_int)
#defcfunc heap_tostr_vartype_value int _p_int
return tostr_vartype_value@heap_model(heap@,_p_int)
#deffunc heap_cleanup
cleanup@heap_model(heap@)
delmod heap@
return
#global
#if 1
create_heap
baz=10.23
put@heap_model heap@,baz,1
baz=123.456
put@heap_model heap@,baz,2
baz="abcde"
put@heap_model heap@,baz,3
foo=30
heap_put foo,4
foo=345.678
heap_put foo,5
foo="fghij"
heap_put foo,6
foo=1
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=2
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=3
logmes "heap get "+get_youso@heap_model(heap@,foo)
foo=4
logmes "heap get "+heap_get(foo)
foo=5
logmes "heap get "+heap_get(foo)
foo=6
logmes "heap get "+heap_get(foo)
foo=1
logmes "heap type "+heap_ret_vartype_value(foo)
logmes "heap type "+heap_tostr_vartype_value(foo)
;logmes "heap type "+heap_ret_vartype_address(foo)
;logmes "heap type "+heap_tostr_vartype_address(foo)
logmes "heap type "+tostr_vartype_value@heap_model(heap@...
logmes "heap type "+ret_vartype_value@heap_model(heap@,f...
;logmes "heap type "+tostr_vartype_address@heap_model(he...
;logmes "heap type "+ret_vartype_address@heap_model(heap...
#endif
#if 0
heap_cleanup
#endif
ページ名: