CurrencyPluralInfo& CurrencyPluralInfo::operator=(const CurrencyPluralInfo& info) { if (this == &info) { return *this; } deleteHash(fPluralCountToCurrencyUnitPattern); UErrorCode status = U_ZERO_ERROR; fPluralCountToCurrencyUnitPattern = initHash(status); copyHash(info.fPluralCountToCurrencyUnitPattern, fPluralCountToCurrencyUnitPattern, status); if ( U_FAILURE(status) ) { return *this; } delete fPluralRules; delete fLocale; if (info.fPluralRules) { fPluralRules = info.fPluralRules->clone(); } else { fPluralRules = NULL; } if (info.fLocale) { fLocale = info.fLocale->clone(); } else { fLocale = NULL; } return *this; }
TimeUnitFormat& TimeUnitFormat::operator=(const TimeUnitFormat& other) { if (this == &other) { return *this; } MeasureFormat::operator=(other); for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { UErrorCode status = U_ZERO_ERROR; fTimeUnitToCountToPatterns[i] = initHash(status); if (U_SUCCESS(status)) { copyHash(other.fTimeUnitToCountToPatterns[i], fTimeUnitToCountToPatterns[i], status); } else { delete fTimeUnitToCountToPatterns[i]; fTimeUnitToCountToPatterns[i] = NULL; } } fStyle = other.fStyle; return *this; }
/*! Frees from memory the given environment @param env the environment @return 0 */ bool freeEnv (environment* env) { deleteHash(env->variables); freeTypedefs(env->types); free(env); return 0; }
CurrencyPluralInfo::~CurrencyPluralInfo() { deleteHash(fPluralCountToCurrencyUnitPattern); fPluralCountToCurrencyUnitPattern = NULL; delete fPluralRules; delete fLocale; fPluralRules = NULL; fLocale = NULL; }
TimeUnitFormat::~TimeUnitFormat() { for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } }
void TimeUnitFormat::initDataMembers(UErrorCode& err){ if (U_FAILURE(err)) { return; } for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } }
TimeUnitFormat::~TimeUnitFormat() { delete fNumberFormat; fNumberFormat = NULL; for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } delete fPluralRules; fPluralRules = NULL; }
/* ===== deleteCar ===== This function deletes the car entry Pre list, hash, tree Post nothing */ void deleteCar(D_LIST *list, HASH *hash, BST_TREE *tree){ CAR car; char plate[50]; char tempString[50]; do{ printf("Enter your plate number: "); gets(plate); if(strlen(plate)!=6){ printf("Invalid input. Try Again\n"); } }while(strlen(plate)!= 6); strcpy(car.plate, plate); deleteNode(list, plate); deleteHash(hash, plate); deleteTree(tree, plate); }// deleteCar
void TimeUnitFormat::initDataMembers(UErrorCode& err){ if (U_FAILURE(err)) { return; } if (fNumberFormat == NULL) { fNumberFormat = NumberFormat::createInstance(fLocale, err); } delete fPluralRules; fPluralRules = PluralRules::forLocale(fLocale, err); for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } }
/* ================== destroy ================= This function frees everything that was allocated throughout the entire program. Pre pHeader - pointer to HEAD structure Post everything is freed Return HEAD* = NULL */ HEAD* destroy (HEAD* pHeader) { // Local Declarations int i; // Statements for (i = 0; i < pHeader->pHash->arraySize; i++) { while (pHeader->pHash->pTable[i].pData != NULL) { deleteHash(pHeader, *pHeader->pHash->pTable[i].pData); } } free (pHeader->pHash->pTable); free (pHeader->pHash); free (pHeader->pTree); free (pHeader); return NULL; } // destroy
TimeUnitFormat& TimeUnitFormat::operator=(const TimeUnitFormat& other) { if (this == &other) { return *this; } delete fNumberFormat; for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { deleteHash(fTimeUnitToCountToPatterns[i]); fTimeUnitToCountToPatterns[i] = NULL; } delete fPluralRules; if (other.fNumberFormat) { fNumberFormat = (NumberFormat*)other.fNumberFormat->clone(); } else { fNumberFormat = NULL; } fLocale = other.fLocale; for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; i = (TimeUnit::UTimeUnitFields)(i+1)) { UErrorCode status = U_ZERO_ERROR; fTimeUnitToCountToPatterns[i] = initHash(status); if (U_SUCCESS(status)) { copyHash(other.fTimeUnitToCountToPatterns[i], fTimeUnitToCountToPatterns[i], status); } else { delete fTimeUnitToCountToPatterns[i]; fTimeUnitToCountToPatterns[i] = NULL; } } if (other.fPluralRules) { fPluralRules = (PluralRules*)other.fPluralRules->clone(); } else { fPluralRules = NULL; } fStyle = other.fStyle; return *this; }
void CurrencyPluralInfo::setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status) { if (U_FAILURE(status)) { return; } if (fPluralCountToCurrencyUnitPattern) { deleteHash(fPluralCountToCurrencyUnitPattern); } fPluralCountToCurrencyUnitPattern = initHash(status); if (U_FAILURE(status)) { return; } NumberingSystem *ns = NumberingSystem::createInstance(loc,status); UErrorCode ec = U_ZERO_ERROR; UResourceBundle *rb = ures_open(NULL, loc.getName(), &ec); UResourceBundle *numElements = ures_getByKeyWithFallback(rb, gNumberElementsTag, NULL, &ec); rb = ures_getByKeyWithFallback(numElements, ns->getName(), rb, &ec); rb = ures_getByKeyWithFallback(rb, gPatternsTag, rb, &ec); int32_t ptnLen; const UChar* numberStylePattern = ures_getStringByKeyWithFallback(rb, gDecimalFormatTag, &ptnLen, &ec); // Fall back to "latn" if num sys specific pattern isn't there. if ( ec == U_MISSING_RESOURCE_ERROR && uprv_strcmp(ns->getName(),gLatnTag)) { ec = U_ZERO_ERROR; rb = ures_getByKeyWithFallback(numElements, gLatnTag, rb, &ec); rb = ures_getByKeyWithFallback(rb, gPatternsTag, rb, &ec); numberStylePattern = ures_getStringByKeyWithFallback(rb, gDecimalFormatTag, &ptnLen, &ec); } int32_t numberStylePatternLen = ptnLen; const UChar* negNumberStylePattern = NULL; int32_t negNumberStylePatternLen = 0; // TODO: Java // parse to check whether there is ";" separator in the numberStylePattern UBool hasSeparator = false; if (U_SUCCESS(ec)) { for (int32_t styleCharIndex = 0; styleCharIndex < ptnLen; ++styleCharIndex) { if (numberStylePattern[styleCharIndex] == gNumberPatternSeparator) { hasSeparator = true; // split the number style pattern into positive and negative negNumberStylePattern = numberStylePattern + styleCharIndex + 1; negNumberStylePatternLen = ptnLen - styleCharIndex - 1; numberStylePatternLen = styleCharIndex; } } } ures_close(numElements); ures_close(rb); delete ns; if (U_FAILURE(ec)) { return; } UResourceBundle *currRb = ures_open(U_ICUDATA_CURR, loc.getName(), &ec); UResourceBundle *currencyRes = ures_getByKeyWithFallback(currRb, gCurrUnitPtnTag, NULL, &ec); #ifdef CURRENCY_PLURAL_INFO_DEBUG std::cout << "in set up\n"; #endif StringEnumeration* keywords = fPluralRules->getKeywords(ec); if (U_SUCCESS(ec)) { const char* pluralCount; while ((pluralCount = keywords->next(NULL, ec)) != NULL) { if ( U_SUCCESS(ec) ) { int32_t ptnLen; UErrorCode err = U_ZERO_ERROR; const UChar* patternChars = ures_getStringByKeyWithFallback( currencyRes, pluralCount, &ptnLen, &err); if (U_SUCCESS(err) && ptnLen > 0) { UnicodeString* pattern = new UnicodeString(patternChars, ptnLen); #ifdef CURRENCY_PLURAL_INFO_DEBUG char result_1[1000]; pattern->extract(0, pattern->length(), result_1, "UTF-8"); std::cout << "pluralCount: " << pluralCount << "; pattern: " << result_1 << "\n"; #endif pattern->findAndReplace(UnicodeString(TRUE, gPart0, 3), UnicodeString(numberStylePattern, numberStylePatternLen)); pattern->findAndReplace(UnicodeString(TRUE, gPart1, 3), UnicodeString(TRUE, gTripleCurrencySign, 3)); if (hasSeparator) { UnicodeString negPattern(patternChars, ptnLen); negPattern.findAndReplace(UnicodeString(TRUE, gPart0, 3), UnicodeString(negNumberStylePattern, negNumberStylePatternLen)); negPattern.findAndReplace(UnicodeString(TRUE, gPart1, 3), UnicodeString(TRUE, gTripleCurrencySign, 3)); pattern->append(gNumberPatternSeparator); pattern->append(negPattern); } #ifdef CURRENCY_PLURAL_INFO_DEBUG pattern->extract(0, pattern->length(), result_1, "UTF-8"); std::cout << "pluralCount: " << pluralCount << "; pattern: " << result_1 << "\n"; #endif fPluralCountToCurrencyUnitPattern->put(UnicodeString(pluralCount, -1, US_INV), pattern, status); } } } } delete keywords; ures_close(currencyRes); ures_close(currRb); }
/* ================== getOption ================= This function reads in the user's desired chose of operation. Calls upon other functions to perform the procedure. Pre pHeader - pointer to HEAD structure Post Return */ void getOption (HEAD* pHeader) { // Local Declarations char command; DATA target; DATA* airport = NULL; int i; // Statements while ((command = menu()) != 'Q') { switch (command) { case 'A': if (addAirport(pHeader)) { while (checkHash(pHeader->pHash) == 1) { pHeader->pHash = upsizeHash(pHeader->pHash); } printf ("\n Succesfully added data.\n\n"); } break; case 'D': printf("Enter the airport code: "); scanf(" %s", target.arpCode); if (deleteHash (pHeader, target)) { while (checkHash(pHeader->pHash) == -1) { pHeader->pHash = downsizeHash(pHeader->pHash); } printf ("\n Succesfully deleted data.\n\n"); } break; case 'F': printf("Enter the airport code: "); scanf(" %s", target.arpCode); // fix sensitive input cases for (i = 0; i < strlen(target.arpCode); i++) { target.arpCode[i] = toupper(target.arpCode[i]); } airport = findHash(pHeader->pHash, &target); if (airport != NULL) { processScreen(airport); } else printf("No airport exists\n"); break; case 'L': printHash(pHeader->pHash); break; case 'K': BST_Traverse(pHeader->pTree, processScreen); break; case 'P': printTree(pHeader->pTree->root, 0); printf("\n"); break; case 'W': outputFile (pHeader->pHash); break; case 'E': efficiency(pHeader->pHash); break; case 'H': pHeader->pHash = hashDemo(pHeader->pHash); break; default: printf("Invalid choice. Choose again\n"); break; } } return; } // getOption