00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "fennel/common/CommonPreamble.h"
00024 #include "fennel/calculator/SqlString.h"
00025 #include "fennel/calculator/ExtendedInstructionTable.h"
00026
00027 FENNEL_BEGIN_NAMESPACE
00028
00029
00030 void
00031 strCatA2(
00032 RegisterRef<char*>* result,
00033 RegisterRef<char*>* str1)
00034 {
00035 assert(StandardTypeDescriptor::isTextArray(str1->type()));
00036
00037
00038 if (result->isNull() || str1->isNull()) {
00039 result->toNull();
00040 result->length(0);
00041 } else {
00042 result->length(
00043 SqlStrCat(
00044 result->pointer(),
00045 result->storage(),
00046 result->length(),
00047 str1->pointer(),
00048 str1->stringLength()));
00049 }
00050 }
00051
00052 void
00053 strCatA3(
00054 RegisterRef<char*>* result,
00055 RegisterRef<char*>* str1,
00056 RegisterRef<char*>* str2)
00057 {
00058 assert(StandardTypeDescriptor::isTextArray(str1->type()));
00059
00060
00061 if (result->isNull() || str1->isNull() || str2->isNull()) {
00062 result->toNull();
00063 result->length(0);
00064 } else {
00065 result->length(
00066 SqlStrCat(
00067 result->pointer(),
00068 result->storage(),
00069 str1->pointer(),
00070 str1->stringLength(),
00071 str2->pointer(),
00072 str2->stringLength()));
00073 }
00074 }
00075
00076 void
00077 strCmpA(
00078 RegisterRef<int32_t>* result,
00079 RegisterRef<char*>* str1,
00080 RegisterRef<char*>* str2)
00081 {
00082 assert(StandardTypeDescriptor::isTextArray(str1->type()));
00083
00084 if (str1->isNull() || str2->isNull()) {
00085 result->toNull();
00086 } else {
00087 result->value(
00088 SqlStrCmp<1,1>(
00089 str1->pointer(), str1->stringLength(),
00090 str2->pointer(), str2->stringLength()));
00091 }
00092 }
00093
00094 void
00095 strCmpOct(
00096 RegisterRef<int32_t>* result,
00097 RegisterRef<char*>* str1,
00098 RegisterRef<char*>* str2)
00099 {
00100 assert(StandardTypeDescriptor::isBinaryArray(str1->type()));
00101
00102 if (str1->isNull() || str2->isNull()) {
00103 result->toNull();
00104 } else {
00105 result->value(
00106 SqlStrCmp_Bin(
00107 str1->pointer(), str1->stringLength(),
00108 str2->pointer(), str2->stringLength()));
00109 }
00110 }
00111
00112 void
00113 strCpyA(
00114 RegisterRef<char*>* result,
00115 RegisterRef<char*>* str)
00116 {
00117 assert(result->type() == str->type());
00118 assert(StandardTypeDescriptor::isTextArray(str->type()));
00119
00120
00121 if (result->isNull() || str->isNull()) {
00122 result->toNull();
00123 result->length(0);
00124 } else {
00125 if (str->type() == STANDARD_TYPE_CHAR) {
00126 result->length(
00127 SqlStrCpy_Fix<1,1>(
00128 result->pointer(),
00129 result->storage(),
00130 str->pointer(),
00131 str->stringLength()));
00132 } else {
00133 result->length(
00134 SqlStrCpy_Var(
00135 result->pointer(),
00136 result->storage(),
00137 str->pointer(),
00138 str->stringLength()));
00139 }
00140 }
00141 }
00142
00143
00144 void
00145 strLenBitA(
00146 RegisterRef<int32_t>* result,
00147 RegisterRef<char*>* str)
00148 {
00149 assert(StandardTypeDescriptor::isTextArray(str->type()));
00150
00151 if (str->isNull()) {
00152 result->toNull();
00153 } else {
00154 result->value(SqlStrLenBit(str->stringLength()));
00155 }
00156 }
00157
00158 void
00159 strLenCharA(
00160 RegisterRef<int32_t>* result,
00161 RegisterRef<char*>* str)
00162 {
00163 assert(StandardTypeDescriptor::isTextArray(str->type()));
00164
00165 if (str->isNull()) {
00166 result->toNull();
00167 } else {
00168 result->value(
00169 SqlStrLenChar<1,1>(
00170 str->pointer(),
00171 str->stringLength()));
00172 }
00173 }
00174
00175 void
00176 strLenOctA(
00177 RegisterRef<int32_t>* result,
00178 RegisterRef<char*>* str)
00179 {
00180 assert(StandardTypeDescriptor::isTextArray(str->type()));
00181
00182 if (str->isNull()) {
00183 result->toNull();
00184 } else {
00185 result->value(SqlStrLenOct(str->stringLength()));
00186 }
00187 }
00188
00189 void
00190 strOverlayA4(
00191 RegisterRef<char*>* result,
00192 RegisterRef<char*>* str,
00193 RegisterRef<char*>* overlay,
00194 RegisterRef<int32_t>* start)
00195 {
00196 assert(result->type() == STANDARD_TYPE_VARCHAR);
00197 assert(str->type() == overlay->type());
00198 assert(StandardTypeDescriptor::isTextArray(str->type()));
00199
00200
00201 if (result->isNull() || str->isNull() ||
00202 overlay->isNull() || start->isNull()) {
00203 result->toNull();
00204 result->length(0);
00205 } else {
00206 result->length(
00207 SqlStrOverlay<1,1>(
00208 result->pointer(),
00209 result->storage(),
00210 str->pointer(),
00211 str->stringLength(),
00212 overlay->pointer(),
00213 overlay->stringLength(),
00214 start->value(),
00215 0,
00216 false));
00217 }
00218 }
00219
00220 void
00221 strOverlayA5(
00222 RegisterRef<char*>* result,
00223 RegisterRef<char*>* str,
00224 RegisterRef<char*>* overlay,
00225 RegisterRef<int32_t>* start,
00226 RegisterRef<int32_t>* len)
00227 {
00228 assert(result->type() == STANDARD_TYPE_VARCHAR);
00229 assert(str->type() == overlay->type());
00230 assert(StandardTypeDescriptor::isTextArray(str->type()));
00231
00232
00233 if (result->isNull() || str->isNull() ||
00234 overlay->isNull() || start->isNull() || len->isNull()) {
00235 result->toNull();
00236 result->length(0);
00237 } else {
00238 result->length(
00239 SqlStrOverlay<1,1>(
00240 result->pointer(),
00241 result->storage(),
00242 str->pointer(),
00243 str->stringLength(),
00244 overlay->pointer(),
00245 overlay->stringLength(),
00246 start->value(),
00247 len->value(),
00248 true));
00249 }
00250 }
00251
00252 void
00253 strPosA(
00254 RegisterRef<int32_t>* result,
00255 RegisterRef<char*>* find,
00256 RegisterRef<char*>* str)
00257 {
00258 assert(str->type() == find->type());
00259 assert(StandardTypeDescriptor::isTextArray(str->type()));
00260
00261 if (str->isNull() || find->isNull()) {
00262 result->toNull();
00263 } else {
00264 result->value(
00265 SqlStrPos<1,1>(
00266 str->pointer(),
00267 str->stringLength(),
00268 find->pointer(),
00269 find->stringLength()));
00270 }
00271 }
00272
00273 void
00274 strSubStringA3(
00275 RegisterRef<char*>* result,
00276 RegisterRef<char*>* str,
00277 RegisterRef<int32_t>* start)
00278 {
00279 assert(result->type() == STANDARD_TYPE_VARCHAR);
00280 assert(StandardTypeDescriptor::isTextArray(str->type()));
00281
00282
00283 if (result->isNull() || str->isNull() || start->isNull()) {
00284 result->toNull();
00285 result->length(0);
00286 } else {
00287
00288 char * ptr = result->pointer();
00289
00290 int32_t newLen = SqlStrSubStr<1,1>(
00291 const_cast<char const **>(&ptr),
00292 result->storage(),
00293 str->pointer(),
00294 str->stringLength(),
00295 start->value(),
00296 0,
00297 false);
00298 result->pointer(ptr, newLen);
00299 }
00300 }
00301
00302 void
00303 strSubStringA4(
00304 RegisterRef<char*>* result,
00305 RegisterRef<char*>* str,
00306 RegisterRef<int32_t>* start,
00307 RegisterRef<int32_t>* len)
00308 {
00309 assert(result->type() == STANDARD_TYPE_VARCHAR);
00310 assert(StandardTypeDescriptor::isTextArray(str->type()));
00311
00312
00313 if (result->isNull() || str->isNull() ||
00314 start->isNull() || len->isNull()) {
00315 result->toNull();
00316 result->length(0);
00317 } else {
00318
00319 char * ptr = result->pointer();
00320
00321 int32_t newLen = SqlStrSubStr<1,1>(
00322 const_cast<char const **>(&ptr),
00323 result->storage(),
00324 str->pointer(),
00325 str->stringLength(),
00326 start->value(),
00327 len->value(),
00328 true);
00329 result->pointer(ptr, newLen);
00330 }
00331 }
00332
00333 void
00334 strToLowerA(
00335 RegisterRef<char*>* result,
00336 RegisterRef<char*>* str)
00337 {
00338 assert(StandardTypeDescriptor::isTextArray(str->type()));
00339 assert(str->type() == result->type());
00340
00341
00342 if (result->isNull() || str->isNull()) {
00343 result->toNull();
00344 result->length(0);
00345 } else {
00346
00347 assert(
00348 str->type() == STANDARD_TYPE_CHAR
00349 ? (result->storage() == str->storage())
00350 : true);
00351 result->length(
00352 SqlStrAlterCase<1,1,AlterCaseLower>(
00353 result->pointer(),
00354 result->storage(),
00355 str->pointer(),
00356 str->stringLength()));
00357 }
00358 }
00359
00360 void
00361 strToUpperA(
00362 RegisterRef<char*>* result,
00363 RegisterRef<char*>* str)
00364 {
00365 assert(StandardTypeDescriptor::isTextArray(str->type()));
00366 assert(str->type() == result->type());
00367
00368
00369 if (result->isNull() || str->isNull()) {
00370 result->toNull();
00371 result->length(0);
00372 } else {
00373 assert(
00374 str->type() == STANDARD_TYPE_CHAR
00375 ? (result->storage() == str->storage())
00376 : true);
00377
00378 result->length(
00379 SqlStrAlterCase<1,1,AlterCaseUpper>(
00380 result->pointer(),
00381 result->storage(),
00382 str->pointer(),
00383 str->stringLength()));
00384 }
00385 }
00386
00387
00388 void
00389 strTrimA(
00390 RegisterRef<char*>* result,
00391 RegisterRef<char*>* str,
00392 RegisterRef<char*>* trimchar,
00393 RegisterRef<int32_t>* trimLeft,
00394 RegisterRef<int32_t>* trimRight)
00395 {
00396 assert(StandardTypeDescriptor::isTextArray(str->type()));
00397 assert(result->type() == STANDARD_TYPE_VARCHAR);
00398 assert(StandardTypeDescriptor::isTextArray(trimchar->type()));
00399
00400
00401 if (result->isNull() || str->isNull() || trimchar->isNull() ||
00402 trimLeft->isNull() || trimRight->isNull()) {
00403 result->toNull();
00404 result->length(0);
00405 } else {
00406
00407 char * ptr = result->pointer();
00408
00409 if (trimchar->stringLength() != 1) {
00410
00411
00412 throw "22027";
00413 }
00414
00415 char tc = *(trimchar->pointer());
00416
00417
00418
00419
00420 int32_t newLen = SqlStrTrim<1,1>(
00421 const_cast<char const **>(&ptr),
00422 str->pointer(),
00423 str->stringLength(),
00424 trimLeft->value(),
00425 trimRight->value(),
00426 tc);
00427 result->pointer(ptr, newLen);
00428 }
00429 }
00430
00431
00432 void
00433 ExtStringRegister(ExtendedInstructionTable* eit)
00434 {
00435 assert(eit != NULL);
00436
00437 vector<StandardTypeDescriptorOrdinal> params_2F;
00438 params_2F.push_back(STANDARD_TYPE_CHAR);
00439 params_2F.push_back(STANDARD_TYPE_CHAR);
00440
00441 vector<StandardTypeDescriptorOrdinal> params_2V;
00442 params_2V.push_back(STANDARD_TYPE_VARCHAR);
00443 params_2V.push_back(STANDARD_TYPE_VARCHAR);
00444
00445 eit->add(
00446 "strCatA2", params_2F,
00447 (ExtendedInstruction2<char*, char*>*) NULL,
00448 &strCatA2);
00449 eit->add(
00450 "strCatA2", params_2V,
00451 (ExtendedInstruction2<char*, char*>*) NULL,
00452 &strCatA2);
00453
00454
00455 vector<StandardTypeDescriptorOrdinal> params_3F;
00456 params_3F.push_back(STANDARD_TYPE_CHAR);
00457 params_3F.push_back(STANDARD_TYPE_CHAR);
00458 params_3F.push_back(STANDARD_TYPE_CHAR);
00459
00460 vector<StandardTypeDescriptorOrdinal> params_3V;
00461 params_3V.push_back(STANDARD_TYPE_VARCHAR);
00462 params_3V.push_back(STANDARD_TYPE_VARCHAR);
00463 params_3V.push_back(STANDARD_TYPE_VARCHAR);
00464
00465 eit->add(
00466 "strCatA3", params_3F,
00467 (ExtendedInstruction3<char*, char*, char*>*) NULL,
00468 &strCatA3);
00469
00470 eit->add(
00471 "strCatA3", params_3V,
00472 (ExtendedInstruction3<char*, char*, char*>*) NULL,
00473 &strCatA3);
00474
00475 vector<StandardTypeDescriptorOrdinal> params_1N_2F;
00476 params_1N_2F.push_back(STANDARD_TYPE_INT_32);
00477 params_1N_2F.push_back(STANDARD_TYPE_CHAR);
00478 params_1N_2F.push_back(STANDARD_TYPE_CHAR);
00479
00480 vector<StandardTypeDescriptorOrdinal> params_1N_2V;
00481 params_1N_2V.push_back(STANDARD_TYPE_INT_32);
00482 params_1N_2V.push_back(STANDARD_TYPE_VARCHAR);
00483 params_1N_2V.push_back(STANDARD_TYPE_VARCHAR);
00484
00485 vector<StandardTypeDescriptorOrdinal> params_1N_1F_1V;
00486 params_1N_1F_1V.push_back(STANDARD_TYPE_INT_32);
00487 params_1N_1F_1V.push_back(STANDARD_TYPE_CHAR);
00488 params_1N_1F_1V.push_back(STANDARD_TYPE_VARCHAR);
00489
00490 vector<StandardTypeDescriptorOrdinal> params_1N_1V_1F;
00491 params_1N_1V_1F.push_back(STANDARD_TYPE_INT_32);
00492 params_1N_1V_1F.push_back(STANDARD_TYPE_VARCHAR);
00493 params_1N_1V_1F.push_back(STANDARD_TYPE_CHAR);
00494
00495 eit->add(
00496 "strCmpA", params_1N_2F,
00497 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00498 &strCmpA);
00499
00500 eit->add(
00501 "strCmpA", params_1N_2V,
00502 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00503 &strCmpA);
00504
00505 eit->add(
00506 "strCmpA", params_1N_1F_1V,
00507 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00508 &strCmpA);
00509
00510 eit->add(
00511 "strCmpA", params_1N_1V_1F,
00512 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00513 &strCmpA);
00514
00515 eit->add(
00516 "strCpyA", params_2V,
00517 (ExtendedInstruction2<char*, char*>*) NULL,
00518 &strCpyA);
00519
00520 eit->add(
00521 "strCpyA", params_2F,
00522 (ExtendedInstruction2<char*, char*>*) NULL,
00523 &strCpyA);
00524
00525 vector<StandardTypeDescriptorOrdinal> params_1N_2B;
00526 params_1N_2B.push_back(STANDARD_TYPE_INT_32);
00527 params_1N_2B.push_back(STANDARD_TYPE_BINARY);
00528 params_1N_2B.push_back(STANDARD_TYPE_BINARY);
00529
00530 vector<StandardTypeDescriptorOrdinal> params_1N_2VB;
00531 params_1N_2VB.push_back(STANDARD_TYPE_INT_32);
00532 params_1N_2VB.push_back(STANDARD_TYPE_VARBINARY);
00533 params_1N_2VB.push_back(STANDARD_TYPE_VARBINARY);
00534
00535 vector<StandardTypeDescriptorOrdinal> params_1N_1B_1VB;
00536 params_1N_1B_1VB.push_back(STANDARD_TYPE_INT_32);
00537 params_1N_1B_1VB.push_back(STANDARD_TYPE_BINARY);
00538 params_1N_1B_1VB.push_back(STANDARD_TYPE_VARBINARY);
00539
00540 vector<StandardTypeDescriptorOrdinal> params_1N_1VB_1B;
00541 params_1N_1VB_1B.push_back(STANDARD_TYPE_INT_32);
00542 params_1N_1VB_1B.push_back(STANDARD_TYPE_VARBINARY);
00543 params_1N_1VB_1B.push_back(STANDARD_TYPE_BINARY);
00544
00545 eit->add(
00546 "strCmpOct", params_1N_2B,
00547 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00548 &strCmpOct);
00549
00550 eit->add(
00551 "strCmpOct", params_1N_2VB,
00552 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00553 &strCmpOct);
00554
00555 eit->add(
00556 "strCmpOct", params_1N_1B_1VB,
00557 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00558 &strCmpOct);
00559
00560 eit->add(
00561 "strCmpOct", params_1N_1VB_1B,
00562 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00563 &strCmpOct);
00564
00565 vector<StandardTypeDescriptorOrdinal> params_1N_1F;
00566 params_1N_1F.push_back(STANDARD_TYPE_INT_32);
00567 params_1N_1F.push_back(STANDARD_TYPE_CHAR);
00568
00569 vector<StandardTypeDescriptorOrdinal> params_1N_1V;
00570 params_1N_1V.push_back(STANDARD_TYPE_INT_32);
00571 params_1N_1V.push_back(STANDARD_TYPE_VARCHAR);
00572
00573 eit->add(
00574 "strLenBitA", params_1N_1F,
00575 (ExtendedInstruction2<int32_t, char*>*) NULL,
00576 &strLenBitA);
00577 eit->add(
00578 "strLenBitA", params_1N_1V,
00579 (ExtendedInstruction2<int32_t, char*>*) NULL,
00580 &strLenBitA);
00581
00582 eit->add(
00583 "strLenCharA", params_1N_1F,
00584 (ExtendedInstruction2<int32_t, char*>*) NULL,
00585 &strLenCharA);
00586 eit->add(
00587 "strLenCharA", params_1N_1V,
00588 (ExtendedInstruction2<int32_t, char*>*) NULL,
00589 &strLenCharA);
00590
00591 eit->add(
00592 "strLenOctA", params_1N_1F,
00593 (ExtendedInstruction2<int32_t, char*>*) NULL,
00594 &strLenOctA);
00595 eit->add(
00596 "strLenOctA", params_1N_1V,
00597 (ExtendedInstruction2<int32_t, char*>*) NULL,
00598 &strLenOctA);
00599
00600 vector<StandardTypeDescriptorOrdinal> params_1V_2F_2I;
00601 params_1V_2F_2I.push_back(STANDARD_TYPE_VARCHAR);
00602 params_1V_2F_2I.push_back(STANDARD_TYPE_CHAR);
00603 params_1V_2F_2I.push_back(STANDARD_TYPE_CHAR);
00604 params_1V_2F_2I.push_back(STANDARD_TYPE_INT_32);
00605 params_1V_2F_2I.push_back(STANDARD_TYPE_INT_32);
00606
00607 vector<StandardTypeDescriptorOrdinal> params_3V_2I;
00608 params_3V_2I.push_back(STANDARD_TYPE_VARCHAR);
00609 params_3V_2I.push_back(STANDARD_TYPE_VARCHAR);
00610 params_3V_2I.push_back(STANDARD_TYPE_VARCHAR);
00611 params_3V_2I.push_back(STANDARD_TYPE_INT_32);
00612 params_3V_2I.push_back(STANDARD_TYPE_INT_32);
00613
00614 eit->add(
00615 "strOverlayA5", params_1V_2F_2I,
00616 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00617 &strOverlayA5);
00618
00619 eit->add(
00620 "strOverlayA5", params_3V_2I,
00621 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00622 &strOverlayA5);
00623
00624 vector<StandardTypeDescriptorOrdinal> params_1V_2F_1I;
00625 params_1V_2F_1I.push_back(STANDARD_TYPE_VARCHAR);
00626 params_1V_2F_1I.push_back(STANDARD_TYPE_CHAR);
00627 params_1V_2F_1I.push_back(STANDARD_TYPE_CHAR);
00628 params_1V_2F_1I.push_back(STANDARD_TYPE_INT_32);
00629
00630 vector<StandardTypeDescriptorOrdinal> params_3V_1I;
00631 params_3V_1I.push_back(STANDARD_TYPE_VARCHAR);
00632 params_3V_1I.push_back(STANDARD_TYPE_VARCHAR);
00633 params_3V_1I.push_back(STANDARD_TYPE_VARCHAR);
00634 params_3V_1I.push_back(STANDARD_TYPE_INT_32);
00635
00636 eit->add(
00637 "strOverlayA4", params_1V_2F_1I,
00638 (ExtendedInstruction4<char*, char*, char*, int32_t>*) NULL,
00639 &strOverlayA4);
00640
00641 eit->add(
00642 "strOverlayA4", params_3V_1I,
00643 (ExtendedInstruction4<char*, char*, char*, int32_t>*) NULL,
00644 &strOverlayA4);
00645
00646
00647 eit->add(
00648 "strPosA", params_1N_2F,
00649 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00650 &strPosA);
00651
00652 eit->add(
00653 "strPosA", params_1N_2V,
00654 (ExtendedInstruction3<int32_t, char*, char*>*) NULL,
00655 &strPosA);
00656
00657 vector<StandardTypeDescriptorOrdinal> params_1V_1F_1N;
00658 params_1V_1F_1N.push_back(STANDARD_TYPE_VARCHAR);
00659 params_1V_1F_1N.push_back(STANDARD_TYPE_CHAR);
00660 params_1V_1F_1N.push_back(STANDARD_TYPE_INT_32);
00661
00662 vector<StandardTypeDescriptorOrdinal> params_2V_1N;
00663 params_2V_1N.push_back(STANDARD_TYPE_VARCHAR);
00664 params_2V_1N.push_back(STANDARD_TYPE_VARCHAR);
00665 params_2V_1N.push_back(STANDARD_TYPE_INT_32);
00666
00667 eit->add(
00668 "strSubStringA3", params_1V_1F_1N,
00669 (ExtendedInstruction3<char*, char*, int32_t>*) NULL,
00670 &strSubStringA3);
00671
00672 eit->add(
00673 "strSubStringA3", params_2V_1N,
00674 (ExtendedInstruction3<char*, char*, int32_t>*) NULL,
00675 &strSubStringA3);
00676
00677 vector<StandardTypeDescriptorOrdinal> params_1V_1F_2N;
00678 params_1V_1F_2N.push_back(STANDARD_TYPE_VARCHAR);
00679 params_1V_1F_2N.push_back(STANDARD_TYPE_CHAR);
00680 params_1V_1F_2N.push_back(STANDARD_TYPE_INT_32);
00681 params_1V_1F_2N.push_back(STANDARD_TYPE_INT_32);
00682
00683 vector<StandardTypeDescriptorOrdinal> params_2V_2N;
00684 params_2V_2N.push_back(STANDARD_TYPE_VARCHAR);
00685 params_2V_2N.push_back(STANDARD_TYPE_VARCHAR);
00686 params_2V_2N.push_back(STANDARD_TYPE_INT_32);
00687 params_2V_2N.push_back(STANDARD_TYPE_INT_32);
00688
00689 eit->add(
00690 "strSubStringA4", params_1V_1F_2N,
00691 (ExtendedInstruction4<char*, char*, int32_t, int32_t>*) NULL,
00692 &strSubStringA4);
00693
00694 eit->add(
00695 "strSubStringA4", params_2V_2N,
00696 (ExtendedInstruction4<char*, char*, int32_t, int32_t>*) NULL,
00697 &strSubStringA4);
00698
00699
00700 eit->add(
00701 "strToLowerA", params_2F,
00702 (ExtendedInstruction2<char*, char*>*) NULL,
00703 &strToLowerA);
00704
00705 eit->add(
00706 "strToLowerA", params_2V,
00707 (ExtendedInstruction2<char*, char*>*) NULL,
00708 &strToLowerA);
00709
00710 eit->add(
00711 "strToUpperA", params_2F,
00712 (ExtendedInstruction2<char*, char*>*) NULL,
00713 &strToUpperA);
00714
00715 eit->add(
00716 "strToUpperA", params_2V,
00717 (ExtendedInstruction2<char*, char*>*) NULL,
00718 &strToUpperA);
00719
00720
00721
00722
00723 vector<StandardTypeDescriptorOrdinal> params_1V_1F_1V_2I;
00724 params_1V_1F_1V_2I.push_back(STANDARD_TYPE_VARCHAR);
00725 params_1V_1F_1V_2I.push_back(STANDARD_TYPE_CHAR);
00726 params_1V_1F_1V_2I.push_back(STANDARD_TYPE_VARCHAR);
00727 params_1V_1F_1V_2I.push_back(STANDARD_TYPE_INT_32);
00728 params_1V_1F_1V_2I.push_back(STANDARD_TYPE_INT_32);
00729
00730 vector<StandardTypeDescriptorOrdinal> params_2V_1F_2I;
00731 params_2V_1F_2I.push_back(STANDARD_TYPE_VARCHAR);
00732 params_2V_1F_2I.push_back(STANDARD_TYPE_VARCHAR);
00733 params_2V_1F_2I.push_back(STANDARD_TYPE_CHAR);
00734 params_2V_1F_2I.push_back(STANDARD_TYPE_INT_32);
00735 params_2V_1F_2I.push_back(STANDARD_TYPE_INT_32);
00736
00737
00738 eit->add(
00739 "strTrimA", params_3V_2I,
00740 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00741 &strTrimA);
00742
00743 eit->add(
00744 "strTrimA", params_2V_1F_2I,
00745 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00746 &strTrimA);
00747
00748 eit->add(
00749 "strTrimA", params_1V_2F_2I,
00750 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00751 &strTrimA);
00752
00753 eit->add(
00754 "strTrimA", params_1V_1F_1V_2I,
00755 (ExtendedInstruction5<char*, char*, char*, int32_t, int32_t>*) NULL,
00756 &strTrimA);
00757 }
00758
00759
00760 FENNEL_END_NAMESPACE
00761
00762