mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2024-12-27 05:48:20 +01:00
Save pdfio_array_t implementation.
This commit is contained in:
parent
98c48e66c2
commit
2f928f67f5
221
pdfio-array.c
221
pdfio-array.c
@ -53,165 +53,312 @@ pdfioArrayAppendArray(
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendBoolean()' - Add a boolean value to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendBoolean(pdfio_array_t *a, boolean value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendBoolean(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
bool value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_BOOLEAN;
|
||||||
|
v.value.boolean = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendDict()' - Add a dictionary to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendDict(pdfio_array_t *a, pdfio_dict_t *value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendDict(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
pdfio_dict_t *value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_DICT;
|
||||||
|
v.value.dict = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendName()' - Add a name to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendName(pdfio_array_t *a, const char *value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendName(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
const char *value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_NAME;
|
||||||
|
v.value.name = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendNumber()' - Add a number to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendNumber(pdfio_array_t *a, float value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendNumber(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
float value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_NUMBER;
|
||||||
|
v.value.number = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendObject()' - Add an indirect object reference to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendObject(pdfio_array_t *a, pdfio_obj_t *value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendObject(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
pdfio_obj_t *value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_INDIRECT;
|
||||||
|
v.value.obj = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayAppendString()' - Add a string to an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayAppendString(pdfio_array_t *a, const char *value)
|
bool // O - `true` on success, `false` on failure
|
||||||
|
pdfioArrayAppendString(
|
||||||
|
pdfio_array_t *a, // I - Array
|
||||||
|
const char *value) // I - Value
|
||||||
{
|
{
|
||||||
|
_pdfio_value_t v; // Value for array
|
||||||
|
|
||||||
|
|
||||||
|
v.type = PDFIO_VALTYPE_STRING;
|
||||||
|
v.value.string = value;
|
||||||
|
|
||||||
|
return (append_value(a, &v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayCreate()' - Create an empty array.
|
||||||
//
|
//
|
||||||
|
|
||||||
pdfio_array_t *pdfioArrayCreate(pdfio_file_t *file)
|
pdfio_array_t * // O - New array or `NULL` on error
|
||||||
|
pdfioArrayCreate(pdfio_file_t *pdf) // I - PDF file
|
||||||
{
|
{
|
||||||
|
pdfio_array_t *a; // Array
|
||||||
|
|
||||||
|
|
||||||
|
if (!pdf)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
if ((a = (pdfio_array_t *)calloc(1, sizeof(pdfio_array_t))) == NULL)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
if (pdf->num_arrays >= pdf->alloc_arrays)
|
||||||
|
{
|
||||||
|
pdfio_array_t **temp = realloc(pdf->arrays, (pdf->alloc_arrays + 16) * sizeof(pdfio_array_t *));
|
||||||
|
|
||||||
|
if (!temp)
|
||||||
|
{
|
||||||
|
free(a);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
pdf->arrays = temp;
|
||||||
|
pdf->alloc_arrays += 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
pdf->arrays[pdf->num_arrays ++] = a;
|
||||||
|
|
||||||
|
return (a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// '_pdfioArrayDelete()' - Free the memory used by an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
void _pdfioArrayDelete(pdfio_array_t *a)
|
void
|
||||||
|
_pdfioArrayDelete(pdfio_array_t *a) // I - Array
|
||||||
{
|
{
|
||||||
|
if (a)
|
||||||
|
free(a->values);
|
||||||
|
|
||||||
|
free(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetArray()' - Get an array value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
pdfio_array_t *pdfioArrayGetArray(pdfio_array_t *a, int n)
|
pdfio_array_t * // O - Value
|
||||||
|
pdfioArrayGetArray(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_ARRAY)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetBoolean()' - Get a boolean value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
bool pdfioArrayGetBoolean(pdfio_array_t *a, int n)
|
bool // O - Value
|
||||||
|
pdfioArrayGetBoolean(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_BOOLEAN)
|
||||||
|
return (false);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.boolean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetDict()' - Get a dictionary value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
pdfio_dict_t *pdfioArrayGetDict(pdfio_array_t *a, int n)
|
pdfio_dict_t * // O - Value
|
||||||
|
pdfioArrayGetDict(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_DICT)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.dict);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetName()' - Get a name value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
const char *pdfioArrayGetName(pdfio_array_t *a, int n)
|
const char * // O - Value
|
||||||
|
pdfioArrayGetName(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_NAME)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetNumber()' - Get a number from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
float pdfioArrayGetNumber(pdfio_array_t *a, int n)
|
float // O - Value
|
||||||
|
pdfioArrayGetNumber(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_NUMBER)
|
||||||
|
return (0.0f);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetObject()' - Get an indirect object reference from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
pdfio_obj_t *pdfioArrayGetObject(pdfio_array_t *a, int n)
|
pdfio_obj_t * // O - Value
|
||||||
|
pdfioArrayGetObject(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_INDIRECT)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetSize()' - Get the length of an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
int pdfioArrayGetSize(pdfio_array_t *a)
|
size_t // O - Length of array
|
||||||
|
pdfioArrayGetSize(pdfio_array_t *a) // I - Array
|
||||||
{
|
{
|
||||||
|
return (a ? a->num_values : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetString()' - Get a string value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
const char *pdfioArrayGetString(pdfio_array_t *a, int n)
|
const char * // O - Value
|
||||||
|
pdfioArrayGetString(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values || a->values[n].type != PDFIO_VALTYPE_STRING)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values[n].value.string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// 'pdfioArrayGetType()' - Get a value type from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
pdfio_valtype_t pdfioArrayGetType(pdfio_array_t *a, int n)
|
pdfio_valtype_t // O - Value type
|
||||||
|
pdfioArrayGetType(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values)
|
||||||
|
return (PDFIO_VALTYPE_NONE);
|
||||||
|
else
|
||||||
|
return (a->values[n].type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// '()' - .
|
// '_pdfioArrayGetValue()' - Get a value from an array.
|
||||||
//
|
//
|
||||||
|
|
||||||
_pdfio_value_t *
|
_pdfio_value_t * // O - Value
|
||||||
_pdfioArrayGetValue(pdfio_array_t *a, int n)
|
_pdfioArrayGetValue(pdfio_array_t *a, // I - Array
|
||||||
|
size_t n) // I - Index
|
||||||
{
|
{
|
||||||
|
if (!a || n >= a->num_values)
|
||||||
|
return (NULL);
|
||||||
|
else
|
||||||
|
return (a->values + n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user