1 /* 2 * Copyright © 2010 Marcin Kościelnicki <[email protected]> 3 * All Rights Reserved. 4 * SPDX-License-Identifier: MIT 5 */ 6 7 #ifndef RNNDEC_H 8 #define RNNDEC_H 9 10 #include "rnn.h" 11 #include "colors.h" 12 13 struct rnndecvariant { 14 struct rnnenum *en; 15 int variant; 16 }; 17 18 struct rnndeccontext { 19 struct rnndb *db; 20 struct rnndecvariant **vars; 21 int varsnum; 22 int varsmax; 23 const struct envy_colors *colors; 24 }; 25 26 struct rnndecaddrinfo { 27 struct rnntypeinfo *typeinfo; 28 int width; 29 char *name; 30 }; 31 32 struct rnndeccontext *rnndec_newcontext(struct rnndb *db); 33 int rnndec_varadd(struct rnndeccontext *ctx, char *varset, const char *variant); 34 int rnndec_varmatch(struct rnndeccontext *ctx, struct rnnvarinfo *vi); 35 const char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval); 36 char *rnndec_decodeval(struct rnndeccontext *ctx, struct rnntypeinfo *ti, uint64_t value); 37 int rnndec_checkaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write); 38 struct rnndecaddrinfo *rnndec_decodeaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write); 39 uint64_t rnndec_decodereg(struct rnndeccontext *ctx, struct rnndomain *domain, const char *name); 40 41 #endif 42