+
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/Generation/GirLoader/Input/Record.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ public class Record
[XmlAttribute("disguised")]
public bool Disguised;

[XmlAttribute("opaque")]
public bool Opaque;

[XmlAttribute("pointer")]
public bool Pointer;

[XmlAttribute("introspectable")]
public bool Introspectable = true;

Expand Down
2 changes: 2 additions & 0 deletions src/Generation/GirLoader/Output/Record.GirModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public partial class Record : GirModel.Record
IEnumerable<GirModel.Field> GirModel.Record.Fields => Fields;
bool GirModel.Record.Introspectable => Introspectable;
bool GirModel.Record.Foreign => Foreign;
bool GirModel.Record.Opaque => Opaque;
bool GirModel.Record.Pointer => Pointer;
}
6 changes: 5 additions & 1 deletion src/Generation/GirLoader/Output/Record.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,18 @@ public partial class Record : ComplexType, ShadowableProvider
public TypeReference? GLibClassStructFor { get; }
public bool Introspectable { get; }
public bool Foreign { get; }
public bool Opaque { get; }
public bool Pointer { get; }

public Record(Repository repository, string? cType, string name, TypeReference? gLibClassStructFor, IEnumerable<Method> methods, IEnumerable<Function> functions, Function? getTypeFunction, IEnumerable<Field> fields, bool disguised, IEnumerable<Constructor> constructors, bool introspectable, bool foreign) : base(repository, cType, name)
public Record(Repository repository, string? cType, string name, TypeReference? gLibClassStructFor, IEnumerable<Method> methods, IEnumerable<Function> functions, Function? getTypeFunction, IEnumerable<Field> fields, bool disguised, IEnumerable<Constructor> constructors, bool introspectable, bool foreign, bool opaque, bool pointer) : base(repository, cType, name)
{
GLibClassStructFor = gLibClassStructFor;
GetTypeFunction = getTypeFunction;
Disguised = disguised;
Introspectable = introspectable;
Foreign = foreign;
Opaque = opaque;
Pointer = pointer;

this._constructors = constructors.ToList();
this._methods = methods.ToList();
Expand Down
4 changes: 3 additions & 1 deletion src/Generation/GirLoader/Output/RecordFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ public Record Create(Input.Record record, Repository repository)
disguised: record.Disguised,
constructors: _constructorFactory.Create(record.Constructors),
introspectable: record.Introspectable,
foreign: record.Foreign
foreign: record.Foreign,
opaque: record.Opaque,
pointer: record.Pointer
);

if (getTypeFunction is not null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ public partial class Record : GirModel.Record
IEnumerable<Field> GirModel.Record.Fields => _record.Fields;
bool GirModel.Record.Introspectable => _record.Introspectable;
bool GirModel.Record.Foreign => _record.Foreign;
bool GirModel.Record.Opaque => _record.Opaque;
bool GirModel.Record.Pointer => _record.Pointer;
}
2 changes: 2 additions & 0 deletions src/Generation/GirModel/Record.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public interface Record : ComplexType
IEnumerable<Field> Fields { get; }
bool Introspectable { get; }
bool Foreign { get; }
bool Opaque { get; }
bool Pointer { get; }
}
62 changes: 62 additions & 0 deletions src/Native/GirTestLib/girtest-opaque-record-tester.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include "girtest-opaque-record-tester.h"

/**
* GirTestOpaqueRecordTester:
*
* Just an opaque record.
*/
struct _GirTestOpaqueRecordTester
{
int ref_count;
};

G_DEFINE_BOXED_TYPE (GirTestOpaqueRecordTester, girtest_opaque_record_tester, girtest_opaque_record_tester_ref, girtest_opaque_record_tester_unref)

/**
* girtest_opaque_record_tester_new: (constructor)
*
* Returns: (transfer full): a new `GirTestOpaqueRecordTester`
**/
GirTestOpaqueRecordTester *
girtest_opaque_record_tester_new ()
{
GirTestOpaqueRecordTester *result;
result = g_new0 (GirTestOpaqueRecordTester, 1);
result->ref_count = 1;
return result;
}

/**
* girtest_opaque_record_tester_ref:
* @self: a `GirTestRecordTester`
*
* Increments the reference count on `data`.
*
* Returns: (transfer full): the data.
**/
GirTestOpaqueRecordTester *
girtest_opaque_record_tester_ref (GirTestOpaqueRecordTester *self)
{
g_return_val_if_fail (self != NULL, NULL);
self->ref_count += 1;
return self;
}

