Commit fce72a78 authored by acpaquette's avatar acpaquette Committed by amystamile-usgs
Browse files

Finished swig wrapper with some syntax sugar for ease of use in python (#4352)

parent e0519368
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ namespace Isis {
   */
  class PvlContainer {
    public:
      PvlContainer() = default;
      PvlContainer(const QString &type);
      PvlContainer(const QString &type, const QString &name);
      PvlContainer(const PvlContainer &other);
+42 −1
Original line number Diff line number Diff line
%module isispvl
%include "pvlKeyword.i"
%{
    #include <string>
    #include <sstream>
    #include "Pvl.h"
%}

%include std_string.i
%include std_vector.i
%include exception.i

%include "pvlKeyword.i"
%include "PvlContainer.h"
%include "pvlGroup.i"

%include "pvlObject.i"
%nodefaultdtor Isis::PvlObject;

%include "Pvl.h"
%nodefaultdtor Isis::Pvl;

%extend Isis::Pvl {
  const char* __str__() {
    std::ostringstream out;
    out << *$self;
    std::string str = out.str();
    char * cstr = new char [str.length()+1];
    std::strcpy (cstr, str.c_str());
    return cstr;
  }

  Pvl(const char* file) {
    QString qfile(file);
    Isis::Pvl *pvl = new Isis::Pvl(qfile);
    return pvl;
  }

  void read(const char* file) {
    QString qfile(file);
    $self->read(qfile);
  }

  void write(const char* file) {
    QString qfile(file);
    $self->write(qfile);
  }
}

class QString
{
public:
+23 −0
Original line number Diff line number Diff line
%module(package="isispvl") PvlGroup
%{
    #include "PvlGroup.h"
%}

%include "PvlGroup.h"

%extend Isis::PvlGroup {
  const char* __str__() {
    std::ostringstream out;
    out << *$self;
    std::string str = out.str();
    char * cstr = new char [str.length()+1];
    std::strcpy (cstr, str.c_str());
    return cstr;
  }

  PvlGroup(const char* groupName) {
    QString qgroupName(groupName);
    Isis::PvlGroup *group = new Isis::PvlGroup(qgroupName);
    return group;
  }
}
+11 −3
Original line number Diff line number Diff line
@@ -3,10 +3,18 @@
    #include "PvlKeyword.h"
%}


%include "PvlKeyword.h"

%extend Isis::PvlKeyword {
  const char* __str__() {
    std::ostringstream out;
    out << *$self;
    std::string str = out.str();
    char * cstr = new char [str.length()+1];
    std::strcpy (cstr, str.c_str());
    return cstr;
  }

  PvlKeyword(const char* key, const char* val) {
            QString qkey(key);
            QString qval(val);
+23 −0
Original line number Diff line number Diff line
%module(package="isispvl") PvlObject
%{
    #include "PvlObject.h"
%}

%include "PvlObject.h"

%extend Isis::PvlObject {
  const char* __str__() {
    std::ostringstream out;
    out << *$self;
    std::string str = out.str();
    char * cstr = new char [str.length()+1];
    std::strcpy (cstr, str.c_str());
    return cstr;
  }

  PvlObject(const char* objectName) {
    QString qobjectName(objectName);
    Isis::PvlObject *object = new Isis::PvlObject(qobjectName);
    return object;
  }
}
Loading