当前位置: 首页>>代码示例>>C++>>正文


C++ value::type方法代码示例

本文整理汇总了C++中value::type方法的典型用法代码示例。如果您正苦于以下问题:C++ value::type方法的具体用法?C++ value::type怎么用?C++ value::type使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在value的用法示例。


在下文中一共展示了value::type方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: switch

bool operator==(const value& lhs, const value& rhs) {
    if (lhs.type() != rhs.type()) {
        return false;
    }

    switch (static_cast<int>(lhs.type())) {
#define BSONCXX_ENUM(type, val) \
    case val:                   \
        return lhs.get_##type() == rhs.get_##type();
#include <bsoncxx/enums/type.hpp>
#undef BSONCXX_ENUM
    }

    BSONCXX_UNREACHABLE;
}
开发者ID:WahaGames,项目名称:mongo-cxx-driver,代码行数:15,代码来源:value.cpp

示例2: d

/// Like coerce(const value&) but assigns the value to a reference
/// instead of returning it.  May be more efficient for complex values
/// (arrays, maps, etc.)
///
/// @related proton::value
template<class T> void coerce(const value& v, T& x) {
    codec::decoder d(v, false);
    if (type_id_is_scalar(v.type())) {
        scalar s;
        d >> s;
        x = internal::coerce<T>(s);
    } else {
开发者ID:irinabov,项目名称:debian-qpid-proton,代码行数:12,代码来源:value.hpp

示例3: can_convert_from

 static bool can_convert_from(const value& val) {
     if (val.type() != value_type::vector_type) {
         return false;
     }
     const auto& vec = val.get<value_vector_type>();
     return vec.size() == sizeof...(T)
         && tuple_value_converter<T...>::types_match(vec, 0);
 }
开发者ID:respu,项目名称:lightconf,代码行数:8,代码来源:value_type_info.hpp

示例4: get

	static MetadataDefiniton get( value const &v )
	{
		MetadataDefiniton m;
		if( v.type( ) != is_object) {
			throw bad_value_cast( );
		}
		m.name = v.get<std::string>( "name" );
		m.type = v.get<std::string>( "type" );
		return m;
	}
开发者ID:Eurospider,项目名称:strusWebService,代码行数:10,代码来源:index.hpp

示例5: get

	static PostingJoinOperatorConfiguration get( value const &v )
	{
		PostingJoinOperatorConfiguration c;
		if( v.type( ) != is_object ) {
			throw bad_value_cast( );
		}		
		c.name = v.get<std::string>( "name" );
		c.description = v.get<std::string>( "description" );
		return c;
	}
开发者ID:Eurospider,项目名称:strusWebService,代码行数:10,代码来源:other.hpp

示例6: get

	static DocumentGetRequest get( value const &v )
	{
		DocumentGetRequest d;
		if( v.type( ) != is_object) {
			throw bad_value_cast( );
		}
		// TODO: should we also accept int, float? how can we fall back?
		d.docid = v.get<std::string>( "docid", "" );		
		
		return d;
	}
开发者ID:Eurospider,项目名称:strusWebService,代码行数:11,代码来源:document.hpp

示例7: bad_value_cast

	static boost::tuple<std::string, std::string, strus::Index> get( value const &v )
	{
		boost::tuple<std::string, std::string, strus::Index> t;

		if( v.type( ) != is_object) {
			throw bad_value_cast( );
		}
		
		t = boost::make_tuple(
			v.get<std::string>( "type" ),
			v.get<std::string>( "value" ),
			v.get<strus::Index>( "pos" )
		);
				
		return t;
	}
开发者ID:Eurospider,项目名称:strusWebService,代码行数:16,代码来源:document.hpp

示例8: GenStat

static void GenStat(Stat& stat, const value& v) {
    switch (v.type()) {
    case value_type::array:
        {
            const array& a = array_cast(v);
            for (array::const_iterator itr = a.begin(); itr != a.end(); ++itr)
                GenStat(stat, *itr);
            stat.arrayCount++;
            stat.elementCount += a.size();
        }
        break;

    case value_type::object:
        {
            const object& o = object_cast(v);
            for (object::const_iterator itr = o.begin(); itr != o.end(); ++itr) {
                GenStat(stat, itr->second);
                stat.stringLength += itr->first.size();
            }
            stat.objectCount++;
            stat.memberCount += o.size();
            stat.stringCount += o.size();   // member names
        }
        break;

    case value_type::string: 
        stat.stringCount++;
        stat.stringLength += string_cast(v).length();
        break;

    case value_type::number:
        stat.numberCount++;
        break;

    case value_type::boolean:
        if (bool_cast(v))
            stat.trueCount++;
        else
            stat.falseCount++;
        break;

    case value_type::null:
        stat.nullCount++;
        break;
    }
}
开发者ID:miloyip,项目名称:nativejson-benchmark,代码行数:46,代码来源:ujsontest.cpp

示例9: write_value

void write_value(scanner& sc, writer& wr, const value& val) {
    switch (val.type()) {
    case value_type::number_type: {
        read_value(sc);
        wr.append(stringize_number(val.number_value()));
        break;
    }
    case value_type::string_type: {
        read_value(sc);
        wr.append("\"");
        wr.append(escape_string(val.string_value()));
        wr.append("\"");
        break;
    }
    case value_type::bool_type: {
        read_value(sc);
        wr.append(val.bool_value() ? "true" : "false");
        break;
    }
    case value_type::group_type: {
        if (sc.peek_token().is_char('{')) {
            write_group(sc, wr, true, val.group_value());
        } else {
            read_value(sc);
            scanner dummy_scanner = make_scanner("{}");
            write_group(dummy_scanner, wr, true, val.group_value());
        }
        break;
    }
    case value_type::vector_type: {
        if (sc.peek_token().is_char('[')) {
            write_vector(sc, wr, val.vector_value());
        } else {
            read_value(sc);
            scanner dummy_scanner = make_scanner("[]");
            write_vector(dummy_scanner, wr, val.vector_value());
        }
        break;
    }
    default: {
        break;
    }
    }
}
开发者ID:respu,项目名称:lightconf,代码行数:44,代码来源:config_format.hpp

示例10: value_length

int value_length(const value& val, int wrap_length) {
    switch (val.type()) {
    case value_type::number_type: {
        return stringize_number(val.number_value()).size();
    }
    case value_type::string_type: {
        return 2 + escape_string(val.string_value()).size();
    }
    case value_type::bool_type: {
        return val.bool_value() ? 4 : 5;
    }
    case value_type::group_type: {
        return group_length(val.group_value());
    }
    case value_type::vector_type: {
        return vector_length(val.vector_value());
    }
    default: {
        return 0;
    }
    }
}
开发者ID:respu,项目名称:lightconf,代码行数:22,代码来源:config_format.hpp

示例11: query

bool sqlitehandle::query (const string &sql, value &into,
						  const statstring &indexby)
{
	sqlite3_stmt *qhandle;
	int qres;
	int rowcount=0;
	int colcount;
	int i;
	statstring curidx;
	bool done = false;
	
	into.clear ();
	
	if (sqlite3_prepare (hdl, sql.str(), sql.strlen(), &qhandle, 0) != SQLITE_OK)
	{
		errcode = 1;
		errstr = "Could not prepare: %s" %format (sqlite3_errmsg(hdl));
		return false;
	}
	
	if (! (qres = sqlite3_step (qhandle)))
	{
		errcode = 1;
		errstr = "Error making first step: %s" %format (sqlite3_errmsg(hdl));
		sqlite3_finalize (qhandle);
		return false;
	}
	
	colcount = sqlite3_column_count (qhandle);
	if (colcount == 0)
	{
		into("rowschanged") = sqlite3_changes (hdl);
		sqlite3_finalize (qhandle);
		return true;
	}
	
	statstring colnames[colcount];
	value colidx;
	
	for (i=0; i<colcount; ++i)
	{
		colnames[i] = sqlite3_column_name (qhandle, i);
		colidx[colnames[i]] = i;
	}
	
	int indexfield = -1;
	if (colidx.exists (indexby)) indexfield = colidx[indexby];
	
	if (! done) do
	{
		switch (qres)
		{
			case SQLITE_BUSY:
				sleep (1);
				sqlite3_reset(qhandle);
				continue;
			
			case SQLITE_MISUSE: // achtung, fallthrough
			case SQLITE_ERROR:
				errcode = 1;
				errstr = "Error in sqlite3_step: %s" %format (sqlite3_errmsg(hdl));
				done = true;
				break;

			case SQLITE_DONE:
				done = true;
				break;
				
			case SQLITE_ROW:
				{
					if (indexfield>=0)
					{
						curidx = sqlite3_column_text (qhandle, indexfield);
					}
					
					value &myrow = (indexfield<0) ? into.newval() : into[curidx];
					
					for (int i=0; i<colcount; i++)
					{
						int ctype = sqlite3_column_type (qhandle, i);
						statstring &curcol = colnames[i];
						
						switch (ctype)
						{
							case SQLITE_INTEGER:
								myrow[curcol] = sqlite3_column_int (qhandle, i);
								break;
							
							case SQLITE_FLOAT:
								myrow[curcol] = sqlite3_column_double (qhandle, i);
								break;
							
							case SQLITE_BLOB:
								// FIXME: use sqlite3_column_blob
							case SQLITE_TEXT:
								myrow[curcol] = sqlite3_column_text (qhandle, i);
								break;
							
							default:
								break;
//.........这里部分代码省略.........
开发者ID:CloudVPS,项目名称:openpanel-grace,代码行数:101,代码来源:sqlite.cpp

示例12: flatten

value flatten(value const& v) {
  return {flatten(v.data()), flatten(v.type())};
}
开发者ID:ChallenChenZhiPeng,项目名称:vast,代码行数:3,代码来源:value.cpp

示例13: make

 /// Type-safe factory function to construct an event from an unchecked value.
 /// @param v The value to check and convert into an event.
 /// @returns A valid event according *v* if `v.type().check(v.data())`.
 static event make(value v) {
   return type_check(v.type(), v.data()) ? event{std::move(v)} : caf::none;
 }
开发者ID:vast-io,项目名称:vast,代码行数:6,代码来源:event.hpp


注:本文中的value::type方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。