Bladeren bron

cmXml.h/c, Makefile.am : Initial, incomplete, implementation of cmXml.h/c.

master
Kevin Larke 8 jaren geleden
bovenliggende
commit
1c9e28bcfb
3 gewijzigde bestanden met toevoegingen van 146 en 2 verwijderingen
  1. 2
    2
      Makefile.am
  2. 96
    0
      cmXml.c
  3. 48
    0
      cmXml.h

+ 2
- 2
Makefile.am Bestand weergeven

@@ -18,8 +18,8 @@ cmSRC += src/libcm/cmData.c src/libcm/cmLib.c src/libcm/cmText.c src/libcm/cmTex
18 18
 cmHDR += src/libcm/cmMath.h src/libcm/cmGnuPlot.h src/libcm/cmKeyboard.h  src/libcm/cmStrStream.h
19 19
 cmSRC += src/libcm/cmMath.c src/libcm/cmGnuPlot.c src/libcm/cmKeyboard.c  src/libcm/cmStrStream.c
20 20
 
21
-cmHDR += src/libcm/cmLinkedHeap.h src/libcm/cmMallocDebug.h src/libcm/cmLex.h src/libcm/cmJson.h src/libcm/cmPrefs.h src/libcm/cmStack.h src/libcm/cmArray.h
22
-cmSRC += src/libcm/cmLinkedHeap.c src/libcm/cmMallocDebug.c src/libcm/cmLex.c src/libcm/cmJson.c src/libcm/cmPrefs.c src/libcm/cmStack.c src/libcm/cmArray.c
21
+cmHDR += src/libcm/cmLinkedHeap.h src/libcm/cmMallocDebug.h src/libcm/cmLex.h src/libcm/cmJson.h src/libcm/cmXml.h src/libcm/cmPrefs.h src/libcm/cmStack.h src/libcm/cmArray.h
22
+cmSRC += src/libcm/cmLinkedHeap.c src/libcm/cmMallocDebug.c src/libcm/cmLex.c src/libcm/cmJson.c src/libcm/cmXml.c src/libcm/cmPrefs.c src/libcm/cmStack.c src/libcm/cmArray.c
23 23
 
24 24
 cmHDR += src/libcm/cmUdpPort.h src/libcm/cmUdpNet.h src/libcm/cmVirtNet.h
25 25
 cmSRC += src/libcm/cmUdpPort.c src/libcm/cmUdpNet.c src/libcm/cmVirtNet.c

+ 96
- 0
cmXml.c Bestand weergeven

