Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit10ecc0d

Browse files
author
Michael Meskes
committed
Made code in ecpg better readable.
1 parent54a622c commit10ecc0d

File tree

2 files changed

+67
-65
lines changed

2 files changed

+67
-65
lines changed

‎src/interfaces/ecpg/preproc/ecpg.header

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -224,16 +224,16 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
224224
{
225225
/* Informix accepts DECLARE with variables that are out of scope when OPEN is called.
226226
* For instance you can DECLARE a cursor in one function, and OPEN/FETCH/CLOSE
227-
* it inother functions. This is very useful for e.g. event-driver programming,
227+
* it inanother functions. This is very useful for e.g. event-driver programming,
228228
* but may also lead to dangerous programming. The limitation when this is allowed
229-
* and doesn's cause problems have to be documented, like the allocated variables
229+
* and doesn't cause problems have to be documented, like the allocated variables
230230
* must not be realloc()'ed.
231231
*
232232
* We have to change the variables to our own struct and just store the pointer
233233
* instead of the variable. Do it only for local variables, not for globals.
234234
*/
235235

236-
char *result =mm_strdup("");
236+
char *result =EMPTY;
237237
int insert;
238238

239239
for (insert = 1; insert >= 0; insert--)
@@ -247,13 +247,14 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
247247

248248
for (ptr = list; ptr != NULL; ptr = ptr->next)
249249
{
250-
chartemp[20];
250+
charvar_text[20];
251251
char *original_var;
252252
bool skip_set_var = false;
253+
bool var_ptr = false;
253254

254255
/* change variable name to "ECPGget_var(<counter>)" */
255256
original_var = ptr->variable->name;
256-
sprintf(temp, "%d))", ecpg_internal_var);
257+
sprintf(var_text, "%d))", ecpg_internal_var);
257258

258259
/* Don't emit ECPGset_var() calls for global variables */
259260
if (ptr->variable->brace_level == 0)
@@ -276,13 +277,12 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
276277
newvar = new_variable(cat_str(4, mm_strdup("("),
277278
mm_strdup(ecpg_type_name(ptr->variable->type->u.element->type)),
278279
mm_strdup(" *)(ECPGget_var("),
279-
mm_strdup(temp)),
280+
mm_strdup(var_text)),
280281
ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type,
281282
mm_strdup("1"),
282283
ptr->variable->type->u.element->counter),
283284
ptr->variable->type->size),
284285
0);
285-
sprintf(temp, "%d, (", ecpg_internal_var++);
286286
}
287287
else if ((ptr->variable->type->type == ECPGt_varchar
288288
|| ptr->variable->type->type == ECPGt_char
@@ -293,79 +293,80 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
293293
newvar = new_variable(cat_str(4, mm_strdup("("),
294294
mm_strdup(ecpg_type_name(ptr->variable->type->type)),
295295
mm_strdup(" *)(ECPGget_var("),
296-
mm_strdup(temp)),
296+
mm_strdup(var_text)),
297297
ECPGmake_simple_type(ptr->variable->type->type,
298298
ptr->variable->type->size,
299299
ptr->variable->type->counter),
300300
0);
301301
if (ptr->variable->type->type == ECPGt_varchar)
302-
sprintf(temp, "%d, &(", ecpg_internal_var++);
303-
else
304-
sprintf(temp, "%d, (", ecpg_internal_var++);
302+
var_ptr = true;
305303
}
306304
else if (ptr->variable->type->type == ECPGt_struct
307305
|| ptr->variable->type->type == ECPGt_union)
308306
{
309-
sprintf(temp, "%d)))", ecpg_internal_var);
310-
newvar = new_variable(cat_str(4, mm_strdup("(*("),
307+
newvar = new_variable(cat_str(5, mm_strdup("(*("),
311308
mm_strdup(ptr->variable->type->type_name),
312309
mm_strdup(" *)(ECPGget_var("),
313-
mm_strdup(temp)),
310+
mm_strdup(var_text),
311+
mm_strdup(")")),
314312
ECPGmake_struct_type(ptr->variable->type->u.members,
315313
ptr->variable->type->type,
316314
ptr->variable->type->type_name,
317315
ptr->variable->type->struct_sizeof),
318316
0);
319-
sprintf(temp, "%d, &(", ecpg_internal_var++);
317+
var_ptr = true;
320318
}
321319
else if (ptr->variable->type->type == ECPGt_array)
322320
{
323321
if (ptr->variable->type->u.element->type == ECPGt_struct
324322
|| ptr->variable->type->u.element->type == ECPGt_union)
325323
{
326-
sprintf(temp, "%d)))", ecpg_internal_var);
327-
newvar = new_variable(cat_str(4, mm_strdup("(*("),
328-
mm_strdup(ptr->variable->type->u.element->type_name),
329-
mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)),
324+
newvar = new_variable(cat_str(5, mm_strdup("(*("),
325+
mm_strdup(ptr->variable->type->u.element->type_name),
326+
mm_strdup(" *)(ECPGget_var("),
327+
mm_strdup(var_text),
328+
mm_strdup(")")),
330329
ECPGmake_struct_type(ptr->variable->type->u.element->u.members,
331330
ptr->variable->type->u.element->type,
332331
ptr->variable->type->u.element->type_name,
333332
ptr->variable->type->u.element->struct_sizeof),
334333
0);
335-
sprintf(temp, "%d, (", ecpg_internal_var++);
336334
}
337335
else
338336
{
339337
newvar = new_variable(cat_str(4, mm_strdup("("),
340338
mm_strdup(ecpg_type_name(ptr->variable->type->type)),
341339
mm_strdup(" *)(ECPGget_var("),
342-
mm_strdup(temp)),
340+
mm_strdup(var_text)),
343341
ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type,
344342
ptr->variable->type->u.element->size,
345343
ptr->variable->type->u.element->counter),
346344
ptr->variable->type->size),
347345
0);
348-
sprintf(temp, "%d, &(", ecpg_internal_var++);
346+
var_ptr = true;
349347
}
350348
}
351349
else
352350
{
353351
newvar = new_variable(cat_str(4, mm_strdup("*("),
354352
mm_strdup(ecpg_type_name(ptr->variable->type->type)),
355353
mm_strdup(" *)(ECPGget_var("),
356-
mm_strdup(temp)),
354+
mm_strdup(var_text)),
357355
ECPGmake_simple_type(ptr->variable->type->type,
358356
ptr->variable->type->size,
359357
ptr->variable->type->counter),
360358
0);
361-
sprintf(temp, "%d, &(", ecpg_internal_var++);
359+
var_ptr = true;
362360
}
363361

