which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@976 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			225 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/* d4tag.c   (c)Copyright Sequiter Software Inc., 1990-1994.  All rights reserved. */
 | 
						|
 | 
						|
#include "d4all.h"
 | 
						|
#ifndef S4UNIX
 | 
						|
#ifdef __TURBOC__
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
TAG4 *S4FUNCTION d4tag( DATA4 *d4, char *tag_name )
 | 
						|
{
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
  char tag_lookup[11] ;
 | 
						|
  TAG4 *tag_on ;
 | 
						|
 | 
						|
#ifdef S4VBASIC
 | 
						|
  if ( c4parm_check( d4, 2, E4_D4TAG ) )
 | 
						|
    return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4 == 0 || tag_name == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG ) ;
 | 
						|
#else
 | 
						|
  return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  u4ncpy( tag_lookup, tag_name, sizeof( tag_lookup ) ) ;
 | 
						|
  c4upper( tag_lookup ) ;
 | 
						|
 | 
						|
  for( tag_on = 0 ;; )
 | 
						|
  {
 | 
						|
    tag_on = d4tag_next( d4, tag_on ) ;
 | 
						|
    if ( tag_on == 0 )
 | 
						|
      break ;
 | 
						|
    if ( strcmp( tag_on->alias, tag_lookup ) == 0 )
 | 
						|
      return tag_on ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4->code_base->tag_name_error )
 | 
						|
    e4( d4->code_base, e4tag_name, tag_name ) ;
 | 
						|
#endif
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
TAG4 *S4FUNCTION d4tag_default( DATA4 *d4 )
 | 
						|
{
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
  TAG4 *tag ;
 | 
						|
  INDEX4 *index ;
 | 
						|
 | 
						|
#ifdef S4VBASIC
 | 
						|
  if ( c4parm_check( d4, 2, E4_D4TAG_DEF ) )
 | 
						|
    return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4 == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG_DEF ) ;
 | 
						|
#else
 | 
						|
  return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  tag = d4tag_selected( d4 ) ;
 | 
						|
  if ( tag )
 | 
						|
    return tag ;
 | 
						|
 | 
						|
  index = (INDEX4 *) l4first( &d4->indexes ) ;
 | 
						|
  if ( index )
 | 
						|
  {
 | 
						|
    tag = (TAG4 *) l4first( &index->tags ) ;
 | 
						|
    if ( tag )
 | 
						|
      return tag ;
 | 
						|
  }
 | 
						|
#endif
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
TAG4 *S4FUNCTION d4tag_next( DATA4 *d4, TAG4 *tag_on )
 | 
						|
{
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  return 0 ;
 | 
						|
#else
 | 
						|
  INDEX4 *i4 ;
 | 
						|
 | 
						|
#ifdef S4VBASIC
 | 
						|
  if ( c4parm_check( d4, 2, E4_D4TAG_NEXT ) )
 | 
						|
    return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4 == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG_NEXT ) ;
 | 
						|
#else
 | 
						|
  return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( tag_on == 0 )
 | 
						|
  {
 | 
						|
    i4 = (INDEX4 *)l4first( &d4->indexes ) ;
 | 
						|
    if ( i4 == 0 )
 | 
						|
      return 0 ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    i4 = tag_on->index ;
 | 
						|
 | 
						|
  tag_on = (TAG4 *)l4next( &i4->tags, tag_on ) ;
 | 
						|
  if ( tag_on )
 | 
						|
    return tag_on ;
 | 
						|
 | 
						|
  i4 = (INDEX4 *)l4next( &d4->indexes, i4 ) ;
 | 
						|
  if ( i4 == 0 )
 | 
						|
    return 0 ;
 | 
						|
 | 
						|
  return (TAG4 *)l4first( &i4->tags ) ;
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
TAG4 *S4FUNCTION d4tag_prev( DATA4 *d4, TAG4 *tag_on )
 | 
						|
{
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  return 0 ;
 | 
						|
#else
 | 
						|
  INDEX4 *i4 ;
 | 
						|
 | 
						|
#ifdef S4VBASIC
 | 
						|
  if ( c4parm_check( d4, 2, E4_D4TAG_PREV ) )
 | 
						|
    return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4 == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG_PREV ) ;
 | 
						|
#else
 | 
						|
  return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( tag_on == 0 )
 | 
						|
  {
 | 
						|
    i4 = (INDEX4 *)l4last( &d4->indexes ) ;
 | 
						|
    if ( i4 == 0 )
 | 
						|
      return 0 ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    i4 = tag_on->index ;
 | 
						|
 | 
						|
  tag_on = (TAG4 *)l4prev( &i4->tags, tag_on ) ;
 | 
						|
  if ( tag_on )
 | 
						|
    return tag_on ;
 | 
						|
 | 
						|
  i4 = (INDEX4 *)l4prev( &d4->indexes, i4 ) ;
 | 
						|
  if ( i4 == 0 )
 | 
						|
    return 0 ;
 | 
						|
 | 
						|
  return (TAG4 *)l4last( &i4->tags ) ;
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
void S4FUNCTION d4tag_select( DATA4 *d4, TAG4 *t4 )
 | 
						|
{
 | 
						|
#ifdef S4VBASIC
 | 
						|
  if ( c4parm_check( d4, 2, E4_D4TAG_SELECT ) )
 | 
						|
    return ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4 == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG_SELECT ) ;
 | 
						|
#else
 | 
						|
  return ;
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  if ( t4 != 0 )
 | 
						|
    e4( d4->code_base, e4not_index, E4_D4TAG_SELECT ) ;
 | 
						|
#else
 | 
						|
#ifdef S4DEBUG
 | 
						|
  if ( t4 )
 | 
						|
    if ( t4->index->data != d4 )
 | 
						|
      e4severe( e4parm, E4_D4TAG_SELECT ) ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( t4 == 0 )
 | 
						|
    d4->indexes.selected = 0 ;
 | 
						|
  else
 | 
						|
  {
 | 
						|
    d4->indexes.selected = (void *) t4->index ;
 | 
						|
    t4->index->tags.selected = (void *)t4 ;
 | 
						|
  }
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
TAG4 *S4FUNCTION d4tag_selected( DATA4 *d4 )
 | 
						|
{
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
  INDEX4 *index ;
 | 
						|
  TAG4 *tag ;
 | 
						|
 | 
						|
  if ( d4 == 0 )
 | 
						|
#ifdef S4DEBUG
 | 
						|
    e4severe( e4parm, E4_D4TAG_SELECTED ) ;
 | 
						|
#else
 | 
						|
  return 0 ;
 | 
						|
#endif
 | 
						|
 | 
						|
  index = (INDEX4 *)d4->indexes.selected ;
 | 
						|
  if ( index )
 | 
						|
  {
 | 
						|
    tag = (TAG4 *)index->tags.selected ;
 | 
						|
    if ( tag )
 | 
						|
      return tag ;
 | 
						|
  }
 | 
						|
#endif
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
#ifdef S4VB_DOS
 | 
						|
 | 
						|
TAG4 *d4tag_v( DATA4 *d4, char *name )
 | 
						|
{
 | 
						|
  return d4tag( d4, c4str(name) ) ;
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |