本文整理汇总了C++中Namespace::Write方法的典型用法代码示例。如果您正苦于以下问题:C++ Namespace::Write方法的具体用法?C++ Namespace::Write怎么用?C++ Namespace::Write使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Namespace
的用法示例。
在下文中一共展示了Namespace::Write方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateFromArchive
// static
Namespace* Namespace::CreateFromArchive(TypeArchive& ar, uint32 id)
{
/*
Namespace* p = new Namespace;
if (ar.m_typeLoad.size() <= id) ar.m_typeLoad.resize(id+1);
ar.m_typeLoad[id] = p;
p->Load(ar);
return p;
*/
TypeLib* typelib;
ar >> typelib;
ASSERT(typelib == nullptr);
CppSourceFile* sourcefile;
ar >> sourcefile;
String name = ar.LoadIdentifier();
size_t tsize = ar.m_typeLoad.size();
// parent must already have been loaded, or it will screw up m_typeLoad array
Namespace* parent;
ar >> parent;
Namespace* pNamespace = nullptr;
if (name == nullptr)
{
pNamespace = ar.m_pGlobalNamespace;
ASSERT(parent == nullptr);
}
if (parent)
{
namespacemap::iterator it = parent->m_pScope->m_namespaces.find(name);
if (it != parent->m_pScope->m_namespaces.end())
{
pNamespace = it->second;
}
}
if (pNamespace == nullptr)
{
pNamespace = new Namespace;
pNamespace->m_name = name;
ar >> pNamespace->m_sourcefile;
ASSERT(pNamespace->m_sourcefile == nullptr);
IO::StringWriter stream;
pNamespace->Write(stream);
pNamespace->m_qname = stream.str();
ASSERT(ar.m_typelib);
ar.m_typelib->m_namespaces.push_back(pNamespace);
if (parent)
{
pNamespace->m_ownerScope = parent->m_pScope;
pNamespace->m_pScope->m_pParentScope = parent->m_pScope;
parent->m_pScope->m_types.insert(map<String,NamedType*>::value_type(name, pNamespace));
parent->m_pScope->m_namespaces.insert(namespacemap::value_type(name, pNamespace));
}
}