364-
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
362+
/* create call to "ECPGset_var(<counter>, <connection>, <pointer>. <line number>)" */
365363
if (!skip_set_var)
364+
{
365+
sprintf(var_text, "%d, %s", ecpg_internal_var++, var_ptr ? "&(" : "(");
366366
result = cat_str(5, result, mm_strdup("ECPGset_var("),
367-
mm_strdup(temp), mm_strdup(original_var),
367+
mm_strdup(var_text), mm_strdup(original_var),
368368
mm_strdup("), __LINE__);\n"));
369+
}
369370

370371
/* now the indicator if there is one and it's not a global variable */
371372
if ((ptr->indicator->type->type == ECPGt_NO_INDICATOR) || (ptr->indicator->brace_level == 0))
@@ -376,80 +377,81 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
376377
{
377378
/* change variable name to "ECPGget_var(<counter>)" */
378379
original_var = ptr->indicator->name;
379-
sprintf(temp, "%d))", ecpg_internal_var);
380+
sprintf(var_text, "%d))", ecpg_internal_var);
381+
var_ptr = false;
380382

381383
if (ptr->indicator->type->type == ECPGt_struct
382384
|| ptr->indicator->type->type == ECPGt_union)
383385
{
384-
sprintf(temp, "%d)))", ecpg_internal_var);
385-
newind = new_variable(cat_str(4,mm_strdup("(*("),
386-
mm_strdup(ptr->indicator->type->type_name),
387-
mm_strdup(" *)(ECPGget_var("),
388-
mm_strdup(temp)),
386+
newind = new_variable(cat_str(5, mm_strdup("(*("),
387+
mm_strdup(ptr->indicator->type->type_name),
388+
mm_strdup(" *)(ECPGget_var("),
389+
mm_strdup(var_text),
390+
mm_strdup(")")),
389391
ECPGmake_struct_type(ptr->indicator->type->u.members,
390392
ptr->indicator->type->type,
391393
ptr->indicator->type->type_name,
392394
ptr->indicator->type->struct_sizeof),
393395
0);
394-
sprintf(temp, "%d, &(", ecpg_internal_var++);
396+
var_ptr = true;
395397
}
396398
else if (ptr->indicator->type->type == ECPGt_array)
397399
{
398400
if (ptr->indicator->type->u.element->type == ECPGt_struct
399401
|| ptr->indicator->type->u.element->type == ECPGt_union)
400402
{
401-
sprintf(temp, "%d)))", ecpg_internal_var);
402-
newind = new_variable(cat_str(4, mm_strdup("(*("),
403-
mm_strdup(ptr->indicator->type->u.element->type_name),
404-
mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)),
403+
newind = new_variable(cat_str(5, mm_strdup("(*("),
404+
mm_strdup(ptr->indicator->type->u.element->type_name),
405+
mm_strdup(" *)(ECPGget_var("),
406+
mm_strdup(var_text),
407+
mm_strdup(")")),
405408
ECPGmake_struct_type(ptr->indicator->type->u.element->u.members,
406409
ptr->indicator->type->u.element->type,
407410
ptr->indicator->type->u.element->type_name,
408411
ptr->indicator->type->u.element->struct_sizeof),
409412
0);
410-
sprintf(temp, "%d, (", ecpg_internal_var++);
411413
}
412414
else
413415
{
414416
newind = new_variable(cat_str(4, mm_strdup("("),
415417
mm_strdup(ecpg_type_name(ptr->indicator->type->u.element->type)),
416-
mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)),
418+
mm_strdup(" *)(ECPGget_var("), mm_strdup(var_text)),
417419
ECPGmake_array_type(ECPGmake_simple_type(ptr->indicator->type->u.element->type,
418420
ptr->indicator->type->u.element->size,
419421
ptr->indicator->type->u.element->counter),
420422
ptr->indicator->type->size),
421423
0);
422-
sprintf(temp, "%d, &(", ecpg_internal_var++);
424+
var_ptr = true;
423425
}
424426
}
425427
else if (atoi(ptr->indicator->type->size) > 1)
426428
{
427429
newind = new_variable(cat_str(4, mm_strdup("("),
428430
mm_strdup(ecpg_type_name(ptr->indicator->type->type)),
429431
mm_strdup(" *)(ECPGget_var("),
430-
mm_strdup(temp)),
432+
mm_strdup(var_text)),
431433
ECPGmake_simple_type(ptr->indicator->type->type,
432434
ptr->indicator->type->size,
433435
ptr->variable->type->counter),
434436
0);
435-
sprintf(temp, "%d, (", ecpg_internal_var++);
436437
}
437438
else
438439
{
439440
newind = new_variable(cat_str(4, mm_strdup("*("),
440441
mm_strdup(ecpg_type_name(ptr->indicator->type->type)),
441442
mm_strdup(" *)(ECPGget_var("),
442-
mm_strdup(temp)),
443+
mm_strdup(var_text)),
443444
ECPGmake_simple_type(ptr->indicator->type->type,
444445
ptr->indicator->type->size,
445446
ptr->variable->type->counter),
446447
0);
447-
sprintf(temp, "%d, &(", ecpg_internal_var++);
448+
var_ptr = true;
448449
}
449450

