/* -*- c++ -*- */
/*
 * Copyright 2006,2009,2013 Free Software Foundation, Inc.
 *
 * This file is part of GNU Radio
 *
 * GNU Radio is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3, or (at your option)
 * any later version.
 *
 * GNU Radio is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GNU Radio; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street,
 * Boston, MA 02110-1301, USA.
 */

#if HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdlib.h>
#include <grgsm/constants.h>

namespace gr {
 namespace gsm{
  const std::string
  build_date()
  {
    return "@BUILD_DATE@";
  }

  const std::string
  version()
  {
    return "@VERSION@";
  }

  // Return individual parts of the version
  const std::string
  major_version()
  {
    return "@MAJOR_VERSION@";
  }

  const std::string
  api_version()
  {
    return "@API_COMPAT@";
  }

  const std::string
  minor_version()
  {
    return "@MINOR_VERSION@";
  }
  
  const std::string
  maint_version()
  {
    return "@MAINT_VERSION@";
  }
 } /* namespace gsm */
} /* namespace gr */
