本文整理汇总了C++中object::Ptr类的典型用法代码示例。如果您正苦于以下问题:C++ Ptr类的具体用法?C++ Ptr怎么用?C++ Ptr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Ptr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: typeid
void JSONTest::testDouble3Property()
{
std::string json = "{ \"test\" : 12e-34 }";
Parser parser;
Var result;
try
{
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Object::Ptr));
Object::Ptr object = result.extract<Object::Ptr>();
Var test = object->get("test");
assert(test.isNumeric());
double value = test;
assert(value == 12e-34);
}
开发者ID:RageStormers,项目名称:poco,代码行数:27,代码来源:JSONTest.cpp
示例2: testEmptyObjectElement
void JSONTest::testEmptyObjectElement()
{
std::string json = "[{}]";
Parser parser;
Var result;
try
{
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Array::Ptr));
Array::Ptr array = result.extract<Array::Ptr>();
Object::Ptr object = array->getObject(0);
assert(object->size() == 0);
}
开发者ID:RageStormers,项目名称:poco,代码行数:25,代码来源:JSONTest.cpp
示例3: testObjectProperty
void JSONTest::testObjectProperty()
{
std::string json = "{ \"test\" : { \"property\" : \"value\" } }";
Parser parser;
Var result;
try
{
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Object::Ptr));
Object::Ptr object = result.extract<Object::Ptr>();
Var test = object->get("test");
assert(test.type() == typeid(Object::Ptr));
object = test.extract<Object::Ptr>();
test = object->get("property");
assert(test.isString());
std::string value = test.convert<std::string>();
assert(value.compare("value") == 0);
}
开发者ID:RageStormers,项目名称:poco,代码行数:31,代码来源:JSONTest.cpp
示例4: testOptValue
void JSONTest::testOptValue()
{
std::string json = "{ }";
Parser parser;
Var result;
try
{
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Object::Ptr));
Object::Ptr object = result.extract<Object::Ptr>();
int n = object->optValue("test", 123);
assert(n == 123);
}
开发者ID:RageStormers,项目名称:poco,代码行数:25,代码来源:JSONTest.cpp
示例5: testNullProperty
void JSONTest::testNullProperty()
{
std::string json = "{ \"test\" : null }";
Parser parser;
Var result;
try
{
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Object::Ptr));
Object::Ptr object = result.extract<Object::Ptr>();
assert(object->isNull("test"));
Var test = object->get("test");
assert(test.isEmpty());
}
开发者ID:RageStormers,项目名称:poco,代码行数:25,代码来源:JSONTest.cpp
示例6: startArray
void ParseHandler::startArray()
{
Array::Ptr newArr = new Array();
if ( _stack.empty() ) // The first array
{
_result = newArr;
}
else
{
Var parent = _stack.top();
if ( parent.type() == typeid(Array::Ptr) )
{
Array::Ptr arr = parent.extract<Array::Ptr>();
arr->add(newArr);
}
else if ( parent.type() == typeid(Object::Ptr) )
{
poco_assert_dbg(!_key.empty());
Object::Ptr obj = parent.extract<Object::Ptr>();
obj->set(_key, newArr);
_key.clear();
}
}
_stack.push(newArr);
}
开发者ID:12307,项目名称:poco,代码行数:28,代码来源:ParseHandler.cpp
示例7: find
Var Query::find(const std::string& path) const
{
Var result = _source;
StringTokenizer tokenizer(path, ".");
for(StringTokenizer::Iterator token = tokenizer.begin(); token != tokenizer.end(); token++)
{
if ( !result.isEmpty() )
{
std::vector<int> indexes;
RegularExpression::MatchVec matches;
int firstOffset = -1;
int offset = 0;
RegularExpression regex("\\[([0-9]+)\\]");
while(regex.match(*token, offset, matches) > 0 )
{
if ( firstOffset == -1 )
{
firstOffset = static_cast<int>(matches[0].offset);
}
std::string num = token->substr(matches[1].offset, matches[1].length);
indexes.push_back(NumberParser::parse(num));
offset = static_cast<int>(matches[0].offset + matches[0].length);
}
std::string name(*token);
if ( firstOffset != -1 )
{
name = name.substr(0, firstOffset);
}
if ( name.length() > 0 )
{
if ( result.type() == typeid(Object::Ptr) )
{
Object::Ptr o = result.extract<Object::Ptr>();
result = o->get(name);
}
}
if ( !result.isEmpty()
&& !indexes.empty() )
{
for(std::vector<int>::iterator it = indexes.begin(); it != indexes.end(); ++it )
{
if ( result.type() == typeid(Array::Ptr) )
{
Array::Ptr array = result.extract<Array::Ptr>();
result = array->get(*it);
if ( result.isEmpty() )
{
break;
}
}
}
}
}
}
return result;
}
开发者ID:babafall,项目名称:Sogeti-MasterThesis-CrossPlatformMobileDevelopment,代码行数:59,代码来源:Query.cpp
示例8: testTemplate
void JSONTest::testTemplate()
{
Template tpl;
tpl.parse("Hello world! From <?= person.name ?>\n<?if person.toOld ?>You're too old<?endif?>\n");
Object::Ptr data = new Object();
Object::Ptr person = new Object();
data->set("person", person);
person->set("name", "Franky");
person->set("toOld", true);
tpl.render(data, std::cout);
}
开发者ID:RageStormers,项目名称:poco,代码行数:12,代码来源:JSONTest.cpp
示例9: loadDocument
bool ChildSession::loadDocument(const char * /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int part = -1;
if (tokens.count() < 2)
{
sendTextFrame("error: cmd=load kind=syntax");
return false;
}
std::string timestamp;
parseDocOptions(tokens, part, timestamp);
std::string renderOpts;
if (!_docOptions.empty())
{
Parser parser;
Poco::Dynamic::Var var = parser.parse(_docOptions);
Object::Ptr object = var.extract<Object::Ptr>();
renderOpts = object->get("rendering").toString();
}
assert(!_docURL.empty());
assert(!_jailedFilePath.empty());
std::unique_lock<std::recursive_mutex> lock(Mutex);
_loKitDocument = _onLoad(getId(), _jailedFilePath, _docPassword, renderOpts, _haveDocPassword);
if (!_loKitDocument)
{
Log::error("Failed to get LoKitDocument instance.");
return false;
}
if (_multiView)
{
_viewId = _loKitDocument->getView();
_loKitDocument->initializeForRendering((renderOpts.empty() ? nullptr : renderOpts.c_str()));
}
_docType = LOKitHelper::getDocumentTypeAsString(_loKitDocument->get());
if (_docType != "text" && part != -1)
{
_loKitDocument->setPart(part);
}
// Respond by the document status, which has no arguments.
Log::debug("Sending status after load.");
if (!getStatus(nullptr, 0))
return false;
Log::info("Loaded session " + getId());
return true;
}
开发者ID:biostone,项目名称:online,代码行数:53,代码来源:ChildSession.cpp
示例10: OnGetChatHistory
void MeetingConnImpl::OnGetChatHistory(Object::Ptr object)
{
Var varStatus = object->get("status");
if(varStatus == 0)
{
Var resultObj = object->get("result");
}
else
{
Var varMsg = object->get("msg");
string errMsg = varMsg;
}
}
开发者ID:ACEZLY,项目名称:openmeeting2,代码行数:13,代码来源:MeetingConnImpl.cpp
示例11: OnTextChat
void MeetingConnImpl::OnTextChat(Object::Ptr object)
{
Var msg = object->get("msg");
std::string strMsg = msg;
Var varFamilly = object->get("fontName");
std::string strFamilly = varFamilly;
Var varFontSize = object->get("fontSize");
uint32_t ulFontSize = varFontSize;
Var varColor = object->get("color");
uint32_t ulColor = varColor;
Var varFlag = object->get("flag");
uint64_t ulFlag = varFlag;
Var varFromUserID = object->get("fromSessionID");
uint64_t ulFromUserID = varFromUserID;
Var varFromUserName = object->get("fromUserName");
string strFromUserName = varFromUserName;
Var varDate = object->get("date");
time_t date = varDate;
std::string msg2 = HTTPCookie::unescape(strMsg);
std::string strFont2 = HTTPCookie::unescape(strFamilly);
PMsgItem pMsgItem = new MsgItem();
pMsgItem->ulUserID = ulFromUserID;
pMsgItem->font_size = ulFontSize;
pMsgItem->color = ulColor;
pMsgItem->fontFlat = ulFlag;
strcpy(pMsgItem->userName,strFromUserName.data());
strcpy(pMsgItem->msg,msg2.data());
strcpy(pMsgItem->familly,strFont2.data());
//插入到列表
m_chatMsgList.push_back(vector<PMsgItem>::value_type(pMsgItem));
if(m_pIMeetingEvent)
{
m_pIMeetingEvent->On_MeetingEvent_Text_Msg(ulFromUserID,(char *)(msg2.data()),ulFontSize,ulFlag,ulColor,(char*)(strFont2.data()));
}
}
开发者ID:ACEZLY,项目名称:openmeeting2,代码行数:35,代码来源:MeetingConnImpl.cpp
示例12: Dictionary
BOOST_FOREACH(const ConfigObject::Ptr& obj, objs) {
Dictionary::Ptr result1 = new Dictionary();
results->Add(result1);
Dictionary::Ptr resultAttrs = new Dictionary();
result1->Set("attrs", resultAttrs);
BOOST_FOREACH(const String& joinAttr, joinAttrs) {
Object::Ptr joinedObj;
String prefix;
if (joinAttr.IsEmpty()) {
joinedObj = obj;
prefix = type->GetName();
} else {
int fid = type->GetFieldId(joinAttr);
joinedObj = obj->NavigateField(fid);
if (!joinedObj)
continue;
Field field = type->GetFieldInfo(fid);
prefix = field.NavigationName;
}
boost::algorithm::to_lower(prefix);
Type::Ptr joinedType = joinedObj->GetReflectionType();
for (int fid = 0; fid < joinedType->GetFieldCount(); fid++) {
Field field = joinedType->GetFieldInfo(fid);
String aname = prefix + "." + field.Name;
if (!attrs.empty() && attrs.find(aname) == attrs.end())
continue;
Value val = joinedObj->GetField(fid);
/* hide internal navigation fields */
if (field.Attributes & FANavigation) {
Value nval = joinedObj->NavigateField(fid);
if (val == nval)
continue;
}
Value sval = Serialize(val, FAConfig | FAState);
resultAttrs->Set(aname, sval);
}
}
开发者ID:jsabari,项目名称:icinga2,代码行数:49,代码来源:objectqueryhandler.cpp
示例13: OnEnterRoom
//进入房间
void MeetingConnImpl::OnEnterRoom(Object::Ptr object)
{
Var varStatus = object->get("status");
uint32_t status = varStatus;
if(status == 0)
{
Var varUserRole = object->get("userRole");
m_userRole = varUserRole;
GetRoomInfo(m_ulRoomID);
}
else
{
MeetingFrameImpl::GetInstance()->On_MeetingEvent_Enter_Room_Result(status,NULL);
}
}
开发者ID:ACEZLY,项目名称:openmeeting2,代码行数:16,代码来源:MeetingConnImpl.cpp
示例14: setValue
void ParseHandler::setValue(const Var& value)
{
Var parent = _stack.top();
if ( parent.type() == typeid(Array::Ptr) )
{
Array::Ptr arr = parent.extract<Array::Ptr>();
arr->add(value);
}
else if ( parent.type() == typeid(Object::Ptr) )
{
poco_assert_dbg(!_key.empty());
Object::Ptr obj = parent.extract<Object::Ptr>();
obj->set(_key, value);
_key.clear();
}
}
开发者ID:12307,项目名称:poco,代码行数:17,代码来源:ParseHandler.cpp
示例15: OnLeaveRoom
//退出房间
void MeetingConnImpl::OnLeaveRoom(Object::Ptr object)
{
Var varStatus = object->get("status");
if(varStatus == 0)
{
}
}
开发者ID:ACEZLY,项目名称:openmeeting2,代码行数:9,代码来源:MeetingConnImpl.cpp
示例16: EvaluateFilter
bool FilterUtility::EvaluateFilter(ScriptFrame& frame, Expression *filter,
const Object::Ptr& target, const String& variableName)
{
if (!filter)
return true;
Type::Ptr type = target->GetReflectionType();
String varName;
if (variableName.IsEmpty())
varName = type->GetName().ToLower();
else
varName = variableName;
Namespace::Ptr frameNS;
if (frame.Self.IsEmpty()) {
frameNS = new Namespace();
frame.Self = frameNS;
} else {
/* Enforce a namespace object for 'frame.self'. */
ASSERT(frame.Self.IsObjectType<Namespace>());
frameNS = frame.Self;
}
frameNS->Set("obj", target);
frameNS->Set(varName, target);
for (int fid = 0; fid < type->GetFieldCount(); fid++) {
Field field = type->GetFieldInfo(fid);
if ((field.Attributes & FANavigation) == 0)
continue;
Object::Ptr joinedObj = target->NavigateField(fid);
if (field.NavigationName)
frameNS->Set(field.NavigationName, joinedObj);
else
frameNS->Set(field.Name, joinedObj);
}
return Convert::ToBool(filter->Evaluate(frame));
}
开发者ID:bebehei,项目名称:icinga2,代码行数:45,代码来源:filterutility.cpp
示例17: GetPrototypeField
Value icinga::GetPrototypeField(const Value& context, const String& field, bool not_found_error, const DebugInfo& debugInfo)
{
Type::Ptr ctype = context.GetReflectionType();
Type::Ptr type = ctype;
do {
Object::Ptr object = type->GetPrototype();
if (object && object->HasOwnField(field))
return object->GetFieldByName(field, false, debugInfo);
type = type->GetBaseType();
} while (type);
if (not_found_error)
BOOST_THROW_EXCEPTION(ScriptError("Invalid field access (for value of type '" + ctype->GetName() + "'): '" + field + "'", debugInfo));
else
return Empty;
}
开发者ID:LMNetworks,项目名称:icinga2,代码行数:19,代码来源:object.cpp
示例18: pocoUri
vector<shared_ptr<FDSBucket> > GalaxyFDSClient::listBuckets() {
string uri = formatUri(_pConfig->getBaseUri(), "", _emptySubResources);
URI pocoUri(uri);
shared_ptr<HTTPClientSession> pSession(_pSessionFacotry
->createClientSession(pocoUri));
pSession->setHost(pocoUri.getHost());
pSession->setPort(pocoUri.getPort());
HTTPRequest request(HTTPRequest::HTTP_GET, uri, HTTPMessage::HTTP_1_1);
prepareRequestHeaders(uri, HTTPRequest::HTTP_GET, "", _emptyStream,
*_pEmptyMetadata, request);
HTTPResponse response;
ostream& os = pSession->sendRequest(request);
istream& rs = pSession->receiveResponse(response);
if (response.getStatus() != HTTPResponse::HTTP_OK) {
stringstream msg;
msg << "List buckets failed, status=" << response.getStatus() << ", reason=";
StreamCopier::copyStream(rs, msg);
throw GalaxyFDSClientException(response.getStatus(), msg.str());
}
vector<shared_ptr<FDSBucket> > res;
Parser parser;
parser.parse(rs);
Var result = parser.result();
Object::Ptr pObject = result.extract<Object::Ptr>();
Object::Ptr pOwnerObject = pObject->getObject("owner");
stringstream ss;
pOwnerObject->stringify(ss);
shared_ptr<Owner> pOwner = Owner::deserialize(ss);
Array::Ptr pBucketsArray = pObject->getArray("buckets");
for (size_t i = 0; i < pBucketsArray->size(); i++) {
string bucketName = pBucketsArray->getObject(i)->getValue<string>("name");
shared_ptr<FDSBucket> pBucket(new FDSBucket(bucketName));
pBucket->setOwner(*pOwner);
res.push_back(pBucket);
}
return res;
}
开发者ID:XiaoMi,项目名称:galaxy-fds-sdk-cpp,代码行数:42,代码来源:galaxy_fds_client.cpp
示例19: EvaluateFilter
bool FilterUtility::EvaluateFilter(ScriptFrame& frame, Expression *filter,
const Object::Ptr& target, const String& variableName)
{
if (!filter)
return true;
Type::Ptr type = target->GetReflectionType();
String varName;
if (variableName.IsEmpty())
varName = type->GetName().ToLower();
else
varName = variableName;
Dictionary::Ptr vars;
if (frame.Self.IsEmpty()) {
vars = new Dictionary();
frame.Self = vars;
} else
vars = frame.Self;
vars->Set("obj", target);
vars->Set(varName, target);
for (int fid = 0; fid < type->GetFieldCount(); fid++) {
Field field = type->GetFieldInfo(fid);
if ((field.Attributes & FANavigation) == 0)
continue;
Object::Ptr joinedObj = target->NavigateField(fid);
if (field.NavigationName)
vars->Set(field.NavigationName, joinedObj);
else
vars->Set(field.Name, joinedObj);
}
return Convert::ToBool(filter->Evaluate(frame));
}
开发者ID:b0e,项目名称:icinga2,代码行数:41,代码来源:filterutility.cpp
示例20: makeStruct
Poco::DynamicStruct Object::makeStruct(const Object::Ptr& obj)
{
Poco::DynamicStruct ds;
ConstIterator it = obj->begin();
ConstIterator end = obj->end();
for (; it != end; ++it)
{
if (obj->isObject(it))
{
Object::Ptr pObj = obj->getObject(it->first);
DynamicStruct str = makeStruct(pObj);
ds.insert(it->first, str);
}
else if (obj->isArray(it))
{
Array::Ptr pArr = obj->getArray(it->first);
std::vector<Poco::Dynamic::Var> v = Poco::JSON::Array::makeArray(pArr);
ds.insert(it->first, v);
}
else
ds.insert(it->first, it->second);
}
return ds;
}
开发者ID:12307,项目名称:poco,代码行数:26,代码来源:Object.cpp
注:本文中的object::Ptr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论