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