a0f5e0898b
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
97 lines
1.8 KiB
C
Executable File
97 lines
1.8 KiB
C
Executable File
/* i4info.c (c)Copyright Sequiter Software Inc., 1990-1994. All rights reserved. */
|
|
|
|
#include "d4all.h"
|
|
#ifndef S4UNIX
|
|
#ifdef __TURBOC__
|
|
#pragma hdrstop
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef S4INDEX_OFF
|
|
|
|
char *S4FUNCTION t4alias( TAG4 *tag )
|
|
{
|
|
return tag->alias ;
|
|
}
|
|
|
|
int S4FUNCTION t4is_descending( TAG4 *tag )
|
|
{
|
|
#ifdef S4NDX
|
|
return 0 ;
|
|
#endif
|
|
#ifdef S4FOX
|
|
if ( tag->header.descending )
|
|
return r4descending ;
|
|
else
|
|
return 0 ;
|
|
#endif
|
|
#ifdef S4CLIPPER
|
|
if ( tag->header.descending )
|
|
return r4descending ;
|
|
else
|
|
return 0 ;
|
|
#endif
|
|
#ifdef S4MDX
|
|
if ( tag->header.type_code & 8 )
|
|
return r4descending ;
|
|
else
|
|
return 0 ;
|
|
#endif
|
|
}
|
|
|
|
int S4FUNCTION t4unique( TAG4 *tag )
|
|
{
|
|
#ifdef S4FOX
|
|
if ( tag->header.type_code & 0x01 )
|
|
return tag->unique_error ;
|
|
#else
|
|
if ( tag->header.unique )
|
|
return tag->unique_error ;
|
|
#endif
|
|
return 0 ;
|
|
}
|
|
|
|
TAG4INFO *S4FUNCTION i4tag_info( INDEX4 *index )
|
|
{
|
|
TAG4INFO *tag_info ;
|
|
TAG4 *tag_on ;
|
|
int num_tags, i ;
|
|
|
|
#ifdef S4DEBUG
|
|
if ( index == 0 )
|
|
e4severe( e4parm, E4_I4TAG_INFO ) ;
|
|
#endif
|
|
|
|
if ( index->code_base->error_code < 0 )
|
|
return 0 ;
|
|
|
|
num_tags = 0 ;
|
|
for( tag_on = 0 ;; )
|
|
{
|
|
tag_on = (TAG4 *)l4next( &index->tags, tag_on ) ;
|
|
if ( tag_on == 0 )
|
|
break ;
|
|
num_tags++ ;
|
|
}
|
|
|
|
if ( index->code_base->error_code < 0 )
|
|
return 0 ;
|
|
tag_info = (TAG4INFO *)u4alloc_free( index->code_base, ( (long)num_tags + 1L ) * sizeof( TAG4INFO ) ) ;
|
|
if ( tag_info == 0 )
|
|
return 0 ;
|
|
|
|
for( tag_on = 0, i = 0 ;; i++ )
|
|
{
|
|
tag_on = (TAG4 *)l4next( &index->tags, tag_on ) ;
|
|
if ( tag_on == 0 )
|
|
return ( tag_info ) ;
|
|
tag_info[i].name = t4alias( tag_on ) ;
|
|
tag_info[i].expression = expr4source( tag_on->expr ) ;
|
|
tag_info[i].filter = expr4source( tag_on->filter ) ;
|
|
tag_info[i].unique = t4unique( tag_on ) ;
|
|
tag_info[i].descending = t4is_descending( tag_on ) ;
|
|
}
|
|
}
|
|
|
|
#endif
|