}
}
+uns
+size_attr(uns len)
+{
+ ASSERT(len <= MAX_ATTR_SIZE);
+ if (use_v33)
+ {
+ len++;
+ return len + utf8_space(len);
+ }
+ else
+ return len + 2;
+}
+
inline byte *
put_attr(byte *ptr, uns type, byte *val, uns len)
{
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
void
obj_dump(struct odes *o)
return a ? a->val : NULL;
}
+uns
+obj_find_anum(struct odes *o, uns x, uns def)
+{
+ struct oattr *a = obj_find_attr(o, x);
+ return a ? (uns)atol(a->val) : def;
+}
+
struct oattr *
obj_set_attr(struct odes *o, uns x, byte *v)
{
struct oattr *obj_find_attr_last(struct odes *, uns);
uns obj_del_attr(struct odes *, struct oattr *);
byte *obj_find_aval(struct odes *, uns);
+uns obj_find_anum(struct odes *, uns, uns);
struct oattr *obj_set_attr(struct odes *, uns, byte *);
struct oattr *obj_set_attr_num(struct odes *, uns, uns);
struct oattr *obj_add_attr(struct odes *, uns, byte *);
void attr_set_type(uns type);
+uns size_attr(uns len);
+
byte *put_attr(byte *ptr, uns type, byte *val, uns len);
byte *put_attr_str(byte *ptr, uns type, byte *val);
byte *put_attr_vformat(byte *ptr, uns type, byte *mask, va_list va);