| 924 | } |
| 925 | |
| 926 | cs_error_t icmap_adjust_int_r( |
| 927 | const icmap_map_t map, |
| 928 | const char *key_name, |
| 929 | int32_t step) |
| 930 | { |
| 931 | struct icmap_item *item; |
| 932 | uint8_t u8; |
| 933 | uint16_t u16; |
| 934 | uint32_t u32; |
| 935 | uint64_t u64; |
| 936 | cs_error_t err = CS_OK; |
| 937 | |
| 938 | if (key_name == NULL) { |
| 939 | return (CS_ERR_INVALID_PARAM); |
| 940 | } |
| 941 | |
| 942 | item = qb_map_get(map->qb_map, key_name); |
| 943 | if (item == NULL) { |
| 944 | return (CS_ERR_NOT_EXIST); |
| 945 | } |
| 946 | |
| 947 | switch (item->type) { |
| 948 | case ICMAP_VALUETYPE_INT8: |
| 949 | case ICMAP_VALUETYPE_UINT8: |
| 950 | memcpy(&u8, item->value, sizeof(u8)); |
| 951 | u8 += step; |
| 952 | err = icmap_set(key_name, &u8, sizeof(u8), item->type); |
| 953 | break; |
| 954 | case ICMAP_VALUETYPE_INT16: |
| 955 | case ICMAP_VALUETYPE_UINT16: |
| 956 | memcpy(&u16, item->value, sizeof(u16)); |
| 957 | u16 += step; |
| 958 | err = icmap_set(key_name, &u16, sizeof(u16), item->type); |
| 959 | break; |
| 960 | case ICMAP_VALUETYPE_INT32: |
| 961 | case ICMAP_VALUETYPE_UINT32: |
| 962 | memcpy(&u32, item->value, sizeof(u32)); |
| 963 | u32 += step; |
| 964 | err = icmap_set(key_name, &u32, sizeof(u32), item->type); |
| 965 | break; |
| 966 | case ICMAP_VALUETYPE_INT64: |
| 967 | case ICMAP_VALUETYPE_UINT64: |
| 968 | memcpy(&u64, item->value, sizeof(u64)); |
| 969 | u64 += step; |
| 970 | err = icmap_set(key_name, &u64, sizeof(u64), item->type); |
| 971 | break; |
| 972 | case ICMAP_VALUETYPE_FLOAT: |
| 973 | case ICMAP_VALUETYPE_DOUBLE: |
| 974 | case ICMAP_VALUETYPE_STRING: |
| 975 | case ICMAP_VALUETYPE_BINARY: |
| 976 | err = CS_ERR_INVALID_PARAM; |
| 977 | break; |
| 978 | } |
| 979 | |
| 980 | return (err); |
| 981 | } |
| 982 | |
| 983 | cs_error_t icmap_adjust_int( |
no test coverage detected