webtangle : output

Output the block to the stream.

Any other method of any other object can call this method. This is called 'public' access.

The data-type returned is "voidtype";

This method is contained in the object "webtangle".

The method takes the following arguments:

filedef : Pointer to tgl_structure_parser

Not sure.

obj : Pointer to @schemaobj

Not sure.

This method is overridden from an abstract method with the same signature found in the object @block.

Implementations

C++

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

The files "tgl_structure_parser.hpp", "schema/schema_implementation.hpp", "schema/schema_web.hpp", "schema/schema_websection.hpp" and "schema/schema_attribute.hpp" are included.

Loop over all sections finding "root" and output it. If the entire web has a language, then don't bother with language declarations on each source block.

	// get the web for the current object for the right language and output it.
	xmlobj_typed_vector<schema_implementation> *implementations = 
		dynamic_cast<xmlobj_typed_vector<schema_implementation> *>(
			obj->get_composite_object("implementations"));
	if (!implementations)
	{
		filedef->error("No composite member 'implementations'.");
		return;
	}
			
	for (xmlobj_typed_vector<schema_implementation>::iterator i=implementations->begin();
		i != implementations->end(); i++)
	{
		schema_web *web = dynamic_cast<schema_web *>(&*i);
		if (!web)
			continue;
			
		std::string language = web->get("language");
		if (language != "" && language != _language)
			continue;
			
		xmlobj_typed_vector<schema_attribute> *attributes = 
			dynamic_cast<xmlobj_typed_vector<schema_attribute> *>(
				web->get_composite_object("attributes"));
		if (!attributes)
		{
			filedef->error("No composite member 'attributes'.");
			return;
		}
		if (attributes->count() == 1)
		{
			if (_attributes != "[]")
			{
				std::string a = "[" + attributes->begin()->name() + "]";
				if (_attributes != a)
					continue;
			}
		}
		else if (attributes->count() > 0)
		{
			filedef->error("Only supporting a single attribute. Write the code for more than 1.");
			return;
		}
		
		xmlobj_typed_vector<schema_websection> *sections = 
			dynamic_cast<xmlobj_typed_vector<schema_websection> *>(
				web->get_composite_object("sections"));
		if (!sections)
		{
			filedef->error("No composite member 'sections'.");
			return;
		}
		for (xmlobj_typed_vector<schema_websection>::iterator j=sections->begin();
			j != sections->end(); j++)
		{
			if (j->name() == "root")
			{
				if (!write_section(filedef, web, &*j))
					return;
			}
		}			
	}

Generated: Wed Apr 5 23:58:56 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.