Giter Club home page Giter Club logo

dynobj's Introduction

dynobj

C/C++ CI

Prototypical object system in C. Not really that useful.

Example Usage

#include <stdio.h>
#include "dynobj.h"

// Define a simple message handler that increments the count of the current object.
DYNOBJ_DEFINE_SIMPLE_MESSAGE(counter_increment) {
  dynobj_set_int_slot(self, "count", dynobj_get_int_slot(self, "count") + 1);
}

int main() {
  // Create a prototype representing our Counter "class"
  dynobj *counter_proto = dynobj_new();
  dynobj_set_int_slot(counter_proto, "count", 0);
  dynobj_set_ptr_slot(counter_proto, "increment", counter_increment);

  // Create two counter objects.
  dynobj *a = dynobj_extend(counter_proto);
  dynobj *b = dynobj_extend(counter_proto);

  DYNOBJ_SEND_SIMPLE_MESSAGE(a, "increment");
  DYNOBJ_SEND_SIMPLE_MESSAGE(a, "increment");
  DYNOBJ_SEND_SIMPLE_MESSAGE(a, "increment");

  DYNOBJ_SEND_SIMPLE_MESSAGE(b, "increment");
  DYNOBJ_SEND_SIMPLE_MESSAGE(b, "increment");

  printf("Counter A = %d, Counter B = %d\n", dynobj_get_int_slot(a, "count"),
         dynobj_get_int_slot(b, "count"));

  dynobj_destroy(a);
  dynobj_destroy(b);
  dynobj_destroy(counter_proto);
}

dynobj's People

Contributors

rameshvarun 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.