GithubHelp home page GithubHelp logo

isabella232 / gobject-introspection Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gnome/gobject-introspection

0.0 0.0 0.0 30.8 MB

Read-only mirror of https://gitlab.gnome.org/GNOME/gobject-introspection

Home Page: https://gitlab.gnome.org/GNOME/gobject-introspection

License: Other

Makefile 0.13% Shell 0.03% Python 12.48% C 85.16% Objective-C 0.01% C++ 0.03% Yacc 0.81% M4 0.09% Meson 1.20% Dockerfile 0.03% Batchfile 0.01%

gobject-introspection's Introduction

GObject Introspection

The goal of the project is to describe the APIs and collect them in a uniform, machine readable format.

GIR XML format

There's an XML format called GIR used by GObjectIntrospection. The purpose of it is to provide a common structure to access the complete available API that a library or other unit of code exports. It is meant to be language agnostic using namespaces to separate core, language or library specific functionality. There are currently only C based tools that work on the format, but it's meant to be usable to use in other situations, for instance to/from another set of languages.

Typelib

The typelib is an on-disk version of the GIR designed to be fast, memory efficient and complete enough so that language bindings can be written on top of it without other sources of information. It is normally compiled from a GIR when a library/program is installed and accessed from the language binding or another application who wishes to use the information.

Tools

The following tools are shipped with GObject Introspection:

  • g-ir-scanner, a tool which generates GIR XML files by parsing headers, GTK-Doc comment blocks including annotations and introspecting GObject based libraries.
  • g-ir-compiler, a typelib compiler. It converts one or more GIR files into one or more typelib blobs.
  • g-ir-generate, an GIR generator, using the repository API. It generates GIR files from binary typelib which can be in a shared object, or a raw typelib blob.
  • g-ir-annotation-tool, extracts annotations from source code files
  • g-ir-doc-tool, generates API reference documentation from a GIR XML file.

API library

There's also a C based library called libgirepository which provides an API to access to the typelib metadata. It also contains an API to invoke functions, given the function info object. The implementation is based on libffi (3.0 or higher of libffi required, can be found at http://sourceware.org/libffi).

There are a number of GIR test files in tests/, and a script to do roundtrip tests (GIR -> typelib -> GIR).

Helping out

The introspection framework needs a lot more work, see TODO.

Homepage

https://gi.readthedocs.io/

Reporting bugs

Bugs should be reported in https://gitlab.gnome.org/GNOME/gobject-introspection/issues.

Contact

Mail

[email protected]

IRC

#[email protected]

gobject-introspection's People

Contributors

cgwalters avatar boondocksaints-debug avatar lazka avatar dieterv avatar fanc999-1 avatar magcius avatar ricotz avatar tomeuv avatar ptomato avatar ebassi avatar sfeltman avatar gcampax avatar jdahlin-litl avatar tmiasko avatar owtaylor avatar tko avatar danwinship avatar nirbheek avatar rotty avatar juergbi avatar allisonkarlitskaya avatar cscott avatar mathieuduponchelle avatar fmuellner avatar pavouk avatar ntd avatar tsch avatar lrn avatar kanavin avatar xclaesse 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.