[Open all] [Close all]

Getting started

The example code given in the following tutorials can be compiled by creating a directory called myprograms in the base directory of the humlib library. Then if you create a file called myprograms/myprog.cpp, you can type:

make myprog

in the base directory to compile the program. The executable, myprog will be created in the bin directory. Note that you may need to compile the library first with the command:

make

Reading Humdrum data

The HumdrumFile class is used to store data from a Humdrum file, or a data string in Humdrum syntax.

To load content from a file, use the HumdrumFileBase::read function. The following program loads content from a file called "file.krn" and then prints the content (as a standard Humdrum file) to console out.

#include "humlib.h"

int main(void) {
    humlib::HumdrumFile infile;
    infile.read("file.krn");
    std::cout << infile;
    return 0;
}

The Humdrum namespace prefix can be omitted by adding using namespace Humdrum; at the top of the file:

#include "humlib.h"
using namespace Humdrum;
using namespace std;

int main(void) {
    HumdrumFile infile;
    infile.read("file.krn");
    cout << infile;
    return 0;
}

The HumdrumFile class can also read from standard input as well as input file streams or stringstreams.

#include "humlib.h"
using namespace Humdrum;
using namespace std;

int main(void) {
    HumdrumFile infile;
    infile.read(cin);
    cout << infile;
    return 0;
}

Data can be read from an ifstream (or stringstream):

#include "humlib.h"
using namespace Humdrum;
using namespace std;

int main(void) {
    HumdrumFile infile;
    ifstream instream;
    instream.open("file.krn");
    infile.read(instream);
    cout << infile;
    return 0;
}

To read content from a string, use the HumdrumFileBase::readString function (since a string is interpreted as a filename in the read function).

#include "humlib.h"
using namespace Humdrum;
using namespace std;

int main(void) {
    HumdrumFile infile;
    string contents;
    contents = "**kern\n1c\n*-";
    infile.readString(contents);
    cout << infile;
    return 0;
}
#include "humlib.h"
using namespace Humdrum;
using namespace std;

int main(void) {
    HumdrumFile infile;
    const char* contents = "**kern\n1c\n*-";
    infile.readString(contents);
    cout << infile;
    return 0;
}

More information about reading data can be found in the reference manual.