Skip to content
Snippets Groups Projects
Commit c097a05d authored by Oliver Heidmann's avatar Oliver Heidmann
Browse files

class rework Filedes.cc

parent b95381b2
No related branches found
No related tags found
1 merge request!78M300433/class reworks/multiple class reworks 8
......@@ -305,71 +305,100 @@ filedes(CdoStreamID streamID)
printf("\n");
}
void *
Filedes(void *process)
class ModuleFiledes
{
cdo_initialize(process);
// clang-format off
auto GRIDDES = cdo_operator_add("griddes", 0, 0, nullptr);
auto GRIDDES2 = cdo_operator_add("griddes2", 0, 0, nullptr);
auto ZAXISDES = cdo_operator_add("zaxisdes", 0, 0, nullptr);
auto VCT = cdo_operator_add("vct", 0, 0, nullptr);
auto VCT2 = cdo_operator_add("vct2", 0, 0, nullptr);
auto CODETAB = cdo_operator_add("codetab", 0, 0, nullptr);
auto FILEDES = cdo_operator_add("filedes", 0, 0, nullptr);
auto VLIST = cdo_operator_add("vlist", 0, 0, nullptr);
auto SPARTAB = cdo_operator_add("spartab", 0, 0, nullptr);
auto PARTAB = cdo_operator_add("partab", 0, 0, nullptr);
auto PARTAB2 = cdo_operator_add("partab2", 0, 0, nullptr);
// clang-format on
auto operatorID = cdo_operator_id();
int operatorID;
operator_check_argc(0);
CdoStreamID streamID;
auto streamID = cdo_open_read(0);
auto vlistID = cdo_stream_inq_vlist(streamID);
int vlistID;
VarList varList;
varListInit(varList, vlistID);
if (operatorID == GRIDDES || operatorID == GRIDDES2)
{
auto opt = (operatorID == GRIDDES) ? 1 : 0;
auto ngrids = vlistNgrids(vlistID);
for (int index = 0; index < ngrids; ++index)
{
printf("#\n# gridID %d\n#\n", index + 1);
cdo_print_griddes(vlistGrid(vlistID, index), opt);
auto nsubtypes = vlistNsubtypes(vlistID);
for (int i = 0; i < nsubtypes; ++i) subtypePrint(vlistSubtype(vlistID, i));
}
}
else if (operatorID == ZAXISDES)
{
auto nzaxis = vlistNzaxis(vlistID);
for (int index = 0; index < nzaxis; ++index)
{
printf("#\n# zaxisID %d\n#\n", index + 1);
cdoPrintZaxis(vlistZaxis(vlistID, index));
}
}
else if (operatorID == VCT || operatorID == VCT2) { printVCT(vlistID, operatorID == VCT); }
else if (operatorID == VLIST) { vlistPrint(vlistID); }
else if (operatorID == CODETAB) { printCodeTable(varList); }
else if (operatorID == PARTAB || operatorID == SPARTAB || operatorID == PARTAB2)
{
auto option = (operatorID == SPARTAB) ? 4 : ((operatorID == PARTAB2) ? 2 : 1);
partab(stdout, vlistID, varList, option);
}
else if (operatorID == FILEDES) { filedes(streamID); }
int GRIDDES, GRIDDES2, ZAXISDES, VCT, VCT2, CODETAB, FILEDES, VLIST, SPARTAB, PARTAB, PARTAB2;
public:
void
init(void *process)
{
cdo_initialize(process);
// clang-format off
GRIDDES = cdo_operator_add("griddes", 0, 0, nullptr);
GRIDDES2 = cdo_operator_add("griddes2", 0, 0, nullptr);
ZAXISDES = cdo_operator_add("zaxisdes", 0, 0, nullptr);
VCT = cdo_operator_add("vct", 0, 0, nullptr);
VCT2 = cdo_operator_add("vct2", 0, 0, nullptr);
CODETAB = cdo_operator_add("codetab", 0, 0, nullptr);
FILEDES = cdo_operator_add("filedes", 0, 0, nullptr);
VLIST = cdo_operator_add("vlist", 0, 0, nullptr);
SPARTAB = cdo_operator_add("spartab", 0, 0, nullptr);
PARTAB = cdo_operator_add("partab", 0, 0, nullptr);
PARTAB2 = cdo_operator_add("partab2", 0, 0, nullptr);
// clang-format on
operatorID = cdo_operator_id();
operator_check_argc(0);
streamID = cdo_open_read(0);
vlistID = cdo_stream_inq_vlist(streamID);
varListInit(varList, vlistID);
}
void
run()
{
if (operatorID == GRIDDES || operatorID == GRIDDES2)
{
auto opt = (operatorID == GRIDDES) ? 1 : 0;
auto ngrids = vlistNgrids(vlistID);
for (int index = 0; index < ngrids; ++index)
{
printf("#\n# gridID %d\n#\n", index + 1);
cdo_print_griddes(vlistGrid(vlistID, index), opt);
auto nsubtypes = vlistNsubtypes(vlistID);
for (int i = 0; i < nsubtypes; ++i) subtypePrint(vlistSubtype(vlistID, i));
}
}
else if (operatorID == ZAXISDES)
{
auto nzaxis = vlistNzaxis(vlistID);
for (int index = 0; index < nzaxis; ++index)
{
printf("#\n# zaxisID %d\n#\n", index + 1);
cdoPrintZaxis(vlistZaxis(vlistID, index));
}
}
else if (operatorID == VCT || operatorID == VCT2) { printVCT(vlistID, operatorID == VCT); }
else if (operatorID == VLIST) { vlistPrint(vlistID); }
else if (operatorID == CODETAB) { printCodeTable(varList); }
else if (operatorID == PARTAB || operatorID == SPARTAB || operatorID == PARTAB2)
{
auto option = (operatorID == SPARTAB) ? 4 : ((operatorID == PARTAB2) ? 2 : 1);
partab(stdout, vlistID, varList, option);
}
else if (operatorID == FILEDES) { filedes(streamID); }
}
void
close()
{
cdo_stream_close(streamID);
if (!cdo::stdoutIsTerminal) Options::silentMode = true;
cdo_stream_close(streamID);
cdo_finish();
}
};
if (!cdo::stdoutIsTerminal) Options::silentMode = true;
void *
Filedes(void *process)
{
ModuleFiledes filedes;
cdo_finish();
filedes.init(process);
filedes.run();
filedes.close();
return nullptr;
}
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