xb-opcode

xb-opcode

Functions

Types and Values

Description

Functions

xb_opcode_cmp_val ()

gboolean
xb_opcode_cmp_val (XbOpcode *self);

Checks if the opcode can be compared using the integer value.

Parameters

self

a XbOpcode

 

Returns

#TRUE if this opcode can be compared as an integer

Since: 0.1.1


xb_opcode_cmp_str ()

gboolean
xb_opcode_cmp_str (XbOpcode *self);

Checks if the opcode can be compared using the string value.

Parameters

self

a XbOpcode

 

Returns

#TRUE if this opcode can be compared as an string

Since: 0.1.1


xb_opcode_to_string ()

gchar *
xb_opcode_to_string (XbOpcode *self);

Returns a string representing the specific opcode.

Parameters

self

a XbOpcode

 

Returns

text

Since: 0.1.4


xb_opcode_kind_to_string ()

const gchar *
xb_opcode_kind_to_string (XbOpcodeKind kind);

Converts the opcode kind to a string.

Parameters

Returns

opcode kind, e.g. FUNC

Since: 0.1.1


xb_opcode_kind_from_string ()

XbOpcodeKind
xb_opcode_kind_from_string (const gchar *str);

Converts a string to an opcode kind.

Parameters

str

a string, e.g. FUNC

 

Since: 0.1.1


xb_opcode_get_kind ()

XbOpcodeKind
xb_opcode_get_kind (XbOpcode *self);

Gets the opcode kind.

Parameters

self

a XbOpcode

 

Since: 0.1.1


xb_opcode_get_str ()

const gchar *
xb_opcode_get_str (XbOpcode *self);

Gets the string value stored on the opcode.

Parameters

self

a XbOpcode

 

Returns

a string, or NULL if unset

Since: 0.1.1


xb_opcode_get_val ()

guint32
xb_opcode_get_val (XbOpcode *self);

Gets the integer value stored in the opcode. This may be a function ID, a index into the string table or a literal integer.

Parameters

self

a XbOpcode

 

Returns

value, or 0 for unset.

Since: 0.1.1


xb_opcode_func_init ()

void
xb_opcode_func_init (XbOpcode *self,
                     guint32 func);

Initialises a stack allocated XbOpcode to contain a specific function. Custom functions can be registered using xb_machine_add_func() and retrieved using xb_machine_opcode_func_new().

Parameters

self

a stack allocated XbOpcode to initialise

 

func

a function index

 

Since: 0.2.0


xb_opcode_integer_init ()

void
xb_opcode_integer_init (XbOpcode *self,
                        guint32 val);

Initialises a stack allocated XbOpcode to contain an integer literal.

Parameters

self

a stack allocated XbOpcode to initialise

 

val

a integer value

 

Since: 0.2.0


xb_opcode_text_init ()

void
xb_opcode_text_init (XbOpcode *self,
                     const gchar *str);

Initialises a stack allocated XbOpcode to contain a text literal. The str argument is copied internally and is not tied to the lifecycle of the XbOpcode.

Parameters

self

a stack allocated XbOpcode to initialise

 

str

a string

 

Since: 0.2.0


xb_opcode_text_init_static ()

void
xb_opcode_text_init_static (XbOpcode *self,
                            const gchar *str);

Initialises a stack allocated XbOpcode to contain a text literal, where str is either static text or will outlive the XbOpcode lifecycle.

Parameters

self

a stack allocated XbOpcode to initialise

 

str

a string

 

Since: 0.2.0


xb_opcode_text_init_steal ()

void
xb_opcode_text_init_steal (XbOpcode *self,
                           gchar *str);

Initialises a stack allocated XbOpcode to contain a text literal, stealing the str . Once the opcode is finalized g_free() will be called on str .

Parameters

self

a stack allocated XbOpcode to initialise

 

str

a string

 

Since: 0.2.0

Types and Values

enum XbOpcodeFlags

The opcode flags. The values have been carefully chosen so that a simple bitmask can be done to know how to compare for equality.

function─┐ ┌─string bound──┐ │ │ ┌──integer token┐ │ │ │ │ X X X X X X X 8 4 2 1

Members

XB_OPCODE_FLAG_UNKNOWN

   

XB_OPCODE_FLAG_INTEGER

   

XB_OPCODE_FLAG_TEXT

   

XB_OPCODE_FLAG_FUNCTION

   

XB_OPCODE_FLAG_BOUND

   

XB_OPCODE_FLAG_BOOLEAN

   

XB_OPCODE_FLAG_TOKENIZED

   

enum XbOpcodeKind

Members

XB_OPCODE_KIND_UNKNOWN

   

XB_OPCODE_KIND_INTEGER

   

XB_OPCODE_KIND_TEXT

   

XB_OPCODE_KIND_FUNCTION

   

XB_OPCODE_KIND_BOUND_UNSET

   

XB_OPCODE_KIND_BOUND_INTEGER

   

XB_OPCODE_KIND_BOUND_TEXT

   

XB_OPCODE_KIND_INDEXED_TEXT

   

XB_OPCODE_KIND_BOOLEAN

   

XB_OPCODE_KIND_BOUND_INDEXED_TEXT

   

XbOpcode

typedef struct {
	XbOpcodeKind kind;
	guint32 val;
	gpointer ptr;
	guint8 tokens_len;
	const gchar *tokens[XB_OPCODE_TOKEN_MAX + 1];
	GDestroyNotify destroy_func;
	guint8 level;
} XbOpcode;