From b6acfdaa24851e1aa95bfc4611709737aaafa5f1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 17 Oct 2013 19:41:11 +0200 Subject: bts: Introduce a singleton for the BTS and use it in the code Compared to the previous code there will be a branch to get the global pointer so the code will be slightly slower than the previous version but it allows us to start creating objects but still use the code from C. It is best approach I have found so far. One downside of C++ is that by default talloc will not be used (unless we override the new operator to use talloc. Right now we need to memset the C data structure by hand. The benefit of enforcing a better structure should is more important though. --- src/bts.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/bts.cpp (limited to 'src/bts.cpp') diff --git a/src/bts.cpp b/src/bts.cpp new file mode 100644 index 00000000..0609a5fe --- /dev/null +++ b/src/bts.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2013 by Holger Hans Peter Freyther + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License + * along with this program. If not, see . + * + */ + +#include +#include + +static BTS s_bts; + +BTS* BTS::main_bts() +{ + return &s_bts; +} + +struct gprs_rlcmac_bts *BTS::bts_data() +{ + return &m_bts; +} + +struct gprs_rlcmac_bts *bts_main_data() +{ + return BTS::main_bts()->bts_data(); +} + +BTS::BTS() +{ + memset(&m_bts, 0, sizeof(m_bts)); + m_bts.bts = this; +} -- cgit v1.2.3