| 1041 | } |
| 1042 | |
| 1043 | blak_int C_SetString(int object_id,local_var_type *local_vars, |
| 1044 | int num_normal_parms,parm_node normal_parm_array[], |
| 1045 | int num_name_parms,parm_node name_parm_array[]) |
| 1046 | { |
| 1047 | val_type s1_val,s2_val; |
| 1048 | string_node *snod,*snod2; |
| 1049 | resource_node *r; |
| 1050 | |
| 1051 | s1_val = RetrieveValue(object_id,local_vars,normal_parm_array[0].type, |
| 1052 | normal_parm_array[0].value); |
| 1053 | |
| 1054 | if (s1_val.v.tag != TAG_STRING) |
| 1055 | { |
| 1056 | bprintf("C_SetString can't set non-string %s\n", fmt(s1_val)); |
| 1057 | return NIL; |
| 1058 | } |
| 1059 | |
| 1060 | snod = GetStringByID(s1_val.v.data); |
| 1061 | if (snod == NULL) |
| 1062 | { |
| 1063 | bprintf("C_SetString can't set invalid string %s\n", fmt(s1_val)); |
| 1064 | return NIL; |
| 1065 | } |
| 1066 | |
| 1067 | s2_val = RetrieveValue(object_id,local_vars,normal_parm_array[1].type, |
| 1068 | normal_parm_array[1].value); |
| 1069 | switch (s2_val.v.tag) |
| 1070 | { |
| 1071 | case TAG_STRING : |
| 1072 | snod2 = GetStringByID( s2_val.v.data); |
| 1073 | if( snod2 == NULL ) |
| 1074 | { |
| 1075 | bprintf( "C_SetString can't find string %s\n", fmt(s2_val)); |
| 1076 | return NIL; |
| 1077 | } |
| 1078 | //bprintf("SetString string%i<--string%i\n",s1_val.v.data,s2_val.v.data); |
| 1079 | SetString(snod,snod2->data,snod2->len_data); |
| 1080 | break; |
| 1081 | |
| 1082 | case TAG_TEMP_STRING : |
| 1083 | snod2 = GetTempString(); |
| 1084 | //bprintf("SetString string%i<--tempstring\n",s1_val.v.data); |
| 1085 | SetString(snod,snod2->data,snod2->len_data); |
| 1086 | break; |
| 1087 | |
| 1088 | case TAG_RESOURCE : |
| 1089 | r = GetResourceByID(s2_val.v.data); |
| 1090 | if (r == NULL) |
| 1091 | { |
| 1092 | bprintf("C_SetString can't set from invalid resource %" PRId64 "\n",s2_val.v.data); |
| 1093 | return NIL; |
| 1094 | } |
| 1095 | //bprintf("SetString string%i<--resource%i\n",s1_val.v.data,s2_val.v.data); |
| 1096 | SetString(snod,r->resource_val,(int) strlen(r->resource_val)); |
| 1097 | break; |
| 1098 | |
| 1099 | default : |
| 1100 | bprintf("C_SetString can't set from non-string thing %s\n", fmt(s2_val)); |
nothing calls this directly
no test coverage detected