File: gwymodule-file.h

package info (click to toggle)
gwyddion 2.52-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 46,588 kB
  • sloc: ansic: 367,740; python: 7,788; sh: 5,245; makefile: 4,317; xml: 3,631; cpp: 2,550; pascal: 418; perl: 154; ruby: 130
file content (137 lines) | stat: -rw-r--r-- 6,594 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 *  $Id: gwymodule-file.h 20678 2017-12-18 18:26:55Z yeti-dn $
 *  Copyright (C) 2003,2004 David Necas (Yeti), Petr Klapetek.
 *  E-mail: yeti@gwyddion.net, klapetek@gwyddion.net.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor,
 *  Boston, MA 02110-1301, USA.
 */

#ifndef __GWY_MODULE_FILE_H__
#define __GWY_MODULE_FILE_H__

#include <libgwyddion/gwycontainer.h>
#include <libgwymodule/gwymoduleenums.h>
#include <libgwymodule/gwymoduleloader.h>

G_BEGIN_DECLS

#define GWY_FILE_DETECT_BUFFER_SIZE 4096U

#define GWY_MODULE_FILE_ERROR gwy_module_file_error_quark()

typedef enum {
    GWY_MODULE_FILE_ERROR_CANCELED,
    GWY_MODULE_FILE_ERROR_CANCELLED = GWY_MODULE_FILE_ERROR_CANCELED,
    GWY_MODULE_FILE_ERROR_UNIMPLEMENTED,
    GWY_MODULE_FILE_ERROR_IO,
    GWY_MODULE_FILE_ERROR_DATA,
    GWY_MODULE_FILE_ERROR_INTERACTIVE,
    GWY_MODULE_FILE_ERROR_SPECIFIC
} GwyModuleFileError;

typedef struct {
    const gchar *name;
    const gchar *name_lowercase;
    gsize file_size;
    guint buffer_len;
    const guchar *head;
    const guchar *tail;
} GwyFileDetectInfo;

typedef gint           (*GwyFileDetectFunc) (const GwyFileDetectInfo *fileinfo,
                                             gboolean only_name,
                                             const gchar *name);
typedef GwyContainer*  (*GwyFileLoadFunc)   (const gchar *filename,
                                             GwyRunType mode,
                                             GError **error,
                                             const gchar *name);
typedef gboolean       (*GwyFileSaveFunc)   (GwyContainer *data,
                                             const gchar *filename,
                                             GwyRunType mode,
                                             GError **error,
                                             const gchar *name);

/* low-level interface */
gboolean      gwy_file_func_register  (const gchar *name,
                                       const gchar *description,
                                       GwyFileDetectFunc detect,
                                       GwyFileLoadFunc load,
                                       GwyFileSaveFunc save,
                                       GwyFileSaveFunc export_);
gint          gwy_file_func_run_detect(const gchar *name,
                                       const gchar *filename,
                                       gboolean only_name);
GwyContainer* gwy_file_func_run_load  (const gchar *name,
                                       const gchar *filename,
                                       GwyRunType mode,
                                       GError **error);
gboolean      gwy_file_func_run_save  (const gchar *name,
                                       GwyContainer *data,
                                       const gchar *filename,
                                       GwyRunType mode,
                                       GError **error);
gboolean      gwy_file_func_run_export(const gchar *name,
                                       GwyContainer *data,
                                       const gchar *filename,
                                       GwyRunType mode,
                                       GError **error);

gboolean             gwy_file_func_exists         (const gchar *name);
GwyFileOperationType gwy_file_func_get_operations (const gchar *name);
const gchar*         gwy_file_func_get_description(const gchar *name);
void                 gwy_file_func_foreach        (GFunc function,
                                                   gpointer user_data);
const gchar*         gwy_file_func_current        (void);

/* high-level interface */
const gchar*        gwy_file_detect           (const gchar *filename,
                                               gboolean only_name,
                                               GwyFileOperationType operations);
const gchar*        gwy_file_detect_with_score(const gchar *filename,
                                               gboolean only_name,
                                               GwyFileOperationType operations,
                                               gint *score);
GwyContainer*       gwy_file_load             (const gchar *filename,
                                               GwyRunType mode,
                                               GError **error);
GwyContainer*       gwy_file_load_with_func   (const gchar *filename,
                                               GwyRunType mode,
                                               const gchar **name,
                                               GError **error);
GwyFileOperationType gwy_file_save            (GwyContainer *data,
                                               const gchar *filename,
                                               GwyRunType mode,
                                               GError **error);
GwyFileOperationType gwy_file_save_with_func  (GwyContainer *data,
                                               const gchar *filename,
                                               GwyRunType mode,
                                               const gchar **name,
                                               GError **error);
gboolean            gwy_file_func_get_is_detectable(const gchar *name);
void                gwy_file_func_set_is_detectable(const gchar *name,
                                                    gboolean is_detectable);
gboolean            gwy_file_get_data_info    (GwyContainer *data,
                                               const gchar **name,
                                               const gchar **filename_sys);
const gchar*        gwy_file_get_filename_sys (GwyContainer *data);

GQuark gwy_module_file_error_quark(void);

G_END_DECLS

#endif /* __GWY_MODULE_FILE_H__ */

/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */