Changeset 0c0b2d4 in rtems-tools


Ignore:
Timestamp:
Apr 3, 2016, 5:37:01 AM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, e9f48e9face6c4dea62712d73b35412c0fe10332
Children:
2e97351
Parents:
dfa2468
Message:

rtemstoolkit: Add version number parsing to get major, minor, revision.

Add support to return the major, minor or revision numbers as numbers.

Location:
rtemstoolkit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • rtemstoolkit/rld-rtems.cpp

    rdfa2468 r0c0b2d4  
    11/*
    2  * Copyright (c) 2011-2014, Chris Johns <chrisj@rtems.org>
     2 * Copyright (c) 2011-2016, Chris Johns <chrisj@rtems.org>
    33 *
    44 * Permission to use, copy, modify, and/or distribute this software for any
     
    2929    static std::string _arch_bsp;
    3030
     31    static uint64_t _version_major = 0;
     32    static uint64_t _version_minor = 0;
     33    static uint64_t _version_revision = 0;
     34
    3135    static void
    3236    load_cc ()
     
    131135    {
    132136      _version = version_;
     137      rld::version_parse (_version,
     138                          _version_major,
     139                          _version_minor,
     140                          _version_revision);
    133141    }
    134142
     
    153161    {
    154162      return _version;
     163    }
     164
     165    uint64_t
     166    version_major ()
     167    {
     168      if (_version_major == 0)
     169        rld::version_parse (_version,
     170                            _version_major,
     171                            _version_minor,
     172                            _version_revision);
     173      return _version_major;
     174    }
     175
     176    uint64_t
     177    version_minor ()
     178    {
     179      if (_version_minor == 0)
     180        rld::version_parse (_version,
     181                            _version_major,
     182                            _version_minor,
     183                            _version_revision);
     184      return _version_minor;
     185    }
     186
     187    uint64_t
     188    version_revision ()
     189    {
     190      if (_version_revision == 0)
     191        rld::version_parse (_version,
     192                            _version_major,
     193                            _version_minor,
     194                            _version_revision);
     195      return _version_revision;
    155196    }
    156197
  • rtemstoolkit/rld-rtems.h

    rdfa2468 r0c0b2d4  
    5353
    5454    /**
     55     * Get the RTEMS major version number.
     56     */
     57    uint64_t version_major ();
     58
     59    /**
     60     * Get the RTEMS minor version number.
     61     */
     62    uint64_t version_minor ();
     63
     64    /**
     65     * Get the RTEMS revision version number.
     66     */
     67    uint64_t version_revision ();
     68
     69    /**
    5570     * Return the arch/bsp string.
    5671     */
  • rtemstoolkit/rld.cpp

    rdfa2468 r0c0b2d4  
    6868
    6969  /**
    70    * The output passed on the command line.
    71    */
    72   //static std::string output;
     70   * The version major number.
     71   */
     72  static uint64_t _version_major;
     73
     74  /**
     75   * The version minor number.
     76   */
     77  static uint64_t _version_minor;
     78
     79  /**
     80   * The version revision number.
     81   */
     82  static uint64_t _version_revision;
    7383
    7484  bool
     
    185195
    186196  void
     197  version_parse (const std::string& str,
     198                 uint64_t&          major,
     199                 uint64_t&          minor,
     200                 uint64_t&          revision)
     201  {
     202    strings parts;
     203
     204    rld::split (parts, str, '.');
     205
     206    if (parts.size () >= 1)
     207    {
     208      std::istringstream iss (parts[0]);
     209      iss >> major;
     210    }
     211
     212    if (parts.size () >= 2)
     213    {
     214      std::istringstream iss (parts[1]);
     215      iss >> minor;
     216    }
     217
     218    if (parts.size () >= 3)
     219    {
     220      size_t p = parts[2].find ('_');
     221
     222      if (p != std::string::npos)
     223        parts[2].erase (p);
     224
     225      std::istringstream iss (parts[2]);
     226
     227      if (p != std::string::npos)
     228        iss >> std::hex;
     229
     230      iss >> revision;
     231    }
     232  }
     233
     234  void
    187235  verbose_inc ()
    188236  {
     
    202250  }
    203251
    204   const std::string
    205   rtems_version ()
    206   {
    207     return RTEMS_VERSION;
     252  uint64_t
     253  version_major ()
     254  {
     255    if (_version_major == 0)
     256      version_parse (version (),
     257                     _version_major,
     258                     _version_minor,
     259                     _version_revision);
     260    return _version_major;
     261  }
     262
     263  uint64_t
     264  version_minor ()
     265  {
     266    if (_version_major == 0)
     267      version_parse (version (),
     268                     _version_major,
     269                     _version_minor,
     270                     _version_revision);
     271    return _version_minor;
     272  }
     273
     274  uint64_t
     275  version_revision ()
     276  {
     277    if (_version_major == 0)
     278      version_parse (version (),
     279                     _version_major,
     280                     _version_minor,
     281                     _version_revision);
     282    return _version_revision;
    208283  }
    209284
  • rtemstoolkit/rld.h

    rdfa2468 r0c0b2d4  
    3030#include <functional>
    3131#include <iostream>
     32#include <list>
    3233#include <locale>
    3334#include <sstream>
     
    6465    class archive;
    6566    class object;
     67    class cache;
     68    typedef std::list < object* > object_list;
    6669  }
    6770}
     
    180183
    181184  /**
     185   * Parse version string of format major.minor.revision where revieion can be
     186   * a git hash.
     187   */
     188  void version_parse (const std::string& str,
     189                      uint64_t&          major,
     190                      uint64_t&          minor,
     191                      uint64_t&          revision);
     192
     193  /**
    182194   * Increment the verbose level.
    183195   */
     
    194206   */
    195207  const std::string version ();
     208
     209  /**
     210   * Get the major version number.
     211   */
     212  uint64_t version_major ();
     213
     214  /**
     215   * Get the minor version number.
     216   */
     217  uint64_t version_minor ();
     218
     219  /**
     220   * Get the revision version number.
     221   */
     222  uint64_t version_revision ();
    196223
    197224  /**
Note: See TracChangeset for help on using the changeset viewer.