450451
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
452+
sprintf(var_text, "%d, %s", ecpg_internal_var++, var_ptr ? "&(" : "(");
451453
result = cat_str(5, result, mm_strdup("ECPGset_var("),
452-
mm_strdup(temp), mm_strdup(original_var),
454+
mm_strdup(var_text), mm_strdup(original_var),
453455
mm_strdup("), __LINE__);\n"));
454456
}
455457

‎src/interfaces/ecpg/test/expected/preproc-outofscope.c

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -202,16 +202,16 @@ static void
202202
open_cur1(void)
203203
{
204204
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"declare mycur cursor for select * from a1",ECPGt_EOIT,
205-
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
206-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
207-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
208-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
209-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
210-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
211-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
212-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
213-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
214-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
205+
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
206+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
207+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
208+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
209+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
210+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
211+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
212+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
213+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
214+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
215215
#line 40 "outofscope.pgc"
216216

217217
if (sqlca.sqlcode<0)exit (1);}
@@ -226,16 +226,16 @@ static void
226226
get_record1(void)
227227
{
228228
{ECPGdo(__LINE__,0,1,NULL,0,ECPGst_normal,"fetch mycur",ECPGt_EOIT,
229-
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
230-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
231-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
232-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
233-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
234-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
235-
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
236-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
237-
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
238-
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
229+
ECPGt_int,&((*(MYTYPE*)(ECPGget_var(0))).id),(long)1,(long)1,sizeof(int),
230+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).id),(long)1,(long)1,sizeof(int),
231+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).t),(long)64,(long)1,(64)*sizeof(char),
232+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).t),(long)1,(long)1,sizeof(int),
233+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d1),(long)1,(long)1,sizeof(double),
234+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d1),(long)1,(long)1,sizeof(int),
235+
ECPGt_double,&((*(MYTYPE*)(ECPGget_var(0))).d2),(long)1,(long)1,sizeof(double),
236+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).d2),(long)1,(long)1,sizeof(int),
237+
ECPGt_char,&((*(MYTYPE*)(ECPGget_var(0))).c),(long)30,(long)1,(30)*sizeof(char),
238+
ECPGt_int,&((*(MYNULLTYPE*)(ECPGget_var(1))).c),(long)1,(long)1,sizeof(int),ECPGt_EORT);
239239
#line 49 "outofscope.pgc"
240240

241241
if (sqlca.sqlcode<0)exit (1);}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp