summaryrefslogtreecommitdiff
path: root/src/cos_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cos_object.c')
-rw-r--r--src/cos_object.c38
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
*/