121 lines
3.1 KiB
C
121 lines
3.1 KiB
C
/*------------------------------------------------------------------------------
|
|
FILE : Link.h
|
|
CREATED : 98/05/19
|
|
AUTHOR : Catalin Cocos
|
|
CONTENTS: linktable/position structures & functions
|
|
------------------------------------------------------------------------------*/
|
|
|
|
#ifndef __LDT_LINK__
|
|
#define __LDT_LINK__
|
|
|
|
#include "Hash.h"
|
|
#include "Interface.h"
|
|
#include "File.h"
|
|
|
|
/* Structures
|
|
----------------*/
|
|
|
|
/* section position inside the containing file */
|
|
typedef struct LDT_tdst_Position_ LDT_tdst_Position;
|
|
|
|
struct LDT_tdst_Position_
|
|
{
|
|
char* szName; /* the section name */
|
|
char* szParent; /* the section parent */
|
|
LDT_tdst_CallbackEntry* Type; /* the type of the section */
|
|
|
|
unsigned short uwFlags; /* flags */
|
|
|
|
unsigned long dwPos; /* the offset inside the file */
|
|
unsigned long nLine; /* the text line */
|
|
int iLevel; /*the level in file*/
|
|
};
|
|
|
|
/* Reference Collection for a File */
|
|
|
|
typedef struct LDT_tdst_Refs_ LDT_tdst_Refs;
|
|
|
|
struct LDT_tdst_Refs_
|
|
{
|
|
char* szFile; /* the file */
|
|
LDT_tdst_DSArray Links; /* the references */
|
|
LDT_tdst_Refs* p_NextReferencedFile;/* the next file */
|
|
|
|
#ifdef LDT_MULTITHREADED
|
|
LDT_tdst_MemFile* pFile; /* the opened file */
|
|
#endif
|
|
};
|
|
|
|
|
|
/* Link associated value */
|
|
typedef struct LDT_tdst_LinkValue_ LDT_tdst_LinkValue;
|
|
|
|
struct LDT_tdst_LinkValue_
|
|
{
|
|
LDT_tdst_Link* pLink;
|
|
unsigned long value;
|
|
};
|
|
|
|
/* Globals
|
|
-------------*/
|
|
|
|
extern LDT_tdst_DSHash g_HashLinks; /* the linktable */
|
|
extern LDT_tdst_DSArray g_ArRefs; /* thereferences, grouped by file */
|
|
extern LDT_tdst_DSArray g_ArFilenames; /* thefilename strings */
|
|
|
|
extern char LDT_EMPTY_STR[1];
|
|
|
|
extern LDT_tdst_Refs* g_pFileToProcess; /* the file to load */
|
|
extern LDT_tdst_Refs* g_pLastFileQueued; /* the last fiel referenced */
|
|
#ifdef LDT_MULTITHREADED
|
|
extern LDT_tdst_Refs* g_pFileToRead; /* the file to read */
|
|
#endif
|
|
|
|
/* Functions
|
|
--------------*/
|
|
|
|
/* Link - related */
|
|
|
|
int LDT_Link_Dispersion( LDT_tdst_Link*);
|
|
int LDT_Compare_Links(const void**, const void** );
|
|
int LDT_Compare_LinkValues(const void**, const void** );
|
|
|
|
LDT_tdst_Link* LDT_CreateLinkFromReference( char* szSection );
|
|
|
|
LDT_tdst_Link* LDT_Create_Link( char* szName, /* the section name */
|
|
char* szParent, /* the section parent */
|
|
char* szFile, /* the file containing the section - stored in a string table */
|
|
LDT_tdst_CallbackEntry* Type,
|
|
unsigned long dwFlags, /* flags */
|
|
void* pObject, /* the allocated memory structure or NULL */
|
|
LDT_tdst_Link* pParent); /* the section that requested the loading */
|
|
|
|
void LDT_Delete_Link( LDT_tdst_Link *);
|
|
|
|
/* Position - related */
|
|
|
|
int LDT_Compare_Positions(const void**, const void** );
|
|
|
|
LDT_tdst_Position *LDT_Create_Position( char *szName,
|
|
char *szParent,
|
|
LDT_tdst_CallbackEntry* Type,
|
|
unsigned short uwFlags,
|
|
unsigned long ulPos,
|
|
unsigned long nLine,
|
|
int iLevel );
|
|
void LDT_Delete_Position( LDT_tdst_Position *pos );
|
|
|
|
/* String - related */
|
|
|
|
int LDT_Compare_Strings(const void**, const void** );
|
|
|
|
|
|
/* Reference - related */
|
|
|
|
void AddReference( LDT_tdst_Link* );
|
|
|
|
int LDT_Compare_Refs(const void**, const void** );
|
|
|
|
|
|
#endif
|