Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Icecast-Server
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
93
Issues
93
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
Icecast-Server
Commits
48bb4773
Commit
48bb4773
authored
Oct 10, 2018
by
Philipp Schafft
🦁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feature: Added REFOBJECT_DEFINE_TYPE_NEW_NOOP()
parent
491c4ab2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
13 deletions
+9
-13
src/refobject.c
src/refobject.c
+2
-2
src/refobject.h
src/refobject.h
+2
-0
src/tests/ctest_refobject.c
src/tests/ctest_refobject.c
+5
-11
No files found.
src/refobject.c
View file @
48bb4773
...
...
@@ -19,14 +19,14 @@
#define TO_BASE(x) REFOBJECT_TO_TYPE((x), refobject_base_t *)
static
int
return_zero
(
refobject_t
self
,
const
refobject_type_t
*
type
,
va_list
ap
)
int
refobject_new__
return_zero
(
refobject_t
self
,
const
refobject_type_t
*
type
,
va_list
ap
)
{
(
void
)
self
,
(
void
)
type
,
(
void
)
ap
;
return
0
;
}
REFOBJECT_DEFINE_TYPE
(
refobject_base_t
,
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
static
inline
int
check_type
(
const
refobject_type_t
*
type
)
...
...
src/refobject.h
View file @
48bb4773
...
...
@@ -72,8 +72,10 @@ static const refobject_type_t refobject_typedef__ ## type = \
#define REFOBJECT_DEFINE_PRIVATE_TYPE(type, ...) REFOBJECT_DEFINE_TYPE__RAW(type, ## __VA_ARGS__); static const refobject_type_t * refobject_type__ ## type = &refobject_typedef__ ## type
#define REFOBJECT_DEFINE_TYPE_FREE(cb) .type_freecb = (cb)
#define REFOBJECT_DEFINE_TYPE_NEW(cb) .type_newcb = (cb)
#define REFOBJECT_DEFINE_TYPE_NEW_NOOP() .type_newcb = refobject_new__return_zero
typedef
struct
refobject_type_tag
refobject_type_t
;
int
refobject_new__return_zero
(
refobject_t
self
,
const
refobject_type_t
*
type
,
va_list
ap
);
/* Type used for callback called then the object is actually freed
* That is once all references to it are gone.
...
...
src/tests/ctest_refobject.c
View file @
48bb4773
...
...
@@ -16,12 +16,6 @@
#include "../refobject.h"
static
int
return_zero
(
refobject_t
self
,
const
refobject_type_t
*
type
,
va_list
ap
)
{
(
void
)
self
,
(
void
)
type
,
(
void
)
ap
;
return
0
;
}
static
void
test_ptr
(
void
)
{
refobject_t
a
;
...
...
@@ -90,7 +84,7 @@ static void test_sizes(void)
char
padding
[
1024
];
}
ctest_test_type_a_t
;
REFOBJECT_DEFINE_PRIVATE_TYPE
(
ctest_test_type_a_t
,
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
typedef
struct
{
...
...
@@ -98,21 +92,21 @@ static void test_sizes(void)
char
padding
[
131072
];
}
ctest_test_type_b_t
;
REFOBJECT_DEFINE_PRIVATE_TYPE
(
ctest_test_type_b_t
,
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
typedef
struct
{
char
padding
[
sizeof
(
refobject_base_t
)
-
1
];
}
ctest_test_type_c_t
;
REFOBJECT_DEFINE_PRIVATE_TYPE
(
ctest_test_type_c_t
,
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
typedef
struct
{
char
padding
[
0
];
}
ctest_test_type_d_t
;
REFOBJECT_DEFINE_PRIVATE_TYPE
(
ctest_test_type_d_t
,
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
a
=
REFOBJECT_FROM_TYPE
(
refobject_new
(
ctest_test_type_a_t
));
...
...
@@ -212,7 +206,7 @@ static void test_freecb(void)
REFOBJECT_DEFINE_PRIVATE_TYPE
(
ctest_test_type_t
,
REFOBJECT_DEFINE_TYPE_FREE
(
test_freecb__freecb
),
REFOBJECT_DEFINE_TYPE_NEW
(
return_zero
)
REFOBJECT_DEFINE_TYPE_NEW
_NOOP
(
)
);
test_freecb__called
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment