當前位置: 首頁>>代碼示例>>C++>>正文


C++ string_t::ptr方法代碼示例

本文整理匯總了C++中string_t::ptr方法的典型用法代碼示例。如果您正苦於以下問題:C++ string_t::ptr方法的具體用法?C++ string_t::ptr怎麽用?C++ string_t::ptr使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在string_t的用法示例。


在下文中一共展示了string_t::ptr方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。

示例1: exception_sys_t

file_t::file_t(char const *name, string_t const &header) :
	ref_cnt(0), fd(-1), used(false), id() {

	if(config::check)
		return;

	fd = ::open(name, O_WRONLY | O_APPEND | O_CREAT, 0644);
	if(fd < 0)
		throw exception_sys_t(log::error, errno, "open (%s): %m", name);

	fd_guard_t guard(fd);

	id = id_t(fd, used);
	if(!id)
		throw exception_sys_t(log::error, errno, "fstat (%s): %m", name);

	if(::flock(fd, LOCK_SH | LOCK_NB) < 0)
		throw exception_sys_t(log::error, errno, "flock (%s): %m", name);

	if(header) {
		if(::write(fd, header.ptr(), header.size()) < 0)
			throw exception_sys_t(log::error, errno, "write (%s): %m", name);
	}

	guard.relax();
}
開發者ID:MarishaYasko,項目名稱:phantom,代碼行數:26,代碼來源:log_file.C

示例2: check

void handler_t::check() {
	file_t *tmp = NULL;

	bool skip_file_check = false;

	{
		spinlock_guard_t guard(spinlock);
		if(old) {
			if(old->ref_cnt)
				skip_file_check = true;
			else {
				tmp = old;
				old = NULL;
			}
		}
	}

	if(tmp) { delete tmp; tmp = NULL; }
	if(skip_file_check) return;

	struct stat st;
	if(::stat(filename_z.ptr(), &st) == 0) {
		if(id_t(st) == current->id) // Don't need lock
			return;
	}
	else {
		if(errno != ENOENT)
			log_error("stat: (%s) %m", filename_z.ptr());
	}

	tmp = new file_t(filename_z.ptr(), header);

	{
		spinlock_guard_t guard(spinlock);
		if(!old) {
			old = current;
			current = tmp;
			tmp = NULL;
		}
		if(!old->ref_cnt) {
			tmp = old;
			old = NULL;
		}
	}

	if(tmp) { delete tmp; tmp = NULL; }
}
開發者ID:MarishaYasko,項目名稱:phantom,代碼行數:47,代碼來源:log_file.C

示例3: mime_type_need_charset

// ugly function #1
static bool mime_type_need_charset(string_t const &mtype) {
	char const *p = mtype.ptr();

	return (
		mtype.size() >= 5 &&
		p[0] == 't' &&  p[1] == 'e' && p[2] == 'x' &&  p[3] == 't' && p[4] == '/'
	);
}
開發者ID:MarishaYasko,項目名稱:phantom,代碼行數:9,代碼來源:file_types_default.C

示例4: mime_type_compare

// ugly function #2
static bool mime_type_compare(string_t const &m1, string_t const &m2) {
	char const *b1 = m1.ptr();
	size_t m1_len = m1.size();
	char const *p1 = (char const *)memchr(b1, '/', m1_len);

	char const *b2 = m2.ptr();
	size_t m2_len = m2.size();
	char const *p2 = (char const *)memchr(b2, '/', m2_len);

	if(!p2) return true;
	if(!p1) return false;

	size_t l1 = p1 - b1;
	size_t l2 = p2 - b2;

	bool x1 = (l1 >= 2 && b1[0] == 'x' && b1[1] == '-');
	bool x2 = (l2 >= 2 && b2[0] == 'x' && b2[1] == '-');

	if(x2 && !x1) return true;
	if(!x2 && x1) return false;

	size_t k1 = m1_len - l1;
	size_t k2 = m2_len - l2;

	x1 = (k1 >= 3 && p1[1] == 'x' && p1[2] == '-');
	x2 = (k2 >= 3 && p2[1] == 'x' && p2[2] == '-');

	if(x2 && !x1) return true;
	if(!x2 && x1) return false;

	if(l1 < l2) return true;
	if(l2 < l1) return false;

	if(m1_len < m2_len) return true;
	return false;
}
開發者ID:MarishaYasko,項目名稱:phantom,代碼行數:37,代碼來源:file_types_default.C

示例5: handler_t

	inline handler_t(string_t const &filename, string_t const &_header) :
		filename_z(string_t::ctor_t(filename.size() + 1)(filename)('\0')),
		header(_header), current(NULL), old(NULL), stat() {

		current = new file_t(filename_z.ptr(), header);
	}
開發者ID:MarishaYasko,項目名稱:phantom,代碼行數:6,代碼來源:log_file.C


注:本文中的string_t::ptr方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。