12 #include "string_operations.h"
20 int serializeToFile(
Licenses* licenses,
char* filename) {
21 FILE* fp = fopen(filename,
"w+");
25 int retCode = serialize(licenses, fp);
30 int serialize(
Licenses* licenses, FILE* fp) {
31 return serializeGArray(licenses->licenses, fp);
34 int serializeGArray(GArray* licenses, FILE* fp) {
36 for (guint i = 0; i < licenses->len; i++) {
37 retCode = serializeOne(license_index(licenses, i), fp);
46 return serializeOneMeta(
license, fp) &&
47 serializeOneShortname(
license, fp) &&
48 serializeOneTokens(
license->tokens, fp);
53 .shortnameLen = strlen(
license->shortname),
60 return fprintf(fp,
"%s",
license->shortname) > 0;
63 int serializeOneTokens(GArray* tokens, FILE* fp) {
64 for (guint i = 0; i < tokens->len; i++) {
65 if (fwrite(tokens_index(tokens,i),
sizeof(
Token), 1, fp) != 1) {
76 Licenses* deserializeFromFile(
char* filename,
unsigned minAdjacentMatches,
unsigned maxLeadingDiff) {
77 FILE* fp = fopen(filename,
"r");
81 Licenses* result = deserialize(fp, minAdjacentMatches, maxLeadingDiff);
86 Licenses* deserialize(FILE* fp,
unsigned minAdjacentMatches,
unsigned maxLeadingDiff) {
87 GArray* licenses = g_array_new(TRUE, FALSE,
sizeof(
License));
93 license.shortname = calloc(1,(
size_t) meta.shortnameLen + 1);
94 if(fread(
license.shortname,
sizeof(
char), meta.shortnameLen, fp) != meta.shortnameLen){
98 license.tokens = deserializeTokens(fp, meta.tokensLen);
100 g_array_append_vals(licenses, &
license, 1);
103 return buildLicenseIndexes(licenses, minAdjacentMatches, maxLeadingDiff);
106 GArray* deserializeTokens(FILE* fp, guint tokensLen) {
107 Token* freadResult = malloc(
sizeof(
Token) * tokensLen);
108 if(fread(freadResult,
sizeof(
Token), tokensLen, fp) != tokensLen){
112 GArray* tokens = g_array_new(FALSE, FALSE,
sizeof(
Token));
113 g_array_append_vals(tokens,
int len
Length of pattern.