ICG 2
Electric Boogaloo
DataType.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <iostream>
5 
7 
8 class DataTypeInator;
9 
11 class DataType : public std::enable_shared_from_this<DataType> {
12 
13  public:
14 
15  virtual ~DataType() {}
16 
25  virtual bool validate(DataTypeInator* dataTypeInator) = 0;
26 
32  virtual bool isValid() const = 0;
33 
39  virtual size_t getSize() const = 0;
40 
46  virtual std::string getTypeSpecName() const = 0;
47 
54  virtual void* createInstance(unsigned int n = 1 ) const = 0;
55 
62  virtual void deleteInstance(void* address) const = 0;
63 
70  virtual std::string makeDeclaration(std::string declarator) const;
71 
75  virtual std::string toString() const;
76 
77  /*
78  Implement a Visitor Pattern
79  */
80  virtual bool accept (DataTypeVisitor* visitor) const = 0;
81 
82 
83  private:
84 };
Register and manage datatypes at runtime.
Definition: DataTypeInator.hpp:16
Abstract base class for a DataTypeVisitor.
Definition: DataTypeVisitor.hpp:20
Abstract base class for DataTypes.
Definition: DataType.hpp:11
virtual std::string toString() const
Definition: DataType.cpp:17
virtual bool accept(DataTypeVisitor *visitor) const =0
virtual void * createInstance(unsigned int n=1) const =0
Create one or more instances of this type.
virtual std::string makeDeclaration(std::string declarator) const
Definition: DataType.cpp:6
virtual size_t getSize() const =0
The size (in bytes) of an instance of the DataType.
virtual bool validate(DataTypeInator *dataTypeInator)=0
Verify that all of the types that are named by this DataType or subordinate DataTypes are resolvable ...
virtual void deleteInstance(void *address) const =0
Delete this instance.
virtual ~DataType()
Definition: DataType.hpp:15
virtual bool isValid() const =0
Determine whether this type has already been successfully validated.
virtual std::string getTypeSpecName() const =0
Get the Type Spec Name object.