void CVersionInfo::SetFileVersion(WORD dwFileVersionMSHi, WORD dwFileVersionMSLo, WORD dwFileVersionLSHi, WORD dwFileVersionLSLo, BOOL bUpdateStringTables /* =TRUE */, LPCTSTR lpszDelim /*= _T(", ") */) { SetFileVersion((dwFileVersionMSHi << 16) | dwFileVersionMSLo, (dwFileVersionLSHi << 16) | dwFileVersionLSLo, bUpdateStringTables, lpszDelim); }
/// \brief /// Internal function used during loading. inline void SetFileVersion(int fullvers) { SetFileVersion(fullvers/100, fullvers%100); }
void ContestDefinition::build_def(wxString def_file) { wxString str; wxTextFile dfile; // Comment lines could have zero or more leading spaces or tabs wxRegEx reComment(wxT("^[[:blank:]]*#.*$"), wxRE_ADVANCED); // Blank lines wxRegEx reBlank(wxT("^[[:blank:]]*$"), wxRE_ADVANCED); // Key/Value pairs (what we're looking for) // Values are contained in double quotes ("") and may contain // letters, digits, '-', '_', or ' ' in any combination or quantity wxRegEx reKeyVal(wxT("^[[:blank:]]*([[:alnum:]_-]+)[[:blank:]]*=[[:blank:]]*(\"[[:alnum:][:blank:]_-]+\").*$"), wxRE_ADVANCED | wxRE_ICASE); #ifdef DEBUG if (!reComment.IsValid()) std::cerr << "reComment is not a valid regex!\n" << std::endl; else if (!reBlank.IsValid()) std::cerr << "reBlank is not a valid regex!\n" << std::endl; else if (!reKeyVal.IsValid()) std::cerr << "reKeyVal is not a valid regex!\n" << std::endl; #endif // open the definition file dfile.Open(def_file); for ( str = dfile.GetFirstLine(); !dfile.Eof(); str = dfile.GetNextLine() ) { // Test for comment line with leading '#' and ignore if (reComment.Matches(str) || reBlank.Matches(str)) { #if 0 std::cerr << str.mb_str() << std::endl; #endif continue; } else if (reKeyVal.Matches(str)) { #if 0 std::cerr << str.mb_str() << std::endl; #endif wxString key = reKeyVal.GetMatch(str, 1); wxString val = reKeyVal.GetMatch(str, 2); #ifdef DEBUG std::cerr << "Key: " << key.mb_str() << std::endl; #endif if (key.IsSameAs(wxT("FileVersion"), FALSE)) { SetFileVersion(val); #ifdef DEBUG wxString fv_val = GetFileVersion(); std::cerr << "Val: " << fv_val.mb_str() << std::endl; #endif } else if (key.IsSameAs(wxT("ContestID"), FALSE)) { SetContestID(val); #ifdef DEBUG wxString fv_val = GetContestID(); std::cerr << "Val: " << fv_val.mb_str() << std::endl; #endif } else if (key.IsSameAs(wxT("Exch1"), FALSE)) { SetExch1(val); #ifdef DEBUG wxString fv_val = GetExch1(); std::cerr << "Val: " << fv_val.mb_str() << std::endl; #endif } else if (key.IsSameAs(wxT("Exch2"), FALSE)) { SetExch2(val); #ifdef DEBUG wxString fv_val = GetExch2(); std::cerr << "Val: " << fv_val.mb_str() << std::endl; #endif } } #ifdef DEBUG else std::cerr << "Invalid line: " << str.mb_str() << std::endl; #endif } #if 0 std::cerr << std::endl << "wxUSE_STD_IOSTREAM=" << (wxUSE_STD_IOSTREAM) << " wxUSE_UNICODE=" << (wxUSE_UNICODE) << std::endl; #endif // close the definition file dfile.Close(); }