]> mj.ucw.cz Git - libucw.git/commitdiff
More changes to the custom attribute mechanism:
authorMartin Mares <mj@ucw.cz>
Mon, 24 Mar 2003 18:24:37 +0000 (18:24 +0000)
committerMartin Mares <mj@ucw.cz>
Mon, 24 Mar 2003 18:24:37 +0000 (18:24 +0000)
o  Introduced the concept of extended attributes which consist of the
   custom attributes and some internally defined attributes handled
   in the same way.
o  FILETYPE and LANG are now extended attributes and they don't depend
   on the customization module. This is probably much cleaner as it
   reduces the overlap between custom parts and generic parts.
o  No problems with linking liblang because of LANG attribute.
o  idxdump got simplified.

lib/index.h

index c514877824fee2d6af6bceb309c2feecce40028e..f8c5e193549605247a362afd82e7baee5539ddde 100644 (file)
@@ -67,16 +67,34 @@ enum card_flag {
 
 /*
  *  We store document type and several other properties in card_attr->type_flags.
- *  Here we define only the basic structure, the details and also how to match the
- *  types are defined in custom.h.
+ *  Here we define only the basic structure, the details are defined in custom.h
+ *  (the list of type names custom_file_type_names[] and also setting of the file
+ *  types in custom_create_attrs()).
  *
  *  bits 7--5  file type: (0-3: text types, 4-7: other types, defined by custom.h)
  *  bits 4--0  type-dependent information, for text types it's document language code
  */
 
+#ifdef CONFIG_FILETYPE
 #define CA_GET_FILE_TYPE(a) ((a)->type_flags >> 5)
 #define CA_GET_FILE_INFO(a) ((a)->type_flags & 0x1f)
 #define CA_GET_FILE_LANG(a) ((a)->type_flags & 0x80 ? 0 : CA_GET_FILE_INFO(a))
+#define FILETYPE_ATTRS SMALL_SET_ATTR(ftype, FILETYPE, CA_GET_FILE_TYPE, ext_ft_parse)
+byte *ext_ft_parse(u32 *dest, byte *value, uns intval);
+extern byte *custom_file_type_names[8];
+#else
+#define FILETYPE_ATTRS
+#endif
+
+#ifdef CONFIG_LANG
+/* You can use language matching without CONFIG_FILETYPE, but you have to define CA_GET_FILE_LANG yourself. */
+#define LANG_ATTRS SMALL_SET_ATTR(lang, LANG, CA_GET_FILE_LANG, ext_lang_parse)
+byte *ext_lang_parse(u32 *dest, byte *value, uns intval);
+#else
+#define LANG_ATTRS
+#endif
+
+#define EXTENDED_ATTRS CUSTOM_ATTRS FILETYPE_ATTRS LANG_ATTRS
 
 /* String fingerprints */