#ifndef		__GG_SHMCOM_H
#define		__GG_SHMCOM_H
#include	<sys/types.h>
#include	<errno.h>

#include	"GG_DEF.h"
#include	"sharedmemory_cls.h"
#include	"compatible_class.h"
#include	"compatible_function.h"
#include	"GG_MsgOut.h"

#define		GG_SHM0001_LOGPATH			"./GG_SHM0001_%Y%m%d.log"
#define		GG_SHM0001_AllData			"AllDataOutput"
#define		GG_SHM0001_AllDtBack		"AllDataOutput-back"
#define		GG_SHM0001_MaxThread		100
#define		GG_SHM0001_MaxPrmNum		44
#define		GG_SHM0001_MaxPrmLen		256
/* 検索条件数(上限数+1)  */
#define		GG_SHM0001_MaxCond			21
#define		GG_SHM0001_MaxCondLen		768
#define		GG_SHM0001_MaxLeftLen		256
#define		GG_SHM0001_MaxRightLen		256
#define		GG_SHM0001_MaxRetDataLen	3072000

#define		GG_SHM0011_LOGPATH			"./GG_SHM0011_%Y%m%d.log"

#define		GG_SHM1000_LOGPATH			"./GG_SHM1000_%Y%m%d.log"
#define		GG_SHM1000_XMLPATH			"../ptn"
#define		GG_SHM1000_TBLDEF			"../ptn/Table.def"

#define		MAX_ROWS					1000
#define		MAX_COLUMNS					100
#define		MAX_COLSIZE					768
#define		MAX_PATTERNSZ				2048
#define		STR_NULL					""
#define     PARM_STARTPOS				6
#define     PARM_FULLSCAN				"000000000000"
#define     SP_REP						0x1f
#define     LOG_LEN						1024000


#define		GG_SHM1001_LOGPATH			"./GG_SHM1001_%Y%m%d.log"
#define     GG_SHM1001_MEMORYID 		800000
#define     GG_SHM1001_MEMORYSZ			1024000
#define     GG_SHM1001_SHMIDNUM			100

#define		GG_SHM1002_SHMDEF			"../ptn/ShmMng.def"

/* エラーコード一覧（参考）
 -1 テーブルID不正エラー（パラメータエラー）
 -2 アクセスパターン名不正エラー（パラメータエラー）
 -3 数値比較項目に数字以外が設定された（パラメータエラー）
 -4 検索項目名不正エラー（パラメータエラー）
 -5 比較演算子不正エラー（内部エラー）
 -6 メモリ確保エラー（内部エラー）
-10 共有メモリ取得エラー
-11 初期化スレッド失敗（内部エラー）
-12 テーブルID不正エラー（パラメータエラー）
-13 共有メモリ論理エラー（内部エラー）
*/

typedef struct ThreadMngType
{
	pid_t	tid			;
	long	szOut		;
	char	*arrOut		;
} ST_ThreadMng ;

typedef struct ShmDefType
{
	char	ShmName[32]	;
	long	ShmFlg		;
	key_t	ShmID_A		;
	key_t	ShmID_B		;
	long	ShmLength	;
} ST_ShmDef ;

typedef struct TblShmMngType
{
	long	ShmFlg		;
	long	TblNum_A	;
	long	TblNum_B	;
} ST_TblShmMng ;

typedef struct TblShmDefType
{
	char	TblId[48]	;
	char	ShmName[32]	;
} ST_TblShmDef ;

typedef struct TblDefType
{
	char	TblNo[8]	;
	char	TblId[48]	;
	char	AcType[24]	;
	char	TextName[256]	;
	char	XmlFileName[256]	;
	char	TblName[48]	;
	long	TblDataPos	;
	long	TblDataLen	;
	long	TblColPos	;
	long	TblColNum	;
	long	TblPtnPos	;
	long	TblPtnNum	;
} ST_TblDef ;

typedef struct ColumnDefType
{
	char	ColumnName[256]	;
	long	ColumnSize	;
} ST_ColumnDef ;

#ifndef WIN32
extern "C"
#endif
char*	GG_SHM1100 ( char *filename ) ;
int		GG_SHM1002 ( char ShmMng_ID[][32], int iShmId_A_ID[], int iShmId_B_ID[], int iShmId_Len[] ) ;
int		GG_SHM1003 ( char *inWhere , char *outWhere ) ;

#endif
