PackageManager
[reactos.git] / rosapps / packmgr / lib / package.hpp
1 ////////////////////////////////////////////////
2 //
3 // package.hpp
4 // Package C++ Header
5 ////////////////////////////////////////////////
6
7 #include <windows.h>
8 #include <vector>
9 #include "error.h"
10
11 using namespace std;
12
13
14 /* Callbacks */
15
16 typedef int (*PML_AddItem) (int id, const char* name, int parent, int icon);
17 typedef int (*PML_SetStatus) (int status1, int status2, WCHAR* text);
18 typedef int (*PML_SetButton) (DWORD dwID, BOOL state);
19 typedef int (*PML_SetIcon) (int id, int icon);
20 typedef int (*PML_SetText) (const char* text);
21
22
23 /* Structs */
24
25 typedef struct
26 {
27 char* path;
28 BOOL icon;
29 BOOL loaded;
30 vector<int> children;
31
32 char** field;
33 char* name;
34 char* description;
35
36 int action;
37 char* files [4];
38
39 union //which actions are possible
40 {
41 struct { BOOL none, inst, src_inst, update, uninstall; };
42 BOOL actions [4];
43 };
44
45 } PACKAGE;
46
47 typedef struct
48 {
49 char* xmltree;
50
51 vector<char*> descriptionPath;
52 vector<char*> todo;
53 vector<PACKAGE> packages;
54
55 PML_AddItem addItem;
56 PML_SetButton setButton;
57 PML_SetStatus setStatus;
58 PML_SetIcon setIcon;
59 PML_SetText setText;
60
61 } TREE, *pTree;
62
63 #define MAXNODES 10000
64
65
66 /* Prototypes */
67
68 extern "C"
69 {
70 void PML_Abort (void);
71 WCHAR* PML_TransError (int code);
72
73 int PML_LoadTree (pTree*, char* url, PML_AddItem);
74 int PML_FindItem (TREE* tree, const char* what);
75 int PML_LoadPackage (pTree, int id, PML_SetButton);
76 char* PML_GetDescription (TREE* tree, int id);
77 int PML_SetAction (pTree, int package, int action, PML_SetIcon);
78 int PML_DoIt (pTree, PML_SetStatus);
79
80 void PML_CloseTree (pTree);
81 }
82
83
84 /* Version */
85
86 #define PACKMGR_VERSION_MAJOR 0
87 #define PACKMGR_VERSION_MINOR 3
88 #define PACKMGR_VERSION_PATCH_LEVEL 1