Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
30 ashish 1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one
3
 * or more contributor license agreements. See the NOTICE file
4
 * distributed with this work for additional information
5
 * regarding copyright ownership. The ASF licenses this file
6
 * to you under the Apache License, Version 2.0 (the
7
 * "License"); you may not use this file except in compliance
8
 * with the License. You may obtain a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied. See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
 
20
#ifndef T_SERVICE_H
21
#define T_SERVICE_H
22
 
23
#include "t_function.h"
24
#include <vector>
25
 
26
class t_program;
27
 
28
/**
29
 * A service consists of a set of functions.
30
 *
31
 */
32
class t_service : public t_type {
33
 public:
34
  t_service(t_program* program) :
35
    t_type(program),
36
    extends_(NULL) {}
37
 
38
  bool is_service() const {
39
    return true;
40
  }
41
 
42
  void set_extends(t_service* extends) {
43
    extends_ = extends;
44
  }
45
 
46
  void add_function(t_function* func) {
47
    functions_.push_back(func);
48
  }
49
 
50
  const std::vector<t_function*>& get_functions() const {
51
    return functions_;
52
  }
53
 
54
  t_service* get_extends() {
55
    return extends_;
56
  }
57
 
58
  virtual std::string get_fingerprint_material() const {
59
    // Services should never be used in fingerprints.
60
    throw "BUG: Can't get fingerprint material for service.";
61
  }
62
 
63
 private:
64
  std::vector<t_function*> functions_;
65
  t_service* extends_;
66
};
67
 
68
#endif