Git Product home page Git Product logo

spdatapickle's Introduction

What is it?

SPDataPickle is a library use to serialize and deserialize C structures to and from XML/JSON/ProtoBuf

Quick Example

You write a .xml file like this:

<metainfo prefix="XYZ" filename="account">  
    <struct name="Person">  
        <field name="id"    type="int32" />  
        <field name="name"  type="*char" />  
        <field name="email" type="*char" />  
    </struct>  
</metainfo> 

Then you process it with spxml2struct, the SPDataPickle tools, to produce code in pure C.

enum {  
    eTypeXYZPerson = eTypeSPDPUserDefine + 1   
};  
  
typedef struct tagXYZPerson {  
    int mId;  
    char * mName;  
    char * mEmail;  
} XYZPerson_t;  
  
typedef struct tagSP_DPMetaInfo SP_DPMetaInfo_t;  
extern SP_DPMetaInfo_t * gXYZAccountMetaInfo;  
Then, you use that code like this:

XYZPerson_t person;  

person.mId = 123;  
person.mName = strdup( "Bob" );  
person.mEmail = strdup( "[email protected]" );  

SP_XmlStringBuffer buffer;  

SP_XmlPickle pickle( gXYZAccountMetaInfo );  
pickle.pickle( &person, sizeof( person ), eTypeXYZPerson, &buffer );  

printf( "%s\n", buffer.getBuffer() );  

XYZPerson_t other;  
pickle.unpickle( buffer.getBuffer(), buffer.getSize(),  
        eTypeXYZPerson, &other, sizeof( other ) );  

printf( "id %d, name %s, email %s\n", other.mId, other.mName, other.mEmail );  

SP_DPAlloc alloc( gXYZAccountMetaInfo );  

alloc.free( &person, sizeof( person ), eTypeXYZPerson );  
alloc.free( &other, sizeof( other ), eTypeXYZPerson );
<Person>  
<id>123</id>  
<name>Bob</name>  
<email>[email protected]</email>  
</Person>  
  
id 123, name Bob, email [email protected] 

spdatapickle's People

Contributors

spsoft avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.