/src/tools/configuration/etc/liberty_etc_factory.e

http://github.com/tybor/Liberty · Specman e · 244 lines · 196 code · 34 blank · 14 comment · 0 complexity · e1ac32fe298135f329c72622e1b592e0 MD5 · raw file

  1. -- This file is part of Liberty Eiffel.
  2. --
  3. -- Liberty Eiffel is free software: you can redistribute it and/or modify
  4. -- it under the terms of the GNU General Public License as published by
  5. -- the Free Software Foundation, version 3 of the License.
  6. --
  7. -- Liberty Eiffel is distributed in the hope that it will be useful,
  8. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. -- GNU General Public License for more details.
  11. --
  12. -- You should have received a copy of the GNU General Public License
  13. -- along with Liberty Eiffel. If not, see <http://www.gnu.org/licenses/>.
  14. --
  15. class LIBERTY_ETC_FACTORY
  16. inherit
  17. EIFFEL_NODE_FACTORY
  18. create {LIBERTY_ETC}
  19. make
  20. feature {EIFFEL_GRAMMAR}
  21. list (name: FIXED_STRING): EIFFEL_LIST_NODE is
  22. local
  23. visitor: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]]
  24. do
  25. inspect
  26. name
  27. when "Environment_Variable*" then
  28. visitor := agent_environment_variable_list
  29. when "Cluster*" then
  30. visitor := agent_cluster_list
  31. when "Cluster_Configuration*" then
  32. visitor := agent_cluster_configuration_list
  33. when "Debug_Configuration*" then
  34. visitor := agent_debug_configuration_list
  35. when "Debug_Key+" then
  36. visitor := agent_debug_key_list
  37. when "Location+" then
  38. visitor := agent_location_list
  39. end
  40. create {LIBERTY_ETC_LIST} Result.make(name, visitor)
  41. end
  42. non_terminal (name: FIXED_STRING; names: TRAVERSABLE[FIXED_STRING]): EIFFEL_NON_TERMINAL_NODE is
  43. local
  44. visitor: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]]
  45. do
  46. inspect
  47. name
  48. when "Master" then
  49. visitor := agent_master
  50. when "Cluster_Definition" then
  51. visitor := agent_cluster_definition
  52. when "Configure" then
  53. visitor := agent_configure
  54. when "Environment" then
  55. visitor := agent_environment
  56. when "Environment_Variable" then
  57. visitor := agent_environment_variable
  58. when "Clusters" then
  59. visitor := agent_clusters
  60. when "Cluster" then
  61. visitor := agent_cluster
  62. when "Version" then
  63. visitor := agent_version
  64. when "Needs" then
  65. visitor := agent_needs
  66. when "Cluster_Configuration" then
  67. visitor := agent_cluster_configuration
  68. when "Cluster_Constraints" then
  69. visitor := agent_cluster_constraints
  70. when "Cluster_Version_Constraint" then
  71. visitor := agent_cluster_version_constraint
  72. when "Version_Operator" then
  73. visitor := agent_version_operator
  74. when "Assertion" then
  75. visitor := agent_assertion
  76. when "Assertion_Level" then
  77. visitor := agent_assertion_level
  78. when "Debug" then
  79. visitor := agent_debug
  80. when "Debug_Configuration" then
  81. visitor := agent_debug_configuration
  82. when "Debug_Key" then
  83. visitor := agent_debug_key
  84. when "Concurrency" then
  85. visitor := agent_concurrency
  86. when "Locations" then
  87. visitor := agent_locations
  88. when "Location" then
  89. visitor := agent_location
  90. end
  91. create {LIBERTY_ETC_NON_TERMINAL} Result.make(name, names, visitor)
  92. end
  93. terminal (name: FIXED_STRING; image: EIFFEL_IMAGE): EIFFEL_TERMINAL_NODE is
  94. do
  95. create {EIFFEL_TERMINAL_NODE_IMPL} Result.make(name, image)
  96. end
  97. feature {}
  98. make is
  99. do
  100. end
  101. feature {} -- visitor agents
  102. agent_environment_variable_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  103. once
  104. Result := agent {LIBERTY_ETC_VISITOR}.visit_environment_variable_list
  105. end
  106. agent_cluster_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  107. once
  108. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_list
  109. end
  110. agent_cluster_configuration_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  111. once
  112. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_configuration_list
  113. end
  114. agent_debug_configuration_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  115. once
  116. Result := agent {LIBERTY_ETC_VISITOR}.visit_debug_configuration_list
  117. end
  118. agent_debug_key_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  119. once
  120. Result := agent {LIBERTY_ETC_VISITOR}.visit_debug_key_list
  121. end
  122. agent_location_list: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_LIST]] is
  123. once
  124. Result := agent {LIBERTY_ETC_VISITOR}.visit_location_list
  125. end
  126. agent_master: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  127. once
  128. Result := agent {LIBERTY_ETC_VISITOR}.visit_master
  129. end
  130. agent_cluster_definition: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  131. once
  132. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_definition
  133. end
  134. agent_configure: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  135. once
  136. Result := agent {LIBERTY_ETC_VISITOR}.visit_configure
  137. end
  138. agent_environment: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  139. once
  140. Result := agent {LIBERTY_ETC_VISITOR}.visit_environment
  141. end
  142. agent_environment_variable: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  143. once
  144. Result := agent {LIBERTY_ETC_VISITOR}.visit_environment_variable
  145. end
  146. agent_clusters: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  147. once
  148. Result := agent {LIBERTY_ETC_VISITOR}.visit_clusters
  149. end
  150. agent_cluster: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  151. once
  152. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster
  153. end
  154. agent_locations: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  155. once
  156. Result := agent {LIBERTY_ETC_VISITOR}.visit_locations
  157. end
  158. agent_location: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  159. once
  160. Result := agent {LIBERTY_ETC_VISITOR}.visit_location
  161. end
  162. agent_version: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  163. once
  164. Result := agent {LIBERTY_ETC_VISITOR}.visit_version
  165. end
  166. agent_needs: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  167. once
  168. Result := agent {LIBERTY_ETC_VISITOR}.visit_needs
  169. end
  170. agent_cluster_configuration: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  171. once
  172. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_configuration
  173. end
  174. agent_cluster_constraints: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  175. once
  176. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_constraints
  177. end
  178. agent_cluster_version_constraint: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  179. once
  180. Result := agent {LIBERTY_ETC_VISITOR}.visit_cluster_version_constraint
  181. end
  182. agent_version_operator: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  183. once
  184. Result := agent {LIBERTY_ETC_VISITOR}.visit_version_operator
  185. end
  186. agent_assertion: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  187. once
  188. Result := agent {LIBERTY_ETC_VISITOR}.visit_assertion
  189. end
  190. agent_assertion_level: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  191. once
  192. Result := agent {LIBERTY_ETC_VISITOR}.visit_assertion_level
  193. end
  194. agent_debug: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  195. once
  196. Result := agent {LIBERTY_ETC_VISITOR}.visit_debug
  197. end
  198. agent_debug_configuration: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  199. once
  200. Result := agent {LIBERTY_ETC_VISITOR}.visit_debug_configuration
  201. end
  202. agent_debug_key: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  203. once
  204. Result := agent {LIBERTY_ETC_VISITOR}.visit_debug_key
  205. end
  206. agent_concurrency: PROCEDURE[TUPLE[LIBERTY_ETC_VISITOR, LIBERTY_ETC_NON_TERMINAL]] is
  207. once
  208. Result := agent {LIBERTY_ETC_VISITOR}.visit_concurrency
  209. end
  210. end -- class LIBERTY_ETC_FACTORY