@@ -0,0 +1,96 @@
1
+#include "cmPrefix.h"
2
+#include "cmGlobal.h"
3
+#include "cmFloatTypes.h"
4
+#include "cmRpt.h"
5
+#include "cmErr.h"
6
+#include "cmCtx.h"
7
+#include "cmJson.h"
8
+#include "cmMem.h"
9
+#include "cmMallocDebug.h"
10
+#include "cmLex.h"
11
+#include "cmLinkedHeap.h"
12
+#include "cmFile.h"
13
+#include "cmXml.h"
14
+
15
+cmXmlH_t cmXmlNullHandle = cmSTATIC_NULL_HANDLE;
16
+
17
+typedef struct
18
+{
19
+  cmErr_t      err;   // 
20
+  cmLHeapH_t   heapH; // linked heap stores all node memory
21
+  cmXmlNode_t* root;
22
+} cmXml_t;
23
+
24
+cmXml_t* _cmXmlHandleToPtr( cmXmlH_t h )
25
+{
26
+  cmXml_t* p = (cmXml_t*)h.h;
27
+  assert( p != NULL );
28
+  return p;
29
+}
30
+
31
+cmXmlRC_t _cmXmlFree( cmXml_t* p )
32
+{
33
+  // free the internal heap object
34
+  cmLHeapDestroy( &p->heapH );
35
+
36
+}
37
+
38
+cmXmlRC_t cmXmlAlloc( cmCtx_t* ctx, cmXmlH_t* hp, const cmChar_t* fn )
39
+{
40
+  cmXmlRC_t rc = kOkXmlRC;
41
+  cmXml_t*   p = NULL;
42
+  
43
+  // finalize before initialize 
44
+  if((rc = cmXmlFree(hp)) != kOkJsRC )
45
+    return rc;
46
+
47
+  // allocate the main object record
48
+  if((p = cmMemAllocZ( cmXml_t, 1 )) == NULL )
49
+    return cmErrMsg(&ctx->err,kMemAllocErrXmlRC,"Object memory allocation failed.");
50
+
51
+  cmErrSetup(&p->err,&ctx->rpt,"XML Parser");
52
+
53
+  // allocate the linked heap mgr
54
+  if( cmLHeapIsValid(p->heapH = cmLHeapCreate(1024,ctx)) == false )
55
+  {
56
+    rc = cmErrMsg(&p->err,kMemAllocErrXmlRC,"Linked heap object allocation failed.");
57
+    goto errLabel;
58
+  }
59
+  
60
+  hp->h = p;
61
+  
62
+ errLabel:
63
+  if(rc != kOkXmlRC )
64
+    _cmXmlFree(p);
65
+    
66
+  return rc;
67
+}
68
+
69
+cmXmlRC_t cmXmlFree(  cmXmlH_t* hp )
70
+{
71
+  cmXmlRC_t rc = kOkXmlRC;
72
+  
73
+  if( hp!=NULL || cmXmlIsValid(*hp)==false )
74
+    return kOkXmlRC;
75
+
76
+  cmXml_t* p = _cmXmlHandleToPtr(*hp);
77
+
78
+  if((rc = _cmXmlFree(p)) != kOkXmlRC )
79
+    return rc;
80
+
81
+  hp->h = NULL;
82
+  
83
+  return rc;  
84
+}
85
+  
86
+bool      cmXmlIsValid( cmXmlH_t h )
87
+{ return h.h != NULL; }
88
+
89
+  
90
+cmXmlRC_t cmXmlParse( cmXmlH_t h, const cmChar_t* fn )
91
+{
92
+}
93
+
94
+cmXmlRC_t cmXmlClear( cmXmlH_t h )
95
+{
96
+}

+ 48
- 0
cmXml.h Bestand weergeven

@@ -0,0 +1,48 @@
1
+#ifndef cmXml_h
2
+#define cmXml_h
3
+
4
+#ifdef __cpluspus
5
+extern "C" {
6
+#endif
7
+
8
+  enum
9
+  {
10
+    kOkXmlRC = cmOkRC,
11
+    kMemAllocErrXmlRC,
12
+    kLHeapXmlRC
13
+  }; 
14
+  
15
+  typedef struct cmXmlAttr_str
16
+  {
17
+    const cmChar_t*      label;
18
+    const cmChar_t*      value;
19
+    struct cmXmlAttr_str* link;
20
+  } cmXmlAttr_t;
21
+  
22
+  typedef struct cmXmlNode_str
23
+  {
24
+    struct cmXmlNode_str* parent;
25
+    struct cmXmlNode_str* children;
26
+    struct cmXmlNode_str* sibling;
27
+    cmXmlAttr_t*          attr;
28
+  } cmXmlNode_t;
29
+
30
+  typedef cmHandle_t cmXmlH_t;
31
+  typedef cmRC_t     cmXmlRC_t;
32
+
33
+  extern cmXmlH_t cmXmlNullHandle;
34
+
35
+  cmXmlRC_t cmXmlAlloc( cmCtx_t* ctx, cmXmlH_t* hh, const cmChar_t* fn );
36
+  cmXmlRC_t cmXmlFree(  cmXmlH_t* hh );
37
+  bool      cmXmlIsValid( cmXmlH_t h );
38
+  
39
+  cmXmlRC_t cmXmlParse( cmXmlH_t h, const cmChar_t* fn );
40
+  cmXmlRC_t cmXmlClear( cmXmlH_t h );
41
+
42
+  
43
+  
44
+#ifdef __cpluspus
45
+}
46
+#endif
47
+
48
+#endif

Laden…
Annuleren
Opslaan