/**
* girtrest_opaque_record_tester_unref:
* @self: (transfer full): a `GirTestOpaqueRecordTester`
*
* Decrements the reference count on `data` and frees the
* data if the reference count is 0.
**/
void
girtest_opaque_record_tester_unref (GirTestOpaqueRecordTester *self)
{
g_return_if_fail (self != NULL);

self->ref_count -= 1;
if (self->ref_count > 0)
return;

g_free (self);
}
16 changes: 16 additions & 0 deletions src/Native/GirTestLib/girtest-opaque-record-tester.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#pragma once

#include <glib-object.h>

G_BEGIN_DECLS

typedef struct _GirTestOpaqueRecordTester GirTestOpaqueRecordTester;
#define GIRTEST_TYPE_OPAQUE_RECORD_TESTER (girtest_opaque_record_tester_get_type())

GType girtest_opaque_record_tester_get_type (void) G_GNUC_CONST;

GirTestOpaqueRecordTester * girtest_opaque_record_tester_new ();
GirTestOpaqueRecordTester * girtest_opaque_record_tester_ref (GirTestOpaqueRecordTester *self);
void girtest_opaque_record_tester_unref(GirTestOpaqueRecordTester *self);

G_END_DECLS
52 changes: 52 additions & 0 deletions src/Native/GirTestLib/girtest-record-tester.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include "girtest-record-tester.h"

G_DEFINE_BOXED_TYPE (GirTestRecordTester, girtest_record_tester, girtest_record_tester_ref, girtest_record_tester_unref)

/**
* girtest_record_tester_new: (constructor)
*
* Returns: (transfer full): a new `GirTestRecordTester`
**/
GirTestRecordTester *
girtest_record_tester_new ()
{
GirTestRecordTester *result;
result = g_new0 (GirTestRecordTester, 1);
result->ref_count = 1;
return result;
}

/**
* girtest_record_tester_ref:
* @self: a `GirTestRecordTester`
*
* Increments the reference count on `data`.
*
* Returns: (transfer full): the data.
**/
GirTestRecordTester *
girtest_record_tester_ref (GirTestRecordTester *self)
{
g_return_val_if_fail (self != NULL, NULL);
self->ref_count += 1;
return self;
}

/**
* girtrest_record_tester_unref:
* @data: (transfer full): a `GirTestRecordTester`
*
* Decrements the reference count on `data` and frees the
* data if the reference count is 0.
**/
void
girtest_record_tester_unref (GirTestRecordTester *self)
{
g_return_if_fail (self != NULL);

self->ref_count -= 1;
if (self->ref_count > 0)
return;

g_free (self);
}
25 changes: 25 additions & 0 deletions src/Native/GirTestLib/girtest-record-tester.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once

#include <glib-object.h>

G_BEGIN_DECLS

#define GIRTEST_TYPE_RECORD_TESTER (girtest_record_tester_get_type())

/**
* GirTestRecordTester:
*
* Just a record.
*/
typedef struct
{
int ref_count;
} GirTestRecordTester;

GType girtest_record_tester_get_type (void) G_GNUC_CONST;

GirTestRecordTester * girtest_record_tester_new ();
GirTestRecordTester * girtest_record_tester_ref (GirTestRecordTester *self);
void girtest_record_tester_unref(GirTestRecordTester *self);

G_END_DECLS
2 changes: 2 additions & 0 deletions src/Native/GirTestLib/girtest.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
#include "girtest-constant-tester.h"
#include "girtest-error-tester.h"
#include "girtest-integer-array-tester.h"
#include "girtest-opaque-record-tester.h"
#include "girtest-primitive-value-type-tester.h"
#include "girtest-property-tester.h"
#include "girtest-record-tester.h"
#include "girtest-rename-to-tester.h"
#include "girtest-returning-signal-tester.h"
#include "girtest-signal-tester.h"
Expand Down
4 changes: 4 additions & 0 deletions src/Native/GirTestLib/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ header_files = [
'girtest-constant-tester.h',
'girtest-error-tester.h',
'girtest-integer-array-tester.h',
'girtest-opaque-record-tester.h',
'girtest-primitive-value-type-tester.h',
'girtest-property-tester.h',
'girtest-record-tester.h',
'girtest-rename-to-tester.h',
'girtest-returning-signal-tester.h',
'girtest-signal-tester.h',
Expand All @@ -30,8 +32,10 @@ source_files = [
'girtest-class-tester.c',
'girtest-error-tester.c',
'girtest-integer-array-tester.c',
'girtest-opaque-record-tester.c',
'girtest-primitive-value-type-tester.c',
'girtest-property-tester.c',
'girtest-record-tester.c',
'girtest-rename-to-tester.c',
'girtest-returning-signal-tester.c',
'girtest-signal-tester.c',
Expand Down
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载