LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Ну тут главное сам принцип а не библиотека. GValue может быть и строкой, и числом, и еще всяким разным.

Ну и вот тебе самый простой вариант для понимания:

enum variant_type {
  VARIANT_INTEGER,
  VARIANT_REAL,
  VARIANT_STRING
};

struct variant {
  enum variant_type type;
  union {
    int integer;
    float real;
    char *string;
  };
};

void print_variant(struct variant *self)
{
  switch (self) {
  case VARIANT_INTEGER:
    printf("%d\n", self->integer);
    break;
  case VARIANT_REAL:
    printf("%f\n", self->real);
    break;
  case VARIANT_STRING:
    printf("%s\n", self->string);
    break;
  }
}

struct variant *variant_new_integer(int value);

struct variant *variant_new_real(float value);

struct variant *variant_new_string(const char *value);

Исправление MOPKOBKA, :

Ну тут главное сам принцип а не библиотека. GValue может быть и строкой, и числом, и еще всяким разным.

Ну и вот тебе самый простой вариант для понимания:

enum variant_type {
  VARIANT_INTEGER,
  VARIANT_REAL,
  VARIANT_STRING
};

struct variant {
  enum variant_type type;
  union {
    int integer;
    float real;
    char *string;
  };
};

void print_variant(struct variant *self)
{
  switch (self) {
  case VARIANT_INTEGER:
    printf("%d\n", self->integer);
    break;
  case VARIANT_REAL:
    printf("%f\n", self->real);
    break;
  case VARIANT_STRING:
    printf("%s\n", self->string);
    break;
  }
}

Исправление MOPKOBKA, :

Ну тут главное сам принцип а не библиотека. GValue может быть и строкой, и числом, и еще всяким разным.

Исходная версия MOPKOBKA, :

Ну тут главное сам принцип а не библиотека.