389{
390#if 0
393 return false;
394 }
395#endif
396 switch(_bufType) {
399 }
402 }
405 }
408 short mdy[3];
409 __DCL_VERIFY(rjulmdy(*(
long*)(__sqlvar->sqldata), mdy) == 0);
410 SQL::Date* p = (SQL::Date*)_buf;
411 p->
month = (uint8_t)mdy[0];
412 p->
day = (uint8_t)mdy[1];
414 break;
415 }
419 (const dtime_t*)(__sqlvar->sqldata),
420 (SQL::Time*)_buf
421 );
422 break;
423 }
427 (const dtime_t*)(__sqlvar->sqldata),
428 (SQL::TimeStamp*)_buf
429 );
430 break;
431 }
435 (const intrvl_t*)(__sqlvar->sqldata),
436 (SQL::Interval*)_buf
437 );
438 break;
439 }
444 if (*_size < __dataSize) {
446 return false;
447 }
448 char* ps = (char*)_buf;
449 if (dectoasc(
450 (dec_t*)(__sqlvar->sqldata),
451 ps,
453 -1
454 )) {
455
456
458 }
459 size_t len = 0;
460 for (; len < *_size; len++) {
461 if (ps[len] == ' ')
462 break;
463 }
464 if (len < *_size) {
465 *_size = len;
466 ps[len] = '\0';
467 }
468 break;
469 }
470 }
472 switch (__sqlvar->sqltype & SQLTYPE) {
473 case SQLLVARCHAR: {
474#if __USE_IFX_VAR
475 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
476 if (nLen < 0) {
478 return false;
479 }
480
481 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
482 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
483 size_t nCopy = *_size;
484 if ((size_t)nLen < nCopy)
485 nCopy = (size_t)nLen;
486
487 memcpy(_buf, pSrc, nCopy);
488 if (nCopy < *_size) {
489 *((char*)_buf + nCopy) = '\0';
490 *_size = nCopy;
491 }
492 }
493 else {
494 *_size = 0;
495 }
496 break;
497#endif
498 }
499 case SQLCHAR:
500 case SQLNCHAR:
501 case SQLVCHAR:
502 case SQLNVCHAR: {
503 if (__sqlvar->sqllen > 0 && *_size > 0) {
504 size_t nCopy = *_size;
505 if ((size_t)(__sqlvar->sqllen) < nCopy)
506 nCopy = (size_t)(__sqlvar->sqllen);
507
508 memcpy(_buf, __sqlvar->sqldata, nCopy);
509
510 if (nCopy < *_size) {
511 *((char*)_buf + nCopy) = '\0';
512 *_size = nCopy;
513 }
514 }
515 else
516 *_size = 0;
517 break;
518 }
519 case SQLTEXT:
520 case SQLBYTES: {
521 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0
522 && *_size > 0) {
523 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
524 size_t nCopy = *_size;
525 if ((size_t)(loc->loc_size) < nCopy)
526 nCopy = (size_t)(loc->loc_size);
527
528 memcpy(_buf, loc->loc_buffer, nCopy);
529 if (nCopy < *_size) {
530 *((char*)_buf + nCopy) = '\0';
531 *_size = nCopy;
532 }
533 }
534 else {
535 *_size = 0;
536 }
537 break;
538 }
539 default: {
541 }
542 }
543 break;
544 }
546 switch (__sqlvar->sqltype & SQLTYPE) {
547 case SQLCHAR:
548 case SQLNCHAR:
549 case SQLVCHAR:
550 case SQLNVCHAR: {
551 if (__sqlvar->sqllen > 0 && *_size > 0) {
552 if ((size_t)(__sqlvar->sqllen) < *_size)
553 *_size = (size_t)(__sqlvar->sqllen);
554
555 try {
556 ((OutputStream*)_buf)->write(
557 __sqlvar->sqldata, *_size);
558 }
559 catch (IOException* e) {
562 return false;
563 }
564 }
565 else {
566 *_size = 0;
567 }
568 break;
569 }
570 case SQLLVARCHAR: {
571 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
572 if (nLen < 0) {
574 return false;
575 }
576
577 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
578 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
579 if ((size_t)nLen < *_size)
580 *_size = (size_t)nLen;
581
582 try {
583 ((OutputStream*)_buf)->write(
584 pSrc, *_size);
585 }
586 catch (IOException* e) {
589 return false;
590 }
591 }
592 else {
593 *_size = 0;
594 }
595 break;
596 }
597 case SQLTEXT:
598 case SQLBYTES: {
599 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0) {
600 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
601
602 if ((size_t)(loc->loc_size) < *_size)
603 *_size = (size_t)(loc->loc_size);
604
605 if (*_size) {
606 try {
607 ((OutputStream*)_buf)->write(
608 loc->loc_buffer, *_size);
609 }
610 catch (IOException* e) {
613 return false;
614 }
615 }
616 }
617 else {
618 *_size = 0;
619 }
620 break;
621 }
622 default: {
624 }
625 }
626 break;
627 }
628 default: {
630 }
631 }
632 return true;
633}
#define __SET_ERROR_MSG(_message)
#define __SET_ERROR_HANDLE(_SQLCODE)
void __decode_dtime(const dtime_t *_s, SQL::TimeStamp *_r)
void __decode_intrvl(const intrvl_t *_s, SQL::Interval *_r)
#define __DCL_VERIFY(expr)
#define __DCL_ASSERT(expr)
#define __SET_ERROR(_errorCode)
String toStringAll() const
bool getInteger(void *_buf, size_t *_size)
bool getFloat(void *_buf, size_t *_size)
bool getUInteger(void *_buf, size_t *_size)