mdl_one_value
について
モジュール変数 一つを格納するサブルーチンです
インクルードガード
#ifndef _mdl_value_H_
モジュール変数 オブジェクト
mem_value
格納するオブジェクト
int str double のいずれかを格納
ラベル型データ とかでもたぶん格納できます
setter getter の関係で 変数に格納出来るデータのみです
#modinit
コンストラクタ
引数を取りません なにもしません
モジュール変数機能のため 定義が必要っぽいので実装しただけです
#modfunc local set var p
mem_valueのセッターです
即値を渡そうとするとエラー
変数のみ渡せます
その代わり 渡せるデータの型を多いです
#modcfunc local get
mem_valueのゲッターです
HSPの仕様で返せる型も多めです
#modcfunc local ret_vartype
データの型(数値)を返します
label 1 str 2 dbl 3 int 4 modvar 5
#modcfunc local tostr_vartype
データの型(文字列)を返します
"label" "str" "dbl" "int" "modvar"
// モジュール変数 一つを格納するサブルーチンです // インクルードガード #ifndef _mdl_value_H_ #define _mdl_value_H_ // mem_value // 格納するオブジェクト // int str double のいずれかを格納 // ラベル型データ とかでもたぶん格納できます // setter getter の関係で 変数に格納出来るデータのみです #module mdl_one_value mem_value // コンストラクタ // 引数を取りません なにもしません // モジュール変数機能のため 定義が必要っぽいので実装しただけです #modinit return // mem_valueのセッターです // 即値を渡そうとするとエラー // 変数のみ渡せます // その代わり 渡せるデータの型を多いです #modfunc local set var p mem_value=p return // mem_valueのゲッターです // HSPの仕様で返せる型も多めです #modcfunc local get return mem_value // データの型(数値)を返します // label 1 str 2 dbl 3 int 4 modvar 5 #modcfunc local ret_vartype return vartype(mem_value) // データの型(文字列)を返します // "label" "str" "dbl" "int" "modvar" #modcfunc local tostr_vartype switch vartype(mem_value) case 1:return "label" case 2:return "str" case 3:return "dbl" case 4:return "int" case 5:return "modvar" swend return "other" #global #endif #if 0 // TEST CODE newmod test_o_int,mdl_one_value newmod test_o_dbl,mdl_one_value newmod test_o_str,mdl_one_value a=1 set@mdl_one_value test_o_int,a b=1.23 set@mdl_one_value test_o_dbl,b c="HELLO" set@mdl_one_value test_o_str,c mes get@mdl_one_value(test_o_int) mes get@mdl_one_value(test_o_dbl) mes get@mdl_one_value(test_o_str) mes ret_vartype@mdl_one_value(test_o_int) mes ret_vartype@mdl_one_value(test_o_dbl) mes ret_vartype@mdl_one_value(test_o_str) mes tostr_vartype@mdl_one_value(test_o_int) mes tostr_vartype@mdl_one_value(test_o_dbl) mes tostr_vartype@mdl_one_value(test_o_str) #endif
インクルードガード
#ifndef _MY_WS_DEFINE_
STACK_MEMBERS
スタックの大きさ
HEAP_MEMBERS
ヒープの大きさ
MAX_LABELS
定義できるラベルの多さ
MAX_LABEL_LENGTH
ラベルの名前の長さの最大
MAX_INSTRUCTIONS
命令の数の最大
MAX_INSTRUCTION_LENGTH
命令のデータの長さの最大
MAX_NESTED_SUBROUTINES
サブルーチンのネストの最大
#ifndef _MY_WS_DEFINE_ #define _MY_WS_DEFINE_ // knowbugが配列インスタンスを800くらいまでしか表示してくれないため // スタックの大きさ #define STACK_MEMBERS 750 // ヒープの大きさ #define HEAP_MEMBERS 400 // 定義できるラベルの多さ #define MAX_LABELS 200 // ラベルの名前の長さの最大 #define MAX_LABEL_LENGTH 500 // 命令の数の最大 #define MAX_INSTRUCTIONS 30 // 命令のデータの長さの最大 #define MAX_INSTRUCTION_LENGTH 10 // サブルーチンのネストの最大 #define MAX_NESTED_SUBROUTINES 20 #endif