summaryrefslogtreecommitdiff
path: root/src/history.h
blob: 6ccfd199061c8b51f11db7497fd451915c2c27e1 (plain)
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
#pragma once

#include "gmrequest.h"

#include <the_Foundation/array.h>
#include <the_Foundation/string.h>
#include <the_Foundation/time.h>

iDeclareType(RecentUrl)
iDeclareTypeConstruction(RecentUrl)

struct Impl_RecentUrl {
    iString      url;
    int          scrollY;        /* unit is gap_UI */
    iGmResponse *cachedResponse; /* kept in memory for quicker back navigation */
};

/*----------------------------------------------------------------------------------------------*/

iDeclareType(History)
iDeclareTypeConstruction(History)
iDeclareTypeSerialization(History)

iHistory *  copy_History                (const iHistory *);

void        clear_History               (iHistory *);
void        add_History                 (iHistory *, const iString *url);
void        replace_History             (iHistory *, const iString *url);
void        setCachedResponse_History   (iHistory *, const iGmResponse *response);
iBool       goBack_History              (iHistory *);
iBool       goForward_History           (iHistory *);
iRecentUrl *recentUrl_History           (iHistory *, size_t pos);
iRecentUrl *mostRecentUrl_History       (iHistory *);
iRecentUrl *findUrl_History             (iHistory *, const iString *url);

const iString *
            url_History                 (const iHistory *, size_t pos);
const iRecentUrl *
            constRecentUrl_History      (const iHistory *d, size_t pos);
const iRecentUrl *
            constMostRecentUrl_History  (const iHistory *);
const iGmResponse *
            cachedResponse_History      (const iHistory *);