X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=chise.h;h=029a9ebd924bbcb89f8ee4cb9a0a3bc058053b7a;hb=2141c94681ac364d919d55ba1580522fd6f2e17b;hp=76713f83a5d65581cad5a262c6540981064cc2c3;hpb=3de6628b64f9935373654e9dc3f1f1715a30ca02;p=chise%2Flibchise.git diff --git a/chise.h b/chise.h index 76713f8..029a9eb 100644 --- a/chise.h +++ b/chise.h @@ -4,6 +4,8 @@ #include #include +extern const unsigned char chise_db_dir[]; + typedef enum CHISE_DS_Type { CHISE_DS_NONE, @@ -13,11 +15,16 @@ typedef enum CHISE_DS_Type typedef struct CHISE_DS CHISE_DS; CHISE_DS* -CHISE_DS_open (CHISE_DS_Type type, char *location, +CHISE_DS_open (CHISE_DS_Type type, const unsigned char *location, DBTYPE subtype, int modemask); int CHISE_DS_close (CHISE_DS *ds); +int +chise_ds_foreach_char_feature_name (CHISE_DS *ds, + int (*func) (CHISE_DS *ds, + unsigned char *name)); + typedef int CHISE_Char_ID; @@ -47,29 +54,54 @@ typedef struct CHISE_Feature_Table CHISE_Feature_Table; typedef CHISE_Feature_Table* CHISE_Feature; CHISE_Feature -chise_ds_get_feature (CHISE_DS *ds, const unsigned char *feature); +chise_ds_get_feature (CHISE_DS *ds, const unsigned char *name); + +static inline int +chise_ds_load_char_feature_value (CHISE_DS *ds, + CHISE_Char_ID cid, + const unsigned char *name, + CHISE_Value *valdatum); + +int chise_feature_setup_db (CHISE_Feature feature, int writable); + +int chise_feature_sync (CHISE_Feature feature); + +int chise_char_set_feature_value (CHISE_Char_ID cid, + CHISE_Feature feature, + unsigned char *value); int chise_char_load_feature_value (CHISE_Char_ID cid, CHISE_Feature feature, CHISE_Value *valdatum); +static inline int +chise_ds_load_char_feature_value (CHISE_DS *ds, + CHISE_Char_ID cid, + const unsigned char *name, + CHISE_Value *valdatum) +{ + return + chise_char_load_feature_value (cid, chise_ds_get_feature (ds, name), + valdatum); +} + unsigned char* chise_char_gets_feature_value (CHISE_Char_ID cid, CHISE_Feature feature, unsigned char *dst, size_t size); int -chise_char_feature_value_iterate (CHISE_Feature feature, - int (*func) (CHISE_Char_ID cid, - CHISE_Feature feature, - CHISE_Value *valdatum)); +chise_feature_foreach_char_with_value (CHISE_Feature feature, + int (*func) (CHISE_Char_ID cid, + CHISE_Feature feature, + CHISE_Value *valdatum)); #if 0 int -chise_char_feature_str_iterate (CHISE_Feature feature, - int (*func) (CHISE_Char_ID cid, - CHISE_Feature feature, - unsigned char *str)); +chise_feature_foreach_char_with_str (CHISE_Feature feature, + int (*func) (CHISE_Char_ID cid, + CHISE_Feature feature, + unsigned char *str)); #endif @@ -77,17 +109,27 @@ typedef struct CHISE_CCS_Table CHISE_CCS_Table; typedef CHISE_CCS_Table* CHISE_CCS; CHISE_CCS -chise_ds_get_ccs (CHISE_DS *ds, const unsigned char *ccs); +chise_ds_get_ccs (CHISE_DS *ds, const unsigned char *name); -CHISE_Char_ID +static inline CHISE_Char_ID chise_ds_decode_char (CHISE_DS *ds, const unsigned char *ccs, int code_point); -CHISE_Char_ID chise_ccs_decode (CHISE_CCS ccs, int code_point); +int chise_ccs_setup_db (CHISE_CCS ccs, int writable); + +int chise_ccs_sync (CHISE_CCS ccs); int chise_ccs_set_decoded_char (CHISE_CCS ccs, int code_point, CHISE_Char_ID cid); -int chise_ccs_sync (CHISE_CCS ccs); +CHISE_Char_ID chise_ccs_decode (CHISE_CCS ccs, int code_point); + +static inline CHISE_Char_ID +chise_ds_decode_char (CHISE_DS *ds, + const unsigned char *name, int code_point) +{ + return + chise_ccs_decode (chise_ds_get_ccs (ds, name), code_point); +} #endif /* !_CHISE_H */