Commit 2a5bea88b3e4111a69533d87e7c5cff2d9398916

Authored by Francisco J. Santana Jorge
1 parent cb48110a
Exists in master

fixed coolbot-c and add my-first-component and my-first-view

Showing 29 changed files with 13336 additions and 33 deletions   Show diff stats
ChangeLog.txt
1   -6 November 2011
  1 +12 November 2011
2 2  
3 3 New version of coolbot-project:
4 4 - New structure of directories.
... ... @@ -8,4 +8,5 @@ New version of coolbot-project:
8 8 - coolbot-ske tool is renamed to coolbot-bundle with new options.
9 9 - Added new tool: coolbot-config
10 10 - Added static library coolbot-toolkit.
  11 +- Added CPack configuration
11 12  
... ...
cmake/pkg_config.pc.in
1 1 prefix=@PKG_DIRECTORY@
2 2 exec_prefix=${prefix}
3   -libdir=${prefix}/lib
4   -includedir=${prefix}/include/@PKG_DIRECTORY_INCLUDE@
5   -
  3 +libdir=${prefix}/@PKG_DIRECTORY_LIBRARY@
  4 +includedir=${prefix}/@PKG_DIRECTORY_INCLUDE@
  5 +z
6 6 Name: @PKG_LIB_NAME@
7 7 Description: @PKG_LIB_DESC@
8 8 Version: @PKG_LIB_VERSION@
... ...
cmake/toolkit.cmake
... ... @@ -187,8 +187,8 @@ MACRO( GENERATE_CONFIG_FILE coolbot_framework_version
187 187 SET(INSTALL_PATH "${${install_path}}")
188 188 SET(RESOURCE_PATH "${${resource_path}}")
189 189 SET(PKGCONFIG_PATH "${${pkgconfig_path}}")
190   - SET(INCLUDE_DIR_PATH "${${includedir_path}}coolbot")
191   - SET(LIBRARIES_PATH "${${libraries_path}}")
  190 + SET(INCLUDE_DIR_PATH "${${includedir_path}}coolbot-${${coolbot_framework_version}}")
  191 + SET(LIBRARIES_PATH "${${libraries_path}}coolbot-project/")
192 192 SET(BINARIES_PATH "${${binaries_path}}")
193 193 SET(COOLBOT_LINKER_FLAGS "${${linker_flags}}")
194 194 SET(COOLBOT_CFLAGS_FLAGS "${${cflag_flags}}")
... ... @@ -320,9 +320,10 @@ ENDMACRO( RUN_PKGCONFIG )
320 320  
321 321 #-------------------------------------------------------------------------------
322 322  
323   -MACRO(CREATE_PKGCONFIG_FILE path pathinclude name description version requires flags pathtarget model)
  323 +MACRO(CREATE_PKGCONFIG_FILE path pathlibrary pathinclude name description version requires flags pathtarget model)
324 324  
325 325 SET(PKG_DIRECTORY ${path})
  326 + SET(PKG_DIRECTORY_LIBRARY ${pathlibrary})
326 327 SET(PKG_DIRECTORY_INCLUDE ${pathinclude})
327 328 SET(PKG_LIB_NAME ${name})
328 329 SET(PKG_LIB_DESC ${description})
... ...
coolbot-c/src/ctcCode.cpp
... ... @@ -3324,7 +3324,7 @@ std::string ctcCode::GenerateStatesAutomatonConstruction(unsigned char Component
3324 3324 Name=ctString::Upper(Transitions.GetItem().GetName());
3325 3325  
3326 3326 if((Name=="EMPTY_TRANSITION") || (Name=="TIMER")) {
3327   - std::string PortName=ctString::Capitalize(Transitions.GetItem().GetName());
  3327 + std::string PortName=ctString::Capitalize(ctString::Lower(Transitions.GetItem().GetName()));
3328 3328  
3329 3329 Name="_pPrivateInputPorts_[_"+Name+"]";
3330 3330 DEFINE_PORTTRANSITION_AUTOMATON(Output,
... ... @@ -3652,11 +3652,21 @@ std::string ctcCode::GeneratePortPacket(ctcThePort Port,bool IsProbeFile)
3652 3652 Length=Port.GetPortPacket().GetLength();
3653 3653 if(Port.GetPortPacket().HaveLength()) {
3654 3654 if(!Port.GetPortPacket().IsLengthNumeric()) {
3655   - if(Semantic.Component.Constants.FindPrivate(Length)) {
3656   - if(!IsProbeFile) {
3657   - Length="_"+Length+"_";
3658   - } else {
3659   - Length=Semantic.Component.Constants.GetValue(Length);
  3655 + if(Semantic.MainSymbol==SYMB_CTC_COMPONENT) {
  3656 + if(Semantic.Component.Constants.FindPrivate(Length)) {
  3657 + if(!IsProbeFile) {
  3658 + Length="_"+Length+"_";
  3659 + } else {
  3660 + Length=Semantic.Component.Constants.GetValue(Length);
  3661 + }
  3662 + }
  3663 + } else {
  3664 + if(Semantic.View.Constants.FindPrivate(Length)) {
  3665 + if(!IsProbeFile) {
  3666 + Length="_"+Length+"_";
  3667 + } else {
  3668 + Length=Semantic.View.Constants.GetValue(Length);
  3669 + }
3660 3670 }
3661 3671 }
3662 3672 }
... ...
coolbot/CMakeLists.txt
... ... @@ -328,7 +328,8 @@ IF(GTK_FOUND)
328 328 ENDIF(GTK_FOUND)
329 329  
330 330 CREATE_PKGCONFIG_FILE("${COOLBOT_INSTALL_PATH}"
331   - "coolbot-${VERSION}"
  331 + "lib/${PROJECT_NAME}"
  332 + "include/coolbot-${VERSION}"
332 333 "coolbot"
333 334 "The CoolBOT project."
334 335 "${VERSION}"
... ...
examples/my-first-bundle/AUTHORS
... ... @@ -0,0 +1,4 @@
  1 +Developers and Contributors:
  2 +
  3 +- Antonio Carlos Domínguez Brito (adominguez@iusiani.ulpgc.es)
  4 +
... ...
examples/my-first-bundle/COPYING
... ... @@ -0,0 +1,339 @@
  1 + GNU GENERAL PUBLIC LICENSE
  2 + Version 2, June 1991
  3 +
  4 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
  5 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  6 + Everyone is permitted to copy and distribute verbatim copies
  7 + of this license document, but changing it is not allowed.
  8 +
  9 + Preamble
  10 +
  11 + The licenses for most software are designed to take away your
  12 +freedom to share and change it. By contrast, the GNU General Public
  13 +License is intended to guarantee your freedom to share and change free
  14 +software--to make sure the software is free for all its users. This
  15 +General Public License applies to most of the Free Software
  16 +Foundation's software and to any other program whose authors commit to
  17 +using it. (Some other Free Software Foundation software is covered by
  18 +the GNU Lesser General Public License instead.) You can apply it to
  19 +your programs, too.
  20 +
  21 + When we speak of free software, we are referring to freedom, not
  22 +price. Our General Public Licenses are designed to make sure that you
  23 +have the freedom to distribute copies of free software (and charge for
  24 +this service if you wish), that you receive source code or can get it
  25 +if you want it, that you can change the software or use pieces of it
  26 +in new free programs; and that you know you can do these things.
  27 +
  28 + To protect your rights, we need to make restrictions that forbid
  29 +anyone to deny you these rights or to ask you to surrender the rights.
  30 +These restrictions translate to certain responsibilities for you if you
  31 +distribute copies of the software, or if you modify it.
  32 +
  33 + For example, if you distribute copies of such a program, whether
  34 +gratis or for a fee, you must give the recipients all the rights that
  35 +you have. You must make sure that they, too, receive or can get the
  36 +source code. And you must show them these terms so they know their
  37 +rights.
  38 +
  39 + We protect your rights with two steps: (1) copyright the software, and
  40 +(2) offer you this license which gives you legal permission to copy,
  41 +distribute and/or modify the software.
  42 +
  43 + Also, for each author's protection and ours, we want to make certain
  44 +that everyone understands that there is no warranty for this free
  45 +software. If the software is modified by someone else and passed on, we
  46 +want its recipients to know that what they have is not the original, so
  47 +that any problems introduced by others will not reflect on the original
  48 +authors' reputations.
  49 +
  50 + Finally, any free program is threatened constantly by software
  51 +patents. We wish to avoid the danger that redistributors of a free
  52 +program will individually obtain patent licenses, in effect making the
  53 +program proprietary. To prevent this, we have made it clear that any
  54 +patent must be licensed for everyone's free use or not licensed at all.
  55 +
  56 + The precise terms and conditions for copying, distribution and
  57 +modification follow.
  58 +
  59 + GNU GENERAL PUBLIC LICENSE
  60 + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  61 +
  62 + 0. This License applies to any program or other work which contains
  63 +a notice placed by the copyright holder saying it may be distributed
  64 +under the terms of this General Public License. The "Program", below,
  65 +refers to any such program or work, and a "work based on the Program"
  66 +means either the Program or any derivative work under copyright law:
  67 +that is to say, a work containing the Program or a portion of it,
  68 +either verbatim or with modifications and/or translated into another
  69 +language. (Hereinafter, translation is included without limitation in
  70 +the term "modification".) Each licensee is addressed as "you".
  71 +
  72 +Activities other than copying, distribution and modification are not
  73 +covered by this License; they are outside its scope. The act of
  74 +running the Program is not restricted, and the output from the Program
  75 +is covered only if its contents constitute a work based on the
  76 +Program (independent of having been made by running the Program).
  77 +Whether that is true depends on what the Program does.
  78 +
  79 + 1. You may copy and distribute verbatim copies of the Program's
  80 +source code as you receive it, in any medium, provided that you
  81 +conspicuously and appropriately publish on each copy an appropriate
  82 +copyright notice and disclaimer of warranty; keep intact all the
  83 +notices that refer to this License and to the absence of any warranty;
  84 +and give any other recipients of the Program a copy of this License
  85 +along with the Program.
  86 +
  87 +You may charge a fee for the physical act of transferring a copy, and
  88 +you may at your option offer warranty protection in exchange for a fee.
  89 +
  90 + 2. You may modify your copy or copies of the Program or any portion
  91 +of it, thus forming a work based on the Program, and copy and
  92 +distribute such modifications or work under the terms of Section 1
  93 +above, provided that you also meet all of these conditions:
  94 +
  95 + a) You must cause the modified files to carry prominent notices
  96 + stating that you changed the files and the date of any change.
  97 +
  98 + b) You must cause any work that you distribute or publish, that in
  99 + whole or in part contains or is derived from the Program or any
  100 + part thereof, to be licensed as a whole at no charge to all third
  101 + parties under the terms of this License.
  102 +
  103 + c) If the modified program normally reads commands interactively
  104 + when run, you must cause it, when started running for such
  105 + interactive use in the most ordinary way, to print or display an
  106 + announcement including an appropriate copyright notice and a
  107 + notice that there is no warranty (or else, saying that you provide
  108 + a warranty) and that users may redistribute the program under
  109 + these conditions, and telling the user how to view a copy of this
  110 + License. (Exception: if the Program itself is interactive but
  111 + does not normally print such an announcement, your work based on
  112 + the Program is not required to print an announcement.)
  113 +
  114 +These requirements apply to the modified work as a whole. If
  115 +identifiable sections of that work are not derived from the Program,
  116 +and can be reasonably considered independent and separate works in
  117 +themselves, then this License, and its terms, do not apply to those
  118 +sections when you distribute them as separate works. But when you
  119 +distribute the same sections as part of a whole which is a work based
  120 +on the Program, the distribution of the whole must be on the terms of
  121 +this License, whose permissions for other licensees extend to the
  122 +entire whole, and thus to each and every part regardless of who wrote it.
  123 +
  124 +Thus, it is not the intent of this section to claim rights or contest
  125 +your rights to work written entirely by you; rather, the intent is to
  126 +exercise the right to control the distribution of derivative or
  127 +collective works based on the Program.
  128 +
  129 +In addition, mere aggregation of another work not based on the Program
  130 +with the Program (or with a work based on the Program) on a volume of
  131 +a storage or distribution medium does not bring the other work under
  132 +the scope of this License.
  133 +
  134 + 3. You may copy and distribute the Program (or a work based on it,
  135 +under Section 2) in object code or executable form under the terms of
  136 +Sections 1 and 2 above provided that you also do one of the following:
  137 +
  138 + a) Accompany it with the complete corresponding machine-readable
  139 + source code, which must be distributed under the terms of Sections
  140 + 1 and 2 above on a medium customarily used for software interchange; or,
  141 +
  142 + b) Accompany it with a written offer, valid for at least three
  143 + years, to give any third party, for a charge no more than your
  144 + cost of physically performing source distribution, a complete
  145 + machine-readable copy of the corresponding source code, to be
  146 + distributed under the terms of Sections 1 and 2 above on a medium
  147 + customarily used for software interchange; or,
  148 +
  149 + c) Accompany it with the information you received as to the offer
  150 + to distribute corresponding source code. (This alternative is
  151 + allowed only for noncommercial distribution and only if you
  152 + received the program in object code or executable form with such
  153 + an offer, in accord with Subsection b above.)
  154 +
  155 +The source code for a work means the preferred form of the work for
  156 +making modifications to it. For an executable work, complete source
  157 +code means all the source code for all modules it contains, plus any
  158 +associated interface definition files, plus the scripts used to
  159 +control compilation and installation of the executable. However, as a
  160 +special exception, the source code distributed need not include
  161 +anything that is normally distributed (in either source or binary
  162 +form) with the major components (compiler, kernel, and so on) of the
  163 +operating system on which the executable runs, unless that component
  164 +itself accompanies the executable.
  165 +
  166 +If distribution of executable or object code is made by offering
  167 +access to copy from a designated place, then offering equivalent
  168 +access to copy the source code from the same place counts as
  169 +distribution of the source code, even though third parties are not
  170 +compelled to copy the source along with the object code.
  171 +
  172 + 4. You may not copy, modify, sublicense, or distribute the Program
  173 +except as expressly provided under this License. Any attempt
  174 +otherwise to copy, modify, sublicense or distribute the Program is
  175 +void, and will automatically terminate your rights under this License.
  176 +However, parties who have received copies, or rights, from you under
  177 +this License will not have their licenses terminated so long as such
  178 +parties remain in full compliance.
  179 +
  180 + 5. You are not required to accept this License, since you have not
  181 +signed it. However, nothing else grants you permission to modify or
  182 +distribute the Program or its derivative works. These actions are
  183 +prohibited by law if you do not accept this License. Therefore, by
  184 +modifying or distributing the Program (or any work based on the
  185 +Program), you indicate your acceptance of this License to do so, and
  186 +all its terms and conditions for copying, distributing or modifying
  187 +the Program or works based on it.
  188 +
  189 + 6. Each time you redistribute the Program (or any work based on the
  190 +Program), the recipient automatically receives a license from the
  191 +original licensor to copy, distribute or modify the Program subject to
  192 +these terms and conditions. You may not impose any further
  193 +restrictions on the recipients' exercise of the rights granted herein.
  194 +You are not responsible for enforcing compliance by third parties to
  195 +this License.
  196 +
  197 + 7. If, as a consequence of a court judgment or allegation of patent
  198 +infringement or for any other reason (not limited to patent issues),
  199 +conditions are imposed on you (whether by court order, agreement or
  200 +otherwise) that contradict the conditions of this License, they do not
  201 +excuse you from the conditions of this License. If you cannot
  202 +distribute so as to satisfy simultaneously your obligations under this
  203 +License and any other pertinent obligations, then as a consequence you
  204 +may not distribute the Program at all. For example, if a patent
  205 +license would not permit royalty-free redistribution of the Program by
  206 +all those who receive copies directly or indirectly through you, then
  207 +the only way you could satisfy both it and this License would be to
  208 +refrain entirely from distribution of the Program.
  209 +
  210 +If any portion of this section is held invalid or unenforceable under
  211 +any particular circumstance, the balance of the section is intended to
  212 +apply and the section as a whole is intended to apply in other
  213 +circumstances.
  214 +
  215 +It is not the purpose of this section to induce you to infringe any
  216 +patents or other property right claims or to contest validity of any
  217 +such claims; this section has the sole purpose of protecting the
  218 +integrity of the free software distribution system, which is
  219 +implemented by public license practices. Many people have made
  220 +generous contributions to the wide range of software distributed
  221 +through that system in reliance on consistent application of that
  222 +system; it is up to the author/donor to decide if he or she is willing
  223 +to distribute software through any other system and a licensee cannot
  224 +impose that choice.
  225 +
  226 +This section is intended to make thoroughly clear what is believed to
  227 +be a consequence of the rest of this License.
  228 +
  229 + 8. If the distribution and/or use of the Program is restricted in
  230 +certain countries either by patents or by copyrighted interfaces, the
  231 +original copyright holder who places the Program under this License
  232 +may add an explicit geographical distribution limitation excluding
  233 +those countries, so that distribution is permitted only in or among
  234 +countries not thus excluded. In such case, this License incorporates
  235 +the limitation as if written in the body of this License.
  236 +
  237 + 9. The Free Software Foundation may publish revised and/or new versions
  238 +of the General Public License from time to time. Such new versions will
  239 +be similar in spirit to the present version, but may differ in detail to
  240 +address new problems or concerns.
  241 +
  242 +Each version is given a distinguishing version number. If the Program
  243 +specifies a version number of this License which applies to it and "any
  244 +later version", you have the option of following the terms and conditions
  245 +either of that version or of any later version published by the Free
  246 +Software Foundation. If the Program does not specify a version number of
  247 +this License, you may choose any version ever published by the Free Software
  248 +Foundation.
  249 +
  250 + 10. If you wish to incorporate parts of the Program into other free
  251 +programs whose distribution conditions are different, write to the author
  252 +to ask for permission. For software which is copyrighted by the Free
  253 +Software Foundation, write to the Free Software Foundation; we sometimes
  254 +make exceptions for this. Our decision will be guided by the two goals
  255 +of preserving the free status of all derivatives of our free software and
  256 +of promoting the sharing and reuse of software generally.
  257 +
  258 + NO WARRANTY
  259 +
  260 + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  261 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
  262 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  263 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  264 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  265 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
  266 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
  267 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  268 +REPAIR OR CORRECTION.
  269 +
  270 + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  271 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  272 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  273 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  274 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  275 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  276 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  277 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  278 +POSSIBILITY OF SUCH DAMAGES.
  279 +
  280 + END OF TERMS AND CONDITIONS
  281 +
  282 + How to Apply These Terms to Your New Programs
  283 +
  284 + If you develop a new program, and you want it to be of the greatest
  285 +possible use to the public, the best way to achieve this is to make it
  286 +free software which everyone can redistribute and change under these terms.
  287 +
  288 + To do so, attach the following notices to the program. It is safest
  289 +to attach them to the start of each source file to most effectively
  290 +convey the exclusion of warranty; and each file should have at least
  291 +the "copyright" line and a pointer to where the full notice is found.
  292 +
  293 + <one line to give the program's name and a brief idea of what it does.>
  294 + Copyright (C) <year> <name of author>
  295 +
  296 + This program is free software; you can redistribute it and/or modify
  297 + it under the terms of the GNU General Public License as published by
  298 + the Free Software Foundation; either version 2 of the License, or
  299 + (at your option) any later version.
  300 +
  301 + This program is distributed in the hope that it will be useful,
  302 + but WITHOUT ANY WARRANTY; without even the implied warranty of
  303 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  304 + GNU General Public License for more details.
  305 +
  306 + You should have received a copy of the GNU General Public License along
  307 + with this program; if not, write to the Free Software Foundation, Inc.,
  308 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  309 +
  310 +Also add information on how to contact you by electronic and paper mail.
  311 +
  312 +If the program is interactive, make it output a short notice like this
  313 +when it starts in an interactive mode:
  314 +
  315 + Gnomovision version 69, Copyright (C) year name of author
  316 + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  317 + This is free software, and you are welcome to redistribute it
  318 + under certain conditions; type `show c' for details.
  319 +
  320 +The hypothetical commands `show w' and `show c' should show the appropriate
  321 +parts of the General Public License. Of course, the commands you use may
  322 +be called something other than `show w' and `show c'; they could even be
  323 +mouse-clicks or menu items--whatever suits your program.
  324 +
  325 +You should also get your employer (if you work as a programmer) or your
  326 +school, if any, to sign a "copyright disclaimer" for the program, if
  327 +necessary. Here is a sample; alter the names:
  328 +
  329 + Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  330 + `Gnomovision' (which makes passes at compilers) written by James Hacker.
  331 +
  332 + <signature of Ty Coon>, 1 April 1989
  333 + Ty Coon, President of Vice
  334 +
  335 +This General Public License does not permit incorporating your program into
  336 +proprietary programs. If your program is a subroutine library, you may
  337 +consider it more useful to permit linking proprietary applications with the
  338 +library. If this is what you want to do, use the GNU Lesser General
  339 +Public License instead of this License.
... ...
examples/my-first-bundle/cmake/include_targets.cmake
... ... @@ -33,3 +33,5 @@
33 33 # Here are the different targets available to the bundle.
34 34 #
35 35 ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/my-first-component)
  36 +ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/my-first-view)
  37 +#ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/my-first-integration)
... ...
examples/my-first-bundle/cmake/pkg_config.pc.in
1 1 prefix=@PKG_DIRECTORY@
2 2 exec_prefix=${prefix}
3   -libdir=${prefix}/lib
  3 +libdir=${prefix}/@PKG_DIRECTORY_LIBRARY@
4 4 includedir=${prefix}/@PKG_DIRECTORY_INCLUDE@
5 5  
6 6 Name: @PKG_LIB_NAME@
... ...
examples/my-first-bundle/cmake/toolkit.cmake
... ... @@ -201,9 +201,10 @@ ENDMACRO( RUN_PKGCONFIG )
201 201  
202 202 #-------------------------------------------------------------------------------
203 203  
204   -MACRO(CREATE_PKGCONFIG_FILE path pathinclude name description version requires flags pathtarget model)
  204 +MACRO(CREATE_PKGCONFIG_FILE path pathlibrary pathinclude name description version requires flags pathtarget model)
205 205  
206 206 SET(PKG_DIRECTORY ${path})
  207 + SET(PKG_DIRECTORY_LIBRARY ${pathlibrary})
207 208 SET(PKG_DIRECTORY_INCLUDE ${pathinclude})
208 209 SET(PKG_LIB_NAME ${name})
209 210 SET(PKG_LIB_DESC ${description})
... ...
examples/my-first-bundle/my-first-component/CMakeLists.txt
... ... @@ -50,8 +50,44 @@ MESSAGE(STATUS &quot; * Version: ${MY_FIRST_COMPONENT_VERSION}&quot;)
50 50  
51 51 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/my-first-component)
52 52  
53   -AUX_SOURCE_DIRECTORY("${PROJECT_SOURCE_DIR}/my-first-component"
54   - MY_FIRST_COMPONENT_MAIN_SOURCE_FILES)
  53 +#
  54 +# NOTE: It is preferable not to use the AUX_SOURCE_DIRECTORY command. It is
  55 +# recommended to manually specify the source files and header. For example:
  56 +#
  57 +# SET(MY_FIRST_COMPONENT_SRCS
  58 +# source.cpp
  59 +# source1.cpp
  60 +# ...
  61 +# sourceN.cpp
  62 +# );
  63 +#
  64 +# SET(MY_FIRST_COMPONENT_HDRS
  65 +# header.h
  66 +# header1.h
  67 +# ...
  68 +# headerN.h
  69 +# );
  70 +#
  71 +# SET(MY_FIRST_COMPONENT_MAIN_SOURCE_FILES
  72 +# ${MY_FIRST_COMPONENT_SRCS}
  73 +# ${MY_FIRST_COMPONENT_HDRS})
  74 +#
  75 +
  76 +#AUX_SOURCE_DIRECTORY("${PROJECT_SOURCE_DIR}/my-first-component"
  77 +# MY_FIRST_COMPONENT_MAIN_SOURCE_FILES)
  78 +SET(MY_FIRST_COMPONENT_SRCS
  79 + my-first-component.cpp
  80 + my-first-component-probe.cpp
  81 +)
  82 +
  83 +SET(MY_FIRST_COMPONENT_HDRS
  84 + my-first-component.h
  85 + my-first-component-probe.h
  86 +)
  87 +
  88 +SET(MY_FIRST_COMPONENT_MAIN_SOURCE_FILES
  89 + ${MY_FIRST_COMPONENT_SRCS}
  90 + ${MY_FIRST_COMPONENT_HDRS})
55 91  
56 92 IF(SHOW_DEBUG_INFO)
57 93 MESSAGE(STATUS " * Source code:")
... ... @@ -121,10 +157,19 @@ ENDIF( WIN32 )
121 157 # The macro CREATE_PKGCONFIG_FILE is responsible for creating this file with the
122 158 # information that you supply.
123 159 #
  160 +IF( DEBUG_MODE )
  161 + SET(PKGCONFIG_INCLUDE_PATH "my-first-component")
  162 + SET(PKGCONFIG_LIBRARY_PATH "${LIB_DIR}")
  163 +ELSE( DEBUG_MODE )
  164 + SET(PKGCONFIG_INCLUDE_PATH "include/my-first-component-${MY_FIRST_COMPONENT_VERSION}")
  165 + SET(PKGCONFIG_LIBRARY_PATH "lib/my-first-component")
  166 +ENDIF( DEBUG_MODE )
  167 +
124 168 CREATE_PKGCONFIG_FILE("${PROJECT_INSTALL_PATH}" # Here the base directory
125   - "my-first-component" # Here the include directory
  169 + "${PKGCONFIG_LIBRARY_PATH}" # Here the library directory
  170 + "${PKGCONFIG_INCLUDE_PATH}" # Here the include directory
126 171 "my-first-component" # Here the package name
127   - "Here the description." # Here the package description
  172 + "My first CoolBOT component." # Here the package description
128 173 "${MY_FIRST_COMPONENT_VERSION}" # Here the package version
129 174 "coolbot" # Here the list of packages that are required by our package
130 175 "${FLAGS_LIB_LINKER}" # Here the the link flags specific to our package
... ...
examples/my-first-bundle/my-first-component/my-first-component-probe.cpp 0 → 100644
... ... @@ -0,0 +1,2882 @@
  1 +//<->CMP_header<->
  2 +/*
  3 + my-first-component-probe.cpp
  4 + 12 November 2011, Version: 0.1
  5 + MyFirstComponent. This is my first CoolBOT component
  6 + Antonio Carlos Domí­nguez Brito <adominguez@iusiani.ulpgc.es>
  7 + IUSIANI - Universidad de Las Palmas de Gran Canaria
  8 +
  9 +
  10 + Generated by coolbot-c version 1.9.0
  11 +
  12 + Copyright: See COPYING file that comes with this distribution
  13 +*/
  14 +//<->/CMP_header<->
  15 +
  16 +//<->CMP_define_include<->
  17 +#define MY_FIRST_COMPONENT_PROBE_CPP
  18 +
  19 +#include "my-first-component-probe.h"
  20 +//<->/CMP_define_include<->
  21 +
  22 +#include "coolbot_compiler_adjustments.h"
  23 +
  24 +// INCLUDE USER SECTION: BEGIN
  25 +
  26 +// INCLUDE USER SECTION: END
  27 +
  28 +//<->CMP_define_namespace<->
  29 +namespace MyFirstComponentSpace
  30 +//<->/CMP_define_namespace<->
  31 +{
  32 +//<->CMP_define_initial_instances<->
  33 + const char* MyFirstComponentProbe::_pName_="MyFirstComponentProbe";
  34 +//<->/CMP_define_initial_instances<->
  35 +
  36 +//<->CMP_define_pointers_declaration<->
  37 +
  38 +//<->/CMP_define_pointers_declaration<->
  39 +
  40 +//<->CMP_define_staticinitialization_method<->
  41 + void MyFirstComponentProbe::_staticInitialization_()
  42 + {
  43 + //printf("MyFirstComponentProbe::_staticInitialization_()\n");
  44 +
  45 +
  46 +
  47 +
  48 +
  49 +
  50 + } // _staticInitialization_
  51 +//<->/CMP_define_staticinitialization_method<->
  52 +
  53 +//<->CMP_define_staticfinalization_method<->
  54 + void MyFirstComponentProbe::_staticFinalization_()
  55 + {
  56 + //printf("MyFirstComponentProbe::_staticFinalization_()\n");
  57 +
  58 + } // _staticFinalization_
  59 +//<->/CMP_define_staticfinalization_method<->
  60 +
  61 +//<->CMP_define_constructor_method<->
  62 + MyFirstComponentProbe::MyFirstComponentProbe(
  63 + unsigned short tcpPort
  64 + )
  65 + :_tcpPort_(tcpPort)
  66 + {
  67 + _defaults_();
  68 +
  69 + int i;
  70 +
  71 + try
  72 + {
  73 + // INPUT PORTS INITIALIZATION: BEGIN
  74 +
  75 + AutoPPtr<IPort> iPorts(INPUT_PORTS);
  76 + if(!iPorts.get())
  77 + {
  78 + ostringstream stringStream;
  79 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: \n\tNot enough memory\n"
  80 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  81 + throw NoMemory(stringStream.str().c_str());
  82 + }
  83 +
  84 + // Input port monitoring: begin
  85 + iPorts.set(
  86 + new IMultiPacket(
  87 + const_cast<PortPacket**>(getDefaultObservablePrototypes()),
  88 + OBSERVABLE_VARIABLES
  89 + ),
  90 + MONITORING
  91 + );
  92 + // Input port monitoring: end
  93 +
  94 + // Component Output port TIMER_COUNT: begin
  95 + iPorts.set(
  96 + new ILast(PacketLong::prototype()),
  97 + TIMER_COUNT
  98 + );
  99 + // Component Output port TIMER_COUNT: end
  100 + // Component Output port OUT_LONG: begin
  101 + iPorts.set(
  102 + new ILast(PacketLong::prototype()),
  103 + OUT_LONG
  104 + );
  105 + // Component Output port OUT_LONG: end
  106 +
  107 +
  108 + for(i=0; i<INPUT_PORTS; i++)
  109 + if(!iPorts.get(i))
  110 + {
  111 + ostringstream stringStream;
  112 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: Not enough memory\n"
  113 + <<"\tError during input port= "
  114 + <<i
  115 + <<" allocation\n"
  116 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  117 + throw NoMemory(stringStream.str().c_str());
  118 + }
  119 +
  120 + // IBoxes creation: begin
  121 +
  122 + auto_ptr<IBox> iBox(new IBox(iPorts.get(),INPUT_PORTS,false));
  123 + if( !iBox.get() )
  124 + {
  125 + ostringstream stringStream;
  126 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: Not enough memory\n"
  127 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  128 + throw NoMemory(stringStream.str().c_str());
  129 + }
  130 +
  131 + iPorts.release();
  132 +
  133 + // IBoxes creation: end
  134 +
  135 + // INPUT PORTS INITIALIZATION: END
  136 +
  137 + // OUTPUT PORTS INITIALIZATION: BEGIN
  138 +
  139 + AutoPPtr<OPort> oPorts(OUTPUT_PORTS);
  140 + if(!oPorts.get())
  141 + {
  142 + ostringstream stringStream;
  143 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: Not enough memory\n"
  144 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  145 + throw NoMemory(stringStream.str().c_str());
  146 + }
  147 +
  148 + // Output port control: begin
  149 + oPorts.set(
  150 + new OMultiPacket(
  151 + const_cast<PortPacket**>(getDefaultControllablePrototypes()),
  152 + CONTROLLABLE_VARIABLES
  153 + ),
  154 + CONTROL
  155 + );
  156 + // Output port control: end
  157 +
  158 + // Component Input port IN_LONG: begin
  159 + oPorts.set(
  160 + new OGeneric(PacketLong::prototype()),
  161 + IN_LONG
  162 + );
  163 + // Component Input port IN_LONG: end
  164 +
  165 +
  166 + for(i=0; i<OUTPUT_PORTS; i++)
  167 + if(!oPorts.get(i))
  168 + {
  169 + ostringstream stringStream;
  170 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: Not enough memory\n"
  171 + <<"\tError during output port= "
  172 + <<i
  173 + <<" allocation\n"
  174 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  175 + throw NoMemory(stringStream.str().c_str());
  176 + }
  177 +
  178 + // OBoxes creation: begin
  179 +
  180 + auto_ptr<OBox> oBox(new OBox(oPorts.get(),OUTPUT_PORTS));
  181 + if( !oBox.get() )
  182 + {
  183 + ostringstream stringStream;
  184 + stringStream<<"MyFirstComponentProbe::MyFirstComponentProbe() error: Not enough memory\n"
  185 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  186 + throw NoMemory(stringStream.str().c_str());
  187 + }
  188 +
  189 + oPorts.release();
  190 +
  191 + // OBoxes creation: end
  192 +
  193 + // OUTPUT PORTS INITIALIZATION: END
  194 +
  195 + _pIBox_=iBox.release();
  196 + _pOBox_=oBox.release();
  197 +
  198 + //if network needed
  199 + if(_tcpPort_!=INVALID_TCP_PORT)
  200 + _networkAllocation_();
  201 + }
  202 + catch(...)
  203 + {
  204 + auto_ptr<IBox> iBox(_pIBox_);
  205 + auto_ptr<OBox> oBox(_pOBox_);
  206 +
  207 + if(_tcpPort_!=INVALID_TCP_PORT)
  208 + _networkRelease_();
  209 +
  210 + throw;
  211 + }
  212 +
  213 + //if network needed
  214 + if(_tcpPort_!=INVALID_TCP_PORT)
  215 + _networkActivation_();
  216 +
  217 + } //end constructor
  218 +//<->/CMP_define_constructor_method<->
  219 +
  220 +//<->CMP_define_networkallocation_method<->
  221 + void MyFirstComponentProbe::_networkAllocation_()
  222 + {
  223 + int i;
  224 +
  225 +// try
  226 +// {
  227 + // NETWORK INPUT PORTS CREATION: BEGIN
  228 + AutoPPtr<IPort> iPorts(_NETWORK_INPUT_PORTS_);
  229 + if(!iPorts.get())
  230 + {
  231 + ostringstream stringStream;
  232 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  233 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  234 + throw NoMemory(stringStream.str().c_str());
  235 + }
  236 +
  237 + // Input port control: begin
  238 + iPorts.set(
  239 + new IMultiPacket(
  240 + const_cast<PortPacket**>(getDefaultControllablePrototypes()),
  241 + CONTROLLABLE_VARIABLES
  242 + ),
  243 + CONTROL
  244 + );
  245 + // Input port control: end
  246 +
  247 + // Input port IN_LONG: begin
  248 + iPorts.set(
  249 + new IFifo(PacketLong::prototype(), 5),
  250 + IN_LONG
  251 + );
  252 + // Input port IN_LONG: end
  253 +
  254 +
  255 + // network input thread control port: begin
  256 + iPorts.set(new ILast(PacketUChar::prototype()),_NETWORK_INPUT_CONTROL_);
  257 + // network input thread control port: end
  258 +
  259 + // network output thread control port: begin
  260 + iPorts.set(new ILast(PacketUChar::prototype()),_NETWORK_OUTPUT_CONTROL_);
  261 + // network output thread control port: end
  262 +
  263 + // network input thread monitoring port: begin
  264 + iPorts.set(new ILast(PacketUChar::prototype()),_NETWORK_INPUT_MONITORING_);
  265 + // network input thread monitoring port: end
  266 +
  267 + // network output thread monitoring port: begin
  268 + iPorts.set(new ILast(PacketUChar::prototype()),_NETWORK_OUTPUT_MONITORING_);
  269 + // network output thread monitoring port: end
  270 +
  271 + // Input port network output thread timer: begin
  272 + iPorts.set(new ITick(),_NETWORK_OUTPUT_TIMER_);
  273 + // Input port network output thread timer: end
  274 +
  275 + for(i=0; i<_NETWORK_INPUT_PORTS_; i++)
  276 + if(!iPorts.get(i))
  277 + {
  278 + ostringstream stringStream;
  279 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  280 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  281 + throw NoMemory(stringStream.str().c_str());
  282 + }
  283 + // NETWORK INPUT PORTS CREATION: END
  284 +
  285 + // NETWORK INPUT BOX CREATION: BEGIN
  286 + auto_ptr<IBoxInterface> inputNetworkThreadIBox(
  287 + new IBox(
  288 + iPorts.get(),
  289 + _NETWORK_INPUT_PORTS_,
  290 + false
  291 + )
  292 + );
  293 +
  294 + auto_ptr<IBoxInterface> outputNetworkThreadIBox(
  295 + new IBox(
  296 + iPorts.get(),
  297 + _NETWORK_INPUT_PORTS_,
  298 + false
  299 + )
  300 + );
  301 +
  302 + auto_ptr<IBoxInterface> inputNetworkMonitoringThreadIBox(
  303 + new IBox(
  304 + iPorts.get(),
  305 + _NETWORK_INPUT_PORTS_,
  306 + false
  307 + )
  308 + );
  309 +
  310 + auto_ptr<IBoxInterface> outputNetworkMonitoringThreadIBox(
  311 + new IBox(
  312 + iPorts.get(),
  313 + _NETWORK_INPUT_PORTS_
  314 + // WARNING: the third parameter which should be here does not appear
  315 + // in the last IBox, this parameter is true by default
  316 + )
  317 + );
  318 +
  319 + iPorts.release();
  320 +
  321 + if(
  322 + !inputNetworkThreadIBox.get() ||
  323 + !outputNetworkThreadIBox.get() ||
  324 + !inputNetworkMonitoringThreadIBox.get() ||
  325 + !outputNetworkMonitoringThreadIBox.get()
  326 + )
  327 + {
  328 + ostringstream stringStream;
  329 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  330 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  331 + throw NoMemory(stringStream.str().c_str());
  332 + }
  333 +
  334 + // NETWORK INPUT BOX CREATION: END
  335 +
  336 + // NETWORK OUTPUT PORTS CREATION: BEGIN
  337 +
  338 + AutoPPtr<OPort> oPorts(INPUT_PORTS);
  339 + if(!oPorts.get())
  340 + {
  341 + ostringstream stringStream;
  342 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  343 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  344 + throw NoMemory(stringStream.str().c_str());
  345 + }
  346 +
  347 + // Output port monitoring: begin
  348 + oPorts.set(
  349 + new OMultiPacket(
  350 + const_cast<PortPacket**>(getDefaultObservablePrototypes()),
  351 + OBSERVABLE_VARIABLES
  352 + ),
  353 + MONITORING
  354 + );
  355 + // Output port monitoring: end
  356 +
  357 + // Output port TIMER_COUNT: begin
  358 + oPorts.set(
  359 + new OGeneric(PacketLong::prototype()),
  360 + TIMER_COUNT
  361 + );
  362 + // Output port TIMER_COUNT: end
  363 + // Output port OUT_LONG: begin
  364 + oPorts.set(
  365 + new OGeneric(PacketLong::prototype()),
  366 + OUT_LONG
  367 + );
  368 + // Output port OUT_LONG: end
  369 +
  370 +
  371 + for(i=0; i<INPUT_PORTS; i++)
  372 + if(!oPorts.get(i))
  373 + {
  374 + ostringstream stringStream;
  375 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  376 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  377 + throw NoMemory(stringStream.str().c_str());
  378 + }
  379 +
  380 + // NETWORK OUTPUT PORTS CREATION: END
  381 +
  382 + // NETWORK OUTPUT BOX CREATION: BEGIN
  383 + auto_ptr<OBox> inputNetworkThreadOBox(
  384 + new OBox(
  385 + oPorts.get(),
  386 + INPUT_PORTS
  387 + )
  388 + );
  389 +
  390 + if( !inputNetworkThreadOBox.get() )
  391 + {
  392 + ostringstream stringStream;
  393 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  394 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  395 + throw NoMemory(stringStream.str().c_str());
  396 + }
  397 +
  398 + oPorts.release();
  399 +
  400 + // NETWORK OUTPUT BOX CREATION: END
  401 +
  402 + // NETWORK INPUT AND OUTPUT THREAD CREATION: BEGIN
  403 +
  404 + auto_ptr<PortThread> inputNetworkThread(
  405 + new PortThread(
  406 + inputNetworkThreadIBox.get(),
  407 + _NETWORK_INPUT_CONTROL_
  408 + )
  409 + );
  410 +
  411 + auto_ptr<PortThread> outputNetworkThread(
  412 + new PortThread(
  413 + outputNetworkThreadIBox.get(),
  414 + _NETWORK_OUTPUT_CONTROL_
  415 + )
  416 + );
  417 +
  418 + if( !inputNetworkThread.get() || !outputNetworkThread.get() )
  419 + {
  420 + ostringstream stringStream;
  421 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  422 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  423 + throw NoMemory(stringStream.str().c_str());
  424 + }
  425 +
  426 + // NETWORK INPUT AND OUTPUT THREAD CREATION: END
  427 +
  428 + // NETWORK OUTPUT TIMER INITIALIZATION: BEGIN
  429 +/*
  430 + auto_ptr<TimerWrap> outputNetworkThreadTimer(
  431 + new TimerWrap(
  432 + outputNetworkThreadIBox.get(),
  433 + _NETWORK_OUTPUT_TIMER_,
  434 + _pTimerThread_
  435 + )
  436 + );
  437 + if(!outputNetworkThreadTimer.get())
  438 + {
  439 + ostringstream stringStream;
  440 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  441 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  442 + throw NoMemory(stringStream.str().c_str());
  443 + }
  444 +*/
  445 + // NETWORK OUTPUT TIMER INITIALIZATION: END
  446 +
  447 + // NETWORK OUTPUT SOCKET TABLE CREATION: BEGIN
  448 +
  449 + auto_ptr<OutConnectionTable>
  450 + outputConnectionTable(new OutConnectionTable(OUTPUT_PORTS));
  451 +
  452 + if(!outputConnectionTable.get())
  453 + {
  454 + ostringstream stringStream;
  455 + stringStream<<"MyFirstComponentProbe::_networkAllocation_() error:\n\tNot enough memory.\n"
  456 + <<"\t"<<__FILE__<<":"<<__LINE__<<endl;
  457 + throw NoMemory(stringStream.str().c_str());
  458 + }
  459 +
  460 + // NETWORK OUTPUT SOCKET TABLE CREATION: END
  461 +
  462 + // NETWORK INPUT CONNECTION TABLE CREATION: BEGIN
  463 +
  464 + auto_ptr<InConnectionTable>
  465 + inputConnectionTable(new InConnectionTable(INPUT_PORTS));
  466 +
  467 + if(!inputConnectionTable.get())
  468 + {
  469 + ostringstream stringStream;