파라믹스에서 미리 정의된 구조체들이 다음과 같이 있습니다.
NODE, LINK, ZONE, VEHICLE, BUSSTOP, DETECTOR, CARPARK, BEACON, LOOP, SLIP, RAMP
위 구조체들은 내부 필드들도 공개되어 있지 않아서, qpg_xxx 함수를 이용하여 원하는 값들을 얻어야 하는 불편함이 있습니다. 그래서 파라믹스에서는 기본 제공 구조체에 개발자가 원하는 데이터를 추가하는 방법을 제공하고 있습니다.
사용자 데이터 얻기 : XXX_USERDATA *qpg_XXX_userdata(XXX *pointer);
사용자 데이터 할당 : void qps_XXX_userdata(XXX *pointer, XXX_USERDATA *userdata);
Vehicle을 예를 들면, VEHICLE 구조체를 확장한 사용자 정의 구조체를 VHC_USERDATA를 사용하게 됩니다.
Vehicle 사용자 데이터 얻기 : VHC_USERDATA *qpg_VHC_userdata(VEHICLE *pointer);
Vehicle 사용자 데이터 할당 : void qps_VHC_userdata(VEHICLE *pointer, VHC_USERDATA *userdata);
여기서 의문은 VHC_USERDATA 는 어떻게 정의해야 하는 것인가이죠...
의외로 이 부분은 단순합니다. 파라믹스의 api_typedefs.h에서 아래와 같이 미리 정의되어 있습니다.
typedef struct NET_USERDATA_s NET_USERDATA;
typedef struct NDE_USERDATA_s NDE_USERDATA;
typedef struct LNK_USERDATA_s LNK_USERDATA;
typedef struct ZNE_USERDATA_s ZNE_USERDATA;
typedef struct VHC_USERDATA_s VHC_USERDATA;
typedef struct DTC_USERDATA_s DTC_USERDATA;
typedef struct DTL_USERDATA_s DTL_USERDATA;
typedef struct BCN_USERDATA_s BCN_USERDATA;
typedef struct BST_USERDATA_s BST_USERDATA;
typedef struct BSR_USERDATA_s BSR_USERDATA;
typedef struct CPK_USERDATA_s CPK_USERDATA;
typedef struct RMP_USERDATA_s RMP_USERDATA;
typedef struct SLP_USERDATA_s SLP_USERDATA;
개발자는 VHC_USERDATA_s 를 정의하고, 이 포인터를 넘겨주면 됩니다. 예를 들면, 다음과 같습니다.
// Vehicle user data structure
typedef struct VHC_USERDATA_s
{
int VHCID;
Bool equipped; // Bool = int, yes: 1, no: 0
float ReleaseTime;
float EntryTime;
float AccumulatedTime;
int ChoiceRoute;
struct VHC_INCDB_s *incdb;
} VHC_USERDATA;
특정 Vehicle에 사용자 데이터를 할당하려면 다음과 같이 하면 되겠습니다.
VHC_USERDATA *pVHCUserData;
pVHCUserData = calloc(1, sizeof(VHC_USERDATA) );
qpg_VHC_userdata(vehicle, pVHCUserData);
특정 Vehicle에 할당되어 있는 사용자 데이터를 얻으려면 다음과 같이 하면 되겠습니다.
VHC_USERDATA *pVHCUserData;
pVHCUserData = qpg_VHC_userdata(vehicle);
NODE, LINK, ZONE, VEHICLE, BUSSTOP, DETECTOR, CARPARK, BEACON, LOOP, SLIP, RAMP
위 구조체들은 내부 필드들도 공개되어 있지 않아서, qpg_xxx 함수를 이용하여 원하는 값들을 얻어야 하는 불편함이 있습니다. 그래서 파라믹스에서는 기본 제공 구조체에 개발자가 원하는 데이터를 추가하는 방법을 제공하고 있습니다.
사용자 데이터 얻기 : XXX_USERDATA *qpg_XXX_userdata(XXX *pointer);
사용자 데이터 할당 : void qps_XXX_userdata(XXX *pointer, XXX_USERDATA *userdata);
Vehicle을 예를 들면, VEHICLE 구조체를 확장한 사용자 정의 구조체를 VHC_USERDATA를 사용하게 됩니다.
Vehicle 사용자 데이터 얻기 : VHC_USERDATA *qpg_VHC_userdata(VEHICLE *pointer);
Vehicle 사용자 데이터 할당 : void qps_VHC_userdata(VEHICLE *pointer, VHC_USERDATA *userdata);
여기서 의문은 VHC_USERDATA 는 어떻게 정의해야 하는 것인가이죠...
의외로 이 부분은 단순합니다. 파라믹스의 api_typedefs.h에서 아래와 같이 미리 정의되어 있습니다.
typedef struct NET_USERDATA_s NET_USERDATA;
typedef struct NDE_USERDATA_s NDE_USERDATA;
typedef struct LNK_USERDATA_s LNK_USERDATA;
typedef struct ZNE_USERDATA_s ZNE_USERDATA;
typedef struct VHC_USERDATA_s VHC_USERDATA;
typedef struct DTC_USERDATA_s DTC_USERDATA;
typedef struct DTL_USERDATA_s DTL_USERDATA;
typedef struct BCN_USERDATA_s BCN_USERDATA;
typedef struct BST_USERDATA_s BST_USERDATA;
typedef struct BSR_USERDATA_s BSR_USERDATA;
typedef struct CPK_USERDATA_s CPK_USERDATA;
typedef struct RMP_USERDATA_s RMP_USERDATA;
typedef struct SLP_USERDATA_s SLP_USERDATA;
개발자는 VHC_USERDATA_s 를 정의하고, 이 포인터를 넘겨주면 됩니다. 예를 들면, 다음과 같습니다.
// Vehicle user data structure
typedef struct VHC_USERDATA_s
{
int VHCID;
Bool equipped; // Bool = int, yes: 1, no: 0
float ReleaseTime;
float EntryTime;
float AccumulatedTime;
int ChoiceRoute;
struct VHC_INCDB_s *incdb;
} VHC_USERDATA;
특정 Vehicle에 사용자 데이터를 할당하려면 다음과 같이 하면 되겠습니다.
VHC_USERDATA *pVHCUserData;
pVHCUserData = calloc(1, sizeof(VHC_USERDATA) );
qpg_VHC_userdata(vehicle, pVHCUserData);
특정 Vehicle에 할당되어 있는 사용자 데이터를 얻으려면 다음과 같이 하면 되겠습니다.
VHC_USERDATA *pVHCUserData;
pVHCUserData = qpg_VHC_userdata(vehicle);
728x90
반응형
'프로그래밍 > C,C++' 카테고리의 다른 글
[Mingw] How to build wxFreeChart with wxWidgets(2.9.4) (0) | 2013.07.15 |
---|---|
[Mingw] How to build wxWidgets. (0) | 2013.07.12 |
[wxWidgets] wxTreeCtrl에서 File Drag & Drop 처리 (0) | 2012.06.08 |
[wxWidgets] wxFileConfig 를 이용 INI 파일로부터 섹션의 모든 항목들 읽기 (0) | 2012.05.24 |
[CLI] Windows Form 소스인데, 폼 디자이너가 보이지 않는 문제 (0) | 2011.12.14 |