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


C++ Namespace::Write方法代码示例

本文整理汇总了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));
		}
	}
开发者ID:sigurdle,项目名称:FirstProject2,代码行数:67,代码来源:Namespace.cpp


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