25#include <wx/filename.h>
27#include "TCDataSource.h"
28#include "TCDS_Ascii_Harmonic.h"
29#include "TCDS_Binary_Harmonic.h"
31#include <wx/arrimpl.cpp>
32WX_DEFINE_OBJARRAY(ArrayOfTCDSources);
34TCDataSource::TCDataSource() {
36 pTCDS_Ascii_Harmonic = NULL;
37 pTCDS_Binary_Harmonic = NULL;
40TCDataSource::~TCDataSource() {
41 wxLogMessage(_T(
"UnLoading Tide/Current data source: %s"),
42 m_data_source_path.c_str());
44 delete pTCDS_Ascii_Harmonic;
45 delete pTCDS_Binary_Harmonic;
48TC_Error_Code TCDataSource::LoadData(
const wxString &data_file_path) {
49 m_data_source_path = data_file_path;
50 wxLogMessage(_T(
"Loading Tide/Current data source: %s"),
51 m_data_source_path.c_str());
53 wxFileName fname(data_file_path);
55 if (!fname.FileExists())
return TC_FILE_NOT_FOUND;
57 if (fname.GetExt() == _T(
"IDX") || fname.GetExt() == _T(
"idx")) {
60 pTCDS_Ascii_Harmonic = pdata;
61 }
else if (fname.GetExt() == _T(
"tcd") || fname.GetExt() == _T(
"TCD")) {
64 pTCDS_Binary_Harmonic = pdata;
67 TC_Error_Code err_code;
69 err_code = m_pfactory->LoadData(data_file_path);
70 if (err_code != TC_NO_ERROR) {
71 wxLogMessage(
"Error loading tide/current data.");
76 unsigned int max_index = GetMaxIndex();
77 for (
unsigned int i = 0; i < max_index; i++) {
87 err_code = TC_FILE_NOT_FOUND;
92int TCDataSource::GetMaxIndex(
void) {
94 return m_pfactory->GetMaxIndex();
99IDX_entry *TCDataSource::GetIndexEntry(
int n_index) {
101 if (n_index < m_pfactory->GetMaxIndex())
102 return m_pfactory->GetIndexEntry(n_index);
109TC_Error_Code TCDataSource::LoadHarmonicData(
IDX_entry *pIDX) {
111 case SOURCE_TYPE_ASCII_HARMONIC:
112 return pTCDS_Ascii_Harmonic->LoadHarmonicData(pIDX);
115 case SOURCE_TYPE_BINARY_HARMONIC:
116 return pTCDS_Binary_Harmonic->LoadHarmonicData(pIDX);
120 return TC_GENERIC_ERROR;
Represents an index entry for tidal and current data.
TCDataSource * pDataSource
Pointer to the associated data source.
char source_ident[MAXNAMELEN]
Identifier of the source (typically file name)
source_data_t source_data_type
Format of the source data (ASCII or binary)