//  Populate a Requirements Module with objects

/*
    Populates the current module with a heading structure and
    text objects. The heading structure is based on a requirements
    specification. Objects are created below these headings in a reralistic
    manner so that the resulting module is representative of a real module.
    
    This function can be run repeatedly to insert more text objects into the
    existing heading structure.
    
    Tony Goodman.
*/

#include 

Module srcModule = null


/******************************************************************************
	addHeaders
	
	Add predefined header structure to the current module if and only if
	the module is empty.
******************************************************************************/
void addHeaders()
{
	Object o = first(srcModule)
	
	if (null o)
	{
		// add headers
		instance srsTemplate
	}
}


/******************************************************************************
	addObjects
	
	Add text objects to the current module.
	Objects are added randomly.
******************************************************************************/
void addObjects()
{
	Object header  = null
	Object o       = null
	Skip   headers = create
	int    numObjs = 0
	int    count   = 0
	int    i       = 0
	int    a       = 0
	
	
	for o in srcModule do
	{
		if (o."Object Heading" "" != "")
		{
			a = o."Absolute Number"
			for (i = 0; i < level(o); i++)
			{
				numObjs++
				put(headers, numObjs, a)
			}
		}
	}
	
	numObjs = numObjs * 5
	
	for (count = 0; count < numObjs; count++)
	{
		i = random(numObjs) + 1
		
		if (find(headers, i, a))
		{
			header = object(a, srcModule)
			
			o = create(below(header))
			
			o."Object Text" = getRandomText()
		}
	}
}


/******************************************************************************
	MAIN
******************************************************************************/
srcModule = current Module

if (null srcModule)
{
	infoBox("No current Module")
	halt
}

hideExplorer(srcModule)

addHeaders()

addObjects()


sitemap