FileStream::FileStream(const WString& fileName, AccessRight _accessRight) :accessRight(_accessRight) { const wchar_t* mode=L"rb"; switch(accessRight) { case ReadOnly: mode=L"rb"; break; case WriteOnly: mode=L"wb"; break; case ReadWrite: mode=L"w+b"; break; } #if defined VCZH_MSVC if(_wfopen_s(&file, fileName.Buffer(), mode)!=0) { file=0; } #elif defined VCZH_GCC AString fileNameA = wtoa(fileName); AString modeA = wtoa(mode); file = fopen(fileNameA.Buffer(), modeA.Buffer()); #endif }
char* EtherCard::wtoa(uint16_t value, char* ptr) { if (value > 9) ptr = wtoa(value / 10, ptr); *ptr = '0' + value % 10; *++ptr = 0; return ptr; }
bool Semaphore::Create(vint initialCount, vint maxCount, const WString& name) { if (internalData) return false; if (initialCount > maxCount) return false; internalData = new SemaphoreData; #if defined(__APPLE__) AString auuid; if(name.Length() == 0) { CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault); CFStringRef cfstr = CFUUIDCreateString(kCFAllocatorDefault, cfuuid); auuid = CFStringGetCStringPtr(cfstr, kCFStringEncodingASCII); CFRelease(cfstr); CFRelease(cfuuid); } auuid = auuid.Insert(0, "/"); // OSX SEM_NAME_LENGTH = 31 if(auuid.Length() >= 30) auuid = auuid.Sub(0, 30); if ((internalData->semNamed = sem_open(auuid.Buffer(), O_CREAT, O_RDWR, initialCount)) == SEM_FAILED) { delete internalData; internalData = 0; return false; } #else if (name == L"") { if(sem_init(&internalData->semUnnamed, 0, (int)initialCount) == -1) { delete internalData; internalData = 0; return false; } } else { AString astr = wtoa(name); if ((internalData->semNamed = sem_open(astr.Buffer(), O_CREAT, 0777, initialCount)) == SEM_FAILED) { delete internalData; internalData = 0; return false; } } #endif Release(initialCount); return true; }
bstr_t GetShortName(bstr_t systemUserName) { std::wstring wstr(systemUserName, SysStringLen(systemUserName)); std::string name = wtoa(wstr); //std::vector<std::string> chunks = split(name, '\\'); //std::string short_name = chunks.back(); // get the last string chunk //std::cout << short_name << std::endl; //return bstr_t(short_name.c_str()); std::string short_name; split_and_get_last(name, short_name); return bstr_t(short_name.c_str()); };
bool FilePath::IsFolder()const { #if defined VCZH_MSVC WIN32_FILE_ATTRIBUTE_DATA info; BOOL result = GetFileAttributesEx(fullPath.Buffer(), GetFileExInfoStandard, &info); if (!result) return false; return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; #elif defined VCZH_GCC struct stat info; AString path = wtoa(fullPath); int result = stat(path.Buffer(), &info); if(result != 0) return false; else return S_ISDIR(info.st_mode); #endif }
bool Semaphore::Open(bool inheritable, const WString& name) { if (internalData) return false; if (inheritable) return false; internalData = new SemaphoreData; if (!(internalData->semNamed = sem_open(wtoa(name).Buffer(), 0))) { delete internalData; internalData = 0; return false; } return true; }
void GuiSolidLabelElementRenderer::OnElementStateChanged() { FontProperties font = element->GetFont(); Color color = element->GetColor(); int layoutWidth, layoutHeight; AString family = wtoa(font.fontFamily); pango_font_description_set_family(pangoFontDesc, family.Buffer()); pango_font_description_set_absolute_size(pangoFontDesc, font.size * PANGO_SCALE); if(font.italic) pango_font_description_set_style(pangoFontDesc, PANGO_STYLE_ITALIC); else pango_font_description_set_style(pangoFontDesc, PANGO_STYLE_NORMAL); if(attrList) { pango_attr_list_unref(attrList); } attrList = pango_attr_list_new(); pango_attr_list_insert(attrList, pango_attr_underline_new( font.underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE) ); pango_attr_list_insert(attrList, pango_attr_strikethrough_new ( font.strikeline ? TRUE : FALSE ) ); pango_attr_list_insert(attrList, pango_attr_weight_new ( font.bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_MEDIUM ) ); if(layout) { g_object_unref(layout); layout = NULL; } if(cairoContext) { layout = pango_cairo_create_layout(cairoContext); WString wtext = (font.fontFamily == L"Webdings") ? helpers::WebdingsMap(element->GetText()) : element->GetText(); AString text = wtoa(wtext); pango_layout_set_font_description(layout, pangoFontDesc); pango_layout_set_attributes(layout, attrList); pango_layout_set_text(layout, text.Buffer(), text.Length()); pango_layout_set_alignment(layout, element->GetHorizontalAlignment() == Alignment::Left ? PANGO_ALIGN_LEFT : element->GetHorizontalAlignment() == Alignment::Center ? PANGO_ALIGN_CENTER : element->GetHorizontalAlignment() == Alignment::Right ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT ); pango_cairo_update_layout(cairoContext, layout); pango_layout_get_pixel_size( layout, &layoutWidth, &layoutHeight); minSize.x = layoutWidth; minSize.y = layoutHeight; } }
static inline std::string wtoa(const std::wstring& wstr) {return wtoa(&wstr[0], wstr.size());}
void operator()(const wchar_t* msg) {if (enabled) ss<<wtoa(msg);}