| #ifndef T_SERVICE_H | 
 | #define T_SERVICE_H | 
 |  | 
 | #include "t_function.h" | 
 | #include <vector> | 
 |  | 
 | class t_program; | 
 |  | 
 | /** | 
 |  * A service consists of a set of functions. | 
 |  * | 
 |  * @author Mark Slee <mcslee@facebook.com> | 
 |  */ | 
 | class t_service : public t_type { | 
 |  public: | 
 |   t_service(t_program* program) : | 
 |     t_type(program), | 
 |     extends_(NULL) {} | 
 |  | 
 |   bool is_service() const { | 
 |     return true; | 
 |   } | 
 |  | 
 |   void set_extends(t_service* extends) { | 
 |     extends_ = extends; | 
 |   } | 
 |  | 
 |   void add_function(t_function* func) { | 
 |     functions_.push_back(func); | 
 |   } | 
 |  | 
 |   const std::vector<t_function*>& get_functions() const { | 
 |     return functions_; | 
 |   } | 
 |  | 
 |   t_service* get_extends() { | 
 |     return extends_; | 
 |   } | 
 |  | 
 |  private: | 
 |   std::vector<t_function*> functions_; | 
 |   t_service* extends_; | 
 | }; | 
 |  | 
 | #endif |