blob: 5c331c34af40106cee35bbc6b6a83d20d90a887e [file] [log] [blame]
Damien George55baff42014-01-21 21:40:13 +00001// See qstrraw.h for a list of qstr's that are available as constants.
2// Reference them as MP_QSTR_xxxx.
3//
4// Note: it would be possible to define MP_QSTR_xxx as qstr_from_str_static("xxx")
5// for qstrs that are referenced this way, but you don't want to have them in ROM.
6
7enum {
8 MP_QSTR_NULL = 0, // indicates invalid/no qstr
9 MP_QSTR_ = 1, // the empty qstr
10#define Q(id, str) MP_QSTR_##id,
11// TODO having 'build/py.' here is a bit of a hack, should take config variable from Makefile
12#include "build/py.qstrdefs.generated.h"
13#undef Q
14 MP_QSTR_number_of,
15} category_t;
16
17typedef machine_uint_t qstr;
18
19#define QSTR_FROM_STR_STATIC(s) (qstr_from_strn((s), strlen(s)))
20
21void qstr_init(void);
22
23qstr qstr_from_str(const char *str);
24qstr qstr_from_strn(const char *str, uint len);
25//qstr qstr_from_str_static(const char *str);
26qstr qstr_from_strn_take(char *str, uint alloc_len, uint len);
27//qstr qstr_from_strn_copy(const char *str, int len);
28
29byte* qstr_build_start(uint len, byte **q_ptr);
30qstr qstr_build_end(byte *q_ptr);
31
32machine_uint_t qstr_hash(qstr q);
33const char* qstr_str(qstr q);
34uint qstr_len(qstr q);
35const byte* qstr_data(qstr q, uint *len);