Make sorcery details opaque and add extended fields.
authorJoshua Colp <jcolp@digium.com>
Sat, 22 Jun 2013 14:26:25 +0000 (14:26 +0000)
committerJoshua Colp <jcolp@digium.com>
Sat, 22 Jun 2013 14:26:25 +0000 (14:26 +0000)
commita330d0867e3155e34ecbfd23a84fe6e7ebf51469
treed19cbb217482b0dc2952afe2495d59b868d1ff82
parent77002bc377f19ea11e60732c486b6ef371688773
Make sorcery details opaque and add extended fields.

Sorcery specific object information is now opaque and allocated with the object.
This means that modules do not need to be recompiled if the sorcery specific part
is changed. It also means that sorcery can store additional information on objects
and ensure it is freed or the reference count decreased when the object goes away.

To facilitate the above a generic sorcery allocator function has been added which
also ensures that allocated objects do not have a lock.

Extended fields have been added thanks to all of the above which allows specific fields
to be marked as extended, and thus simply stored as-is within the object. Type safety
is *NOT* enforced on these fields. A consumer of them has to query and ultimately perform
their own safety check. What does this mean? Extra modules can extend already defined
structures without having to modify them.

Tests have also been included to verify extended field functionality.

Review: https://reviewboard.asterisk.org/r/2585/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/sorcery.h
main/sorcery.c
res/res_sip/config_auth.c
res/res_sip/config_domain_aliases.c
res/res_sip/config_transport.c
res/res_sip/location.c
res/res_sip/sip_configuration.c
res/res_sip/sip_options.c
tests/test_sorcery.c