aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_online/config.h
blob: a4e3f034b8cd31442cc8c31b911184fc4a401a83 (plain) (blame)
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
#ifndef NULLSOFT_ONLINEMEDIA_PLUGIN_CONFIG_HEADER
#define NULLSOFT_ONLINEMEDIA_PLUGIN_CONFIG_HEADER

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#include <wtypes.h>


#define C_CONFIG_WIN32NATIVE
class C_Config
{
  public:
    C_Config(char *ini);
    ~C_Config();
    void Flush(void);
    void  WriteInt(char *name, int value);
    char *WriteString(char *name, char *string);
    int   ReadInt(char *name, int defvalue);
    char *ReadString(char *name, char *defvalue);

	const char* GetPath() { return m_inifile; }

  private:
#ifndef C_CONFIG_WIN32NATIVE
    typedef struct 
    {
      char name[16];
      char *value;
    } strType;

    strType *m_strs;
    int m_dirty;
    int m_num_strs, m_num_strs_alloc;
#else
    char m_strbuf[8192];
#endif

    char *m_inifile;
};

// set lpSectionName = NULL to write to default section;
DWORD Config_ReadStr(LPCSTR lpSectionName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize);
UINT Config_ReadInt(LPCSTR lpSectionName, LPCSTR lpKeyName, INT nDefault);
HRESULT Config_WriteStr(LPCSTR lpSectionName, LPCSTR lpKeyName, LPCSTR lpString);
HRESULT Config_WriteInt(LPCSTR lpSectionName, LPCSTR lpKeyName, INT nValue);
HRESULT Config_WriteSection(LPCSTR lpSectionName, LPCSTR lpData);

typedef BOOL (CALLBACK *ReadServiceIdCallback)(UINT /*serviceId*/, void* /*data*/);
HRESULT Config_ReadServiceIdList(LPCSTR lpSectionName, LPCSTR lpKeyName, CHAR separator, ReadServiceIdCallback callback, void *data);


#endif //NULLSOFT_ONLINEMEDIA_PLUGIN_CONFIG_HEADER