Chromium Code Reviews| Index: src/IceTypes.h |
| diff --git a/src/IceTypes.h b/src/IceTypes.h |
| index 6480c2c57bdb8b52326013f5d53559de20c47ff4..83b0ecce3f3b1839551d68b35fc04c8aa43eb7cb 100644 |
| --- a/src/IceTypes.h |
| +++ b/src/IceTypes.h |
| @@ -103,6 +103,54 @@ inline StreamType &operator<<(StreamType &Str, const Type &Ty) { |
| return Str; |
| } |
| +/// Models a type signature for a function. |
| +/// TODO(kschimpf): Consider using arena memory allocation for |
| +/// the contents of type signatures. |
| +class FuncSigType { |
| +public: |
| + typedef std::vector<Type> ArgListType; |
| + |
| + // Creates a function signature type with the given return type. |
| + // Parameter types should be added using calls to appendArgType. |
| + explicit FuncSigType() : ReturnType(IceType_void) {} |
| + |
| + FuncSigType(const FuncSigType &Ty) |
| + : ReturnType(Ty.ReturnType), ArgList(Ty.ArgList) {} |
| + |
| + FuncSigType &operator=(const FuncSigType &Ty) { |
| + ReturnType = Ty.ReturnType; |
| + ArgList = Ty.ArgList; |
| + return *this; |
| + } |
| + |
| + void appendArgType(Type ArgType) { ArgList.push_back(ArgType); } |
| + |
| + Type getReturnType() const { return ReturnType; } |
| + void setReturnType(Type NewType) { ReturnType = NewType; } |
| + SizeT getNumArgs() const { return ArgList.size(); } |
| + Type getArgType(SizeT Index) const { |
| + assert(Index < ArgList.size()); |
| + return ArgList[Index]; |
| + } |
| + const ArgListType &getArgList() const { return ArgList; } |
| + void Dump(Ostream &Stream) const; |
|
Jim Stichnoth
2014/10/06 22:48:51
lowercase dump
Karl
2014/10/07 20:15:58
Done.
|
| + void reset() { |
| + ArgList.clear(); |
| + ArgList.push_back(IceType_void); |
| + } |
| + |
| +private: |
| + // The return type. |
| + Type ReturnType; |
| + // The list of parameters. |
| + ArgListType ArgList; |
| +}; |
| + |
| +inline Ostream &operator<<(Ostream &Stream, const FuncSigType &Sig) { |
| + Sig.Dump(Stream); |
| + return Stream; |
| +} |
| + |
| } // end of namespace Ice |
| #endif // SUBZERO_SRC_ICETYPES_H |