Skip to content
Snippets Groups Projects
Commit 91b98720 authored by Maik Nijhuis's avatar Maik Nijhuis
Browse files

AST-1233 Hide all symbols except those that should be visible

parent 83716861
No related branches found
Tags v0.5.1
1 merge request!285AST-1233 Hide all symbols except those that should be visible
Pipeline #49918 passed with warnings
Showing
with 98 additions and 87 deletions
......@@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.8)
#------------------------------------------------------------------------------
# Set version name and project number
set(EVERYBEAM_VERSION 0.5.0)
set(EVERYBEAM_VERSION 0.5.1)
if(EVERYBEAM_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set(EVERYBEAM_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(EVERYBEAM_VERSION_MINOR "${CMAKE_MATCH_2}")
......@@ -32,6 +32,7 @@ include(ExternalProject)
# Configure directory for data files
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall")
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,--no-undefined")
# Note: Use type `STRING` here, instead of `PATH`. Because, if the user
# specified a _relative_ path on the command-line without specifying the type
......@@ -69,8 +70,8 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
endif()
# Include aocommon/eigen3/pybind11 headers
include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include/")
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/external/eigen/")
include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include")
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/external/eigen")
# Find python with cmake to convince pybind11 to use right python path
# This can go when we're using CMake >= 3.12:
# https://pybind11.readthedocs.io/en/stable/compiling.html#findpython-mode
......
......@@ -23,7 +23,7 @@ namespace aterms {
class ParsetProvider;
class ATermConfig final : public ATermBase {
class [[gnu::visibility("default")]] ATermConfig final : public ATermBase {
public:
ATermConfig(size_t n_antennas,
const aocommon::CoordinateSystem& coordinate_system,
......@@ -45,7 +45,7 @@ class ATermConfig final : public ATermBase {
const std::string& ms_filename = "");
/** Reimplemented from ATermBase */
bool Calculate(std::complex<float>* buffer, double time, double frequency,
bool Calculate(std::complex<float> * buffer, double time, double frequency,
size_t fieldId, const double* uvwInM) override;
/** Reimplemented from ATermBase */
......
......@@ -33,7 +33,8 @@ class Cache {
Cache& operator=(const Cache&) = delete;
Cache& operator=(Cache&&) = default;
static const size_t kNotFound; // = std::numeric_limits<size_t>::max();
[[gnu::visibility("default")]] static const size_t
kNotFound; // = std::numeric_limits<size_t>::max();
/**
* Clears all stored values, such that e.g. the cache is ready for a new
......
......@@ -14,7 +14,7 @@
namespace everybeam {
namespace aterms {
class FourierFitter {
class [[gnu::visibility("default")]] FourierFitter {
public:
FourierFitter(std::size_t subgrid_size, std::size_t support,
const std::vector<std::pair<float, float>>& directions);
......
......@@ -28,7 +28,8 @@ class FourierFitter;
* leading to aterms that have both limited support and
* an exact reconstruction at the points of interest.
*/
class FourierFittingATerm final : public ATermBase {
class [[gnu::visibility("default")]] FourierFittingATerm final
: public ATermBase {
public:
/**
* @brief Constructs FourierFittingATerm
......@@ -65,7 +66,7 @@ class FourierFittingATerm final : public ATermBase {
* @return true Results are updated
* @return false No need to update the result, cached result can be used
*/
bool Calculate(std::complex<float>* buffer, double time, double frequency,
bool Calculate(std::complex<float> * buffer, double time, double frequency,
size_t field_id, const double* uvw_in_m) override;
/**
......
......@@ -162,7 +162,7 @@ class LagrangePolynomial {
* has at least the following axes ("ant", "time", "dir"). The polynomial
* coefficients are stored along the "dir" axis
*/
class H5ParmATerm final : public ATermBase {
class [[gnu::visibility("default")]] H5ParmATerm final : public ATermBase {
public:
H5ParmATerm(const std::vector<std::string>& station_names_ms,
const aocommon::CoordinateSystem& coordinate_system);
......@@ -185,7 +185,7 @@ class H5ParmATerm final : public ATermBase {
* @return true Results are updated
* @return false No need to update the result, cached result can be used
*/
bool Calculate(std::complex<float>* buffer, double time, double frequency,
bool Calculate(std::complex<float> * buffer, double time, double frequency,
size_t field_id, const double* uvw_in_m) override;
/**
......@@ -212,7 +212,7 @@ class H5ParmATerm final : public ATermBase {
// Read coefficients from solution tab, for given
// time index(frequency not relevant, as yet)
static void ReadCoeffs(schaapcommon::h5parm::SolTab& soltab,
static void ReadCoeffs(schaapcommon::h5parm::SolTab & soltab,
const std::string& station_name,
std::vector<float>& coeffs, hsize_t time_index);
......
......@@ -14,7 +14,7 @@
namespace everybeam {
namespace aterms {
class KlFitter {
class [[gnu::visibility("default")]] KlFitter {
public:
KlFitter(std::size_t subgrid_size, int order,
const std::vector<std::pair<float, float>>& directions);
......
......@@ -20,7 +20,7 @@ class KlFitter;
* Class that reads in H5Parm solution files and
* fits Karhunen-Loève base functions to them\
*/
class KlFittingATerm final : public ATermBase {
class [[gnu::visibility("default")]] KlFittingATerm final : public ATermBase {
public:
KlFittingATerm(const std::vector<std::string>& station_names_ms,
const aocommon::CoordinateSystem& coordinate_system, int order,
......@@ -50,7 +50,7 @@ class KlFittingATerm final : public ATermBase {
* @return true Results are updated
* @return false No need to update the result, cached result can be used
*/
bool Calculate(std::complex<float>* buffer, double time, double frequency,
bool Calculate(std::complex<float> * buffer, double time, double frequency,
size_t field_id, const double* uvw_in_m) override;
/**
......
......@@ -17,12 +17,13 @@ namespace common {
* @param x the argument
* @return double
*/
double P(int m, int n, double x);
[[gnu::visibility("default")]] double P(int m, int n, double x);
/**
* @brief Evaluate associated Legendre polynomial (array input)
*/
Eigen::ArrayXd P(int m, int n, const Eigen::ArrayXd& x);
[[gnu::visibility("default")]] Eigen::ArrayXd P(int m, int n,
const Eigen::ArrayXd& x);
/**
* @brief P' of associated Legendre polynomial
......@@ -32,12 +33,13 @@ Eigen::ArrayXd P(int m, int n, const Eigen::ArrayXd& x);
* @param x the argument
* @return double
*/
double Pacc(int m, int n, double x);
[[gnu::visibility("default")]] double Pacc(int m, int n, double x);
/**
* @brief P' of asscociated Legendre polynomial (array input)
*/
Eigen::ArrayXd Pacc(int m, int n, const Eigen::ArrayXd& x);
[[gnu::visibility("default")]] Eigen::ArrayXd Pacc(int m, int n,
const Eigen::ArrayXd& x);
/**
* @brief Evaluate spherical harmonic for given position
......@@ -49,16 +51,16 @@ Eigen::ArrayXd Pacc(int m, int n, const Eigen::ArrayXd& x);
* @param phi elevation angle [rad]
* @return std::pair<std::complex<double>, std::complex<double>>
*/
std::pair<std::complex<double>, std::complex<double>> F4far_new(int s, int m,
int n,
double theta,
double phi);
[[gnu::visibility(
"default")]] std::pair<std::complex<double>, std::complex<double>>
F4far_new(int s, int m, int n, double theta, double phi);
/**
* @brief Evaluate spherical harmonics for given positions (vector input)
*/
std::pair<Eigen::VectorXcd, Eigen::VectorXcd> F4far_new(
int s, int m, int n, const Eigen::VectorXd& theta,
const Eigen::VectorXd& phi);
[[gnu::visibility("default")]] std::pair<Eigen::VectorXcd, Eigen::VectorXcd>
F4far_new(int s, int m, int n, const Eigen::VectorXd& theta,
const Eigen::VectorXd& phi);
} // namespace common
} // namespace everybeam
......
......@@ -23,7 +23,7 @@ namespace coords {
* NOTE: this class is not thread-safe due to casacore dependencies.
*
*/
class ItrfConverter {
class [[gnu::visibility("default")]] ItrfConverter {
public:
ItrfConverter(real_t time);
......
......@@ -38,10 +38,11 @@ enum class ElementResponseModel {
kAartfaacOuter = 8
};
std::ostream& operator<<(std::ostream& os, ElementResponseModel model);
[[gnu::visibility("default")]] std::ostream& operator<<(
std::ostream& os, ElementResponseModel model);
ElementResponseModel ElementResponseModelFromString(
const std::string& element_response);
[[gnu::visibility("default")]] ElementResponseModel
ElementResponseModelFromString(const std::string& element_response);
/**
* @brief Abstract class for the element response model. All the
......@@ -51,7 +52,8 @@ ElementResponseModel ElementResponseModelFromString(
* LobesElementResponseFixedDirection stores a pointer to the wrapped class,
* which is already owned elsewhere (typically by Station).
*/
class ElementResponse : public std::enable_shared_from_this<ElementResponse> {
class [[gnu::visibility("default")]] ElementResponse
: public std::enable_shared_from_this<ElementResponse> {
public:
virtual ~ElementResponse() {}
......@@ -80,8 +82,8 @@ class ElementResponse : public std::enable_shared_from_this<ElementResponse> {
* @param phi Angle in the xy-plane wrt. x-axis (rad)
* @return A 2x2 array containing the Jones matrix.
*/
virtual aocommon::MC2x2 Response(double freq, double theta,
double phi) const = 0;
virtual aocommon::MC2x2 Response(double freq, double theta, double phi)
const = 0;
/**
* @brief Virtual implementation of Response method
......
......@@ -19,7 +19,8 @@ namespace griddedresponse {
* fact that the station response is identical for all stations
* within an AARTFAAC observation.
*/
class AartfaacGrid final : public PhasedArrayGrid {
class [[gnu::visibility("default")]] AartfaacGrid final
: public PhasedArrayGrid {
public:
/**
* @brief Construct a new AartfaacGrid object
......@@ -31,15 +32,15 @@ class AartfaacGrid final : public PhasedArrayGrid {
const aocommon::CoordinateSystem& coordinate_system)
: PhasedArrayGrid(telescope_ptr, coordinate_system){};
void ResponseAllStations(BeamMode beam_mode, std::complex<float>* buffer,
double time, double frequency,
size_t field_id) override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float> * buffer,
double time, double frequency, size_t field_id)
override;
private:
// Override MakeIntegratedSnapshot for efficiency.
// Implementation is similar to MWAGrid::MakeIntegratedSnapshot
void MakeIntegratedSnapshot(BeamMode beam_mode,
std::vector<aocommon::HMC4x4>& matrices,
std::vector<aocommon::HMC4x4> & matrices,
double time, double frequency, size_t field_id,
const double* baseline_weights_interval) override;
};
......
......@@ -16,18 +16,18 @@ namespace griddedresponse {
* e.g. VLA, ATCA, GMRT, SKA-MID
*
*/
class DishGrid : public GriddedResponse {
class [[gnu::visibility("default")]] DishGrid : public GriddedResponse {
public:
DishGrid(const telescope::Telescope* telescope_ptr,
const aocommon::CoordinateSystem coordinate_system)
: GriddedResponse(telescope_ptr, coordinate_system){};
void Response(BeamMode beam_mode, std::complex<float>* buffer, double time,
void Response(BeamMode beam_mode, std::complex<float> * buffer, double time,
double frequency, size_t station_idx, size_t field_id) override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float>* buffer,
double time, double frequency,
size_t field_id) final override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float> * buffer,
double time, double frequency, size_t field_id)
final override;
void IntegratedResponse(
BeamMode beam_mode, float* buffer, double time, double frequency,
......@@ -57,7 +57,7 @@ class DishGrid : public GriddedResponse {
* @param frequency Frequency (Hz)
* @param field_id Field id
*/
void MakeIntegratedDishSnapshot(std::vector<aocommon::HMC4x4>& matrices,
void MakeIntegratedDishSnapshot(std::vector<aocommon::HMC4x4> & matrices,
double frequency, size_t field_id);
};
} // namespace griddedresponse
......
......@@ -31,7 +31,7 @@ namespace griddedresponse {
* @brief Virtual base class to compute the gridded response
*
*/
class GriddedResponse {
class [[gnu::visibility("default")]] GriddedResponse {
public:
virtual ~GriddedResponse() {}
......@@ -49,7 +49,7 @@ class GriddedResponse {
* @param time Time, modified Julian date, UTC, in seconds (MJD(UTC), s).
* @param frequency Frequency (Hz)
*/
virtual void Response(BeamMode beam_mode, std::complex<float>* destination,
virtual void Response(BeamMode beam_mode, std::complex<float> * destination,
double time, double freq, size_t station_idx,
size_t field_id) = 0;
......@@ -64,10 +64,9 @@ class GriddedResponse {
* @param time Time, modified Julian date, UTC, in seconds (MJD(UTC), s).
* @param frequency Frequency (Hz)
*/
virtual void ResponseAllStations(BeamMode beam_mode,
std::complex<float>* destination,
double time, double frequency,
size_t field_id) = 0;
virtual void ResponseAllStations(
BeamMode beam_mode, std::complex<float> * destination, double time,
double frequency, size_t field_id) = 0;
/**
* @brief Calculate integrated/undersampled beam for a single time step.
......@@ -111,11 +110,10 @@ class GriddedResponse {
* (Telescope::GetNrStations() * (Telescope::GetNrStations() + 1)/2) *
* time_array.size()
*/
virtual void IntegratedResponse(BeamMode beam_mode, float* destination,
const std::vector<double>& time_array,
double frequency, size_t field_id,
size_t undersampling_factor,
const std::vector<double>& baseline_weights);
virtual void IntegratedResponse(
BeamMode beam_mode, float* destination,
const std::vector<double>& time_array, double frequency, size_t field_id,
size_t undersampling_factor, const std::vector<double>& baseline_weights);
/**
* Same as @ref IntegratedResponse(), but without performing the upsampling.
......@@ -192,11 +190,10 @@ class GriddedResponse {
* perform a weighted average. (Partly) homogenous arrays may implement a
* faster implementation by overriding this method.
*/
virtual void MakeIntegratedSnapshot(BeamMode beam_mode,
std::vector<aocommon::HMC4x4>& matrices,
double time, double frequency,
size_t field_id,
const double* baseline_weights_interval);
virtual void MakeIntegratedSnapshot(
BeamMode beam_mode, std::vector<aocommon::HMC4x4> & matrices, double time,
double frequency, size_t field_id,
const double* baseline_weights_interval);
};
} // namespace griddedresponse
} // namespace everybeam
......
......@@ -13,25 +13,25 @@
namespace everybeam {
namespace griddedresponse {
class MWAGrid final : public GriddedResponse {
class [[gnu::visibility("default")]] MWAGrid final : public GriddedResponse {
public:
MWAGrid(const telescope::Telescope* telescope_ptr,
const aocommon::CoordinateSystem coordinate_system)
: GriddedResponse(telescope_ptr, coordinate_system){};
void Response(BeamMode beam_mode, std::complex<float>* buffer, double time,
void Response(BeamMode beam_mode, std::complex<float> * buffer, double time,
double frequency, size_t station_idx, size_t field_id) override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float>* buffer,
double time, double frequency,
size_t field_id) override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float> * buffer,
double time, double frequency, size_t field_id)
override;
private:
std::unique_ptr<everybeam::mwabeam::TileBeam2016> tile_beam_;
// Override MakeIntegrated snapshot for efficiency
void MakeIntegratedSnapshot(BeamMode beam_mode,
std::vector<aocommon::HMC4x4>& matrices,
std::vector<aocommon::HMC4x4> & matrices,
double time, double frequency, size_t field_id,
const double* baseline_weights_interval) override;
};
......
......@@ -18,18 +18,20 @@ class Lane;
namespace everybeam {
namespace griddedresponse {
class PhasedArrayGrid : public GriddedResponse, protected PhasedArrayResponse {
class [[gnu::visibility("default")]] PhasedArrayGrid
: public GriddedResponse,
protected PhasedArrayResponse {
public:
PhasedArrayGrid(const telescope::Telescope* telescope_ptr,
const aocommon::CoordinateSystem& coordinate_system);
void Response(BeamMode beam_mode, std::complex<float>* buffer, double time,
double frequency, size_t station_idx,
size_t field_id) final override;
void Response(BeamMode beam_mode, std::complex<float> * buffer, double time,
double frequency, size_t station_idx, size_t field_id)
final override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float>* buffer,
double time, double frequency,
size_t field_id) override;
void ResponseAllStations(BeamMode beam_mode, std::complex<float> * buffer,
double time, double frequency, size_t field_id)
override;
private:
vector3r_t l_vector_itrf_;
......
......@@ -12,7 +12,8 @@
namespace everybeam {
//! Implementation of the Hamaker response model
class HamakerElementResponse : public ElementResponse {
class [[gnu::visibility("default")]] HamakerElementResponse
: public ElementResponse {
public:
explicit HamakerElementResponse(const std::string& name);
......@@ -20,8 +21,8 @@ class HamakerElementResponse : public ElementResponse {
return ElementResponseModel::kHamaker;
}
aocommon::MC2x2 Response(double freq, double theta,
double phi) const final override;
aocommon::MC2x2 Response(double freq, double theta, double phi)
const final override;
/**
* @brief Get instance of Hamaker LBA response
......
......@@ -33,7 +33,8 @@ enum TelescopeType {
* @param ms
* @return TelescopeType
*/
TelescopeType GetTelescopeType(const casacore::MeasurementSet& ms);
[[gnu::visibility("default")]] TelescopeType GetTelescopeType(
const casacore::MeasurementSet& ms);
/**
* @brief Load telescope given a measurement set. Telescope is determined
......@@ -43,8 +44,8 @@ TelescopeType GetTelescopeType(const casacore::MeasurementSet& ms);
* @param options Options
* @return Unique pointer to Telescope object
*/
std::unique_ptr<telescope::Telescope> Load(const casacore::MeasurementSet& ms,
const Options& options);
[[gnu::visibility("default")]] std::unique_ptr<telescope::Telescope> Load(
const casacore::MeasurementSet& ms, const Options& options);
/**
* @brief Load telescope given a path to a measurment set. Telescope is
......@@ -54,8 +55,8 @@ std::unique_ptr<telescope::Telescope> Load(const casacore::MeasurementSet& ms,
* @param options Options
* @return Unique pointer to Telescope object
*/
std::unique_ptr<telescope::Telescope> Load(const std::string& ms_name,
const Options& options);
[[gnu::visibility("default")]] std::unique_ptr<telescope::Telescope> Load(
const std::string& ms_name, const Options& options);
/**
* @brief Convert a string to an ElementResponseModel enum
......
......@@ -69,8 +69,9 @@ class LOBESElementResponse : public ElementResponse {
*
* @param name Station name, e.g. CS302LBA
*/
static std::shared_ptr<const LOBESElementResponse> GetInstance(
const std::string& name, const Options& options);
[[gnu::visibility(
"default")]] static std::shared_ptr<const LOBESElementResponse>
GetInstance(const std::string& name, const Options& options);
/**
* Creates a LobesElementResponseForDirection object with the field quantities
......
......@@ -31,9 +31,9 @@ const std::string kAartfaacAntennaTypeName = "AARTFAAC_ANTENNA_TYPE";
* @return A Station object representing the station that was read.
*/
std::unique_ptr<Station> ReadSingleStation(const casacore::MeasurementSet& ms,
unsigned int id,
const Options& options = Options());
[[gnu::visibility("default")]] std::unique_ptr<Station> ReadSingleStation(
const casacore::MeasurementSet& ms, unsigned int id,
const Options& options = Options());
/**
* @brief Read multiple stations from measurment set into buffer out_it
......@@ -55,6 +55,7 @@ inline void ReadAllStations(const casacore::MeasurementSet& ms, T out_it,
// Read the tile beam direction from a LOFAR MS. If it is not defined,
// this function returns the delay center.
casacore::MDirection ReadTileBeamDirection(const casacore::MeasurementSet& ms);
[[gnu::visibility("default")]] casacore::MDirection ReadTileBeamDirection(
const casacore::MeasurementSet& ms);
} // namespace everybeam
#endif // EVERYBEAM_MSREADUTILS_H_
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment