#ifndef WONKY_CONSTANT_H
#define WONKY_CONSTANT_H WONKY_CONSTANT_H
#include <constant.hh>
#include <type.h>
#include <common.h>
#include <automata.h>
#include <ast.h>
struct Constant
{
struct Type *type;
void *value;
};
struct Constant* extract_literal_integer_octal(char *data,size_t data_size,enum Type_Constraint constraint,enum Type_Signedness sign);
struct Constant* extract_literal_integer_dec(char *data,size_t data_size,enum Type_Constraint constraint,enum Type_Signedness sign);
struct Constant* extract_literal_integer_hex(char *data,size_t data_size,enum Type_Constraint constraint,enum Type_Signedness sign);
struct Constant* extract_literal_double_dec(char *data,size_t data_size,enum Type_Constraint constraint);
struct Constant* extract_literal_double_hex(char *data,size_t data_size,enum Type_Constraint constraint);
struct Constant* extract_literal_float_dec(char *data,size_t data_size);
struct Constant* extract_literal_float_hex(char *data,size_t data_size);
struct Constant* extract_literal_char(char *data,size_t data_size);
struct Constant* extract_literal_wide_char(char *data,size_t data_size);
struct Constant* extract_enum_constant(struct Denoted_Enum_Const *constant);
struct Constant* extract_literal_string(char *data,size_t data_size);
struct Constant* extract_literal_wide_string(char *data,size_t data_size);
struct Constant* concatenate_string_literals(struct Constant *first,struct Constant *second);
struct Constant* concatenate_string_literals_with_space_between(struct Constant *first,struct Constant *second);
struct Constant* get_long_long_int_constant(long long number);
struct Constant* get_unsigned_int_constant();
struct Constant* get_signed_int_constant();
char ast_is_null_pointer_constant(struct AST *tree);
char constant_is_null_pointer(struct Constant *constant);
void resolve_char_escape_sequence(struct token *token,struct Translation_Data *translation_data);
void delete_constant(struct Constant *constant);
#endif