- โครงสร้างของ WcDictIter
typedef struct wc_dict_iter_t {
WcDict* dict; /* ตัวชี้ไปยังพจนานุกรม */
wc_uint32 p,i;
int i_state;
wc_boolean terminator;
WcDictIterStatus status;
#ifdef WC_ITER_EXTRA_INFO
WcNodeType type;
#endif
} WcDictIter;
- ค่าคงที่ของคลาส WcDictIter
- ค่าคงที่สำหรับแสดงสถานของตัวเลื่อน
- ค่าคงที่ WC_DICT_ITER_ACTIVE ใช้แสดงสถานะว่าตัวเลื่อนยังอยู่ในปมของทรัยมีค่าเท่ากับ 0
- ค่าคงที่ WC_DICT_ITER_DEAD ใช้แสดงสถานะว่าตัวเลื่อนไม่อยู่ในปมของทรัยแล้วมีค่าเท่ากับ 1
- ค่าคงที่สำหรับแสดงสถานะการใช้งานของตัวชี้ในกรณีที่มีการบีบอัดอุปสรรค
- ค่าคงที่ WC_DICT_ITER_I_RESET มีค่าเท่า 0 แสดงการเริ่มต้นใหม่
- ค่าคงที่ WC_DICT_ITER_I_INUSE 1 มีค่าเท่ากับ 1 แสดงการใช้งาน
- ค่าคง!ที่สำหรับแสดงแบบชนิดของข้อมูลในพจนานุกรมที่ตำแหน่งที่ตำเลื่อนอยู่
- ค่าคงที่ WC_NODE_TYPE_SEQ มีค่าเท่ากับ 0 แทนแบบชนิดที่มีการบีบอัดอุปสรรค
- ค่าคงที่ WC_NODE_TYPE_BIN มีค่าเท่ากับ 1 แทนแบบชนิดการเก็บข้อมูลในทรับปกติมีการค้นหาแบบทวิภาค
- ค่าคงที่ WC_NODE_TYPE_POS มีค่าเท่ากับ 2 แทนแบบชนิดการเก็บข้อมูลที่เป็นชนิดของคำ
- ค่าคงที่ WC_NODE_TYPE_START มีค่าเท่ากับ 3 แทนแบบชนิดจุดเริ่มต้น
- แบบชนิดของคลาส WcDictIter
- แบบชนิด WcDictIterStatus ตรงกับแบบชนิดจำนวนเต็มใช้ร่วมกับค่าคงที่ WC_DICT_ITER_ACTIVE และ WC_DICT_ITER_DEAD
- แบบชนิด WcNodeType ตรงกับแบบชนิดจำนวนเต็มใช้ร่วมกับค่าคงที่ WC_NODE_TYPE_SEQ WC_NODE_TYPE_BIN WC_NODE_TYPE_POS และ WC_NODE_TYPE_START
- การนำวัตถุ WcDictIter มาจาก WcDict
คลาส WcDictIter ไม่มีตัวสร้างที่แยกเป็นเอกเทศหากแต่ให้เมท็อด wc_dict_root ของคลาส WcDict ในการสร้างโดยนำวัตถุ WcDict มาเป็นส่วนประกอบด้วย
void wc_dict_root(WcDict *self,WcDictIter* iter);
- การเลื่อนของวัตถุ WcDictIter
WC_STATUS wc_dict_iter_transit(WcDictIter *self,char ch);
- ตัวอย่างการใช้งานวัตถุ WcDictIter
#include<wordcut/wcdict.h>
int
main ()
{
/* ประกาศตัวแปร */
WcDict *dict;
WcDictIter iter;
wc_boolean flag = WC_TRUE;
char *str = "ทางเท้าเข้าบ้าน";
char *p;
/* การสร้างวัตถุ WcDict */
dict = wc_dict_new ();
/* การอ่านข้อมูลพจนานุกรมเข้าสู่หน่วยความจำ */
wc_dict_load (dict, "../data/dict.etd");
/* การกำหนดค่าตัวเลื่อนให้อยู่ที่ส่วนรากของทรัยที่ใช้
เก็บพจนานุกรม */
wc_dict_root (dict, &iter);
/* ให้ p อยู่ที่จุดเริ่มต้นของสายอักขระ */
p = str;
while (flag && *p != '\0')
{
/* การเลื่อนตัวเลื่อนไปในทางที่มีอักษร *p */
wc_dict_iter_transit (&iter, *p);
/* ตรวจสอบว่ายังเลื่อนไปในทรัยได้ต่อหรือไม่ */
flag = (iter.status == WC_DICT_ITER_ACTIVE);
if (flag)
{
printf ("ตัวอักษร=%c\t\t\tท้ายคำ=%s\n", *p,
/* ตรวจสอบว่าเป็นตัวสุดท้ายของคำหรือไม่ */
(iter.terminator ? "ใช่" : "ไม่ใช่"));
}
/* เลื่อน p ไปตัวถัดไป */
p++;
}
/* การทำลายวัตถุ WcDict */
wc_dict_delete (dict);
return 0;
}