1
0
forked from GitHub/gf-core

added function pgf_write

This commit is contained in:
Krasimir Angelov
2017-09-13 09:30:52 +02:00
parent 09e5278690
commit 3e55aa4424
3 changed files with 28 additions and 0 deletions

View File

@@ -76,6 +76,8 @@ libpgf_la_SOURCES = \
pgf/literals.h \
pgf/reader.h \
pgf/reader.c \
pgf/writer.h \
pgf/writer.c \
pgf/linearizer.c \
pgf/typechecker.c \
pgf/reasoner.c \

View File

@@ -2,6 +2,7 @@
#include <pgf/data.h>
#include <pgf/expr.h>
#include <pgf/reader.h>
#include <pgf/writer.h>
#include <pgf/linearizer.h>
#include <gu/file.h>
#include <gu/string.h>
@@ -44,6 +45,28 @@ pgf_read_in(GuIn* in,
return pgf;
}
PGF_API_DECL void
pgf_write(PgfPGF* pgf, const char* fpath, GuExn* err)
{
FILE* outfile = fopen(fpath, "wb");
if (outfile == NULL) {
gu_raise_errno(err);
return;
}
GuPool* tmp_pool = gu_local_pool();
// Create an input stream from the input file
GuOut* out = gu_file_out(outfile, tmp_pool);
PgfWriter* wtr = pgf_new_writer(out, tmp_pool, err);
pgf_write_pgf(pgf, wtr);
gu_pool_free(tmp_pool);
fclose(outfile);
}
PGF_API GuString
pgf_abstract_name(PgfPGF* pgf)
{

View File

@@ -57,6 +57,9 @@ pgf_concrete_load(PgfConcr* concr, GuIn* in, GuExn* err);
PGF_API_DECL void
pgf_concrete_unload(PgfConcr* concr);
PGF_API_DECL void
pgf_write(PgfPGF* pgf, const char* fpath, GuExn* err);
PGF_API_DECL GuString
pgf_abstract_name(PgfPGF*);