jsonsax.h
author Fabien Ninoles <fabien@tzone.org>
Sun, 07 Oct 2012 14:30:52 -0400
changeset 1 ef7abb48573b
parent 0 jsonsax.hpp@d187e7fc9970
permissions -rw-r--r--
Convert to C api.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     1
/*
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     2
Copyright (c) Fabien Ninoles <fabien@tzone.org>
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     3
All rights reserved.
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     4
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     5
Redistribution and use in source and binary forms, with or without
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     6
modification, are permitted provided that the following conditions
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     7
are met:
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     8
1. Redistributions of source code must retain the above copyright
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
     9
   notice, this list of conditions and the following disclaimer.
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    10
2. Redistributions in binary form must reproduce the above copyright
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    11
   notice, this list of conditions and the following disclaimer in the
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    12
   documentation and/or other materials provided with the distribution.
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    13
3. Neither the name of the University nor the names of its contributors
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    14
   may be used to endorse or promote products derived from this software
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    15
   without specific prior written permission.
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    17
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    18
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    19
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    20
ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    21
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    22
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    23
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    24
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    25
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    26
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    27
SUCH DAMAGE.
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    28
*/
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    29
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    30
#ifndef _JSONSAX_H_
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    31
#define _JSONSAX_H_
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    32
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    33
#ifdef __cplusplus
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    34
extern "C"
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    35
{
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    36
#endif
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    37
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    38
enum EJSONSAX_TYPE {
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    39
  EJSONSAX_OBJECT,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    40
  EJSONSAX_ARRAY,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    41
  EJSONSAX_STRING,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    42
  EJSONSAX_NUMBER,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    43
  EJSONSAX_NULL,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    44
  EJSONSAX_TRUE,
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    45
  EJSONSAX_FALSE
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    46
};
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    47
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    48
struct jsonsax_backend
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
{
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    50
  int  (*m_getchar)(void* data);
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    51
  int  (*m_onstart)(void* data, enum EJSONSAX_TYPE type);
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    52
  int  (*m_onstop)(void* data, enum EJSONSAX_TYPE type);
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    53
  void (*m_onerror)(void* data, int error);
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    54
};
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    56
// Note: the structure members would be copied before
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    57
// being used.  You cannot change the functions called after
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    58
// it.
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    59
int jsonsax_parse(struct jsonsax_backend* backend, void* data);
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    60
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    61
#ifdef __cplusplus
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    62
}
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    63
#endif
1
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    64
ef7abb48573b Convert to C api.
Fabien Ninoles <fabien@tzone.org>
parents: 0
diff changeset
    65
#endif