Commit 8ccc5ad5f7ce13609c1fb0c0780dfca711bc1420
1 parent
85496d9f
add dump_Session_Field, dump_Session
add get_mb_DB_id, get_List_DB_id, put_List_DB_id, replace_List_DB_id add get_List_String, put_List_String, replace_List_String
Showing
2 changed files
with
222 additions
and
64 deletions
Show diff stats
generic/session.anubis
| ... | ... | @@ -81,6 +81,55 @@ public define List(Session_Field_No_Var) |
| 81 | 81 | ) |
| 82 | 82 | . |
| 83 | 83 | |
| 84 | + /************************************************/ | |
| 85 | + | |
| 86 | +public define String dump_Session_Field_list(List(Session_Field) _fields, String indent). | |
| 87 | + | |
| 88 | +public define String | |
| 89 | + dump_Session_Field | |
| 90 | + ( | |
| 91 | + Session_Field _field, | |
| 92 | + String indent | |
| 93 | + )= | |
| 94 | + with name = "Name = ["+_field.field_name+"]", | |
| 95 | + if *_field.field_datum is | |
| 96 | + { | |
| 97 | + string(_string) then name+", Type = String, Value = ["+_string+"]", | |
| 98 | + bool(_bool) then name+", Type = Bool, Value = ["+to_String(_bool)+"]", | |
| 99 | + int(_int) then name+", Type = Int, Value = ["+_int+"]", | |
| 100 | + db_id(_db_id) then name+", Type = DB_id, Value = ["+_db_id+"]", | |
| 101 | + message(_message) then name+", Type = Message, Value = ["+dump(_message)+"]", | |
| 102 | + byte_array(_byte_array) then name+", Type = ByteArray", | |
| 103 | + float(_float) then name+", Type = Float, Value = ["+float_to_string(_float, 10)+"]", | |
| 104 | + word128(_word128) then name+", Type = Word128, Value = ["+to_decimal(_word128)+"]", | |
| 105 | + word64(_word64) then name+", Type = Word64, Value = ["+to_decimal(_word64)+"]", | |
| 106 | + word32(_word32) then name+", Type = Word32, Value = ["+to_decimal(_word32)+"]", | |
| 107 | + word16(_word16) then name+", Type = Word16, Value = ["+to_decimal(_word16)+"]", | |
| 108 | + word8(_word8) then name+", Type = Word8, Value = ["+to_decimal(_word8)+"]", | |
| 109 | + word4(_word4) then name+", Type = Word4, Value = ["+to_decimal(_word4)+"]", | |
| 110 | + fields_set(_fields) then name+", Type = Fields_set, \n"+dump_Session_Field_list(*_fields, indent+" "), | |
| 111 | + session(_session) then name+", Type = Session, session id = ["+_session.id+"]\n"+dump_Session_Field_list(*_session.fields, indent+" "), | |
| 112 | + } | |
| 113 | +. | |
| 114 | + | |
| 115 | +public define String | |
| 116 | + dump_Session_Field_list | |
| 117 | + ( | |
| 118 | + List(Session_Field) _fields, | |
| 119 | + String indent | |
| 120 | + )= | |
| 121 | + join("\n", map((Session_Field _field) |-> dump_Session_Field(_field, indent), _fields)) | |
| 122 | +. | |
| 123 | + | |
| 124 | +public define String | |
| 125 | + dump_Session | |
| 126 | + ( | |
| 127 | + Session _session, | |
| 128 | + String indent | |
| 129 | + )= | |
| 130 | + dump_Session_Field_list(*_session.fields, indent) | |
| 131 | +. | |
| 132 | + | |
| 84 | 133 | |
| 85 | 134 | public define Maybe(Session_Field_Datum) |
| 86 | 135 | get_field |
| ... | ... | @@ -93,12 +142,45 @@ public define Maybe(Session_Field_Datum) |
| 93 | 142 | { |
| 94 | 143 | [] then failure, |
| 95 | 144 | [h . t] then |
| 145 | + //println("testing get_field h.field_name "+dump_Session_Field(h, "")+" looking of _field_name ["+_field_name+"] of type "+to_String(_field_type)); | |
| 96 | 146 | if h.field_name = _field_name & h.field_type = _field_type then |
| 147 | + //println("OK"); | |
| 97 | 148 | success(*h.field_datum) |
| 98 | 149 | else |
| 99 | 150 | get_field(t, _field_type, _field_name) |
| 100 | 151 | } |
| 101 | 152 | . |
| 153 | + | |
| 154 | + | |
| 155 | +public define List(Session_Field_Datum) | |
| 156 | + get_fields_list | |
| 157 | + ( | |
| 158 | + List(Session_Field) fields, | |
| 159 | + Session_Field_Type _field_type, | |
| 160 | + String _field_name, | |
| 161 | + List(Session_Field_Datum) so_far | |
| 162 | + ) = | |
| 163 | + if fields is | |
| 164 | + { | |
| 165 | + [] then so_far, | |
| 166 | + [h . t] then | |
| 167 | + if h.field_name = _field_name & h.field_type = _field_type then | |
| 168 | + get_fields_list(t, _field_type, _field_name, [*h.field_datum . so_far]) | |
| 169 | + else | |
| 170 | + get_fields_list(t, _field_type, _field_name, so_far) | |
| 171 | + } | |
| 172 | +. | |
| 173 | + | |
| 174 | +public define List(Session_Field_Datum) | |
| 175 | + get_fields_list | |
| 176 | + ( | |
| 177 | + List(Session_Field) fields, | |
| 178 | + Session_Field_Type _field_type, | |
| 179 | + String _field_name | |
| 180 | + ) = | |
| 181 | + get_fields_list(fields, _field_type, _field_name, []) | |
| 182 | +. | |
| 183 | + | |
| 102 | 184 | /******** ANY functions ***************/ |
| 103 | 185 | |
| 104 | 186 | |
| ... | ... | @@ -160,20 +242,20 @@ define One |
| 160 | 242 | Session_Field_Type _field_type, |
| 161 | 243 | String _field_name, |
| 162 | 244 | Session_Field_Datum _field_value |
| 163 | - )= | |
| 245 | + )= | |
| 164 | 246 | replace_any(*fields, _field_type, _field_name, _field_value, fields) |
| 165 | 247 | . |
| 166 | 248 | |
| 167 | 249 | /*************** String *****************/ |
| 168 | 250 | |
| 169 | - Maybe(String) get_String(fields, _field_name) | |
| 251 | + Maybe(String) get_mb_String(fields, _field_name) | |
| 170 | 252 | String get_String(fields, _field_name, default_value) |
| 171 | 253 | |
| 172 | 254 | public define Maybe(String) |
| 173 | - get_String | |
| 255 | + get_mb_String | |
| 174 | 256 | ( |
| 175 | 257 | Var(List(Session_Field)) fields, |
| 176 | - String _field_name | |
| 258 | + String _field_name | |
| 177 | 259 | ) = |
| 178 | 260 | if get_field(*fields, string_t, _field_name) is |
| 179 | 261 | { |
| ... | ... | @@ -193,12 +275,28 @@ public define String |
| 193 | 275 | String _field_name, |
| 194 | 276 | String default_value |
| 195 | 277 | ) = |
| 196 | - if get_String(fields, _field_name) is | |
| 278 | + if get_mb_String(fields, _field_name) is | |
| 197 | 279 | { |
| 198 | 280 | failure then default_value |
| 199 | 281 | success(value) then value |
| 200 | 282 | }. |
| 201 | 283 | |
| 284 | +public define List(String) | |
| 285 | + get_List_String | |
| 286 | + ( | |
| 287 | + Var(List(Session_Field)) fields, | |
| 288 | + String _field_name | |
| 289 | + ) = | |
| 290 | + map_select((Session_Field_Datum datum) |-> | |
| 291 | + if datum is string(value) then | |
| 292 | + success(value) | |
| 293 | + else | |
| 294 | + failure | |
| 295 | + , | |
| 296 | + get_fields_list(*fields, string_t, _field_name) | |
| 297 | + ) | |
| 298 | +. | |
| 299 | + | |
| 202 | 300 | public define One |
| 203 | 301 | put_String |
| 204 | 302 | ( |
| ... | ... | @@ -210,13 +308,39 @@ public define One |
| 210 | 308 | . |
| 211 | 309 | |
| 212 | 310 | public define One |
| 311 | + put_List_String | |
| 312 | + ( | |
| 313 | + Var(List(Session_Field)) fields, | |
| 314 | + String _field_name, | |
| 315 | + List(String) _field_values | |
| 316 | + )= | |
| 317 | + map_forget((String value) |-> | |
| 318 | + fields <- [session_field(_field_name, string_t, var(string(value))) . *fields] | |
| 319 | + , | |
| 320 | + _field_values | |
| 321 | + ) | |
| 322 | +. | |
| 323 | + | |
| 324 | +public define One | |
| 325 | + replace_List_String | |
| 326 | + ( | |
| 327 | + Var(List(Session_Field)) fields, | |
| 328 | + String _field_name, | |
| 329 | + List(String) _field_values | |
| 330 | + )= | |
| 331 | + remove_any(fields, string_t, _field_name); | |
| 332 | + put_List_String(fields, _field_name, _field_values) | |
| 333 | +. | |
| 334 | + | |
| 335 | +public define One | |
| 213 | 336 | replace_String |
| 214 | 337 | ( |
| 215 | 338 | Var(List(Session_Field)) fields, |
| 216 | 339 | String _field_name, |
| 217 | 340 | String _field_value |
| 218 | 341 | )= |
| 219 | - replace_any(fields, string_t, _field_name, string(_field_value)) | |
| 342 | + remove_any(fields, string_t, _field_name); | |
| 343 | + put_String(fields, _field_name, _field_value) | |
| 220 | 344 | . |
| 221 | 345 | |
| 222 | 346 | |
| ... | ... | @@ -365,10 +489,10 @@ public define One |
| 365 | 489 | String get_DB_id(fields, _field_name, default_value) |
| 366 | 490 | |
| 367 | 491 | public define Maybe(DB_id) |
| 368 | - get_DB_id | |
| 492 | + get_mb_DB_id | |
| 369 | 493 | ( |
| 370 | 494 | Var(List(Session_Field)) fields, |
| 371 | - String _field_name, | |
| 495 | + String _field_name, | |
| 372 | 496 | ) = |
| 373 | 497 | if get_field(*fields, db_id_t, _field_name) is |
| 374 | 498 | { |
| ... | ... | @@ -385,14 +509,46 @@ public define DB_id |
| 385 | 509 | get_DB_id |
| 386 | 510 | ( |
| 387 | 511 | Var(List(Session_Field)) fields, |
| 388 | - String _field_name, | |
| 389 | - DB_id default_value | |
| 512 | + String _field_name, | |
| 513 | + ) = | |
| 514 | + if get_mb_DB_id(fields, _field_name) is | |
| 515 | + { | |
| 516 | + failure then | |
| 517 | + println("get_DB_id field_name ["+_field_name+"] not found"); | |
| 518 | + none | |
| 519 | + success(value) then value | |
| 520 | + } | |
| 521 | +. | |
| 522 | + | |
| 523 | +public define DB_id | |
| 524 | + get_DB_id | |
| 525 | + ( | |
| 526 | + Var(List(Session_Field)) fields, | |
| 527 | + String _field_name, | |
| 528 | + DB_id default_value | |
| 390 | 529 | ) = |
| 391 | - if get_DB_id(fields, _field_name) is | |
| 530 | + if get_mb_DB_id(fields, _field_name) is | |
| 392 | 531 | { |
| 393 | 532 | failure then default_value |
| 394 | 533 | success(value) then value |
| 395 | - }. | |
| 534 | + } | |
| 535 | +. | |
| 536 | + | |
| 537 | +public define List(DB_id) | |
| 538 | + get_List_DB_id | |
| 539 | + ( | |
| 540 | + Var(List(Session_Field)) fields, | |
| 541 | + String _field_name | |
| 542 | + ) = | |
| 543 | + map_select((Session_Field_Datum datum) |-> | |
| 544 | + if datum is db_id(value) then | |
| 545 | + success(value) | |
| 546 | + else | |
| 547 | + failure | |
| 548 | + , | |
| 549 | + get_fields_list(*fields, db_id_t, _field_name) | |
| 550 | + ) | |
| 551 | +. | |
| 396 | 552 | |
| 397 | 553 | public define One |
| 398 | 554 | put_DB_id |
| ... | ... | @@ -401,25 +557,50 @@ public define One |
| 401 | 557 | String _field_name, |
| 402 | 558 | DB_id _field_value |
| 403 | 559 | )= |
| 404 | - fields <- [session_field(_field_name, int_t, var(db_id(_field_value))) . *fields] | |
| 560 | + fields <- [session_field(_field_name, db_id_t, var(db_id(_field_value))) . *fields] | |
| 405 | 561 | . |
| 406 | 562 | |
| 563 | + | |
| 407 | 564 | public define One |
| 408 | 565 | replace_DB_id |
| 409 | 566 | ( |
| 410 | 567 | Var(List(Session_Field)) fields, |
| 411 | - String _field_name, | |
| 412 | - DB_id _field_value | |
| 568 | + String _field_name, | |
| 569 | + DB_id _field_value | |
| 413 | 570 | )= |
| 414 | 571 | replace_any(fields, db_id_t, _field_name, db_id(_field_value)) |
| 415 | 572 | . |
| 416 | 573 | |
| 574 | +public define One | |
| 575 | + put_List_DB_id | |
| 576 | + ( | |
| 577 | + Var(List(Session_Field)) fields, | |
| 578 | + String _field_name, | |
| 579 | + List(DB_id) _field_values | |
| 580 | + )= | |
| 581 | + map_forget((DB_id value) |-> | |
| 582 | + fields <- [session_field(_field_name, db_id_t, var(db_id(value))) . *fields] | |
| 583 | + , | |
| 584 | + _field_values | |
| 585 | + ) | |
| 586 | +. | |
| 587 | + | |
| 588 | +public define One | |
| 589 | + replace_List_DB_id | |
| 590 | + ( | |
| 591 | + Var(List(Session_Field)) fields, | |
| 592 | + String _field_name, | |
| 593 | + List(DB_id) _field_values | |
| 594 | + )= | |
| 595 | + remove_any(fields, db_id_t, _field_name); | |
| 596 | + put_List_DB_id(fields, _field_name, _field_values) | |
| 597 | +. | |
| 417 | 598 | |
| 418 | 599 | public define One |
| 419 | 600 | remove_DB_id |
| 420 | 601 | ( |
| 421 | 602 | Var(List(Session_Field)) fields, |
| 422 | - String _field_name | |
| 603 | + String _field_name | |
| 423 | 604 | )= |
| 424 | 605 | remove_any(fields, db_id_t, _field_name) |
| 425 | 606 | . |
| ... | ... | @@ -1195,51 +1376,3 @@ public define $T |
| 1195 | 1376 | } |
| 1196 | 1377 | . |
| 1197 | 1378 | |
| 1198 | - /************************************************/ | |
| 1199 | - | |
| 1200 | -public define String dump_Session_Field_list(List(Session_Field) _fields, String indent). | |
| 1201 | - | |
| 1202 | -public define String | |
| 1203 | - dump_Session_Field | |
| 1204 | - ( | |
| 1205 | - Session_Field _field, | |
| 1206 | - String indent | |
| 1207 | - )= | |
| 1208 | - with name = "Name = ["+_field.field_name+"]", | |
| 1209 | - if *_field.field_datum is | |
| 1210 | - { | |
| 1211 | - string(_string) then name+", Type = String, Value = ["+_string+"]", | |
| 1212 | - bool(_bool) then name+", Type = Bool, Value = ["+to_String(_bool)+"]", | |
| 1213 | - int(_int) then name+", Type = Int, Value = ["+_int+"]", | |
| 1214 | - db_id(_db_id) then name+", Type = DB_id, Value = ["+_db_id+"]", | |
| 1215 | - message(_message) then name+", Type = Message, Value = ["+dump(_message)+"]", | |
| 1216 | - byte_array(_byte_array) then name+", Type = ByteArray", | |
| 1217 | - float(_float) then name+", Type = Float, Value = ["+float_to_string(_float, 10)+"]", | |
| 1218 | - word128(_word128) then name+", Type = Word128, Value = ["+to_decimal(_word128)+"]", | |
| 1219 | - word64(_word64) then name+", Type = Word64, Value = ["+to_decimal(_word64)+"]", | |
| 1220 | - word32(_word32) then name+", Type = Word32, Value = ["+to_decimal(_word32)+"]", | |
| 1221 | - word16(_word16) then name+", Type = Word16, Value = ["+to_decimal(_word16)+"]", | |
| 1222 | - word8(_word8) then name+", Type = Word8, Value = ["+to_decimal(_word8)+"]", | |
| 1223 | - word4(_word4) then name+", Type = Word4, Value = ["+to_decimal(_word4)+"]", | |
| 1224 | - fields_set(_fields) then name+", Type = Fields_set, \n"+dump_Session_Field_list(*_fields, indent+" "), | |
| 1225 | - session(_session) then name+", Type = Session, session id = ["+_session.id+"]\n"+dump_Session_Field_list(*_session.fields, indent+" "), | |
| 1226 | - } | |
| 1227 | -. | |
| 1228 | - | |
| 1229 | -public define String | |
| 1230 | - dump_Session_Field_list | |
| 1231 | - ( | |
| 1232 | - List(Session_Field) _fields, | |
| 1233 | - String indent | |
| 1234 | - )= | |
| 1235 | - join("\n", map((Session_Field _field) |-> dump_Session_Field(_field, indent), _fields)) | |
| 1236 | -. | |
| 1237 | - | |
| 1238 | -public define String | |
| 1239 | - dump_Session | |
| 1240 | - ( | |
| 1241 | - Session _session, | |
| 1242 | - String indent | |
| 1243 | - )= | |
| 1244 | - dump_Session_Field_list(*_session.fields, indent) | |
| 1245 | -. | ... | ... |
generic/types/session.anubis
| ... | ... | @@ -70,6 +70,31 @@ public type Session_Field_Type: |
| 70 | 70 | session_t |
| 71 | 71 | . |
| 72 | 72 | |
| 73 | +public define String | |
| 74 | + to_String | |
| 75 | + ( | |
| 76 | + Session_Field_Type field_type | |
| 77 | + )= | |
| 78 | + if field_type is | |
| 79 | + { | |
| 80 | + string_t then "string_t", | |
| 81 | + bool_t then "bool_t", | |
| 82 | + int_t then "int_t", | |
| 83 | + db_id_t then "db_id_t", | |
| 84 | + message_t then "message_t", | |
| 85 | + byte_array_t then "byte_array_t", | |
| 86 | + float_t then "float_t", | |
| 87 | + word128_t then "word128_t", | |
| 88 | + word64_t then "word64_t", | |
| 89 | + word32_t then "word32_t", | |
| 90 | + word16_t then "word16_t", | |
| 91 | + word8_t then "word8_t", | |
| 92 | + word4_t then "word4_t", | |
| 93 | + fields_set_t then "fields_set_t", | |
| 94 | + session_t then "session_t" | |
| 95 | + } | |
| 96 | +. | |
| 97 | + | |
| 73 | 98 | public type Session_Field: |
| 74 | 99 | session_field( |
| 75 | 100 | String field_name, | ... | ... |