WONKY



LOG | FILES | OVERVIEW


#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