00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef READTAGS_H
00022 #define READTAGS_H
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027
00028
00029
00030
00031
00033 typedef enum {
00034 TAG_UNSORTED, TAG_SORTED, TAG_FOLDSORTED
00035 } sortType ;
00036
00037
00038 #define TAG_FULLMATCH 0x0
00039 #define TAG_PARTIALMATCH 0x1
00040
00041 #define TAG_OBSERVECASE 0x0
00042 #define TAG_IGNORECASE 0x2
00043
00044
00045
00046
00047
00048 typedef enum { TagFailure = 0, TagSuccess = 1 } tagResult;
00049
00050 struct sTagFile;
00051
00052 typedef struct sTagFile tagFile;
00053
00055 typedef struct {
00056
00057 struct {
00058
00059 int opened;
00060
00061
00062 int error_number;
00063 }status;
00064
00065
00066 struct {
00067
00068 short format;
00069
00070
00071 sortType sort;
00072 } file;
00073
00074
00075
00076 struct {
00077
00078 const char *author;
00079
00080
00081 const char *name;
00082
00083
00084 const char *url;
00085
00086
00087 const char *version;
00088 } program;
00089
00090 } tagFileInfo;
00091
00095 typedef struct {
00096
00098 const char *key;
00099
00101 const char *value;
00102
00103 } tagExtensionField;
00104
00106 typedef struct {
00107
00109 const char *name;
00110
00112 const char *file;
00113
00115 struct {
00118 const char *pattern;
00119
00122 unsigned long lineNumber;
00123 } address;
00124
00126 const char *kind;
00127
00129 short fileScope;
00130
00132 struct {
00134 unsigned short count;
00135
00137 tagExtensionField *list;
00138 } fields;
00139
00140 } tagEntry;
00141
00142
00143
00144
00145
00146
00158 extern tagFile *tagsOpen (const char *const filePath, tagFileInfo *const info);
00159
00173 extern tagResult tagsSetSortType (tagFile *const file, const sortType type);
00174
00182 extern tagResult tagsFirst (tagFile *const file, tagEntry *const entry);
00183
00192 extern tagResult tagsNext (tagFile *const file, tagEntry *const entry);
00193
00201 extern const char *tagsField (const tagEntry *const entry, const char *const key);
00202
00228 extern tagResult tagsFind (tagFile *const file, tagEntry *const entry, const char *const name, const int options);
00229
00237 extern tagResult tagsFindNext (tagFile *const file, tagEntry *const entry);
00238
00244 extern tagResult tagsClose (tagFile *const file);
00245
00246 #ifdef __cplusplus
00247 };
00248 #endif
00249
00250 #endif
00251
00252