code wiki / (root) / nx_memory.nx

nx_memory.nx source

↩ module page · 40 lines · 1807 B

1// nx_memory.nx -- CLI half of the consolidated memory tool (#6 of the 15). READ-ONLY seg-store surface: 2// stores <dir> | get <prefix> <key> | history <prefix> <key> | index <prefix> <idxkey> 3// exit: 0 ok | 3 absent | 4 tombstoned | 2 usage (codes surface in MCP _meta.exit_code) 4// license_tier: ORIGINAL 5import "nx_memory_lib.nx" 6 7const MXC_USAGE_RC: i64 = 2 8const MXC_RC_ABSENT: i64 = 3 9const MXC_RC_TOMB: i64 = 4 10const MXC_ARG_VERB: i64 = 1 11const MXC_ARG_P1: i64 = 2 12const MXC_ARG_P2: i64 = 3 13const MXC_ARGC_P1: i64 = 3 14const MXC_ARGC_P2: i64 = 4 15 16func main(argc: i64, argv: *i64) -> i64 { 17 if argc < MXC_ARGC_P1 { mx_puts("usage: nx_memory stores <dir> | get <prefix> <key> | history <prefix> <key> | index <prefix> <idxkey>\n" as *u8); return MXC_USAGE_RC } 18 let verb: *u8 = argv[MXC_ARG_VERB] as *u8 19 if mx_seq(verb, "stores" as *u8) == 1 { 20 if mx_stores(argv[MXC_ARG_P1] as *u8) < 0 { return MXC_RC_ABSENT } 21 return 0 22 } 23 if argc < MXC_ARGC_P2 { mx_puts("usage: nx_memory get|history|index <prefix> <key>\n" as *u8); return MXC_USAGE_RC } 24 if mx_seq(verb, "get" as *u8) == 1 { 25 let r: i64 = mx_get(argv[MXC_ARG_P1] as *u8, argv[MXC_ARG_P2] as *u8) 26 if r >= 0 { return 0 } 27 if r == 0 - (3 as i64) { return MXC_RC_TOMB } 28 return MXC_RC_ABSENT 29 } 30 if mx_seq(verb, "history" as *u8) == 1 { 31 if mx_history(argv[MXC_ARG_P1] as *u8, argv[MXC_ARG_P2] as *u8) > 0 { return 0 } 32 return MXC_RC_ABSENT 33 } 34 if mx_seq(verb, "index" as *u8) == 1 { 35 if mx_index(argv[MXC_ARG_P1] as *u8, argv[MXC_ARG_P2] as *u8) > 0 { return 0 } 36 return MXC_RC_ABSENT 37 } 38 mx_puts("usage: nx_memory stores <dir> | get <prefix> <key> | history <prefix> <key> | index <prefix> <idxkey>\n" as *u8) 39 return MXC_USAGE_RC 40}