MCPcopy Create free account
hub / github.com/Meridian59/Meridian59 / C_SetString

Function C_SetString

blakserv/ccode.c:1043–1105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1041}
1042
1043blak_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));

Callers

nothing calls this directly

Calls 6

RetrieveValueFunction · 0.85
bprintfFunction · 0.85
GetStringByIDFunction · 0.85
SetStringFunction · 0.85
GetTempStringFunction · 0.85
GetResourceByIDFunction · 0.85

Tested by

no test coverage detected