#pragma once
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
//#include <io.h>
#include <time.h>
#include <string>
#include <vector>
#include<algorithm>
#include <epm/epm.h>
#include <epm/epm_toolkit_tc_utils.h>
#include <ict/ict_userservice.h>
#include <tccore/item.h>
#include <ae/ae.h>
#include <tc/folder.h>
#include <tccore/aom.h>
#include <sa/sa.h>
#include <tccore/aom_prop.h>
#include <property/prop_errors.h>
#include <tccore/workspaceobject.h>
#include <tc/preferences.h>
#include <tccore//grm.h>
#include <tccore/grmtype.h>
#include <sa/am.h>
#include <cfm/cfm.h>
#include <bom/bom.h>
#include <tccore/uom.h>
#include <ps/ps.h>
#include <epm/signoff.h>
#include <fclasses/tc_date.h>
#include <objbase.h>
using namespace std;
//#include <tccore/imantype.h>
//#include <textsrv/textserver.h>
//#include <user_exits/epm_toolkit_utils.h>
//#include <ss/ss_errors.h>

//#include <direct.h>
//#include <unistd.h>
#ifdef __cplusplus
extern "C" {
#endif

#define DOFREE(obj)								\
{												\
	if(obj)										\
	{											\
		MEM_free(obj);							\
		obj = NULL;								\
	}											\
}
void ECHO(char* format, ...);
void CreateLogFile(char* FunctionName, char** fullname);
void WriteLog(const char* format, ...);
void CloseLog(void);
string getUUid();
void current_time(date_t* date_tag);
char* getTime();
char* GbkToUtf8(const char* src_str);
char* Utf8ToGbk(const char* src_str);
void starTime();
logical checkIsItemRevision(tag_t objtag);
int checkIsInType(tag_t objtag, string parentType);
int getPrefStrings(const char* preference, vector<string>& pref_vec);
bool isTypeOf(tag_t objtag, const char* type_name);
void Split(string strArg, string spliter, vector<string>& ans);
string dealPre(tag_t attachment, char* item_id, char* form_name, char* deal_type, tag_t classificationObject,char* typePref);
int Supor_create_signinfo_file(char* file_content, char* item_id, char** file_name);
#ifdef __cplusplus
}
#endif