#include <cstdlib>
#include "List.hpp"
+#include "Location.hpp"
#include "Pooling.hpp"
#include "Options.hpp"
virtual void Output(CYOutput &out) const;
};
+struct CYTypeFunctionWith;
+
struct CYTypeModifier :
CYNext<CYTypeModifier>
{
virtual void Output(CYOutput &out, CYIdentifier *identifier) const = 0;
void Output(CYOutput &out, int precedence, CYIdentifier *identifier) const;
+
+ virtual CYTypeFunctionWith *Function() { return NULL; }
};
struct CYTypeArrayOf :
CYNext<CYTypedIdentifier>,
CYThing
{
+ CYLocation location_;
CYIdentifier *identifier_;
CYTypeSpecifier *specifier_;
CYTypeModifier *modifier_;
- CYTypedIdentifier(CYIdentifier *identifier = NULL) :
+ CYTypedIdentifier(const CYLocation &location, CYIdentifier *identifier = NULL) :
+ location_(location),
identifier_(identifier),
specifier_(NULL),
modifier_(NULL)
virtual CYExpression *Replace(CYContext &context);
virtual void Output(CYOutput &out) const;
+
+ CYTypeFunctionWith *Function();
};
struct CYEncodedType :
virtual CYExpression *Replace_(CYContext &context, CYExpression *type);
virtual void Output(CYOutput &out, CYIdentifier *identifier) const;
+
+ virtual CYTypeFunctionWith *Function() { return this; }
};
namespace cy {