diff options
Diffstat (limited to 'src/cos_object.c')
-rw-r--r-- | src/cos_object.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/cos_object.c b/src/cos_object.c index 2fa3a93..494c7ff 100644 --- a/src/cos_object.c +++ b/src/cos_object.c @@ -173,6 +173,22 @@ cos_get_dictionary_name(struct nspdf_doc *doc, } nspdferror +cos_get_dictionary_string(struct nspdf_doc *doc, + struct cos_object *dict, + const char *key, + struct cos_string **string_out) +{ + nspdferror res; + struct cos_object *dict_value; + + res = cos_get_dictionary_value(doc, dict, key, &dict_value); + if (res != NSPDFERROR_OK) { + return res; + } + return cos_get_string(doc, dict_value, string_out); +} + +nspdferror cos_get_dictionary_dictionary(struct nspdf_doc *doc, struct cos_object *dict, const char *key, @@ -278,7 +294,6 @@ cos_get_name(struct nspdf_doc *doc, } - nspdferror cos_get_dictionary(struct nspdf_doc *doc, struct cos_object *cobj, @@ -297,6 +312,7 @@ cos_get_dictionary(struct nspdf_doc *doc, return res; } + nspdferror cos_get_array(struct nspdf_doc *doc, struct cos_object *cobj, @@ -315,6 +331,26 @@ cos_get_array(struct nspdf_doc *doc, return res; } + +nspdferror +cos_get_string(struct nspdf_doc *doc, + struct cos_object *cobj, + struct cos_string **string_out) +{ + nspdferror res; + + res = xref_get_referenced(doc, &cobj); + if (res == NSPDFERROR_OK) { + if (cobj->type != COS_TYPE_STRING) { + res = NSPDFERROR_TYPE; + } else { + *string_out = cobj->u.s; + } + } + return res; +} + + /* * get a value for a key from a dictionary */ |