Integer lists.
Here you will find examples to use list64.
Integer lists. The lists can be be filled either with the object IDs of the list panels (e.g. Product Pool) or 'manually'.
static List64 alloc(
int classid,
int selection_type = 0,
int id_index = 1)
Get the object list of the panel which contains the objects of the desired classid. If no corresponding panel is found, 0 is returned. Otherwise the list will be filled with the desired IDs of the loaded objects. The result list must be deleted again using list64::release.
[ab v3.3 R3136] InDesign® removes all list entries from invisible panels. It's a mess to refill the list again. But, if we have the data, we can use them. So list64::alloc
still works for invisible panels too now.
ATTENTION : But take care! This will work for kAll and kEyeMarked only. Invisible lists still don't have a selection,
so kSelected still returns an empty list!
Name | Type | Default | Description |
Return | List64 | Created list of the 0 | |
classid | int | - | Class ID of the panel |
selection_type | int | kAll | kAll : All datasets of the panel kEyeMarked : Only the eye marked datasets of the panel kSelected : Selected panel entries only |
id_index | int | 1 | Which IDs are to be fetched? 1 = ID, 2 = ID2, 3 = ID3 |
Create a list with the IDs of the marked products
#include "internal/panels.h"
List64 li = list64::alloc ((kPanelProducts, kEyeMarked, 1);
static List64 alloc()
Create a new empty list. The list must be deleted again using list64::release.
Name | Type | Default | Description |
Return | List64 | Created list or 0 |
Create a new empty list
List64 = list64::alloc (); : list64::release (li);
static int release(List64 li)
Delete a created list again using list64::alloc
Name | Type | Default | Description |
Return | int | - | |
li | List64 | - | List64 to be deleted |
static int length(List64 li)
Ascertain the number of elements of a list
Name | Type | Default | Description |
Return | int | Number of entries in the list | |
li | List64 | - | List64 |
int len = list64::length (li);
static int first(List64 li)
Get the first entry of a non-empty list
Name | Type | Default | Description |
Return | int | First value of the list | |
li | List64 | - | List64 with at least one element |
The following example can be used for lists that have no 0-entry.
int main () { List64 li = list64::alloc (); int i;
for (i=1; i<6; i++) list64::insert (li, 3*i); for (i=list64::first (li); i; i=list64::next (li)) { showmessage ("%d", i); } list64::release (li); }
static int next(List64 li)
Get the next entry in a list.
Name | Type | Default | Description |
Return | int | Next value of the list | |
li | List64 | - | List64 with at least one element after the current list pointer |
The following example can be used for lists that have no 0-entry.
int main () { List64 li = list64::alloc (); int i;
for (i=1; i<6; i++) list64::insert (li, 3*i); for (i=list64::first (li); i; i=list64::next (li)) { showmessage ("%d", i); } list64::release (li);
static int prev(List64 li)
Get the previous entry in the list.
Name | Type | Default | Description |
Return | int | Value of the preceding entry in the list | |
li | List64 | - | List64 with at least one element after the current list pointer |
The following example can be used for lists that have no 0-entry.
int main () { List64 li = list64::alloc (); int i;
for (i=1; i<6; i++) list64::insert (li, 3*i); for (i=list64::last (li); i; i=list64::prev (li)) { showmessage ("%d", i); } list64::release (li); }
static int last(List64 li)
Get the last entry in a non-empty list
Name | Type | Default | Description |
Return | int | First value of the list Wert der Liste | |
li | List64 | - | List64 with all least one element |
The following example can be used for lists that have no 0-entry.
int main () { List64 li = list64::alloc (); int i;
for (i=1; i<6; i++) list64::insert (li, 3*i); for (i=list64::last (li); i; i=list64::prev (li)) { showmessage ("%d", i); } list64::release (li);
static int get_pos(
List64 li,
int val,
int setPos = 0)
Search for the position of a value in the list. If the value is not found, the function returns -1. List64 positions are 0-based, meaning the first element has the position 0, the last the position-1.
Name | Type | Default | Description |
Return | int | >= 0 : First occurrence of the value in the list -1 : Value not found |
|
li | List64 | - | List64 in which the value is to be searched for |
val | int | - | This value is searched for |
setPos | int | 0 | 0 : Do not change list positions 1 : Set current list positions at place of finding |
pos = list64::get_pos (li, val [, setPos]);
static int get(
List64 li,
int pos,
int doSelect= 0)
Get the i-te element of the list. List64 positions are 0-based, meaning the first element has the position 0, the last the position-1.
Name | Type | Default | Description |
Return | int | Value of the list at the position i or -1 | |
li | List64 | - | List64 from which the element is to be fetched |
pos | int | - | 0-based list position |
setPos | int | 0 | 0 : Do not change list positions 1 : Set list position to pos |
k = list64::get (li, pos [, setPos]);
static int append(List64 li, int val)
Append elements to the list
Name | Type | Default | Description |
Return | int | 1 action successful, 0 otherwise | |
li | List64 | - | List64 to which the append to be made |
val | int | - | Value to be appended |
list64::append (li, k);
static int insert(
List64 li,
int val,
int pos = -1)
Insert element in the list. List64 positions are 0-based, meaning the first element has the position 0, the last the position-1.
Name | Type | Default | Description |
Return | int | 1 Action successful, 0 otherwise | |
li | List64 | - | List64 to which the append to be made |
val | int | - | Value to be appended |
pos | int | - | Insert point. 0 = list start, Value < 0 or >= length = append |
list64::insert (li, 3, 0);
static int remove(
List64 li,
int val,
int rmAll = 1)
All occurrences of a value will be removed from the list. Since R1396 (26.6.2009) you can remove the first entry only by setting the new parameter rmAll to 0.
Name | Type | Default | Description |
Return | int | 1 action successful, 0 otherwise | |
li | List64 | - | List64 to which the append is to be made |
val | int | - | Value which is to be removed from the list |
rmAll | int | - | Delete one or all entries of the given value 1 : remove all 0 : remove first (if) |
The example illustrates the functioning of remove and remove_pos
int main () { int i; List64 li = list64::alloc ();
for (i=1; i< 6; i++) list64::append (li, i); list64::insert (li, 2);
for (i=0; i< list64::length (li); i++) { // 123452 showmessage ("1:%d", i+1, list64::get (li, i)); }
list64::remove_pos (li, 3); for (i=0; i< list64::length (li); i++) { // 12352 showmessage ("2:%d", i+1, list64::get (li, i)); }
list64::remove (li, 2); for (i=0; i< list64::length (li); i++) { // 135 showmessage ("3:%d", i+1, list64::get (li, i)); }
list64::release (li); }
static int remove_pos(List64 li, int pos)
Remove a position from the list. List64 positions are 0-based, meaning the first element has the position 0, the last the position-1.
Name | Type | Default | Description |
Return | int | 1 action successful, 0 otherwise | |
li | List64 | - | List64 |
pos | int | - | 0-based delete position |
The example illustrates the functioning of remove and remove_pos
int main () { int i; List64 li = list64::alloc ();
for (i=1; i< 6; i++) list64::append (li, i); list64::insert (li, 2);
for (i=0; i< list64::length (li); i++) { // 123452 showmessage ("1:%d", i+1, list64::get (li, i)); }
list64::remove_pos (li, 3); for (i=0; i< list64::length (li); i++) { // 12352 showmessage ("2:%d", i+1, list64::get (li, i)); }
list64::remove (li, 2); for (i=0; i< list64::length (li); i++) { // 135 showmessage ("3:%d", i+1, list64::get (li, i)); }
list64::release (li); }
static int clear(List64 li)
Remove all elements of the list
Name | Type | Default | Description |
Return | int | 1 action successful, 0 otherwise | |
li | List64 | - | Liste |
list64::clear (li);
static int reload(long classid, long reloadAll = 0)
Reload the data records of a panel list. To reload the complete list, set reloadAll to 1. If you want only to update the linkbuttons of the list(s), you can use the command placeholder::update_link_states.
Name | Type | Default | Description |
Return | int | 0 or ErrorCode | |
classid | int | - | Palettennummer specified by Werk II 0 - update all open panels |
reloadAll | int | 0 | Reload complete list? 0 : No, only reload list entries 1 : Yes, reload the complete list |
Reload the panel 'Product Poll'
err_code = list::reload (3);
static int classid(List64 li)
ClassID of the list entries. Using this class will initialise the list (list64::alloc).
Name | Type | Default | Description |
Return | int | 0 or ClassID. | |
li | List64 | - | Lists the class ID of which is to be ascertained |
static int index(List64 li)
Which IDs are contained in the list. The list is updated with this value.
Name | Type | Default | Description |
Return | int | 0 : Undefined 1 : ID 2 : ID2 3 : ID3 |
|
li | List64 | - | List64 the index type of which is to be ascertained |
static int complete(List64 li)
Does the list contain all the IDs of the panel, or only the selected entries?
Name | Type | Default | Description |
Return | int | 0 : Only selected entries 1 : All entries of the panel |
|
li | List64 | - | List64 |
static char* gettext(
List64 li,
long index,
char* attribute,
char* result)
Get the value of the list element. The requestable elements are dependent on the ClassID of the list.
If the list was created as to be a panel list (alloc with ClassID) only its class id, selection type and length are used. The results are taken from panel directly, not from the current list content.
If the list was created as to be a common list, the given attribute is ignored and the result is taken from the list.
Palette | ClassId | Name | Type |
Perennials | kPanelFlowers | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
LatinName | char* | ||
GermanName | char* | ||
FamilyName | char* | ||
ImagePath | char* | ||
Transmission planning | kPanelTV | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
Start | char* | ||
StartTime | char* | ||
StartDate | char* | ||
End | char* | ||
EndTime | char* | ||
EndDate | char* | ||
State | int | ||
ToDelete | int | ||
Sender | char* | ||
Title | char* | ||
Assessment | char* | ||
Module | char* | ||
Info1 | char* | ||
Info2 | char* | ||
Info3 | char* | ||
Product Pool | kPanelProducts | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
Num | char* | ||
Name | char* | ||
Depth | int | ||
ClassID | int | ||
ImageID | int | ||
StatementID | int | ||
HasPlacement | int | ||
DocID | int | ||
Masterpage | char* | ||
Grid | char* | ||
GridElement | char* | ||
GridID | int | ||
GridElementID | int | ||
PageitemID, template of product | int | ||
Elements | kPanelElements | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
ProductID | int | ||
ProductID2 | int | ||
ProductID3 | int | ||
Name | char* | ||
Value | char* | ||
Selfloader | char* | ||
ToDelete | int | ||
RelatedToID | int | ||
Scribble | kPanelTVRecherche | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
Start | char* | ||
StartTime | char* | ||
StartDate | char* | ||
End | char* | ||
EndTime | char* | ||
EndDate | char* | ||
State | int | ||
ToDelete | int | ||
Sender | char* | ||
Title | char* | ||
Bewertung | char* | ||
Module | char* | ||
Info1 | char* | ||
Info2 | char* | ||
Info3 | char* | ||
Selfloader | char* | ||
Previews | kPanelPreviews | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
Key | int | ||
Key2 | int | ||
Key3 | int | ||
MyClassID | int | ||
ToDelete | int | ||
Width | int | ||
Height | int | ||
Resolution | int | ||
BitDepth | int | ||
Path | char* | ||
FileName | char* | ||
Format | char* | ||
Column1 | char* | ||
Column2 | char* | ||
Column3 | char* | ||
Text | char* | ||
ImageAlign | int | ||
ImageSize | float | ||
ClipIndex | int | ||
ClipFlags | int | ||
ClipToFrame | int | ||
ClipTolerance | float | ||
ClipMinPathsize | float | ||
ClipInset | float | ||
AlphaIndex | int | ||
AlphaChannel | string | ||
Export groups | kPanelExportgroups | ID | int |
ID2 | int | ||
ID3 | int | ||
StringID, STRINGID and since v3.1 R1800 with postfix 1, 2, 3 for Multi-StringIDs | char* | ||
Label | char* | ||
Sender | char* | ||
Selfloader | char* | ||
ToDelete | char* | ||
LabelID | int | ||
SenderID | int | ||
Panel 'Templates' | kPanelPageitems | ID | int |
ID2 | int | ||
ID3 | int | ||
ToDelete | int | ||
Name | char* | ||
Type | char* | ||
Mandant | char* | ||
State | char* | ||
Description | char* | ||
Left | float | ||
Top | float | ||
Right | float | ||
Bottom | float | ||
Publikationen | kPanelPublications | see Publications-Tags, at this point only the panel specific tags are sensfull of course. It' allowed to use parent. tags here. |
Name | Type | Default | Description |
Return | String or char* | (Depends on parameter result) Attribute value or empty. The result is a pointer to result. When result is of type char*, the pointer must have adequate allocated memory (char[100], alloc (100)). | |
li | List64 | - | List64 |
index | int | - | 0-based list index |
attribute | String or char* | - | Attributname int and float values are converted into strings automatically. If yoiu want get int or float values, use getint resp getfloat instead of gettext. |
result | String or char* | - | Reserved memory for the result. |
The example shows the StringID for every product marked with the "eye".
int main () { char s1[512]; List64 prod = list64::alloc (3,1,1); int i = 0;
for (i=0; i<list64::length (prod); i++) { list64::gettext (prod, i, "StringID", s1);
showmessage (s1); }
return 0; }
static int getint(
List64 li,
long index,
char* attribute)
Get the value of a list element as an integer. The requestable elements are dependent on the ClassID of the list. If the attribute contains a text value, the result of the call is undefined.
If the list was created as to be a panel list (alloc with ClassID) only its class id, selection type and length are used. The results are taken from panel directly, not from the current list content.
If the list was created as to be a common list, the given attribute is ignored and the result is taken from the list.
Name | Type | Default | Description |
Return | int | Attribute value | |
li | List64 | - | List64 |
index | int | - | 0-based list index |
attribute | String or char* | - | name of attribute. You should only take values marked in the above list above list as to be int Other values may cause InDesign to crash! |
static float getfloat(
List64 li,
long index,
char* attribute)
Get the value of a list element as a decimal. The requestable elements are dependent on the ClassID of the list. If the attribute contains a text value, the result of the call is undefined.
If the list was created as to be a panel list (alloc with ClassID) only its class id, selection type and length are used. The results are taken from panel directly, not from the current list content.
If the list was created as to be a common list, the given attribute is ignored and the result is taken from the list.
Name | Type | Default | Description |
Return | float | Attribute value | |
li | List64 | - | List64 |
index | int | - | 0-based list index |
attribute | String or char* | - | name of attribute. You should only take values marked in the above list above list as to be float Other values may cause InDesign to crash! |
static int open_tree(int panel, int depth)
Open all entries of a panel.
Name | Type | Default | Description |
Return | int | 0 or ErrorCode | |
panel | int | - | What list to open? kPanelProducts (=3) : Product Pool No more panels supported for now! To get the panelIDs, use the include #include "internal/panels.h". |
depth | int | - | Maximum depth 0 : Close all entries -1 : Open entries one level -2 : Open entries like deepest level -3 : Open all entries -4 : Close all entries othwise : Open all entries up to this level. Already opened entries of lower levels are kept open. |
static int get_autoload(int classID = 3)
Is the "autoload"-Button of the requested panel activated or not? The function only supports the ProductPool panel (classID 3). Otherwise 1 is returned. Under InDesign® Server the fucntion returns 1.
Name | Type | Default | Description |
Return | int | 1 : Yes, the button is activated (green), classIDs not equal 3, InDesign® Server 0 : No |
|
classID | int | 3 | ClassID of requested panel. Only the product pool (classID 3) is supported for now. |
static int set_autoload(int classID = 3, int newState = 1)
Set the "autoload"-Button of the requested panel. The function only supports the Product Pool panel (classID 3). For all other panels and under InDesign® Server the functions does nothing.
Name | Type | Default | Description |
Return | int | Old state | |
classID | int | 3 | ClassID of requested panel. Only the product pool (classID 3) is supported for now. |
newState | int | 1 | new state 0 : inactive (gray) 1 : active (green) |
static int sort(List64 li, int direction = 0)
Sort a list.
Name | Type | Default | Description |
Return | int | 0 or ErrorCode | |
li | List64 | - | List64 to sort |
direction | int | 0 | sort direction 0 : ascent 1 : descent |
int main () { List64 li = list64::alloc (); int i;
list64::insert (li, 12); list64::insert (li, 20); list64::insert (li, 9); list64::insert (li, 3); list64::insert (li, 42);
wlog ("", "sort ascent\n"); list64::sort (li); for (i = 0; i < list64::length (li); i++) wlog ("", "%d\t%d\n", i+1, list64::get (li, i)); wlog ("", "\n\n");
wlog ("", "sort descent\n"); list64::sort (li, 1); for (i = 0; i < list64::length (li); i++) wlog ("", "%d\t%d\n", i+1, list64::get (li, i)); wlog ("", "\n\n");
return 0; }
The following example can be used for list which have no 0-entry.
int main () { List64 li = list64::alloc (); int i;
for (i=1; i<6; i++) list64::insert (li, 3*i);
for (i=list64::first (li); i; i=list64::next (li)) { showmessage ("%d", i); } list64::release (li); }
The following example too can be used for lists that have no 0-entry. Because the lists here are created as ID lists of the panel Product Pool, it is secured : The list plugins only contain entries the first ID of which is > 0.
int main () { List64 li, li2, li3; int id, id2, id3;
li = list64::alloc (1, 0, 1);// All IDs li2 = list64::alloc (1, 0, 2);// All ID2s li3 = list64::alloc (1, 0, 3);// All ID3s
if (!li || !li2 || !li3) { showmessage ("'Shrub not opened."); return 1; }
id = list64::first (li); id2 = list64::first (li2); id3 = list64::first (li3); while (id) { showmessage ("ID=(%d, %d, %d", id, id2, id3);
id = list64::next (li); id2 = list64::next (li2); id3 = list64::next (li3); }
list64::release (li); list64::release (li2); list64::release (li3); }
The third example functions for user-defined lists
int main () { List64 li = list64::alloc (); int i; int val;
for (i = 1; i < 6; i++) list64::insert (li, 3*i); for (i = 0; i < list64::length (li); i++) { val = list64::get (li, i) showmessage ("%d", val); } list64::release (li); }
The following example illustrates the functioning of remove and remove_pos
int main () { int i; List64 li = list64::alloc ();
for (i=1; i< 6; i++) list64::append (li, i); list64::insert (li, 2);
for (i=0; i< list64::length (li); i++) { // 123452 showmessage ("1:%d", i+1, list64::get (li, i)); }
list64::remove_pos (li, 3); for (i=0; i< list64::length (li); i++) { // 12352 showmessage ("2:%d", i+1, list64::get (li, i)); }
list64::remove (li, 2); for (i=0; i< list64::length (li); i++) { // 135 showmessage ("3:%d", i+1, list64::get (li, i)); }
list64::release (li); }
Playing with big data:
int main () { List64 li = list64::alloc (); int i;
list64::insert (li, 6917529027641081856); list64::insert (li, 6917529027641081860); list64::insert (li, 234); list64::insert (li, 6917529027641081444); list64::insert (li, 9223372036854775807);
wlog ("", "List step 1\n"); for (i = list64::first (li); i; i = list64::next (li)) wlog ("", "step 1 : %d\n", i); wlog ("", "\n\n"); wlog ("", "get_pos ('6917529027641081444') == %d\n", list64::get_pos (li, 6917529027641081444));
list64::insert (li, 7777777777777777777); list64::insert (li, -8888888888888888888, 2); wlog ("", "List step 2\n"); for (i = list64::first (li); i; i = list64::next (li)) wlog ("", "step 2 : %d\n", i); wlog ("", "\n\n");
wlog ("", "List step 2 (reverse)\n"); for (i = list64::last (li); i; i = list64::prev (li)) wlog ("", "step 2r : %d\n", i); wlog ("", "\n\n");
list64::remove (li, 7777777777777777777); list64::remove_pos (li, 2);
wlog ("", "List step 3\n"); for (i = list64::first (li); i; i = list64::next (li)) wlog ("", "step 3 : %d\n", i); wlog ("", "\n\n");
wlog ("", "\n\n"); wlog ("", "sort ascent\n"); list64::sort (li); for (i = 0; i < list64::length (li); i++) wlog ("", "%d\t%d\n", i+1, list64::get (li, i)); wlog ("", "\n\n");
wlog ("", "sort descent\n"); list64::sort (li, 1); for (i = 0; i < list64::length (li); i++) wlog ("", "%d\t%d\n", i+1, list64::get (li, i)); wlog ("", "\n\n");
return 0; }
Alphabetic index HTML hierarchy of classes or Java