includes : collect_typename

Add in any includes from the typename passed.

Only other methods of this same object can call this method. This is called 'private' access.

The data-type returned is "booltype"; Returns true if successful.

This method is contained in the object "includes".

The method takes the following arguments:

filedef : Pointer to tgl_structure_parser

Not sure.

obj : Pointer to @schemaobj

Not sure.

tn : Read-only reference to @typename

The typename to add.

includes : stringsetptrtype

The include set to add to.

C++

The namespaces "ph::tools::schema" and "ph::xmlobj" are used.

The files "../cppxmlobj/reflect/jscript_object_navigator.hpp", "schema/schema_typeimpl.hpp" and "tgl_tablecol.hpp" are included.

Collect includes for a particular typename.

	if (tn.type() == "ptrtypename")
	{
		// TBD: deal with these correctly. They need to correctly look at the ptr type
		// to pull in the correct include.
		return true;
	}
	if (tn.type() == "enumtypename")
	{
		{Process enum}

	}
	else
	{
		{Find type implementation}

	}	
	return true;

1 Process the include for an enumeration. We need to handle language specifics here rather than hard coding .hpp. This only applies to the C++ language.

{Process enum} ≡

	if (_language == "C++")
	{
		std::string e = tn.get("enumeration");
		xmlobj *f = obj->root()->find(e);
		if (!f)
		{
			filedef->error("Could not find enumeration object [" + e + "].");
			return false;
		}
		includes->insert("\\"" + f->get("classname") + ".hpp\\"");
	}

2 Seatch back to find typeimpl which matches the name of this type, and for the language we are implementing.

{Find type implementation} ≡

	schema_typeimpl *typeimpl = find_typeimpl(obj, tn.type(), _language);
	if (typeimpl)
	{
		std::string include = typeimpl->get("include");
		if (include != "")
			includes->insert(include);
	}
	else
	{
		filedef->error("Could not find " + _language + " type implementation for '" + tn.type() + "'.");
		return false;
	}

Generated: Wed Apr 5 23:55:49 EST 2006 using "xsltproc ... docbook.xsl". Copyright (c) 2003, 2004, 2005; Paul Hamilton; pHamtec P/L. Use, modification, and distribution is provided free of any limitations.