Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
/* $XConsortium: LcfTask.C /main/3 1996/10/26 18:17:58 cde-hal $
*
* (c) Copyright 1996 Digital Equipment Corporation.
* (c) Copyright 1996 Hewlett-Packard Company.
* (c) Copyright 1996 International Business Machines Corp.
* (c) Copyright 1996 Sun Microsystems, Inc.
* (c) Copyright 1996 Novell, Inc.
* (c) Copyright 1996 FUJITSU LIMITED.
* (c) Copyright 1996 Hitachi.
*/
/* exported interfaces */
#include "LcfTask.h"
/* imported interfaces */
#include <assert.h>
#include "Token.h"
#include "NodeTask.h"
#include "DataBase.h"
#include "OL-Data.h"
#include "OLAF.h"
#include "BookTasks.h"
#include "BookCaseDB.h"
//--------------------------------------------------------------------
LcfTask::LcfTask( NodeTask *f_parent, const Token &t )
{
assert( f_parent != NULL );
f_node = f_parent;
f_base = t.level();
}
//--------------------------------------------------------------------
void
LcfTask::markup( const Token &t )
{
ComplexTask::markup(t);
if ( t.type() == START ) {
if ( t.LookupAttr( OLAF::OL_id ) ) {
OL_Data *LocData = new OL_Data ( t, OLAF::OL_id, REMOVE_SPACES );
/*
* Add subtask only if I know Data will be available
*/
if ( LocData->DataWillBeAvailable() ) {
addSubTask( LocData );
OL_Data *RefData = new OL_Data(t, OLAF::OL_XRefLabel, IGNORE_ON);
addSubTask( RefData );
}
else { delete LocData; }
}
}
else if ( t.type() == END ) {
/* only write out all the locator if I am at the end f_node */
if ( t.level() == f_base ) {
write_record();
reset();
}
}
}
//--------------------------------------------------------------------
void
LcfTask::reset()
{
ComplexTask::removeAllSubTasks();
}
//--------------------------------------------------------------------
void
LcfTask::write_record()
{
const char *NodeLocator = f_node->locator();
#if 0
for ( int i = 0; i < ComplexTask::used; i++ ) {
OL_Data *task = (OL_Data * )subtask(i);
if ( !task->ContentIsEmpty() ) {
DBTable *tbl = f_node->book()->bookcase()->table(BookCaseDB::Locator);
tbl->insert( STRING_CODE, task->content(),
STRING_CODE, NodeLocator,
STRING_CODE, task->filename(),
INTEGER_CODE, task->line_no(),
NULL);
}
}
#else
for ( int i = 0; i < ComplexTask::used; i+=2 ) {
OL_Data* task = (OL_Data * )subtask(i);
OL_Data* reftask = (OL_Data * )subtask(i+1);
if ( !task->ContentIsEmpty() ) {
DBTable *tbl = f_node->book()->bookcase()->table(BookCaseDB::Locator);
const char* reflabel = "";
if ( !reftask->ContentIsEmpty() ) {
const char* content = reftask->content();
if (strlen(content) < 256)
reflabel = content;
}
tbl->insert( STRING_CODE, task->content(),
STRING_CODE, NodeLocator,
STRING_CODE, reflabel,
STRING_CODE, task->filename(),
INTEGER_CODE, task->line_no(),
NULL);
}
}
#endif
}