MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / gen_get_or_put_slice

Function gen_get_or_put_slice

src/gpre/c_cxx.cpp:2396–2437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2394//
2395
2396static void gen_get_or_put_slice(const act* action, const ref* reference, bool get, int column)
2397{
2398 const TEXT* pattern1 =
2399 "isc_get_slice (%V1, &%DH, &%RT, &%S2, (short) %N1, (char*) %S3, 0, (%S6*) 0, (%S6) %L1, %S5, &isc_array_length);";
2400 const TEXT* pattern2 =
2401 "isc_put_slice (%V1, &%DH, &%RT, &%S2, (short) %N1, (char*) %S3, 0, (%S6*) 0, (%S6) %L1, (void*) %S5);";
2402
2403 if (!(reference->ref_flags & REF_fetch_array))
2404 return;
2405
2406 TEXT s1[MAX_REF_SIZE], s2[MAX_REF_SIZE];
2407 PAT args;
2408 args.pat_request = action->act_request;
2409 args.pat_condition = get; // get or put slice
2410 args.pat_vector1 = status_vector(action); // status vector
2411 args.pat_database = action->act_request->req_database; // database handle
2412 gen_name(s1, reference, true); // blob handle
2413 args.pat_string2 = s1;
2414 args.pat_value1 = reference->ref_sdl_length; // slice description length
2415 sprintf(s2, "isc_%d", reference->ref_sdl_ident); // slice description
2416 args.pat_string3 = s2;
2417
2418 args.pat_long1 = reference->ref_field->fld_array_info->ary_size;
2419 // slice size
2420
2421 TEXT s4[MAX_REF_SIZE];
2422 if (action->act_flags & ACT_sql)
2423 args.pat_string5 = reference->ref_value;
2424 else
2425 {
2426 sprintf(s4, "isc_%d", reference->ref_field->fld_array_info->ary_ident);
2427 args.pat_string5 = s4; // array name
2428 }
2429
2430 args.pat_string6 = DCL_LONG;
2431
2432 PATTERN_expand((USHORT) column, get ? pattern1 : pattern2, &args);
2433
2434 set_sqlcode(action, column);
2435 if (action->act_flags & ACT_sql)
2436 gen_whenever(action->act_whenever, column);
2437}
2438
2439
2440//____________________________________________________________

Callers 6

asgn_fromFunction · 0.70
asgn_toFunction · 0.70
gen_emodifyFunction · 0.70
gen_forFunction · 0.70
gen_functionFunction · 0.70
gen_startFunction · 0.70

Calls 5

PATTERN_expandFunction · 0.85
status_vectorFunction · 0.70
gen_nameFunction · 0.70
set_sqlcodeFunction · 0.70
gen_wheneverFunction · 0.70

Tested by

no test coverage detected