#include <stdcasa/StdCasa/CasacSupport.h>
#include <casacore/casa/Arrays/ArrayMath.h>
#include <casacore/casa/Exceptions/Error.h>
#include <casacore/casa/Containers/Record.h>
#include <casacore/casa/Containers/ValueHolder.h>
#include <casacore/casa/Quanta/QuantumHolder.h>
#include <casacore/casa/Quanta/MVAngle.h>
#include <casacore/measures/Measures/MeasureHolder.h>
#include <casacore/measures/Measures/MeasTable.h>
using namespace casacore;
Vector<String> toVectorString(const std::vector<std::string> &theVec){
Vector<String> b(theVec.size());
for(unsigned int i=0; i<theVec.size(); i++)
b[i] = String(theVec[i]);
String toCasaString(const casac::variant& var){
if(var.type()==::casac::variant::STRINGVEC){
Vector<String> outvec=toVectorString(var.toStringVec());
if(outvec.nelements() >0)
for (uInt k =1; k < outvec.nelements(); ++k){
out=out+String(",")+outvec[k];
out=String(var.toString());
if (out.length()>1 && out.firstchar()=='[' && out.lastchar()==']')
out = out.substr(1,out.length()-2);
std::vector<string> fromVectorString(const Vector<String> &theVec){
std::vector<string> b(theVec.size());
for(unsigned int i=0; i<theVec.size(); i++)
b[i] = theVec[i].c_str();
casac::Quantity casacQuantity(const Quantity &quant){
casac::Quantity cquant(std::vector<double>(1,0.0), "");
cquant.value[0] = quant.getValue();
cquant.units = quant.getUnit().c_str();
Quantity casaQuantity(const casac::Quantity &cquant){
if(cquant.value.size() < 1)
throw(AipsError("Bad quantity conversion"));
return Quantity(cquant.value[0], Unit(cquant.units));
Quantity casaQuantity(const casac::variant &theVar){
casacore::QuantumHolder qh;
Bool triedAndFailed = false;
const ::casac::variant::TYPE theType = theVar.type();
if(theType == ::casac::variant::STRING ||
theType == ::casac::variant::STRINGVEC){
triedAndFailed = !qh.fromString(error, theVar.toString());
else if(theType == ::casac::variant::RECORD){
::casac::variant localvar(theVar);
std::unique_ptr<Record> ptrRec(toRecord(localvar.asRecord()));
triedAndFailed = !qh.fromRecord(error, *ptrRec);
else if(::casac::variant::compatible_type(theType, ::casac::variant::DOUBLE)
== ::casac::variant::DOUBLE){
const casacore::Unit unitless("_");