[applying,to,mainline] writer: Avoid emitting a canonical type twice

Message ID 87zfw5xtj8.fsf@redhat.com
State New
Headers
Series [applying,to,mainline] writer: Avoid emitting a canonical type twice |

Commit Message

Dodji Seketeli Feb. 12, 2024, 9:27 p.m. UTC
  Hello,

I noticed while looking at ABIXML files that sometimes, a (canonical)
type would be emitted twice.  This patch fixes it.  Let's hope it
doesn't impact ABIXML emitting performance too much.

	* src/abg-writer.cc (write_canonical_types_of_scope): Don't emit a
	canonical type if it's already been emitted.
	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
	Likewise.
	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
	Likewise.
	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Likewise.
	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
	Likewise.
	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
	Likewise.
	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
	Likewise.
	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
	Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Applying to the master branch.
---
 src/abg-writer.cc                             |     2 +
 .../data/test-annotate/test13-pr18894.so.abi  |   284 -
 .../data/test-annotate/test14-pr18893.so.abi  | 20112 +++++-------
 .../data/test-annotate/test15-pr18892.so.abi  |  1427 -
 .../data/test-annotate/test17-pr19027.so.abi  |   792 +-
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |  1984 --
 ...19-pr19023-libtcmalloc_and_profiler.so.abi |  1088 +-
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |  1490 +-
 .../data/test-annotate/test21-pr19092.so.abi  |   224 -
 .../test-read-dwarf/PR22122-libftdc.so.abi    |     1 -
 .../test-read-dwarf/test-libandroid.so.abi    |   807 -
 .../test-read-dwarf/test12-pr18844.so.abi     |   111 -
 .../test-read-dwarf/test13-pr18894.so.abi     |   212 -
 .../test-read-dwarf/test14-pr18893.so.abi     |  6416 ++--
 .../test-read-dwarf/test15-pr18892.so.abi     |  1254 +-
 .../test-read-dwarf/test16-pr18904.so.abi     |   367 -
 .../test-read-dwarf/test17-pr19027.so.abi     |   449 -
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |  1311 -
 ...19-pr19023-libtcmalloc_and_profiler.so.abi |   880 +-
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |   714 +-
 .../test-read-dwarf/test21-pr19092.so.abi     |   167 -
 .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 26183 +++++-----------
 22 files changed, 19208 insertions(+), 47067 deletions(-)
  

Patch

diff --git a/src/abg-writer.cc b/src/abg-writer.cc
index 0f2d2bdf..a6b8d6f7 100644
--- a/src/abg-writer.cc
+++ b/src/abg-writer.cc
@@ -2276,6 +2276,8 @@  write_canonical_types_of_scope(const scope_decl	&scope,
        i != canonical_types.end();
        ++i)
     {
+      if (ctxt.type_is_emitted(*i))
+	continue;
       if (is_member_type)
 	write_member_type(*i, ctxt, indent);
       else
diff --git a/tests/data/test-annotate/test13-pr18894.so.abi b/tests/data/test-annotate/test13-pr18894.so.abi
index 5ca7521f..d76b7f9f 100644
--- a/tests/data/test-annotate/test13-pr18894.so.abi
+++ b/tests/data/test-annotate/test13-pr18894.so.abi
@@ -1012,169 +1012,6 @@ 
         <var-decl name='value' type-id='type-id-57' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='232' column='1'/>
       </data-member>
     </class-decl>
-    <!-- struct DBusConnection -->
-    <class-decl name='DBusConnection' size-in-bits='2112' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='257' column='1' id='type-id-28'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusAtomic DBusConnection::refcount -->
-        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='258' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusRMutex* DBusConnection::mutex -->
-        <var-decl name='mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='260' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DBusCMutex* DBusConnection::dispatch_mutex -->
-        <var-decl name='dispatch_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='262' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusCondVar* DBusConnection::dispatch_cond -->
-        <var-decl name='dispatch_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='263' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusCMutex* DBusConnection::io_path_mutex -->
-        <var-decl name='io_path_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='264' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- DBusCondVar* DBusConnection::io_path_cond -->
-        <var-decl name='io_path_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='265' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- DBusList* DBusConnection::outgoing_messages -->
-        <var-decl name='outgoing_messages' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='267' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- DBusList* DBusConnection::incoming_messages -->
-        <var-decl name='incoming_messages' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='268' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- DBusList* DBusConnection::expired_messages -->
-        <var-decl name='expired_messages' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='269' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- DBusMessage* DBusConnection::message_borrowed -->
-        <var-decl name='message_borrowed' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='271' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- int DBusConnection::n_outgoing -->
-        <var-decl name='n_outgoing' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='275' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='672'>
-        <!-- int DBusConnection::n_incoming -->
-        <var-decl name='n_incoming' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='276' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='704'>
-        <!-- DBusCounter* DBusConnection::outgoing_counter -->
-        <var-decl name='outgoing_counter' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='278' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- DBusTransport* DBusConnection::transport -->
-        <var-decl name='transport' type-id='type-id-39' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='280' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- DBusWatchList* DBusConnection::watches -->
-        <var-decl name='watches' type-id='type-id-40' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='281' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='896'>
-        <!-- DBusTimeoutList* DBusConnection::timeouts -->
-        <var-decl name='timeouts' type-id='type-id-41' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='282' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='960'>
-        <!-- DBusList* DBusConnection::filter_list -->
-        <var-decl name='filter_list' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='284' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1024'>
-        <!-- DBusRMutex* DBusConnection::slot_mutex -->
-        <var-decl name='slot_mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='286' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1088'>
-        <!-- DBusDataSlotList DBusConnection::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='287' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1216'>
-        <!-- DBusHashTable* DBusConnection::pending_replies -->
-        <var-decl name='pending_replies' type-id='type-id-43' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='289' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1280'>
-        <!-- dbus_uint32_t DBusConnection::client_serial -->
-        <var-decl name='client_serial' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='291' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1344'>
-        <!-- DBusList* DBusConnection::disconnect_message_link -->
-        <var-decl name='disconnect_message_link' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='292' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1408'>
-        <!-- DBusWakeupMainFunction DBusConnection::wakeup_main_function -->
-        <var-decl name='wakeup_main_function' type-id='type-id-44' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='294' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1472'>
-        <!-- void* DBusConnection::wakeup_main_data -->
-        <var-decl name='wakeup_main_data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='295' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1536'>
-        <!-- DBusFreeFunction DBusConnection::free_wakeup_main_data -->
-        <var-decl name='free_wakeup_main_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='296' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1600'>
-        <!-- DBusDispatchStatusFunction DBusConnection::dispatch_status_function -->
-        <var-decl name='dispatch_status_function' type-id='type-id-46' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='298' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1664'>
-        <!-- void* DBusConnection::dispatch_status_data -->
-        <var-decl name='dispatch_status_data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='299' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1728'>
-        <!-- DBusFreeFunction DBusConnection::free_dispatch_status_data -->
-        <var-decl name='free_dispatch_status_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='300' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1792'>
-        <!-- DBusDispatchStatus DBusConnection::last_dispatch_status -->
-        <var-decl name='last_dispatch_status' type-id='type-id-47' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='302' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1856'>
-        <!-- DBusObjectTree* DBusConnection::objects -->
-        <var-decl name='objects' type-id='type-id-48' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='304' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1920'>
-        <!-- char* DBusConnection::server_guid -->
-        <var-decl name='server_guid' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='306' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1984'>
-        <!-- dbus_bool_t DBusConnection::dispatch_acquired -->
-        <var-decl name='dispatch_acquired' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='312' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2016'>
-        <!-- dbus_bool_t DBusConnection::io_path_acquired -->
-        <var-decl name='io_path_acquired' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='313' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2048'>
-        <!-- unsigned int DBusConnection::shareable -->
-        <var-decl name='shareable' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='315' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2049'>
-        <!-- unsigned int DBusConnection::exit_on_disconnect -->
-        <var-decl name='exit_on_disconnect' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='317' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2050'>
-        <!-- unsigned int DBusConnection::route_peer_messages -->
-        <var-decl name='route_peer_messages' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='319' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2051'>
-        <!-- unsigned int DBusConnection::disconnected_message_arrived -->
-        <var-decl name='disconnected_message_arrived' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='321' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2052'>
-        <!-- unsigned int DBusConnection::disconnected_message_processed -->
-        <var-decl name='disconnected_message_processed' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='325' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2053'>
-        <!-- unsigned int DBusConnection::have_connection_lock -->
-        <var-decl name='have_connection_lock' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='330' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2080'>
-        <!-- int DBusConnection::generation -->
-        <var-decl name='generation' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='334' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- struct DBusDataSlot -->
     <class-decl name='DBusDataSlot' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='37' column='1' id='type-id-58'>
       <data-member access='public' layout-offset-in-bits='0'>
@@ -3192,49 +3029,6 @@ 
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-pending-call.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- struct DBusPendingCall -->
-    <class-decl name='DBusPendingCall' size-in-bits='576' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='63' column='1' id='type-id-85'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusAtomic DBusPendingCall::refcount -->
-        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusDataSlotList DBusPendingCall::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusPendingCallNotifyFunction DBusPendingCall::function -->
-        <var-decl name='function' type-id='type-id-135' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='68' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusConnection* DBusPendingCall::connection -->
-        <var-decl name='connection' type-id='type-id-31' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='70' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- DBusMessage* DBusPendingCall::reply -->
-        <var-decl name='reply' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='71' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- DBusTimeout* DBusPendingCall::timeout -->
-        <var-decl name='timeout' type-id='type-id-103' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='72' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- DBusList* DBusPendingCall::timeout_link -->
-        <var-decl name='timeout_link' type-id='type-id-5' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='74' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- dbus_uint32_t DBusPendingCall::reply_serial -->
-        <var-decl name='reply_serial' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='76' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='544'>
-        <!-- unsigned int DBusPendingCall::completed -->
-        <var-decl name='completed' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='78' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='545'>
-        <!-- unsigned int DBusPendingCall::timeout_added -->
-        <var-decl name='timeout_added' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='79' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- typedef void (*)(DBusPendingCall*, void*) DBusPendingCallNotifyFunction -->
     <typedef-decl name='DBusPendingCallNotifyFunction' type-id='type-id-153' filepath='../dbus/dbus-connection.h' line='162' column='1' id='type-id-135'/>
     <!-- void (*)(DBusPendingCall*, void*) -->
@@ -4048,41 +3842,6 @@ 
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-timeout.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- struct DBusTimeout -->
-    <class-decl name='DBusTimeout' size-in-bits='448' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='41' column='1' id='type-id-92'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int DBusTimeout::refcount -->
-        <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int DBusTimeout::interval -->
-        <var-decl name='interval' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusTimeoutHandler DBusTimeout::handler -->
-        <var-decl name='handler' type-id='type-id-137' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- void* DBusTimeout::handler_data -->
-        <var-decl name='handler_data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusFreeFunction DBusTimeout::free_handler_data_function -->
-        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- void* DBusTimeout::data -->
-        <var-decl name='data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- DBusFreeFunction DBusTimeout::free_data_function -->
-        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- unsigned int DBusTimeout::enabled -->
-        <var-decl name='enabled' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='51' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- typedef dbus_bool_t (*)(void*) DBusTimeoutHandler -->
     <typedef-decl name='DBusTimeoutHandler' type-id='type-id-228' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='41' column='1' id='type-id-137'/>
     <!-- dbus_bool_t (*)(void*) -->
@@ -4157,49 +3916,6 @@ 
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-watch.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- struct DBusWatch -->
-    <class-decl name='DBusWatch' size-in-bits='512' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='41' column='1' id='type-id-95'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int DBusWatch::refcount -->
-        <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int DBusWatch::fd -->
-        <var-decl name='fd' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- unsigned int DBusWatch::flags -->
-        <var-decl name='flags' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='44' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DBusWatchHandler DBusWatch::handler -->
-        <var-decl name='handler' type-id='type-id-140' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* DBusWatch::handler_data -->
-        <var-decl name='handler_data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusFreeFunction DBusWatch::free_handler_data_function -->
-        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='48' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- void* DBusWatch::data -->
-        <var-decl name='data' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- DBusFreeFunction DBusWatch::free_data_function -->
-        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- unsigned int DBusWatch::enabled -->
-        <var-decl name='enabled' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='449'>
-        <!-- unsigned int DBusWatch::oom_last_time -->
-        <var-decl name='oom_last_time' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='53' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- typedef dbus_bool_t (*)(DBusWatch*, unsigned int, void*) DBusWatchHandler -->
     <typedef-decl name='DBusWatchHandler' type-id='type-id-230' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='43' column='1' id='type-id-140'/>
     <!-- dbus_bool_t (*)(DBusWatch*, unsigned int, void*) -->
diff --git a/tests/data/test-annotate/test14-pr18893.so.abi b/tests/data/test-annotate/test14-pr18893.so.abi
index 2eda9a97..5f180f4d 100644
--- a/tests/data/test-annotate/test14-pr18893.so.abi
+++ b/tests/data/test-annotate/test14-pr18893.so.abi
@@ -2086,172 +2086,6 @@ 
       <!-- <anonymous range>[4] -->
       <subrange length='4' lower-bound='0' upper-bound='3' type-id='type-id-3' id='type-id-62'/>
     </array-type-def>
-    <!-- struct GLUnurbs -->
-    <class-decl name='GLUnurbs' size-in-bits='1149440' is-struct='yes' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='49' column='1' id='type-id-42'>
-      <!-- class NurbsTessellator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-47'/>
-      <data-member access='public' layout-offset-in-bits='47616'>
-        <!-- errorCallbackType GLUnurbs::errorCallback -->
-        <var-decl name='errorCallback' type-id='type-id-48' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47680'>
-        <!-- GLboolean GLUnurbs::autoloadmode -->
-        <var-decl name='autoloadmode' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47744'>
-        <!-- OpenGLSurfaceEvaluator GLUnurbs::surfaceEvaluator -->
-        <var-decl name='surfaceEvaluator' type-id='type-id-44' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='131' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1121792'>
-        <!-- OpenGLCurveEvaluator GLUnurbs::curveEvaluator -->
-        <var-decl name='curveEvaluator' type-id='type-id-7' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='132' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1149376'>
-        <!-- int GLUnurbs::callbackFlag -->
-        <var-decl name='callbackFlag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='143' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- GLUnurbs::GLUnurbs() -->
-        <function-decl name='GLUnurbs' filepath='libnurbs/interface/glrenderer.cc' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void GLUnurbs::postError(int) -->
-        <function-decl name='postError' mangled-name='_ZN8GLUnurbs9postErrorEi' filepath='libnurbs/interface/glrenderer.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' static='yes'>
-        <!-- void GLUnurbs::transform4d(GLfloat*, GLfloat(*)[4]) -->
-        <function-decl name='transform4d' mangled-name='_ZN8GLUnurbs11transform4dEPfS0_PA4_f' filepath='libnurbs/interface/glrenderer.cc' line='280' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'GLfloat*' -->
-          <parameter type-id='type-id-50'/>
-          <!-- parameter of type 'GLfloat*' -->
-          <parameter type-id='type-id-50'/>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' static='yes'>
-        <!-- void GLUnurbs::multmatrix4d(GLfloat(*)[4], GLfloat(*)[4]) -->
-        <function-decl name='multmatrix4d' mangled-name='_ZN8GLUnurbs12multmatrix4dEPA4_fPA4_KfS4_' filepath='libnurbs/interface/glrenderer.cc' line='294' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void GLUnurbs::loadCullingMatrix(GLfloat(*)[4]) -->
-        <function-decl name='loadCullingMatrix' mangled-name='_ZN8GLUnurbs17loadCullingMatrixEPA4_f' filepath='libnurbs/interface/glrenderer.cc' line='237' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void GLUnurbs::loadSamplingMatrix(GLfloat(*)[4], const GLint*) -->
-        <function-decl name='loadSamplingMatrix' mangled-name='_ZN8GLUnurbs18loadSamplingMatrixEPA4_KfPKi' filepath='libnurbs/interface/glrenderer.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- parameter of type 'const GLint*' -->
-          <parameter type-id='type-id-52'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void GLUnurbs::useGLMatrices(const GLfloat*, const GLfloat*, const GLint*) -->
-        <function-decl name='useGLMatrices' mangled-name='_ZN8GLUnurbs13useGLMatricesEPKfS1_PKi' filepath='libnurbs/interface/glrenderer.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'const GLint*' -->
-          <parameter type-id='type-id-52'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void GLUnurbs::setSamplingMatrixIdentity() -->
-        <function-decl name='setSamplingMatrixIdentity' mangled-name='_ZN8GLUnurbs25setSamplingMatrixIdentityEv' filepath='libnurbs/interface/glrenderer.cc' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' static='yes'>
-        <!-- void GLUnurbs::grabGLMatrix() -->
-        <function-decl name='grabGLMatrix' mangled-name='_ZN8GLUnurbs12grabGLMatrixEPA4_f' filepath='libnurbs/interface/glrenderer.cc' line='159' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'GLfloat(*)[4]' -->
-          <parameter type-id='type-id-51'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void GLUnurbs::loadGLMatrices() -->
-        <function-decl name='loadGLMatrices' mangled-name='_ZN8GLUnurbs14loadGLMatricesEv' filepath='libnurbs/interface/glrenderer.cc' line='129' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='2'>
-        <!-- void GLUnurbs::bgnrender() -->
-        <function-decl name='bgnrender' mangled-name='_ZN8GLUnurbs9bgnrenderEv' filepath='libnurbs/interface/glrenderer.cc' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='3'>
-        <!-- void GLUnurbs::endrender() -->
-        <function-decl name='endrender' mangled-name='_ZN8GLUnurbs9endrenderEv' filepath='libnurbs/interface/glrenderer.cc' line='115' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='6'>
-        <!-- void GLUnurbs::errorHandler(int) -->
-        <function-decl name='errorHandler' mangled-name='_ZN8GLUnurbs12errorHandlerEi' filepath='libnurbs/interface/glrenderer.cc' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-43' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
     <!-- typedef void (*)(GLenum) errorCallbackType -->
     <typedef-decl name='errorCallbackType' type-id='type-id-11' filepath='libnurbs/interface/glrenderer.h' line='46' column='1' id='type-id-48'/>
     <!-- GLfloat(*)[4] -->
@@ -2850,377 +2684,337 @@ 
       <!-- <anonymous range>[2] -->
       <subrange length='2' lower-bound='0' upper-bound='1' type-id='type-id-3' id='type-id-82'/>
     </array-type-def>
-    <!-- struct OpenGLSurfaceEvaluator -->
-    <class-decl name='OpenGLSurfaceEvaluator' size-in-bits='1074048' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='100' column='1' id='type-id-44'>
-      <!-- struct BasicSurfaceEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-53'/>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- StoredVertex* OpenGLSurfaceEvaluator::vertexCache[3] -->
-        <var-decl name='vertexCache' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='180' column='1'/>
+    <!-- struct bezierPatch -->
+    <class-decl name='bezierPatch' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='36' column='1' id='type-id-90'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- float bezierPatch::umin -->
+        <var-decl name='umin' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='256'>
-        <!-- int OpenGLSurfaceEvaluator::tmeshing -->
-        <var-decl name='tmeshing' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='181' column='1'/>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- float bezierPatch::vmin -->
+        <var-decl name='vmin' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='288'>
-        <!-- int OpenGLSurfaceEvaluator::which -->
-        <var-decl name='which' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='182' column='1'/>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- float bezierPatch::umax -->
+        <var-decl name='umax' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='320'>
-        <!-- int OpenGLSurfaceEvaluator::vcount -->
-        <var-decl name='vcount' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='183' column='1'/>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- float bezierPatch::vmax -->
+        <var-decl name='vmax' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='352'>
-        <!-- GLint OpenGLSurfaceEvaluator::gl_polygon_mode[2] -->
-        <var-decl name='gl_polygon_mode' type-id='type-id-55' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='185' column='1'/>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int bezierPatch::uorder -->
+        <var-decl name='uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='38' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='448'>
-        <!-- bezierPatchMesh* OpenGLSurfaceEvaluator::global_bpm -->
-        <var-decl name='global_bpm' type-id='type-id-56' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='188' column='1'/>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int bezierPatch::vorder -->
+        <var-decl name='vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='39' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='512'>
-        <!-- int OpenGLSurfaceEvaluator::output_triangles -->
-        <var-decl name='output_triangles' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='189' column='1'/>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int bezierPatch::dimension -->
+        <var-decl name='dimension' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='57' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='576'>
-        <!-- void (* OpenGLSurfaceEvaluator::beginCallBackN)(GLenum) -->
-        <var-decl name='beginCallBackN' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='193' column='1'/>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- float* bezierPatch::ctlpoints -->
+        <var-decl name='ctlpoints' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='58' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='640'>
-        <!-- void (* OpenGLSurfaceEvaluator::endCallBackN)(void) -->
-        <var-decl name='endCallBackN' type-id='type-id-12' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='194' column='1'/>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- bezierPatch* bezierPatch::next -->
+        <var-decl name='next' type-id='type-id-91' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='63' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='704'>
-        <!-- void (* OpenGLSurfaceEvaluator::vertexCallBackN)(const GLfloat*) -->
-        <var-decl name='vertexCallBackN' type-id='type-id-13' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='195' column='1'/>
+    </class-decl>
+    <!-- struct bezierPatchMesh -->
+    <class-decl name='bezierPatchMesh' size-in-bits='960' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='39' column='1' id='type-id-92'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch -->
+        <var-decl name='bpatch' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='40' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='768'>
-        <!-- void (* OpenGLSurfaceEvaluator::normalCallBackN)(const GLfloat*) -->
-        <var-decl name='normalCallBackN' type-id='type-id-13' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='196' column='1'/>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_normal -->
+        <var-decl name='bpatch_normal' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='41' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='832'>
-        <!-- void (* OpenGLSurfaceEvaluator::colorCallBackN)(const GLfloat*) -->
-        <var-decl name='colorCallBackN' type-id='type-id-13' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='197' column='1'/>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_texcoord -->
+        <var-decl name='bpatch_texcoord' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='42' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='896'>
-        <!-- void (* OpenGLSurfaceEvaluator::texcoordCallBackN)(const GLfloat*) -->
-        <var-decl name='texcoordCallBackN' type-id='type-id-13' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='198' column='1'/>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_color -->
+        <var-decl name='bpatch_color' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='43' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='960'>
-        <!-- void (* OpenGLSurfaceEvaluator::beginCallBackData)(GLenum, void*) -->
-        <var-decl name='beginCallBackData' type-id='type-id-14' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='200' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1024'>
-        <!-- void (* OpenGLSurfaceEvaluator::endCallBackData)(void*) -->
-        <var-decl name='endCallBackData' type-id='type-id-15' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='201' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1088'>
-        <!-- void (* OpenGLSurfaceEvaluator::vertexCallBackData)(const GLfloat*, void*) -->
-        <var-decl name='vertexCallBackData' type-id='type-id-16' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='202' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1152'>
-        <!-- void (* OpenGLSurfaceEvaluator::normalCallBackData)(const GLfloat*, void*) -->
-        <var-decl name='normalCallBackData' type-id='type-id-16' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='203' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1216'>
-        <!-- void (* OpenGLSurfaceEvaluator::colorCallBackData)(const GLfloat*, void*) -->
-        <var-decl name='colorCallBackData' type-id='type-id-16' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='204' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1280'>
-        <!-- void (* OpenGLSurfaceEvaluator::texcoordCallBackData)(const GLfloat*, void*) -->
-        <var-decl name='texcoordCallBackData' type-id='type-id-16' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='205' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1344'>
-        <!-- void* OpenGLSurfaceEvaluator::userData -->
-        <var-decl name='userData' type-id='type-id-17' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='215' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1408'>
-        <!-- int OpenGLSurfaceEvaluator::LOD_eval_level -->
-        <var-decl name='LOD_eval_level' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='222' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1440'>
-        <!-- int OpenGLSurfaceEvaluator::global_uorder -->
-        <var-decl name='global_uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='231' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1472'>
-        <!-- int OpenGLSurfaceEvaluator::global_vorder -->
-        <var-decl name='global_vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='232' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1504'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_uprime -->
-        <var-decl name='global_uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='233' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1536'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_vprime -->
-        <var-decl name='global_vprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='234' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1568'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_vprime_BV -->
-        <var-decl name='global_vprime_BV' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='235' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1600'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_uprime_BU -->
-        <var-decl name='global_uprime_BU' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='236' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1632'>
-        <!-- int OpenGLSurfaceEvaluator::global_uorder_BV -->
-        <var-decl name='global_uorder_BV' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='237' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1664'>
-        <!-- int OpenGLSurfaceEvaluator::global_vorder_BV -->
-        <var-decl name='global_vorder_BV' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='238' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1696'>
-        <!-- int OpenGLSurfaceEvaluator::global_uorder_BU -->
-        <var-decl name='global_uorder_BU' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='239' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1728'>
-        <!-- int OpenGLSurfaceEvaluator::global_vorder_BU -->
-        <var-decl name='global_vorder_BU' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='240' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1760'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ucoeff[40] -->
-        <var-decl name='global_ucoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='242' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3040'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_vcoeff[40] -->
-        <var-decl name='global_vcoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='243' column='1'/>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- float* bezierPatchMesh::UVarray -->
+        <var-decl name='UVarray' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='45' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='4320'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ucoeffDeriv[40] -->
-        <var-decl name='global_ucoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='244' column='1'/>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- int* bezierPatchMesh::length_array -->
+        <var-decl name='length_array' type-id='type-id-94' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='46' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='5600'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_vcoeffDeriv[40] -->
-        <var-decl name='global_vcoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='245' column='1'/>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- GLenum* bezierPatchMesh::type_array -->
+        <var-decl name='type_array' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='47' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='6880'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_BV[40][4] -->
-        <var-decl name='global_BV' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='247' column='1'/>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- int bezierPatchMesh::size_UVarray -->
+        <var-decl name='size_UVarray' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='50' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='12000'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_PBV[40][4] -->
-        <var-decl name='global_PBV' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='248' column='1'/>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <!-- int bezierPatchMesh::index_UVarray -->
+        <var-decl name='index_UVarray' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='51' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='17120'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_BU[40][4] -->
-        <var-decl name='global_BU' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='249' column='1'/>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- int bezierPatchMesh::size_length_array -->
+        <var-decl name='size_length_array' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='52' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='22240'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_PBU[40][4] -->
-        <var-decl name='global_PBU' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='250' column='1'/>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <!-- int bezierPatchMesh::index_length_array -->
+        <var-decl name='index_length_array' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='53' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27392'>
-        <!-- REAL* OpenGLSurfaceEvaluator::global_baseData -->
-        <var-decl name='global_baseData' type-id='type-id-25' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='251' column='1'/>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <!-- int bezierPatchMesh::counter -->
+        <var-decl name='counter' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='55' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27456'>
-        <!-- int OpenGLSurfaceEvaluator::global_ev_k -->
-        <var-decl name='global_ev_k' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='253' column='1'/>
+      <data-member access='public' layout-offset-in-bits='608'>
+        <!-- GLenum bezierPatchMesh::type -->
+        <var-decl name='type' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='56' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27488'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ev_u1 -->
-        <var-decl name='global_ev_u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='254' column='1'/>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <!-- float* bezierPatchMesh::vertex_array -->
+        <var-decl name='vertex_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='59' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27520'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ev_u2 -->
-        <var-decl name='global_ev_u2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='255' column='1'/>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <!-- float* bezierPatchMesh::normal_array -->
+        <var-decl name='normal_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='60' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27552'>
-        <!-- int OpenGLSurfaceEvaluator::global_ev_ustride -->
-        <var-decl name='global_ev_ustride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='256' column='1'/>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <!-- float* bezierPatchMesh::color_array -->
+        <var-decl name='color_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='61' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27584'>
-        <!-- int OpenGLSurfaceEvaluator::global_ev_uorder -->
-        <var-decl name='global_ev_uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='257' column='1'/>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <!-- float* bezierPatchMesh::texcoord_array -->
+        <var-decl name='texcoord_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='62' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27616'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ev_v1 -->
-        <var-decl name='global_ev_v1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='258' column='1'/>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <!-- bezierPatchMesh* bezierPatchMesh::next -->
+        <var-decl name='next' type-id='type-id-96' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='65' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27648'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ev_v2 -->
-        <var-decl name='global_ev_v2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='259' column='1'/>
+    </class-decl>
+    <!-- struct surfEvalMachine -->
+    <class-decl name='surfEvalMachine' size-in-bits='210272' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='63' column='1' id='type-id-97'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- REAL surfEvalMachine::uprime -->
+        <var-decl name='uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='64' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27680'>
-        <!-- int OpenGLSurfaceEvaluator::global_ev_vstride -->
-        <var-decl name='global_ev_vstride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='260' column='1'/>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- REAL surfEvalMachine::vprime -->
+        <var-decl name='vprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='65' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27712'>
-        <!-- int OpenGLSurfaceEvaluator::global_ev_vorder -->
-        <var-decl name='global_ev_vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='261' column='1'/>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int surfEvalMachine::k -->
+        <var-decl name='k' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='66' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='27744'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_ev_ctlPoints[6400] -->
-        <var-decl name='global_ev_ctlPoints' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='262' column='1'/>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- REAL surfEvalMachine::u1 -->
+        <var-decl name='u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='67' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232544'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_grid_u0 -->
-        <var-decl name='global_grid_u0' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='264' column='1'/>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- REAL surfEvalMachine::u2 -->
+        <var-decl name='u2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='68' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232576'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_grid_u1 -->
-        <var-decl name='global_grid_u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='265' column='1'/>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int surfEvalMachine::ustride -->
+        <var-decl name='ustride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='69' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232608'>
-        <!-- int OpenGLSurfaceEvaluator::global_grid_nu -->
-        <var-decl name='global_grid_nu' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='266' column='1'/>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int surfEvalMachine::uorder -->
+        <var-decl name='uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='70' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232640'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_grid_v0 -->
-        <var-decl name='global_grid_v0' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='267' column='1'/>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <!-- REAL surfEvalMachine::v1 -->
+        <var-decl name='v1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='71' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232672'>
-        <!-- REAL OpenGLSurfaceEvaluator::global_grid_v1 -->
-        <var-decl name='global_grid_v1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='268' column='1'/>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- REAL surfEvalMachine::v2 -->
+        <var-decl name='v2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='72' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232704'>
-        <!-- int OpenGLSurfaceEvaluator::global_grid_nv -->
-        <var-decl name='global_grid_nv' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='269' column='1'/>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <!-- int surfEvalMachine::vstride -->
+        <var-decl name='vstride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='73' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='232736'>
-        <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_vertex -->
-        <var-decl name='em_vertex' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='349' column='1'/>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- int surfEvalMachine::vorder -->
+        <var-decl name='vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='74' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='443008'>
-        <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_normal -->
-        <var-decl name='em_normal' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='350' column='1'/>
+      <data-member access='public' layout-offset-in-bits='352'>
+        <!-- REAL surfEvalMachine::ctlPoints[6400] -->
+        <var-decl name='ctlPoints' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='75' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='653280'>
-        <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_color -->
-        <var-decl name='em_color' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='351' column='1'/>
+      <data-member access='public' layout-offset-in-bits='205152'>
+        <!-- REAL surfEvalMachine::ucoeff[40] -->
+        <var-decl name='ucoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='76' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='863552'>
-        <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_texcoord -->
-        <var-decl name='em_texcoord' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='352' column='1'/>
+      <data-member access='public' layout-offset-in-bits='206432'>
+        <!-- REAL surfEvalMachine::vcoeff[40] -->
+        <var-decl name='vcoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='77' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='1073824'>
-        <!-- int OpenGLSurfaceEvaluator::auto_normal_flag -->
-        <var-decl name='auto_normal_flag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='354' column='1'/>
+      <data-member access='public' layout-offset-in-bits='207712'>
+        <!-- REAL surfEvalMachine::ucoeffDeriv[40] -->
+        <var-decl name='ucoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='78' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='1073856'>
-        <!-- int OpenGLSurfaceEvaluator::callback_auto_normal -->
-        <var-decl name='callback_auto_normal' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='356' column='1'/>
+      <data-member access='public' layout-offset-in-bits='208992'>
+        <!-- REAL surfEvalMachine::vcoeffDeriv[40] -->
+        <var-decl name='vcoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='79' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='1073888'>
-        <!-- int OpenGLSurfaceEvaluator::vertex_flag -->
-        <var-decl name='vertex_flag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='357' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1073920'>
-        <!-- int OpenGLSurfaceEvaluator::normal_flag -->
-        <var-decl name='normal_flag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='358' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1073952'>
-        <!-- int OpenGLSurfaceEvaluator::color_flag -->
-        <var-decl name='color_flag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='359' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1073984'>
-        <!-- int OpenGLSurfaceEvaluator::texcoord_flag -->
-        <var-decl name='texcoord_flag' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='360' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- OpenGLSurfaceEvaluator::OpenGLSurfaceEvaluator() -->
-        <function-decl name='OpenGLSurfaceEvaluator' filepath='libnurbs/interface/glsurfeval.cc' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::putCallBack(GLenum, _GLUfuncptr) -->
-        <function-decl name='putCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator11putCallBackEjPFvvE' filepath='libnurbs/interface/glsurfeval.cc' line='1190' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'typedef GLenum' -->
-          <parameter type-id='type-id-21'/>
-          <!-- parameter of type 'typedef _GLUfuncptr' -->
-          <parameter type-id='type-id-22'/>
+    </class-decl>
+    <!-- typedef bezierPatch bezierPatch -->
+    <typedef-decl name='bezierPatch' type-id='type-id-90' filepath='libnurbs/interface/bezierPatch.h' line='65' column='1' id='type-id-98'/>
+    <!-- typedef bezierPatchMesh bezierPatchMesh -->
+    <typedef-decl name='bezierPatchMesh' type-id='type-id-92' filepath='libnurbs/interface/bezierPatchMesh.h' line='66' column='1' id='type-id-99'/>
+    <!-- typedef surfEvalMachine surfEvalMachine -->
+    <typedef-decl name='surfEvalMachine' type-id='type-id-97' filepath='libnurbs/interface/glsurfeval.h' line='80' column='1' id='type-id-59'/>
+    <!-- BasicSurfaceEvaluator* -->
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-100'/>
+    <!-- GLenum* -->
+    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-95'/>
+    <!-- REAL(*)[3] -->
+    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-101'/>
+    <!-- StoredVertex* -->
+    <pointer-type-def type-id='type-id-88' size-in-bits='64' id='type-id-87'/>
+    <!-- bezierPatch* -->
+    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-91'/>
+    <!-- bezierPatch* -->
+    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-93'/>
+    <!-- bezierPatchMesh* -->
+    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-96'/>
+    <!-- bezierPatchMesh* -->
+    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-56'/>
+    <!-- int* -->
+    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-94'/>
+    <!-- surfEvalMachine* -->
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-102'/>
+    <!-- SurfaceMap* -->
+    <pointer-type-def type-id='type-id-103' size-in-bits='64' id='type-id-104'/>
+    <!-- class BasicSurfaceEvaluator -->
+    <class-decl name='BasicSurfaceEvaluator' size-in-bits='64' visibility='default' filepath='libnurbs/internals/basicsurfeval.h' line='43' column='1' id='type-id-53'>
+      <!-- class CachingEvaluator -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-29'/>
+      <member-function access='private' destructor='yes' vtable-offset='-1'>
+        <!-- BasicSurfaceEvaluator::~BasicSurfaceEvaluator(int) -->
+        <function-decl name='~BasicSurfaceEvaluator' filepath='libnurbs/internals/basicsurfeval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::beginCallBack(GLenum, void*) -->
-        <function-decl name='beginCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator13beginCallBackEjPv' filepath='libnurbs/interface/glsurfeval.cc' line='1237' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'typedef GLenum' -->
-          <parameter type-id='type-id-21'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='9'>
+        <!-- void BasicSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
+        <function-decl name='range2f' mangled-name='_ZN21BasicSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/internals/basicsurfeval.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::endCallBack(void*) -->
-        <function-decl name='endCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator11endCallBackEPv' filepath='libnurbs/interface/glsurfeval.cc' line='1246' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='10'>
+        <!-- void BasicSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
+        <function-decl name='domain2f' mangled-name='_ZN21BasicSurfaceEvaluator8domain2fEffff' filepath='libnurbs/internals/basicsurfeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::vertexCallBack(const GLfloat*, void*) -->
-        <function-decl name='vertexCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator14vertexCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1255' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='11'>
+        <!-- void BasicSurfaceEvaluator::enable(long int) -->
+        <function-decl name='enable' mangled-name='_ZN21BasicSurfaceEvaluator6enableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::normalCallBack(const GLfloat*, void*) -->
-        <function-decl name='normalCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator14normalCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1265' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='12'>
+        <!-- void BasicSurfaceEvaluator::disable(long int) -->
+        <function-decl name='disable' mangled-name='_ZN21BasicSurfaceEvaluator7disableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::colorCallBack(const GLfloat*, void*) -->
-        <function-decl name='colorCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator13colorCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1274' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='13'>
+        <!-- void BasicSurfaceEvaluator::bgnmap2f(long int) -->
+        <function-decl name='bgnmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/internals/basicsurfeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void OpenGLSurfaceEvaluator::texcoordCallBack(const GLfloat*, void*) -->
-        <function-decl name='texcoordCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator16texcoordCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1283' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'const GLfloat*' -->
-          <parameter type-id='type-id-23'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+      <member-function access='private' vtable-offset='14'>
+        <!-- void BasicSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
+        <function-decl name='map2f' mangled-name='_ZN21BasicSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/internals/basicsurfeval.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::coord2f(REAL, REAL) -->
-        <function-decl name='coord2f' mangled-name='_ZN22OpenGLSurfaceEvaluator7coord2fEff' filepath='libnurbs/interface/glsurfeval.cc' line='1106' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='15'>
+        <!-- void BasicSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
+        <function-decl name='mapgrid2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/internals/basicsurfeval.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -3229,11 +3023,17 @@ 
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::point2i(long int, long int) -->
-        <function-decl name='point2i' mangled-name='_ZN22OpenGLSurfaceEvaluator7point2iEll' filepath='libnurbs/interface/glsurfeval.cc' line='1069' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='16'>
+        <!-- void BasicSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
+        <function-decl name='mapmesh2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/internals/basicsurfeval.cc' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- parameter of type 'long int' -->
           <parameter type-id='type-id-24'/>
           <!-- parameter of type 'long int' -->
@@ -3242,11 +3042,13 @@ 
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::newtmeshvert(REAL, REAL) -->
-        <function-decl name='newtmeshvert' mangled-name='_ZN22OpenGLSurfaceEvaluator12newtmeshvertEff' filepath='libnurbs/interface/glsurfeval.cc' line='1160' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='17'>
+        <!-- void BasicSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
+        <function-decl name='evalcoord2f' mangled-name='_ZN21BasicSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/internals/basicsurfeval.cc' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -3255,11 +3057,11 @@ 
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::newtmeshvert(long int, long int) -->
-        <function-decl name='newtmeshvert' mangled-name='_ZN22OpenGLSurfaceEvaluator12newtmeshvertEll' filepath='libnurbs/interface/glsurfeval.cc' line='1134' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='18'>
+        <!-- void BasicSurfaceEvaluator::evalpoint2i(long int, long int) -->
+        <function-decl name='evalpoint2i' mangled-name='_ZN21BasicSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/internals/basicsurfeval.cc' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
           <parameter type-id='type-id-24'/>
           <!-- parameter of type 'long int' -->
@@ -3268,356 +3070,172 @@ 
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- void OpenGLSurfaceEvaluator::LOD_eval_list(int) -->
-        <function-decl name='LOD_eval_list' mangled-name='_ZN22OpenGLSurfaceEvaluator13LOD_eval_listEi' filepath='libnurbs/interface/glsurfeval.cc' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' destructor='yes' vtable-offset='-1'>
-        <!-- OpenGLSurfaceEvaluator::~OpenGLSurfaceEvaluator(int) -->
-        <function-decl name='~OpenGLSurfaceEvaluator' filepath='libnurbs/interface/glsurfeval.cc' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='19'>
+        <!-- void BasicSurfaceEvaluator::endmap2f() -->
+        <function-decl name='endmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8endmap2fEv' filepath='libnurbs/internals/basicsurfeval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='9'>
-        <!-- void OpenGLSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
-        <function-decl name='range2f' mangled-name='_ZN22OpenGLSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/interface/glsurfeval.cc' line='258' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='20'>
+        <!-- void BasicSurfaceEvaluator::polymode(long int) -->
+        <function-decl name='polymode' mangled-name='_ZN21BasicSurfaceEvaluator8polymodeEl' filepath='libnurbs/internals/basicsurfeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
           <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='10'>
-        <!-- void OpenGLSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
-        <function-decl name='domain2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8domain2fEffff' filepath='libnurbs/interface/glsurfeval.cc' line='263' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' vtable-offset='21'>
+        <!-- void BasicSurfaceEvaluator::bgnline() -->
+        <function-decl name='bgnline' mangled-name='_ZN21BasicSurfaceEvaluator7bgnlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='11'>
-        <!-- void OpenGLSurfaceEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN22OpenGLSurfaceEvaluator6enableEl' filepath='libnurbs/interface/glsurfeval.cc' line='185' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='22'>
+        <!-- void BasicSurfaceEvaluator::endline() -->
+        <function-decl name='endline' mangled-name='_ZN21BasicSurfaceEvaluator7endlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='12'>
-        <!-- void OpenGLSurfaceEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN22OpenGLSurfaceEvaluator7disableEl' filepath='libnurbs/interface/glsurfeval.cc' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='23'>
+        <!-- void BasicSurfaceEvaluator::bgnclosedline() -->
+        <function-decl name='bgnclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='13'>
-        <!-- void OpenGLSurfaceEvaluator::bgnmap2f(long int) -->
-        <function-decl name='bgnmap2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/interface/glsurfeval.cc' line='739' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='24'>
+        <!-- void BasicSurfaceEvaluator::endclosedline() -->
+        <function-decl name='endclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='14'>
-        <!-- void OpenGLSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map2f' mangled-name='_ZN22OpenGLSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/interface/glsurfeval.cc' line='872' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
+      <member-function access='private' vtable-offset='25'>
+        <!-- void BasicSurfaceEvaluator::bgntmesh() -->
+        <function-decl name='bgntmesh' mangled-name='_ZN21BasicSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='15'>
-        <!-- void OpenGLSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
-        <function-decl name='mapgrid2f' mangled-name='_ZN22OpenGLSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/interface/glsurfeval.cc' line='195' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' vtable-offset='26'>
+        <!-- void BasicSurfaceEvaluator::swaptmesh() -->
+        <function-decl name='swaptmesh' mangled-name='_ZN21BasicSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='202' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='16'>
-        <!-- void OpenGLSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
-        <function-decl name='mapmesh2f' mangled-name='_ZN22OpenGLSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/interface/glsurfeval.cc' line='946' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='27'>
+        <!-- void BasicSurfaceEvaluator::endtmesh() -->
+        <function-decl name='endtmesh' mangled-name='_ZN21BasicSurfaceEvaluator8endtmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='210' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='17'>
-        <!-- void OpenGLSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
-        <function-decl name='evalcoord2f' mangled-name='_ZN22OpenGLSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/interface/glsurfeval.cc' line='1042' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' vtable-offset='28'>
+        <!-- void BasicSurfaceEvaluator::bgnqstrip() -->
+        <function-decl name='bgnqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='18'>
-        <!-- void OpenGLSurfaceEvaluator::evalpoint2i(long int, long int) -->
-        <function-decl name='evalpoint2i' mangled-name='_ZN22OpenGLSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/interface/glsurfeval.cc' line='1059' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='29'>
+        <!-- void BasicSurfaceEvaluator::endqstrip() -->
+        <function-decl name='endqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9endqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='19'>
-        <!-- void OpenGLSurfaceEvaluator::endmap2f() -->
-        <function-decl name='endmap2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8endmap2fEv' filepath='libnurbs/interface/glsurfeval.cc' line='801' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='30'>
+        <!-- void BasicSurfaceEvaluator::bgntfan() -->
+        <function-decl name='bgntfan' mangled-name='_ZN21BasicSurfaceEvaluator7bgntfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='180' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='20'>
-        <!-- void OpenGLSurfaceEvaluator::polymode(long int) -->
-        <function-decl name='polymode' mangled-name='_ZN22OpenGLSurfaceEvaluator8polymodeEl' filepath='libnurbs/interface/glsurfeval.cc' line='219' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' vtable-offset='31'>
+        <!-- void BasicSurfaceEvaluator::endtfan() -->
+        <function-decl name='endtfan' mangled-name='_ZN21BasicSurfaceEvaluator7endtfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='21'>
-        <!-- void OpenGLSurfaceEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN22OpenGLSurfaceEvaluator7bgnlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='32'>
+        <!-- void BasicSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalUStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' vtable-offset='22'>
-        <!-- void OpenGLSurfaceEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN22OpenGLSurfaceEvaluator7endlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='249' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='23'>
-        <!-- void OpenGLSurfaceEvaluator::bgnclosedline() -->
-        <function-decl name='bgnclosedline' mangled-name='_ZN22OpenGLSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='268' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='24'>
-        <!-- void OpenGLSurfaceEvaluator::endclosedline() -->
-        <function-decl name='endclosedline' mangled-name='_ZN22OpenGLSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='277' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='25'>
-        <!-- void OpenGLSurfaceEvaluator::bgntmesh() -->
-        <function-decl name='bgntmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='290' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='26'>
-        <!-- void OpenGLSurfaceEvaluator::swaptmesh() -->
-        <function-decl name='swaptmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='305' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='27'>
-        <!-- void OpenGLSurfaceEvaluator::endtmesh() -->
-        <function-decl name='endtmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator8endtmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='312' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='28'>
-        <!-- void OpenGLSurfaceEvaluator::bgnqstrip() -->
-        <function-decl name='bgnqstrip' mangled-name='_ZN22OpenGLSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/interface/glsurfeval.cc' line='712' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='29'>
-        <!-- void OpenGLSurfaceEvaluator::endqstrip() -->
-        <function-decl name='endqstrip' mangled-name='_ZN22OpenGLSurfaceEvaluator9endqstripEv' filepath='libnurbs/interface/glsurfeval.cc' line='725' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='30'>
-        <!-- void OpenGLSurfaceEvaluator::bgntfan() -->
-        <function-decl name='bgntfan' mangled-name='_ZN22OpenGLSurfaceEvaluator7bgntfanEv' filepath='libnurbs/interface/glsurfeval.cc' line='324' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='31'>
-        <!-- void OpenGLSurfaceEvaluator::endtfan() -->
-        <function-decl name='endtfan' mangled-name='_ZN22OpenGLSurfaceEvaluator7endtfanEv' filepath='libnurbs/interface/glsurfeval.cc' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='32'>
-        <!-- void OpenGLSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalUStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/interface/glsurfeval.cc' line='343' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='33'>
-        <!-- void OpenGLSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalVStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/interface/glsurfeval.cc' line='530' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
+      <member-function access='private' vtable-offset='33'>
+        <!-- void BasicSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalVStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='34'>
-        <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN22OpenGLSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='283' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN21BasicSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -3631,10 +3249,10 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='35'>
-        <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN22OpenGLSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='342' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -3648,10 +3266,10 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='36'>
-        <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN22OpenGLSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='339' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -3665,10 +3283,10 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='37'>
-        <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN22OpenGLSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/interface/glsurfeval.h' line='316' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+        <!-- void BasicSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
+        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
@@ -3676,10 +3294,10 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='38'>
-        <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN22OpenGLSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/interface/glsurfeval.h' line='321' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-45' is-artificial='yes'/>
+        <!-- void BasicSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
+        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-100' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
@@ -3687,3289 +3305,552 @@ 
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- struct bezierPatch -->
-    <class-decl name='bezierPatch' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='36' column='1' id='type-id-90'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- float bezierPatch::umin -->
-        <var-decl name='umin' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+    <!-- struct SurfaceMap -->
+    <class-decl name='SurfaceMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-103'/>
+  </abi-instr>
+  <abi-instr address-size='64' path='libnurbs/interface/incurveeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+  </abi-instr>
+  <abi-instr address-size='64' path='libnurbs/interface/insurfeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+  </abi-instr>
+  <abi-instr address-size='64' path='libnurbs/internals/arc.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+    <!-- char -->
+    <type-decl name='char' size-in-bits='8' id='type-id-105'/>
+    <!-- char*[32] -->
+    <array-type-def dimensions='1' type-id='type-id-106' size-in-bits='2048' id='type-id-107'>
+      <!-- <anonymous range>[32] -->
+      <subrange length='32' lower-bound='0' upper-bound='31' type-id='type-id-3' id='type-id-108'/>
+    </array-type-def>
+    <!-- class Buffer -->
+    <class-decl name='Buffer' size-in-bits='64' visibility='default' filepath='libnurbs/internals/bufpool.h' line='45' column='1' id='type-id-109'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Buffer* Buffer::next -->
+        <var-decl name='next' type-id='type-id-110' visibility='default' filepath='libnurbs/internals/bufpool.h' line='47' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- float bezierPatch::vmin -->
-        <var-decl name='vmin' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+    </class-decl>
+    <!-- class Pool -->
+    <class-decl name='Pool' size-in-bits='2496' visibility='default' filepath='libnurbs/internals/bufpool.h' line='50' column='1' id='type-id-68'>
+      <member-type access='protected'>
+        <!-- enum Pool::Magic -->
+        <enum-decl name='Magic' filepath='libnurbs/internals/bufpool.h' line='70' column='1' id='type-id-111'>
+          <underlying-type type-id='type-id-38'/>
+          <enumerator name='is_allocated' value='62369'/>
+          <enumerator name='is_free' value='61858'/>
+        </enum-decl>
+      </member-type>
+      <data-member access='protected' layout-offset-in-bits='0'>
+        <!-- Buffer* Pool::freelist -->
+        <var-decl name='freelist' type-id='type-id-110' visibility='default' filepath='libnurbs/internals/bufpool.h' line='62' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- float bezierPatch::umax -->
-        <var-decl name='umax' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='64'>
+        <!-- char* Pool::blocklist[32] -->
+        <var-decl name='blocklist' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/bufpool.h' line='63' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- float bezierPatch::vmax -->
-        <var-decl name='vmax' type-id='type-id-27' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2112'>
+        <!-- int Pool::nextblock -->
+        <var-decl name='nextblock' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='64' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int bezierPatch::uorder -->
-        <var-decl name='uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='38' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2176'>
+        <!-- char* Pool::curblock -->
+        <var-decl name='curblock' type-id='type-id-106' visibility='default' filepath='libnurbs/internals/bufpool.h' line='65' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int bezierPatch::vorder -->
-        <var-decl name='vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='39' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2240'>
+        <!-- int Pool::buffersize -->
+        <var-decl name='buffersize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='66' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int bezierPatch::dimension -->
-        <var-decl name='dimension' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='57' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2272'>
+        <!-- int Pool::nextsize -->
+        <var-decl name='nextsize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='67' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- float* bezierPatch::ctlpoints -->
-        <var-decl name='ctlpoints' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='58' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2304'>
+        <!-- int Pool::nextfree -->
+        <var-decl name='nextfree' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='68' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- bezierPatch* bezierPatch::next -->
-        <var-decl name='next' type-id='type-id-91' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='63' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2336'>
+        <!-- int Pool::initsize -->
+        <var-decl name='initsize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='69' column='1'/>
       </data-member>
-    </class-decl>
-    <!-- struct bezierPatchMesh -->
-    <class-decl name='bezierPatchMesh' size-in-bits='960' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='39' column='1' id='type-id-92'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch -->
-        <var-decl name='bpatch' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='40' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2368'>
+        <!-- const char* Pool::name -->
+        <var-decl name='name' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bufpool.h' line='71' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_normal -->
-        <var-decl name='bpatch_normal' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_texcoord -->
-        <var-decl name='bpatch_texcoord' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_color -->
-        <var-decl name='bpatch_color' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- float* bezierPatchMesh::UVarray -->
-        <var-decl name='UVarray' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int* bezierPatchMesh::length_array -->
-        <var-decl name='length_array' type-id='type-id-94' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- GLenum* bezierPatchMesh::type_array -->
-        <var-decl name='type_array' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- int bezierPatchMesh::size_UVarray -->
-        <var-decl name='size_UVarray' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='480'>
-        <!-- int bezierPatchMesh::index_UVarray -->
-        <var-decl name='index_UVarray' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int bezierPatchMesh::size_length_array -->
-        <var-decl name='size_length_array' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='544'>
-        <!-- int bezierPatchMesh::index_length_array -->
-        <var-decl name='index_length_array' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- int bezierPatchMesh::counter -->
-        <var-decl name='counter' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='608'>
-        <!-- GLenum bezierPatchMesh::type -->
-        <var-decl name='type' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- float* bezierPatchMesh::vertex_array -->
-        <var-decl name='vertex_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='704'>
-        <!-- float* bezierPatchMesh::normal_array -->
-        <var-decl name='normal_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- float* bezierPatchMesh::color_array -->
-        <var-decl name='color_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- float* bezierPatchMesh::texcoord_array -->
-        <var-decl name='texcoord_array' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='896'>
-        <!-- bezierPatchMesh* bezierPatchMesh::next -->
-        <var-decl name='next' type-id='type-id-96' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='65' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct surfEvalMachine -->
-    <class-decl name='surfEvalMachine' size-in-bits='210272' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='63' column='1' id='type-id-97'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL surfEvalMachine::uprime -->
-        <var-decl name='uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- REAL surfEvalMachine::vprime -->
-        <var-decl name='vprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int surfEvalMachine::k -->
-        <var-decl name='k' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL surfEvalMachine::u1 -->
-        <var-decl name='u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- REAL surfEvalMachine::u2 -->
-        <var-decl name='u2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int surfEvalMachine::ustride -->
-        <var-decl name='ustride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int surfEvalMachine::uorder -->
-        <var-decl name='uorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='70' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- REAL surfEvalMachine::v1 -->
-        <var-decl name='v1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- REAL surfEvalMachine::v2 -->
-        <var-decl name='v2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='72' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int surfEvalMachine::vstride -->
-        <var-decl name='vstride' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int surfEvalMachine::vorder -->
-        <var-decl name='vorder' type-id='type-id-10' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='352'>
-        <!-- REAL surfEvalMachine::ctlPoints[6400] -->
-        <var-decl name='ctlPoints' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='205152'>
-        <!-- REAL surfEvalMachine::ucoeff[40] -->
-        <var-decl name='ucoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='76' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='206432'>
-        <!-- REAL surfEvalMachine::vcoeff[40] -->
-        <var-decl name='vcoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='77' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='207712'>
-        <!-- REAL surfEvalMachine::ucoeffDeriv[40] -->
-        <var-decl name='ucoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='78' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='208992'>
-        <!-- REAL surfEvalMachine::vcoeffDeriv[40] -->
-        <var-decl name='vcoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='79' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='2432'>
+        <!-- Pool::Magic Pool::magic -->
+        <var-decl name='magic' type-id='type-id-111' visibility='default' filepath='libnurbs/internals/bufpool.h' line='72' column='1'/>
       </data-member>
-    </class-decl>
-    <!-- typedef bezierPatch bezierPatch -->
-    <typedef-decl name='bezierPatch' type-id='type-id-90' filepath='libnurbs/interface/bezierPatch.h' line='65' column='1' id='type-id-98'/>
-    <!-- typedef bezierPatchMesh bezierPatchMesh -->
-    <typedef-decl name='bezierPatchMesh' type-id='type-id-92' filepath='libnurbs/interface/bezierPatchMesh.h' line='66' column='1' id='type-id-99'/>
-    <!-- typedef surfEvalMachine surfEvalMachine -->
-    <typedef-decl name='surfEvalMachine' type-id='type-id-97' filepath='libnurbs/interface/glsurfeval.h' line='80' column='1' id='type-id-59'/>
-    <!-- BasicSurfaceEvaluator* -->
-    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-100'/>
-    <!-- GLenum* -->
-    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-95'/>
-    <!-- REAL(*)[3] -->
-    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-101'/>
-    <!-- StoredVertex* -->
-    <pointer-type-def type-id='type-id-88' size-in-bits='64' id='type-id-87'/>
-    <!-- bezierPatch* -->
-    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-91'/>
-    <!-- bezierPatch* -->
-    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-93'/>
-    <!-- bezierPatchMesh* -->
-    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-96'/>
-    <!-- bezierPatchMesh* -->
-    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-56'/>
-    <!-- int* -->
-    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-94'/>
-    <!-- surfEvalMachine* -->
-    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-102'/>
-    <!-- SurfaceMap* -->
-    <pointer-type-def type-id='type-id-103' size-in-bits='64' id='type-id-104'/>
-    <!-- class BasicSurfaceEvaluator -->
-    <class-decl name='BasicSurfaceEvaluator' size-in-bits='64' visibility='default' filepath='libnurbs/internals/basicsurfeval.h' line='43' column='1' id='type-id-53'>
-      <!-- class CachingEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-29'/>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- BasicSurfaceEvaluator::~BasicSurfaceEvaluator(int) -->
-        <function-decl name='~BasicSurfaceEvaluator' filepath='libnurbs/internals/basicsurfeval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='9'>
-        <!-- void BasicSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
-        <function-decl name='range2f' mangled-name='_ZN21BasicSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/internals/basicsurfeval.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='10'>
-        <!-- void BasicSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
-        <function-decl name='domain2f' mangled-name='_ZN21BasicSurfaceEvaluator8domain2fEffff' filepath='libnurbs/internals/basicsurfeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='11'>
-        <!-- void BasicSurfaceEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN21BasicSurfaceEvaluator6enableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='12'>
-        <!-- void BasicSurfaceEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN21BasicSurfaceEvaluator7disableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='13'>
-        <!-- void BasicSurfaceEvaluator::bgnmap2f(long int) -->
-        <function-decl name='bgnmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/internals/basicsurfeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' vtable-offset='14'>
-        <!-- void BasicSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map2f' mangled-name='_ZN21BasicSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/internals/basicsurfeval.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='15'>
-        <!-- void BasicSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
-        <function-decl name='mapgrid2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/internals/basicsurfeval.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='16'>
-        <!-- void BasicSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
-        <function-decl name='mapmesh2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/internals/basicsurfeval.cc' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='17'>
-        <!-- void BasicSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
-        <function-decl name='evalcoord2f' mangled-name='_ZN21BasicSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/internals/basicsurfeval.cc' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='18'>
-        <!-- void BasicSurfaceEvaluator::evalpoint2i(long int, long int) -->
-        <function-decl name='evalpoint2i' mangled-name='_ZN21BasicSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/internals/basicsurfeval.cc' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='19'>
-        <!-- void BasicSurfaceEvaluator::endmap2f() -->
-        <function-decl name='endmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8endmap2fEv' filepath='libnurbs/internals/basicsurfeval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='20'>
-        <!-- void BasicSurfaceEvaluator::polymode(long int) -->
-        <function-decl name='polymode' mangled-name='_ZN21BasicSurfaceEvaluator8polymodeEl' filepath='libnurbs/internals/basicsurfeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='21'>
-        <!-- void BasicSurfaceEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN21BasicSurfaceEvaluator7bgnlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='22'>
-        <!-- void BasicSurfaceEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN21BasicSurfaceEvaluator7endlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='23'>
-        <!-- void BasicSurfaceEvaluator::bgnclosedline() -->
-        <function-decl name='bgnclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='24'>
-        <!-- void BasicSurfaceEvaluator::endclosedline() -->
-        <function-decl name='endclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='25'>
-        <!-- void BasicSurfaceEvaluator::bgntmesh() -->
-        <function-decl name='bgntmesh' mangled-name='_ZN21BasicSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='26'>
-        <!-- void BasicSurfaceEvaluator::swaptmesh() -->
-        <function-decl name='swaptmesh' mangled-name='_ZN21BasicSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='202' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='27'>
-        <!-- void BasicSurfaceEvaluator::endtmesh() -->
-        <function-decl name='endtmesh' mangled-name='_ZN21BasicSurfaceEvaluator8endtmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='210' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='28'>
-        <!-- void BasicSurfaceEvaluator::bgnqstrip() -->
-        <function-decl name='bgnqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='29'>
-        <!-- void BasicSurfaceEvaluator::endqstrip() -->
-        <function-decl name='endqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9endqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='30'>
-        <!-- void BasicSurfaceEvaluator::bgntfan() -->
-        <function-decl name='bgntfan' mangled-name='_ZN21BasicSurfaceEvaluator7bgntfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='180' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='31'>
-        <!-- void BasicSurfaceEvaluator::endtfan() -->
-        <function-decl name='endtfan' mangled-name='_ZN21BasicSurfaceEvaluator7endtfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='32'>
-        <!-- void BasicSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalUStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='33'>
-        <!-- void BasicSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalVStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='34'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN21BasicSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='35'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='36'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='37'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='38'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-100' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct SurfaceMap -->
-    <class-decl name='SurfaceMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-103'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/interface/incurveeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/interface/insurfeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/arc.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- char -->
-    <type-decl name='char' size-in-bits='8' id='type-id-105'/>
-    <!-- char*[32] -->
-    <array-type-def dimensions='1' type-id='type-id-106' size-in-bits='2048' id='type-id-107'>
-      <!-- <anonymous range>[32] -->
-      <subrange length='32' lower-bound='0' upper-bound='31' type-id='type-id-3' id='type-id-108'/>
-    </array-type-def>
-    <!-- class Buffer -->
-    <class-decl name='Buffer' size-in-bits='64' visibility='default' filepath='libnurbs/internals/bufpool.h' line='45' column='1' id='type-id-109'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Buffer* Buffer::next -->
-        <var-decl name='next' type-id='type-id-110' visibility='default' filepath='libnurbs/internals/bufpool.h' line='47' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class Pool -->
-    <class-decl name='Pool' size-in-bits='2496' visibility='default' filepath='libnurbs/internals/bufpool.h' line='50' column='1' id='type-id-68'>
-      <member-type access='protected'>
-        <!-- enum Pool::Magic -->
-        <enum-decl name='Magic' filepath='libnurbs/internals/bufpool.h' line='70' column='1' id='type-id-111'>
-          <underlying-type type-id='type-id-38'/>
-          <enumerator name='is_allocated' value='62369'/>
-          <enumerator name='is_free' value='61858'/>
-        </enum-decl>
-      </member-type>
-      <data-member access='protected' layout-offset-in-bits='0'>
-        <!-- Buffer* Pool::freelist -->
-        <var-decl name='freelist' type-id='type-id-110' visibility='default' filepath='libnurbs/internals/bufpool.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='64'>
-        <!-- char* Pool::blocklist[32] -->
-        <var-decl name='blocklist' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/bufpool.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2112'>
-        <!-- int Pool::nextblock -->
-        <var-decl name='nextblock' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2176'>
-        <!-- char* Pool::curblock -->
-        <var-decl name='curblock' type-id='type-id-106' visibility='default' filepath='libnurbs/internals/bufpool.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2240'>
-        <!-- int Pool::buffersize -->
-        <var-decl name='buffersize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2272'>
-        <!-- int Pool::nextsize -->
-        <var-decl name='nextsize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2304'>
-        <!-- int Pool::nextfree -->
-        <var-decl name='nextfree' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2336'>
-        <!-- int Pool::initsize -->
-        <var-decl name='initsize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bufpool.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2368'>
-        <!-- const char* Pool::name -->
-        <var-decl name='name' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bufpool.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2432'>
-        <!-- Pool::Magic Pool::magic -->
-        <var-decl name='magic' type-id='type-id-111' visibility='default' filepath='libnurbs/internals/bufpool.h' line='72' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void* Pool::new_buffer() -->
-        <function-decl name='new_buffer' mangled-name='_ZN4Pool10new_bufferEv' filepath='libnurbs/internals/bufpool.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- void* -->
-          <return type-id='type-id-17'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Pool::clear() -->
-        <function-decl name='clear' mangled-name='_ZN4Pool5clearEv' filepath='libnurbs/internals/bufpool.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Pool::grow() -->
-        <function-decl name='grow' mangled-name='_ZN4Pool4growEv' filepath='libnurbs/internals/bufpool.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Pool::free_buffer(void*) -->
-        <function-decl name='free_buffer' mangled-name='_ZN4Pool11free_bufferEPv' filepath='libnurbs/internals/bufpool.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-113' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class PooledObj -->
-    <class-decl name='PooledObj' size-in-bits='8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='118' column='1' id='type-id-114'>
-      <member-function access='private' static='yes'>
-        <!-- void PooledObj::operator delete(Pool&) -->
-        <function-decl name='operator delete' mangled-name='_ZN9PooledObjdlEPvR4Pool' filepath='libnurbs/internals/bufpool.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' static='yes'>
-        <!-- void* PooledObj::operator new(Pool&) -->
-        <function-decl name='operator new' mangled-name='_ZN9PooledObjnwEmR4Pool' filepath='libnurbs/internals/bufpool.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'typedef size_t' -->
-          <parameter type-id='type-id-116'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void* -->
-          <return type-id='type-id-17'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void PooledObj::deleteMe(Pool&) -->
-        <function-decl name='deleteMe' mangled-name='_ZN9PooledObj8deleteMeER4Pool' filepath='libnurbs/internals/bufpool.h' line='126' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PooledObj*' -->
-          <parameter type-id='type-id-117' is-artificial='yes'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class PwlArc -->
-    <class-decl name='PwlArc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='44' column='1' id='type-id-118'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- TrimVertex* PwlArc::pts -->
-        <var-decl name='pts' type-id='type-id-119' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int PwlArc::npts -->
-        <var-decl name='npts' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- long int PwlArc::type -->
-        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='48' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-121'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- enum arc_side -->
-    <enum-decl name='arc_side' filepath='libnurbs/internals/arc.h' line='52' column='1' id='type-id-122'>
-      <underlying-type type-id='type-id-38'/>
-      <enumerator name='arc_none' value='0'/>
-      <enumerator name='arc_right' value='1'/>
-      <enumerator name='arc_top' value='2'/>
-      <enumerator name='arc_left' value='3'/>
-      <enumerator name='arc_bottom' value='4'/>
-    </enum-decl>
-    <!-- struct Arc -->
-    <class-decl name='Arc' size-in-bits='448' is-struct='yes' visibility='default' filepath='libnurbs/internals/arc.h' line='55' column='1' id='type-id-123'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::bezier_tag -->
-        <var-decl name='bezier_tag' type-id='type-id-124' mangled-name='_ZN3Arc10bezier_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::arc_tag -->
-        <var-decl name='arc_tag' type-id='type-id-124' mangled-name='_ZN3Arc7arc_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::tail_tag -->
-        <var-decl name='tail_tag' type-id='type-id-124' mangled-name='_ZN3Arc8tail_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Arc::prev -->
-        <var-decl name='prev' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Arc::next -->
-        <var-decl name='next' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Arc_ptr Arc::link -->
-        <var-decl name='link' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- BezierArc* Arc::bezierArc -->
-        <var-decl name='bezierArc' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/arc.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- PwlArc* Arc::pwlArc -->
-        <var-decl name='pwlArc' type-id='type-id-120' visibility='default' filepath='libnurbs/internals/arc.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int Arc::type -->
-        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/arc.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- long int Arc::nuid -->
-        <var-decl name='nuid' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/arc.h' line='67' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::clearside() -->
-        <function-decl name='clearside' mangled-name='_ZN3Arc9clearsideEv' filepath='libnurbs/internals/arc.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::clearbezier() -->
-        <function-decl name='clearbezier' mangled-name='_ZN3Arc11clearbezierEv' filepath='libnurbs/internals/arc.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::setside(arc_side) -->
-        <function-decl name='setside' mangled-name='_ZN3Arc7setsideE8arc_side' filepath='libnurbs/internals/arc.h' line='95' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- REAL* Arc::tail() -->
-        <function-decl name='tail' mangled-name='_ZN3Arc4tailEv' filepath='libnurbs/internals/arc.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- REAL* -->
-          <return type-id='type-id-25'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- REAL* Arc::rhead() -->
-        <function-decl name='rhead' mangled-name='_ZN3Arc5rheadEv' filepath='libnurbs/internals/arc.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- REAL* -->
-          <return type-id='type-id-25'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::show() -->
-        <function-decl name='show' mangled-name='_ZN3Arc4showEv' filepath='libnurbs/internals/arc.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- long int Arc::isbezier() -->
-        <function-decl name='isbezier' mangled-name='_ZN3Arc8isbezierEv' filepath='libnurbs/internals/arc.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- long int -->
-          <return type-id='type-id-24'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::makeSide(PwlArc*, arc_side) -->
-        <function-decl name='makeSide' mangled-name='_ZN3Arc8makeSideEP6PwlArc8arc_side' filepath='libnurbs/internals/arc.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- int Arc::numpts() -->
-        <function-decl name='numpts' mangled-name='_ZN3Arc6numptsEv' filepath='libnurbs/internals/arc.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::markverts() -->
-        <function-decl name='markverts' mangled-name='_ZN3Arc9markvertsEv' filepath='libnurbs/internals/arc.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::getextrema(Arc_ptr*) -->
-        <function-decl name='getextrema' mangled-name='_ZN3Arc10getextremaEPPS_' filepath='libnurbs/internals/arc.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc_ptr*' -->
-          <parameter type-id='type-id-128'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::print() -->
-        <function-decl name='print' mangled-name='_ZN3Arc5printEv' filepath='libnurbs/internals/arc.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- int Arc::isDisconnected() -->
-        <function-decl name='isDisconnected' mangled-name='_ZN3Arc14isDisconnectedEv' filepath='libnurbs/internals/arc.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- int Arc::check() -->
-        <function-decl name='check' mangled-name='_ZN3Arc5checkEv' filepath='libnurbs/internals/arc.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- Arc_ptr Arc::append(Arc_ptr) -->
-        <function-decl name='append' mangled-name='_ZN3Arc6appendEPS_' filepath='libnurbs/internals/arc.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- typedef Arc_ptr -->
-          <return type-id='type-id-125'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- int Arc::getitail() -->
-        <function-decl name='getitail' mangled-name='_ZN3Arc8getitailEv' filepath='libnurbs/internals/arc.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- REAL* Arc::head() -->
-        <function-decl name='head' mangled-name='_ZN3Arc4headEv' filepath='libnurbs/internals/arc.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- REAL* -->
-          <return type-id='type-id-25'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::setbezier() -->
-        <function-decl name='setbezier' mangled-name='_ZN3Arc9setbezierEv' filepath='libnurbs/internals/arc.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::setmark() -->
-        <function-decl name='setmark' mangled-name='_ZN3Arc7setmarkEv' filepath='libnurbs/internals/arc.h' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- long int Arc::ismarked() -->
-        <function-decl name='ismarked' mangled-name='_ZN3Arc8ismarkedEv' filepath='libnurbs/internals/arc.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- long int -->
-          <return type-id='type-id-24'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::clearmark() -->
-        <function-decl name='clearmark' mangled-name='_ZN3Arc9clearmarkEv' filepath='libnurbs/internals/arc.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::setitail() -->
-        <function-decl name='setitail' mangled-name='_ZN3Arc8setitailEv' filepath='libnurbs/internals/arc.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public'>
-        <!-- void Arc::clearitail() -->
-        <function-decl name='clearitail' mangled-name='_ZN3Arc10clearitailEv' filepath='libnurbs/internals/arc.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- arc_side Arc::getside() -->
-        <function-decl name='getside' mangled-name='_ZN3Arc7getsideEv' filepath='libnurbs/internals/arc.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- enum arc_side -->
-          <return type-id='type-id-122'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public'>
-        <!-- int Arc::isTessellated() -->
-        <function-decl name='isTessellated' mangled-name='_ZN3Arc13isTessellatedEv' filepath='libnurbs/internals/arc.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private'>
+        <!-- void* Pool::new_buffer() -->
+        <function-decl name='new_buffer' mangled-name='_ZN4Pool10new_bufferEv' filepath='libnurbs/internals/bufpool.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- void* -->
+          <return type-id='type-id-17'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private'>
+        <!-- void Pool::clear() -->
+        <function-decl name='clear' mangled-name='_ZN4Pool5clearEv' filepath='libnurbs/internals/bufpool.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private'>
+        <!-- void Pool::grow() -->
+        <function-decl name='grow' mangled-name='_ZN4Pool4growEv' filepath='libnurbs/internals/bufpool.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-120'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-127' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-122'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- struct TrimVertex -->
-    <class-decl name='TrimVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='43' column='1' id='type-id-129'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL TrimVertex::param[2] -->
-        <var-decl name='param' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int TrimVertex::nuid -->
-        <var-decl name='nuid' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='50' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef Arc* Arc_ptr -->
-    <typedef-decl name='Arc_ptr' type-id='type-id-127' filepath='libnurbs/internals/arc.h' line='50' column='1' id='type-id-125'/>
-    <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-3' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-116'/>
-    <!-- Arc* -->
-    <pointer-type-def type-id='type-id-123' size-in-bits='64' id='type-id-127'/>
-    <!-- Arc_ptr* -->
-    <pointer-type-def type-id='type-id-125' size-in-bits='64' id='type-id-128'/>
-    <!-- BezierArc* -->
-    <pointer-type-def type-id='type-id-130' size-in-bits='64' id='type-id-126'/>
-    <!-- Buffer* -->
-    <pointer-type-def type-id='type-id-109' size-in-bits='64' id='type-id-110'/>
-    <!-- Pool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-68' size-in-bits='64' id='type-id-115'/>
-    <!-- Pool* -->
-    <pointer-type-def type-id='type-id-68' size-in-bits='64' id='type-id-113'/>
-    <!-- PooledObj* -->
-    <pointer-type-def type-id='type-id-114' size-in-bits='64' id='type-id-117'/>
-    <!-- PwlArc* -->
-    <pointer-type-def type-id='type-id-118' size-in-bits='64' id='type-id-120'/>
-    <!-- TrimVertex* -->
-    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-119'/>
-    <!-- char* -->
-    <pointer-type-def type-id='type-id-105' size-in-bits='64' id='type-id-106'/>
-    <!-- const char -->
-    <qualified-type-def type-id='type-id-105' const='yes' id='type-id-131'/>
-    <!-- const char* -->
-    <pointer-type-def type-id='type-id-131' size-in-bits='64' id='type-id-112'/>
-    <!-- const int -->
-    <qualified-type-def type-id='type-id-10' const='yes' id='type-id-124'/>
-    <!-- struct BezierArc -->
-    <class-decl name='BezierArc' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='43' column='1' id='type-id-130'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL* BezierArc::cpts -->
-        <var-decl name='cpts' type-id='type-id-25' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='44' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int BezierArc::order -->
-        <var-decl name='order' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int BezierArc::stride -->
-        <var-decl name='stride' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- long int BezierArc::type -->
-        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- Mapdesc* BezierArc::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-132' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='48' column='1'/>
-      </data-member>
-    </class-decl>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/arcsorter.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- REAL[4] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-133'>
-      <!-- <anonymous range>[4] -->
-      <subrange length='4' lower-bound='0' upper-bound='3' type-id='type-id-3' id='type-id-62'/>
-    </array-type-def>
-    <!-- REAL[][24][24] -->
-    <array-type-def dimensions='3' type-id='type-id-1' size-in-bits='unknown' id='type-id-134'>
-      <!-- <anonymous range>[] -->
-      <subrange length='unknown' lower-bound='0' upper-bound='0' id='type-id-135'/>
-      <!-- <anonymous range>[24] -->
-      <subrange length='24' lower-bound='0' upper-bound='23' type-id='type-id-3' id='type-id-136'/>
-      <!-- <anonymous range>[24] -->
-      <subrange length='24' lower-bound='0' upper-bound='23' type-id='type-id-3' id='type-id-136'/>
-    </array-type-def>
-    <!-- __jmp_buf_tag[1] -->
-    <array-type-def dimensions='1' type-id='type-id-137' size-in-bits='1600' id='type-id-138'>
-      <!-- <anonymous range>[1] -->
-      <subrange length='1' lower-bound='0' upper-bound='0' type-id='type-id-3' id='type-id-139'/>
-    </array-type-def>
-    <!-- class ArcSdirSorter -->
-    <class-decl name='ArcSdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='57' column='1' id='type-id-140'>
-      <!-- class ArcSorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-141'/>
       <member-function access='private' constructor='yes'>
-        <!-- ArcSdirSorter::ArcSdirSorter(Subdivider&) -->
-        <function-decl name='ArcSdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSdirSorter*' -->
-          <parameter type-id='type-id-142' is-artificial='yes'/>
-          <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-143'/>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' vtable-offset='2'>
-        <!-- int ArcSdirSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN13ArcSdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSdirSorter*' -->
-          <parameter type-id='type-id-142' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Pool::free_buffer(void*) -->
+        <function-decl name='free_buffer' mangled-name='_ZN4Pool11free_bufferEPv' filepath='libnurbs/internals/bufpool.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-17'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class ArcSorter -->
-    <class-decl name='ArcSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='44' column='1' id='type-id-141'>
-      <!-- class Sorter -->
-      <base-class access='private' layout-offset-in-bits='0' type-id='type-id-144'/>
-      <data-member access='protected' layout-offset-in-bits='128'>
-        <!-- Subdivider& ArcSorter::subdivider -->
-        <var-decl name='subdivider' type-id='type-id-143' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='50' column='1'/>
-      </data-member>
       <member-function access='private' constructor='yes'>
-        <!-- ArcSorter::ArcSorter(Subdivider&) -->
-        <function-decl name='ArcSorter' filepath='libnurbs/internals/arcsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-145' is-artificial='yes'/>
-          <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-143'/>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcSorter::qsort(Arc**, int) -->
-        <function-decl name='qsort' mangled-name='_ZN9ArcSorter5qsortEPP3Arci' filepath='libnurbs/internals/arcsorter.cc' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-145' is-artificial='yes'/>
-          <!-- parameter of type 'Arc**' -->
-          <parameter type-id='type-id-146'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int ArcSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN9ArcSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-145' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' vtable-offset='3'>
-        <!-- void ArcSorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN9ArcSorter5qsexcEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-145' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' vtable-offset='4'>
-        <!-- void ArcSorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN9ArcSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/arcsorter.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-145' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class ArcTdirSorter -->
-    <class-decl name='ArcTdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='65' column='1' id='type-id-147'>
-      <!-- class ArcSorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-141'/>
       <member-function access='private' constructor='yes'>
-        <!-- ArcTdirSorter::ArcTdirSorter(Subdivider&) -->
-        <function-decl name='ArcTdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTdirSorter*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
-          <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-143'/>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' vtable-offset='2'>
-        <!-- int ArcTdirSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN13ArcTdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTdirSorter*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class ArcTessellator -->
-    <class-decl name='ArcTessellator' size-in-bits='128' visibility='default' filepath='libnurbs/internals/arctess.h' line='47' column='1' id='type-id-149'>
-      <data-member access='private' static='yes'>
-        <!-- static REAL ArcTessellator::gl_Bernstein[][24][24] -->
-        <var-decl name='gl_Bernstein' type-id='type-id-134' mangled-name='_ZN14ArcTessellator12gl_BernsteinE' visibility='default' filepath='libnurbs/internals/arctess.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool& ArcTessellator::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-115' visibility='default' filepath='libnurbs/internals/arctess.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- TrimVertexPool& ArcTessellator::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/arctess.h' line='62' column='1'/>
-      </data-member>
       <member-function access='private' constructor='yes'>
-        <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
-        <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'TrimVertexPool&' -->
-          <parameter type-id='type-id-150'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-115'/>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
-        <!-- ArcTessellator::~ArcTessellator(int) -->
-        <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
@@ -6977,2118 +3858,2017 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
-        <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'TrimVertexPool&' -->
-          <parameter type-id='type-id-150'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-115'/>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
-        <!-- ArcTessellator::~ArcTessellator(int) -->
-        <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' static='yes'>
-        <!-- void ArcTessellator::trim_power_coeffs(REAL*, int) -->
-        <function-decl name='trim_power_coeffs' mangled-name='_ZN14ArcTessellator17trim_power_coeffsEP9BezierArcPfi' filepath='libnurbs/internals/arctess.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'BezierArc*' -->
-          <parameter type-id='type-id-126'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::pwl_left(Arc_ptr, REAL, REAL, REAL, REAL) -->
-        <function-decl name='pwl_left' mangled-name='_ZN14ArcTessellator8pwl_leftEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::tessellateNonlinear(Arc_ptr, REAL, REAL, int) -->
-        <function-decl name='tessellateNonlinear' mangled-name='_ZN14ArcTessellator19tessellateNonlinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::pwl(Arc_ptr, REAL, REAL, REAL, REAL, REAL) -->
-        <function-decl name='pwl' mangled-name='_ZN14ArcTessellator3pwlEP3Arcfffff' filepath='libnurbs/internals/arctess.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::bezier(Arc_ptr, REAL, REAL, REAL, REAL) -->
-        <function-decl name='bezier' mangled-name='_ZN14ArcTessellator6bezierEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-112'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::pwl_bottom(Arc_ptr, REAL, REAL, REAL, REAL) -->
-        <function-decl name='pwl_bottom' mangled-name='_ZN14ArcTessellator10pwl_bottomEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-113' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::pwl_top(Arc_ptr, REAL, REAL, REAL, REAL) -->
-        <function-decl name='pwl_top' mangled-name='_ZN14ArcTessellator7pwl_topEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+    </class-decl>
+    <!-- class PooledObj -->
+    <class-decl name='PooledObj' size-in-bits='8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='118' column='1' id='type-id-114'>
+      <member-function access='private' static='yes'>
+        <!-- void PooledObj::operator delete(Pool&) -->
+        <function-decl name='operator delete' mangled-name='_ZN9PooledObjdlEPvR4Pool' filepath='libnurbs/internals/bufpool.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-17'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-115'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void ArcTessellator::pwl_right(Arc_ptr, REAL, REAL, REAL, REAL) -->
-        <function-decl name='pwl_right' mangled-name='_ZN14ArcTessellator9pwl_rightEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='private' static='yes'>
+        <!-- void* PooledObj::operator new(Pool&) -->
+        <function-decl name='operator new' mangled-name='_ZN9PooledObjnwEmR4Pool' filepath='libnurbs/internals/bufpool.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'typedef size_t' -->
+          <parameter type-id='type-id-116'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-115'/>
+          <!-- void* -->
+          <return type-id='type-id-17'/>
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void ArcTessellator::tessellateLinear(Arc_ptr, REAL, REAL, int) -->
-        <function-decl name='tessellateLinear' mangled-name='_ZN14ArcTessellator16tessellateLinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+        <!-- void PooledObj::deleteMe(Pool&) -->
+        <function-decl name='deleteMe' mangled-name='_ZN9PooledObj8deleteMeER4Pool' filepath='libnurbs/internals/bufpool.h' line='126' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PooledObj*' -->
+          <parameter type-id='type-id-117' is-artificial='yes'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-115'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- class Bin -->
-    <class-decl name='Bin' size-in-bits='128' visibility='default' filepath='libnurbs/internals/bin.h' line='44' column='1' id='type-id-152'>
+    <!-- class PwlArc -->
+    <class-decl name='PwlArc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='44' column='1' id='type-id-118'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
       <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Bin::head -->
-        <var-decl name='head' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/bin.h' line='46' column='1'/>
+        <!-- TrimVertex* PwlArc::pts -->
+        <var-decl name='pts' type-id='type-id-119' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Bin::current -->
-        <var-decl name='current' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/bin.h' line='47' column='1'/>
+        <!-- int PwlArc::npts -->
+        <var-decl name='npts' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='47' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- long int PwlArc::type -->
+        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='48' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- Arc_ptr Bin::nextarc() -->
-        <function-decl name='nextarc' mangled-name='_ZN3Bin7nextarcEv' filepath='libnurbs/internals/bin.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- typedef Arc_ptr -->
-          <return type-id='type-id-125'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- Arc_ptr Bin::firstarc() -->
-        <function-decl name='firstarc' mangled-name='_ZN3Bin8firstarcEv' filepath='libnurbs/internals/bin.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- typedef Arc_ptr -->
-          <return type-id='type-id-125'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Bin::markall() -->
-        <function-decl name='markall' mangled-name='_ZN3Bin7markallEv' filepath='libnurbs/internals/bin.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- Arc_ptr Bin::removearc() -->
-        <function-decl name='removearc' mangled-name='_ZN3Bin9removearcEv' filepath='libnurbs/internals/bin.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- typedef Arc_ptr -->
-          <return type-id='type-id-125'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Bin::remove_this_arc(Arc_ptr) -->
-        <function-decl name='remove_this_arc' mangled-name='_ZN3Bin15remove_this_arcEP3Arc' filepath='libnurbs/internals/bin.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Bin::numarcs() -->
-        <function-decl name='numarcs' mangled-name='_ZN3Bin7numarcsEv' filepath='libnurbs/internals/bin.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Bin::adopt() -->
-        <function-decl name='adopt' mangled-name='_ZN3Bin5adoptEv' filepath='libnurbs/internals/bin.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Bin::show(const char*) -->
-        <function-decl name='show' mangled-name='_ZN3Bin4showEPKc' filepath='libnurbs/internals/bin.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-112'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Bin::listBezier() -->
-        <function-decl name='listBezier' mangled-name='_ZN3Bin10listBezierEv' filepath='libnurbs/internals/bin.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Bin::addarc(Arc_ptr) -->
-        <function-decl name='addarc' mangled-name='_ZN3Bin6addarcEP3Arc' filepath='libnurbs/internals/bin.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Bin::isnonempty() -->
-        <function-decl name='isnonempty' mangled-name='_ZN3Bin10isnonemptyEv' filepath='libnurbs/internals/bin.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-153' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class Flist -->
-    <class-decl name='Flist' size-in-bits='320' visibility='default' filepath='libnurbs/internals/flist.h' line='42' column='1' id='type-id-154'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- REAL* Flist::pts -->
-        <var-decl name='pts' type-id='type-id-25' visibility='default' filepath='libnurbs/internals/flist.h' line='44' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Flist::npts -->
-        <var-decl name='npts' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/flist.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- int Flist::start -->
-        <var-decl name='start' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/flist.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Flist::end -->
-        <var-decl name='end' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/flist.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='192'>
-        <!-- FlistSorter Flist::sorter -->
-        <var-decl name='sorter' type-id='type-id-155' visibility='default' filepath='libnurbs/internals/flist.h' line='56' column='1'/>
-      </data-member>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Flist::add(REAL) -->
-        <function-decl name='add' mangled-name='_ZN5Flist3addEf' filepath='libnurbs/internals/flist.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Flist::taper(REAL, REAL) -->
-        <function-decl name='taper' mangled-name='_ZN5Flist5taperEff' filepath='libnurbs/internals/flist.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Flist::grow(int) -->
-        <function-decl name='grow' mangled-name='_ZN5Flist4growEi' filepath='libnurbs/internals/flist.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Flist::filter() -->
-        <function-decl name='filter' mangled-name='_ZN5Flist6filterEv' filepath='libnurbs/internals/flist.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-156' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class Subdivider -->
-    <class-decl name='Subdivider' size-in-bits='20416' visibility='default' filepath='libnurbs/internals/subdivider.h' line='55' column='1' id='type-id-66'>
-      <member-type access='private'>
-        <!-- enum Subdivider::dir -->
-        <enum-decl name='dir' filepath='libnurbs/internals/subdivider.h' line='105' column='1' id='type-id-157'>
-          <underlying-type type-id='type-id-38'/>
-          <enumerator name='down' value='0'/>
-          <enumerator name='same' value='1'/>
-          <enumerator name='up' value='2'/>
-          <enumerator name='none' value='3'/>
-        </enum-decl>
-      </member-type>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Slicer Subdivider::slicer -->
-        <var-decl name='slicer' type-id='type-id-158' visibility='default' filepath='libnurbs/internals/subdivider.h' line='112' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='8064'>
-        <!-- ArcTessellator Subdivider::arctessellator -->
-        <var-decl name='arctessellator' type-id='type-id-149' visibility='default' filepath='libnurbs/internals/subdivider.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='8192'>
-        <!-- Pool Subdivider::arcpool -->
-        <var-decl name='arcpool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/subdivider.h' line='114' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='10688'>
-        <!-- Pool Subdivider::bezierarcpool -->
-        <var-decl name='bezierarcpool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/subdivider.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='13184'>
-        <!-- Pool Subdivider::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/subdivider.h' line='116' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='15680'>
-        <!-- TrimVertexPool Subdivider::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-69' visibility='default' filepath='libnurbs/internals/subdivider.h' line='117' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18304'>
-        <!-- JumpBuffer* Subdivider::jumpbuffer -->
-        <var-decl name='jumpbuffer' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/subdivider.h' line='119' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18368'>
-        <!-- Renderhints& Subdivider::renderhints -->
-        <var-decl name='renderhints' type-id='type-id-159' visibility='default' filepath='libnurbs/internals/subdivider.h' line='120' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18432'>
-        <!-- Backend& Subdivider::backend -->
-        <var-decl name='backend' type-id='type-id-160' visibility='default' filepath='libnurbs/internals/subdivider.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18496'>
-        <!-- Bin Subdivider::initialbin -->
-        <var-decl name='initialbin' type-id='type-id-152' visibility='default' filepath='libnurbs/internals/subdivider.h' line='123' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18624'>
-        <!-- Arc_ptr Subdivider::pjarc -->
-        <var-decl name='pjarc' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/subdivider.h' line='124' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18688'>
-        <!-- int Subdivider::s_index -->
-        <var-decl name='s_index' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/subdivider.h' line='125' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18720'>
-        <!-- int Subdivider::t_index -->
-        <var-decl name='t_index' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/subdivider.h' line='126' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18752'>
-        <!-- Quilt* Subdivider::qlist -->
-        <var-decl name='qlist' type-id='type-id-161' visibility='default' filepath='libnurbs/internals/subdivider.h' line='127' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18816'>
-        <!-- Flist Subdivider::spbrkpts -->
-        <var-decl name='spbrkpts' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/subdivider.h' line='128' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19136'>
-        <!-- Flist Subdivider::tpbrkpts -->
-        <var-decl name='tpbrkpts' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/subdivider.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19456'>
-        <!-- Flist Subdivider::smbrkpts -->
-        <var-decl name='smbrkpts' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/subdivider.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19776'>
-        <!-- Flist Subdivider::tmbrkpts -->
-        <var-decl name='tmbrkpts' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/subdivider.h' line='131' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20096'>
-        <!-- REAL Subdivider::stepsizes[4] -->
-        <var-decl name='stepsizes' type-id='type-id-133' visibility='default' filepath='libnurbs/internals/subdivider.h' line='132' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20224'>
-        <!-- int Subdivider::showDegenerate -->
-        <var-decl name='showDegenerate' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/subdivider.h' line='133' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20256'>
-        <!-- int Subdivider::isArcTypeBezier -->
-        <var-decl name='isArcTypeBezier' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/subdivider.h' line='134' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20288'>
-        <!-- REAL Subdivider::domain_distance_u_rate -->
-        <var-decl name='domain_distance_u_rate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/subdivider.h' line='188' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20320'>
-        <!-- REAL Subdivider::domain_distance_v_rate -->
-        <var-decl name='domain_distance_v_rate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/subdivider.h' line='189' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20352'>
-        <!-- int Subdivider::is_domain_distance_sampling -->
-        <var-decl name='is_domain_distance_sampling' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/subdivider.h' line='190' column='1'/>
-      </data-member>
       <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' static='yes'>
-        <!-- int Subdivider::bbox(REAL, REAL, REAL, REAL, REAL) -->
-        <function-decl name='bbox' mangled-name='_ZN10Subdivider4bboxEffffff' filepath='libnurbs/internals/subdivider.h' line='168' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' static='yes'>
-        <!-- int Subdivider::ccw(TrimVertex*, TrimVertex*) -->
-        <function-decl name='ccw' mangled-name='_ZN10Subdivider3ccwEP10TrimVertexS1_S1_' filepath='libnurbs/internals/subdivider.h' line='169' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- parameter of type 'TrimVertex*' -->
           <parameter type-id='type-id-119'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::bbox(TrimVertex*, TrimVertex*, TrimVertex*, int) -->
-        <function-decl name='bbox' mangled-name='_ZN10Subdivider4bboxEP10TrimVertexS1_S1_i' filepath='libnurbs/internals/subdivider.h' line='167' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::ccwTurn_tl(Arc_ptr, Arc_ptr) -->
-        <function-decl name='ccwTurn_tl' mangled-name='_ZN10Subdivider10ccwTurn_tlEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::ccwTurn_sr(Arc_ptr, Arc_ptr) -->
-        <function-decl name='ccwTurn_sr' mangled-name='_ZN10Subdivider10ccwTurn_srEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::ccwTurn_sl(Arc_ptr, Arc_ptr) -->
-        <function-decl name='ccwTurn_sl' mangled-name='_ZN10Subdivider10ccwTurn_slEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::ccwTurn_tr(Arc_ptr, Arc_ptr) -->
-        <function-decl name='ccwTurn_tr' mangled-name='_ZN10Subdivider10ccwTurn_trEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::samplingSplit(Curvelist&, int) -->
-        <function-decl name='samplingSplit' mangled-name='_ZN10Subdivider13samplingSplitER9Curvelisti' filepath='libnurbs/internals/subdivider.h' line='136' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Curvelist&' -->
-          <parameter type-id='type-id-163'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::drawCurves() -->
-        <function-decl name='drawCurves' mangled-name='_ZN10Subdivider10drawCurvesEv' filepath='libnurbs/internals/subdivider.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-121'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::showingDegenerate() -->
-        <function-decl name='showingDegenerate' mangled-name='_ZN10Subdivider17showingDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_headonright_t(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_headonright_t' mangled-name='_ZN10Subdivider22classify_headonright_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_tailonright_t(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_tailonright_t' mangled-name='_ZN10Subdivider22classify_tailonright_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_headonright_s(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_headonright_s' mangled-name='_ZN10Subdivider22classify_headonright_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_tailonright_s(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_tailonright_s' mangled-name='_ZN10Subdivider22classify_tailonright_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc() -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_headonleft_t(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_headonleft_t' mangled-name='_ZN10Subdivider21classify_headonleft_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_tailonleft_t(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_tailonleft_t' mangled-name='_ZN10Subdivider21classify_tailonleft_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
+        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_headonleft_s(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_headonleft_s' mangled-name='_ZN10Subdivider21classify_headonleft_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+    </class-decl>
+    <!-- enum arc_side -->
+    <enum-decl name='arc_side' filepath='libnurbs/internals/arc.h' line='52' column='1' id='type-id-122'>
+      <underlying-type type-id='type-id-38'/>
+      <enumerator name='arc_none' value='0'/>
+      <enumerator name='arc_right' value='1'/>
+      <enumerator name='arc_top' value='2'/>
+      <enumerator name='arc_left' value='3'/>
+      <enumerator name='arc_bottom' value='4'/>
+    </enum-decl>
+    <!-- struct Arc -->
+    <class-decl name='Arc' size-in-bits='448' is-struct='yes' visibility='default' filepath='libnurbs/internals/arc.h' line='55' column='1' id='type-id-123'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::bezier_tag -->
+        <var-decl name='bezier_tag' type-id='type-id-124' mangled-name='_ZN3Arc10bezier_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='58' column='1'/>
+      </data-member>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::arc_tag -->
+        <var-decl name='arc_tag' type-id='type-id-124' mangled-name='_ZN3Arc7arc_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='59' column='1'/>
+      </data-member>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::tail_tag -->
+        <var-decl name='tail_tag' type-id='type-id-124' mangled-name='_ZN3Arc8tail_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='60' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- Arc_ptr Arc::prev -->
+        <var-decl name='prev' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='61' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- Arc_ptr Arc::next -->
+        <var-decl name='next' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- Arc_ptr Arc::link -->
+        <var-decl name='link' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/arc.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- BezierArc* Arc::bezierArc -->
+        <var-decl name='bezierArc' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/arc.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- PwlArc* Arc::pwlArc -->
+        <var-decl name='pwlArc' type-id='type-id-120' visibility='default' filepath='libnurbs/internals/arc.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- long int Arc::type -->
+        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/arc.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- long int Arc::nuid -->
+        <var-decl name='nuid' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/arc.h' line='67' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::classify_tailonleft_s(Bin&, Bin&, Bin&, REAL) -->
-        <function-decl name='classify_tailonleft_s' mangled-name='_ZN10Subdivider21classify_tailonleft_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::arc_split(Arc_ptr, int, REAL, int) -->
-        <function-decl name='arc_split' mangled-name='_ZN10Subdivider9arc_splitEP3Arcifi' filepath='libnurbs/internals/subdivider.h' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::partition(Bin&, Bin&, Bin&, Bin&, Bin&, int, REAL) -->
-        <function-decl name='partition' mangled-name='_ZN10Subdivider9partitionER3BinS1_S1_S1_S1_if' filepath='libnurbs/internals/subdivider.h' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public'>
+        <!-- void Arc::clearside() -->
+        <function-decl name='clearside' mangled-name='_ZN3Arc9clearsideEv' filepath='libnurbs/internals/arc.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+      <member-function access='public'>
+        <!-- void Arc::clearbezier() -->
+        <function-decl name='clearbezier' mangled-name='_ZN3Arc11clearbezierEv' filepath='libnurbs/internals/arc.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public'>
+        <!-- void Arc::setside(arc_side) -->
+        <function-decl name='setside' mangled-name='_ZN3Arc7setsideE8arc_side' filepath='libnurbs/internals/arc.h' line='95' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::isMonotone(Arc_ptr) -->
-        <function-decl name='isMonotone' mangled-name='_ZN10Subdivider10isMonotoneEP3Arc' filepath='libnurbs/internals/subdivider.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='public'>
+        <!-- REAL* Arc::tail() -->
+        <function-decl name='tail' mangled-name='_ZN3Arc4tailEv' filepath='libnurbs/internals/arc.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-25'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::monotonize(Arc_ptr, Bin&) -->
-        <function-decl name='monotonize' mangled-name='_ZN10Subdivider10monotonizeEP3ArcR3Bin' filepath='libnurbs/internals/subdivider.h' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- REAL* Arc::rhead() -->
+        <function-decl name='rhead' mangled-name='_ZN3Arc5rheadEv' filepath='libnurbs/internals/arc.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-25'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::tessellate(Arc_ptr, REAL) -->
-        <function-decl name='tessellate' mangled-name='_ZN10Subdivider10tessellateEP3Arcf' filepath='libnurbs/internals/subdivider.h' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public'>
+        <!-- void Arc::show() -->
+        <function-decl name='show' mangled-name='_ZN3Arc4showEv' filepath='libnurbs/internals/arc.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::decompose(Bin&, REAL) -->
-        <function-decl name='decompose' mangled-name='_ZN10Subdivider9decomposeER3Binf' filepath='libnurbs/internals/subdivider.h' line='109' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
+      <member-function access='public'>
+        <!-- long int Arc::isbezier() -->
+        <function-decl name='isbezier' mangled-name='_ZN3Arc8isbezierEv' filepath='libnurbs/internals/arc.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-24'/>
         </function-decl>
       </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+      <member-function access='public'>
+        <!-- void Arc::makeSide(PwlArc*, arc_side) -->
+        <function-decl name='makeSide' mangled-name='_ZN3Arc8makeSideEP6PwlArc8arc_side' filepath='libnurbs/internals/arc.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- int Arc::numpts() -->
+        <function-decl name='numpts' mangled-name='_ZN3Arc6numptsEv' filepath='libnurbs/internals/arc.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
         </function-decl>
       </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+      <member-function access='public'>
+        <!-- void Arc::markverts() -->
+        <function-decl name='markverts' mangled-name='_ZN3Arc9markvertsEv' filepath='libnurbs/internals/arc.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public'>
+        <!-- void Arc::getextrema(Arc_ptr*) -->
+        <function-decl name='getextrema' mangled-name='_ZN3Arc10getextremaEPPS_' filepath='libnurbs/internals/arc.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc_ptr*' -->
+          <parameter type-id='type-id-128'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::set_domain_distance_u_rate(REAL) -->
-        <function-decl name='set_domain_distance_u_rate' mangled-name='_ZN10Subdivider26set_domain_distance_u_rateEf' filepath='libnurbs/internals/subdivider.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public'>
+        <!-- void Arc::print() -->
+        <function-decl name='print' mangled-name='_ZN3Arc5printEv' filepath='libnurbs/internals/arc.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::set_domain_distance_v_rate(REAL) -->
-        <function-decl name='set_domain_distance_v_rate' mangled-name='_ZN10Subdivider26set_domain_distance_v_rateEf' filepath='libnurbs/internals/subdivider.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- int Arc::isDisconnected() -->
+        <function-decl name='isDisconnected' mangled-name='_ZN3Arc14isDisconnectedEv' filepath='libnurbs/internals/arc.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::set_is_domain_distance_sampling(int) -->
-        <function-decl name='set_is_domain_distance_sampling' mangled-name='_ZN10Subdivider31set_is_domain_distance_samplingEi' filepath='libnurbs/internals/subdivider.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- int Arc::check() -->
+        <function-decl name='check' mangled-name='_ZN3Arc5checkEv' filepath='libnurbs/internals/arc.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- Arc_ptr Arc::append(Arc_ptr) -->
+        <function-decl name='append' mangled-name='_ZN3Arc6appendEPS_' filepath='libnurbs/internals/arc.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- typedef Arc_ptr -->
+          <return type-id='type-id-125'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::beginTrims() -->
-        <function-decl name='beginTrims' mangled-name='_ZN10Subdivider10beginTrimsEv' filepath='libnurbs/internals/subdivider.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::beginLoop() -->
-        <function-decl name='beginLoop' mangled-name='_ZN10Subdivider9beginLoopEv' filepath='libnurbs/internals/subdivider.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::endLoop() -->
-        <function-decl name='endLoop' mangled-name='_ZN10Subdivider7endLoopEv' filepath='libnurbs/internals/subdivider.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- int Arc::getitail() -->
+        <function-decl name='getitail' mangled-name='_ZN3Arc8getitailEv' filepath='libnurbs/internals/arc.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::endTrims() -->
-        <function-decl name='endTrims' mangled-name='_ZN10Subdivider8endTrimsEv' filepath='libnurbs/internals/subdivider.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- REAL* Arc::head() -->
+        <function-decl name='head' mangled-name='_ZN3Arc4headEv' filepath='libnurbs/internals/arc.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-25'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::endQuilts() -->
-        <function-decl name='endQuilts' mangled-name='_ZN10Subdivider9endQuiltsEv' filepath='libnurbs/internals/subdivider.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public'>
+        <!-- void Arc::setbezier() -->
+        <function-decl name='setbezier' mangled-name='_ZN3Arc9setbezierEv' filepath='libnurbs/internals/arc.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::simple_link(Arc_ptr, Arc_ptr) -->
-        <function-decl name='simple_link' mangled-name='_ZN10Subdivider11simple_linkEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='176' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- int Subdivider::isBezierArcType() -->
-        <function-decl name='isBezierArcType' mangled-name='_ZN10Subdivider15isBezierArcTypeEv' filepath='libnurbs/internals/subdivider.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::link(Arc_ptr, Arc_ptr, Arc_ptr, Arc_ptr) -->
-        <function-decl name='link' mangled-name='_ZN10Subdivider4linkEP3ArcS1_S1_S1_' filepath='libnurbs/internals/subdivider.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::check_t(Arc_ptr, Arc_ptr) -->
-        <function-decl name='check_t' mangled-name='_ZN10Subdivider7check_tEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='174' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='public'>
+        <!-- void Arc::setmark() -->
+        <function-decl name='setmark' mangled-name='_ZN3Arc7setmarkEv' filepath='libnurbs/internals/arc.h' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::check_s(Arc_ptr, Arc_ptr) -->
-        <function-decl name='check_s' mangled-name='_ZN10Subdivider7check_sEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='173' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='public'>
+        <!-- long int Arc::ismarked() -->
+        <function-decl name='ismarked' mangled-name='_ZN3Arc8ismarkedEv' filepath='libnurbs/internals/arc.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-24'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::join_t(Bin&, Bin&, Arc_ptr, Arc_ptr) -->
-        <function-decl name='join_t' mangled-name='_ZN10Subdivider6join_tER3BinS1_P3ArcS3_' filepath='libnurbs/internals/subdivider.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='public'>
+        <!-- void Arc::clearmark() -->
+        <function-decl name='clearmark' mangled-name='_ZN3Arc9clearmarkEv' filepath='libnurbs/internals/arc.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::join_s(Bin&, Bin&, Arc_ptr, Arc_ptr) -->
-        <function-decl name='join_s' mangled-name='_ZN10Subdivider6join_sER3BinS1_P3ArcS3_' filepath='libnurbs/internals/subdivider.h' line='170' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::split(Bin&, Bin&, Bin&, int, REAL) -->
-        <function-decl name='split' mangled-name='_ZN10Subdivider5splitER3BinS1_S1_if' filepath='libnurbs/internals/subdivider.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-159'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::setArcTypePwl() -->
-        <function-decl name='setArcTypePwl' mangled-name='_ZN10Subdivider13setArcTypePwlEv' filepath='libnurbs/internals/subdivider.h' line='157' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::setDegenerate() -->
-        <function-decl name='setDegenerate' mangled-name='_ZN10Subdivider13setDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::setArcTypeBezier() -->
-        <function-decl name='setArcTypeBezier' mangled-name='_ZN10Subdivider16setArcTypeBezierEv' filepath='libnurbs/internals/subdivider.h' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::setNonDegenerate() -->
-        <function-decl name='setNonDegenerate' mangled-name='_ZN10Subdivider16setNonDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='154' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::setJumpbuffer(JumpBuffer*) -->
-        <function-decl name='setJumpbuffer' mangled-name='_ZN10Subdivider13setJumpbufferEP10JumpBuffer' filepath='libnurbs/internals/subdivider.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'JumpBuffer*' -->
-          <parameter type-id='type-id-67'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::beginQuilts() -->
-        <function-decl name='beginQuilts' mangled-name='_ZN10Subdivider11beginQuiltsEv' filepath='libnurbs/internals/subdivider.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::addQuilt(Quilt*) -->
-        <function-decl name='addQuilt' mangled-name='_ZN10Subdivider8addQuiltEP5Quilt' filepath='libnurbs/internals/subdivider.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-165'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::tessellate(Bin&, REAL, REAL, REAL, REAL) -->
-        <function-decl name='tessellate' mangled-name='_ZN10Subdivider10tessellateER3Binffff' filepath='libnurbs/internals/subdivider.h' line='151' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::freejarcs(Bin&) -->
-        <function-decl name='freejarcs' mangled-name='_ZN10Subdivider9freejarcsER3Bin' filepath='libnurbs/internals/subdivider.h' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public'>
+        <!-- void Arc::setitail() -->
+        <function-decl name='setitail' mangled-name='_ZN3Arc8setitailEv' filepath='libnurbs/internals/arc.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::outline(Bin&) -->
-        <function-decl name='outline' mangled-name='_ZN10Subdivider7outlineER3Bin' filepath='libnurbs/internals/subdivider.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public'>
+        <!-- void Arc::clearitail() -->
+        <function-decl name='clearitail' mangled-name='_ZN3Arc10clearitailEv' filepath='libnurbs/internals/arc.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::render(Bin&) -->
-        <function-decl name='render' mangled-name='_ZN10Subdivider6renderER3Bin' filepath='libnurbs/internals/subdivider.h' line='149' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::findIrregularT(Bin&) -->
-        <function-decl name='findIrregularT' mangled-name='_ZN10Subdivider14findIrregularTER3Bin' filepath='libnurbs/internals/subdivider.h' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::findIrregularS(Bin&) -->
-        <function-decl name='findIrregularS' mangled-name='_ZN10Subdivider14findIrregularSER3Bin' filepath='libnurbs/internals/subdivider.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::monosplitInT(Bin&, int, int) -->
-        <function-decl name='monosplitInT' mangled-name='_ZN10Subdivider12monosplitInTER3Binii' filepath='libnurbs/internals/subdivider.h' line='145' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::monosplitInS(Bin&, int, int) -->
-        <function-decl name='monosplitInS' mangled-name='_ZN10Subdivider12monosplitInSER3Binii' filepath='libnurbs/internals/subdivider.h' line='144' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::tessellation(Bin&, Patchlist&) -->
-        <function-decl name='tessellation' mangled-name='_ZN10Subdivider12tessellationER3BinR9Patchlist' filepath='libnurbs/internals/subdivider.h' line='143' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Patchlist&' -->
-          <parameter type-id='type-id-166'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::nonSamplingSplit(Bin&, Patchlist&, int, int) -->
-        <function-decl name='nonSamplingSplit' mangled-name='_ZN10Subdivider16nonSamplingSplitER3BinR9Patchlistii' filepath='libnurbs/internals/subdivider.h' line='142' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Patchlist&' -->
-          <parameter type-id='type-id-166'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='public'>
+        <!-- arc_side Arc::getside() -->
+        <function-decl name='getside' mangled-name='_ZN3Arc7getsideEv' filepath='libnurbs/internals/arc.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- enum arc_side -->
+          <return type-id='type-id-122'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::isTessellated() -->
+        <function-decl name='isTessellated' mangled-name='_ZN3Arc13isTessellatedEv' filepath='libnurbs/internals/arc.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::samplingSplit(Bin&, Patchlist&, int, int) -->
-        <function-decl name='samplingSplit' mangled-name='_ZN10Subdivider13samplingSplitER3BinR9Patchlistii' filepath='libnurbs/internals/subdivider.h' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'Patchlist&' -->
-          <parameter type-id='type-id-166'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::splitInT(Bin&, int, int) -->
-        <function-decl name='splitInT' mangled-name='_ZN10Subdivider8splitInTER3Binii' filepath='libnurbs/internals/subdivider.h' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::splitInS(Bin&, int, int) -->
-        <function-decl name='splitInS' mangled-name='_ZN10Subdivider8splitInSER3Binii' filepath='libnurbs/internals/subdivider.h' line='139' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::subdivideInS(Bin&) -->
-        <function-decl name='subdivideInS' mangled-name='_ZN10Subdivider12subdivideInSER3Bin' filepath='libnurbs/internals/subdivider.h' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'Bin&' -->
-          <parameter type-id='type-id-164'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::clear() -->
-        <function-decl name='clear' mangled-name='_ZN10Subdivider5clearEv' filepath='libnurbs/internals/subdivider.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::makeBorderTrim(const REAL*, const REAL*) -->
-        <function-decl name='makeBorderTrim' mangled-name='_ZN10Subdivider14makeBorderTrimEPKfS1_' filepath='libnurbs/internals/subdivider.h' line='160' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'const REAL*' -->
-          <parameter type-id='type-id-167'/>
-          <!-- parameter of type 'const REAL*' -->
-          <parameter type-id='type-id-167'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::drawSurfaces(long int) -->
-        <function-decl name='drawSurfaces' mangled-name='_ZN10Subdivider12drawSurfacesEl' filepath='libnurbs/internals/subdivider.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
           <!-- parameter of type 'long int' -->
           <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::addArc(int, TrimVertex*, long int) -->
-        <function-decl name='addArc' mangled-name='_ZN10Subdivider6addArcEiP10TrimVertexl' filepath='libnurbs/internals/subdivider.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-119'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Subdivider::addArc(REAL*, Quilt*, long int) -->
-        <function-decl name='addArc' mangled-name='_ZN10Subdivider6addArcEPfP5Quiltl' filepath='libnurbs/internals/subdivider.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-165'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
           <!-- parameter of type 'long int' -->
           <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- Bin* Subdivider::makePatchBoundary(const REAL*, const REAL*) -->
-        <function-decl name='makePatchBoundary' mangled-name='_ZN10Subdivider17makePatchBoundaryEPKfS1_' filepath='libnurbs/internals/subdivider.h' line='178' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- parameter of type 'const REAL*' -->
-          <parameter type-id='type-id-167'/>
-          <!-- parameter of type 'const REAL*' -->
-          <parameter type-id='type-id-167'/>
-          <!-- Bin* -->
-          <return type-id='type-id-153'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- struct JumpBuffer -->
-    <class-decl name='JumpBuffer' size-in-bits='1600' is-struct='yes' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='56' column='1' id='type-id-168'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- jmp_buf JumpBuffer::buf -->
-        <var-decl name='buf' type-id='type-id-169' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='57' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct TrimVertexPool -->
-    <class-decl name='TrimVertexPool' size-in-bits='2624' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='45' column='1' id='type-id-69'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool TrimVertexPool::pool -->
-        <var-decl name='pool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2496'>
-        <!-- TrimVertex** TrimVertexPool::vlist -->
-        <var-decl name='vlist' type-id='type-id-170' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2560'>
-        <!-- int TrimVertexPool::nextvlistslot -->
-        <var-decl name='nextvlistslot' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2592'>
-        <!-- int TrimVertexPool::vlistsize -->
-        <var-decl name='vlistsize' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='55' column='1'/>
-      </data-member>
       <member-function access='public' constructor='yes'>
-        <!-- TrimVertexPool::TrimVertexPool() -->
-        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- TrimVertexPool::~TrimVertexPool(int) -->
-        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <!-- TrimVertexPool::TrimVertexPool() -->
-        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- TrimVertexPool::~TrimVertexPool(int) -->
-        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <!-- TrimVertexPool::TrimVertexPool() -->
-        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-120'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- TrimVertexPool::~TrimVertexPool(int) -->
-        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-171' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-127' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-122'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-24'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- struct __jmp_buf_tag -->
-    <class-decl name='__jmp_buf_tag' size-in-bits='1600' is-struct='yes' visibility='default' filepath='/usr/include/setjmp.h' line='36' column='1' id='type-id-137'>
+    <!-- struct TrimVertex -->
+    <class-decl name='TrimVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='43' column='1' id='type-id-129'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- __jmp_buf __jmp_buf_tag::__jmpbuf -->
-        <var-decl name='__jmpbuf' type-id='type-id-172' visibility='default' filepath='/usr/include/setjmp.h' line='41' column='1'/>
+        <!-- REAL TrimVertex::param[2] -->
+        <var-decl name='param' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='45' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int __jmp_buf_tag::__mask_was_saved -->
-        <var-decl name='__mask_was_saved' type-id='type-id-10' visibility='default' filepath='/usr/include/setjmp.h' line='42' column='1'/>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int TrimVertex::nuid -->
+        <var-decl name='nuid' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='50' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- __sigset_t __jmp_buf_tag::__saved_mask -->
-        <var-decl name='__saved_mask' type-id='type-id-173' visibility='default' filepath='/usr/include/setjmp.h' line='43' column='1'/>
+    </class-decl>
+    <!-- typedef Arc* Arc_ptr -->
+    <typedef-decl name='Arc_ptr' type-id='type-id-127' filepath='libnurbs/internals/arc.h' line='50' column='1' id='type-id-125'/>
+    <!-- typedef unsigned long int size_t -->
+    <typedef-decl name='size_t' type-id='type-id-3' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-116'/>
+    <!-- Arc* -->
+    <pointer-type-def type-id='type-id-123' size-in-bits='64' id='type-id-127'/>
+    <!-- Arc_ptr* -->
+    <pointer-type-def type-id='type-id-125' size-in-bits='64' id='type-id-128'/>
+    <!-- BezierArc* -->
+    <pointer-type-def type-id='type-id-130' size-in-bits='64' id='type-id-126'/>
+    <!-- Buffer* -->
+    <pointer-type-def type-id='type-id-109' size-in-bits='64' id='type-id-110'/>
+    <!-- Pool& -->
+    <reference-type-def kind='lvalue' type-id='type-id-68' size-in-bits='64' id='type-id-115'/>
+    <!-- Pool* -->
+    <pointer-type-def type-id='type-id-68' size-in-bits='64' id='type-id-113'/>
+    <!-- PooledObj* -->
+    <pointer-type-def type-id='type-id-114' size-in-bits='64' id='type-id-117'/>
+    <!-- PwlArc* -->
+    <pointer-type-def type-id='type-id-118' size-in-bits='64' id='type-id-120'/>
+    <!-- TrimVertex* -->
+    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-119'/>
+    <!-- char* -->
+    <pointer-type-def type-id='type-id-105' size-in-bits='64' id='type-id-106'/>
+    <!-- const char -->
+    <qualified-type-def type-id='type-id-105' const='yes' id='type-id-131'/>
+    <!-- const char* -->
+    <pointer-type-def type-id='type-id-131' size-in-bits='64' id='type-id-112'/>
+    <!-- const int -->
+    <qualified-type-def type-id='type-id-10' const='yes' id='type-id-124'/>
+    <!-- struct BezierArc -->
+    <class-decl name='BezierArc' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='43' column='1' id='type-id-130'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-114'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- REAL* BezierArc::cpts -->
+        <var-decl name='cpts' type-id='type-id-25' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='44' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int BezierArc::order -->
+        <var-decl name='order' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- int BezierArc::stride -->
+        <var-decl name='stride' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='46' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- long int BezierArc::type -->
+        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- Mapdesc* BezierArc::mapdesc -->
+        <var-decl name='mapdesc' type-id='type-id-132' visibility='default' filepath='libnurbs/internals/bezierarc.h' line='48' column='1'/>
       </data-member>
     </class-decl>
-    <!-- typedef __jmp_buf_tag[1] jmp_buf -->
-    <typedef-decl name='jmp_buf' type-id='type-id-138' filepath='/usr/include/setjmp.h' line='49' column='1' id='type-id-169'/>
-    <!-- Arc** -->
-    <pointer-type-def type-id='type-id-127' size-in-bits='64' id='type-id-146'/>
-    <!-- ArcSdirSorter* -->
-    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-142'/>
-    <!-- ArcSorter* -->
-    <pointer-type-def type-id='type-id-141' size-in-bits='64' id='type-id-145'/>
-    <!-- ArcTdirSorter* -->
-    <pointer-type-def type-id='type-id-147' size-in-bits='64' id='type-id-148'/>
-    <!-- ArcTessellator* -->
-    <pointer-type-def type-id='type-id-149' size-in-bits='64' id='type-id-151'/>
-    <!-- Backend& -->
-    <reference-type-def kind='lvalue' type-id='type-id-65' size-in-bits='64' id='type-id-160'/>
-    <!-- Bin& -->
-    <reference-type-def kind='lvalue' type-id='type-id-152' size-in-bits='64' id='type-id-164'/>
-    <!-- Bin* -->
-    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-153'/>
-    <!-- Curvelist& -->
-    <reference-type-def kind='lvalue' type-id='type-id-174' size-in-bits='64' id='type-id-163'/>
-    <!-- Flist* -->
-    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-156'/>
-    <!-- JumpBuffer* -->
-    <pointer-type-def type-id='type-id-168' size-in-bits='64' id='type-id-67'/>
-    <!-- Patchlist& -->
-    <reference-type-def kind='lvalue' type-id='type-id-175' size-in-bits='64' id='type-id-166'/>
-    <!-- Sorter* -->
-    <pointer-type-def type-id='type-id-144' size-in-bits='64' id='type-id-176'/>
-    <!-- Subdivider& -->
-    <reference-type-def kind='lvalue' type-id='type-id-66' size-in-bits='64' id='type-id-143'/>
-    <!-- Subdivider* -->
-    <pointer-type-def type-id='type-id-66' size-in-bits='64' id='type-id-162'/>
-    <!-- TrimVertex** -->
-    <pointer-type-def type-id='type-id-119' size-in-bits='64' id='type-id-170'/>
-    <!-- TrimVertexPool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-69' size-in-bits='64' id='type-id-150'/>
-    <!-- TrimVertexPool* -->
-    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-171'/>
-    <!-- const REAL -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-177'/>
-    <!-- const REAL* -->
-    <pointer-type-def type-id='type-id-177' size-in-bits='64' id='type-id-167'/>
-    <!-- Quilt* -->
-    <pointer-type-def type-id='type-id-178' size-in-bits='64' id='type-id-161'/>
-    <reference-type-def kind='lvalue' type-id='type-id-179' size-in-bits='64' id='type-id-159'/>
-    <!-- class FlistSorter -->
-    <class-decl name='FlistSorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/flistsorter.h' line='42' column='1' id='type-id-155'>
-      <!-- class Sorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-144'/>
+  </abi-instr>
+  <abi-instr address-size='64' path='libnurbs/internals/arcsorter.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+    <!-- REAL[4] -->
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-133'>
+      <!-- <anonymous range>[4] -->
+      <subrange length='4' lower-bound='0' upper-bound='3' type-id='type-id-3' id='type-id-62'/>
+    </array-type-def>
+    <!-- REAL[][24][24] -->
+    <array-type-def dimensions='3' type-id='type-id-1' size-in-bits='unknown' id='type-id-134'>
+      <!-- <anonymous range>[] -->
+      <subrange length='unknown' lower-bound='0' upper-bound='0' id='type-id-135'/>
+      <!-- <anonymous range>[24] -->
+      <subrange length='24' lower-bound='0' upper-bound='23' type-id='type-id-3' id='type-id-136'/>
+      <!-- <anonymous range>[24] -->
+      <subrange length='24' lower-bound='0' upper-bound='23' type-id='type-id-3' id='type-id-136'/>
+    </array-type-def>
+    <!-- __jmp_buf_tag[1] -->
+    <array-type-def dimensions='1' type-id='type-id-137' size-in-bits='1600' id='type-id-138'>
+      <!-- <anonymous range>[1] -->
+      <subrange length='1' lower-bound='0' upper-bound='0' type-id='type-id-3' id='type-id-139'/>
+    </array-type-def>
+    <!-- class ArcSdirSorter -->
+    <class-decl name='ArcSdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='57' column='1' id='type-id-140'>
+      <!-- class ArcSorter -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-141'/>
       <member-function access='private' constructor='yes'>
-        <!-- FlistSorter::FlistSorter() -->
-        <function-decl name='FlistSorter' filepath='libnurbs/internals/flistsorter.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
+        <!-- ArcSdirSorter::ArcSdirSorter(Subdivider&) -->
+        <function-decl name='ArcSdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSdirSorter*' -->
+          <parameter type-id='type-id-142' is-artificial='yes'/>
+          <!-- parameter of type 'Subdivider&' -->
+          <parameter type-id='type-id-143'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void FlistSorter::qsort(REAL*, int) -->
-        <function-decl name='qsort' mangled-name='_ZN11FlistSorter5qsortEPfi' filepath='libnurbs/internals/flistsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+      <member-function access='private' vtable-offset='2'>
+        <!-- int ArcSdirSorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN13ArcSdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSdirSorter*' -->
+          <parameter type-id='type-id-142' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-106'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-106'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class ArcSorter -->
+    <class-decl name='ArcSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='44' column='1' id='type-id-141'>
+      <!-- class Sorter -->
+      <base-class access='private' layout-offset-in-bits='0' type-id='type-id-144'/>
+      <data-member access='protected' layout-offset-in-bits='128'>
+        <!-- Subdivider& ArcSorter::subdivider -->
+        <var-decl name='subdivider' type-id='type-id-143' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='50' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- ArcSorter::ArcSorter(Subdivider&) -->
+        <function-decl name='ArcSorter' filepath='libnurbs/internals/arcsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- parameter of type 'Subdivider&' -->
+          <parameter type-id='type-id-143'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- FlistSorter::~FlistSorter(int) -->
-        <function-decl name='~FlistSorter' filepath='libnurbs/internals/flistsorter.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
+      <member-function access='private'>
+        <!-- void ArcSorter::qsort(Arc**, int) -->
+        <function-decl name='qsort' mangled-name='_ZN9ArcSorter5qsortEPP3Arci' filepath='libnurbs/internals/arcsorter.cc' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- parameter of type 'Arc**' -->
+          <parameter type-id='type-id-146'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='protected' vtable-offset='2'>
-        <!-- int FlistSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN11FlistSorter5qscmpEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
+        <!-- int ArcSorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN9ArcSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
           <!-- parameter of type 'char*' -->
           <parameter type-id='type-id-106'/>
           <!-- parameter of type 'char*' -->
@@ -9097,11 +5877,11 @@ 
           <return type-id='type-id-10'/>
         </function-decl>
       </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void FlistSorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN11FlistSorter5qsexcEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='3'>
+        <!-- void ArcSorter::qsexc(char*, char*) -->
+        <function-decl name='qsexc' mangled-name='_ZN9ArcSorter5qsexcEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
           <!-- parameter of type 'char*' -->
           <parameter type-id='type-id-106'/>
           <!-- parameter of type 'char*' -->
@@ -9110,11 +5890,11 @@ 
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void FlistSorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN11FlistSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/flistsorter.cc' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-180' is-artificial='yes'/>
+      <member-function access='private' vtable-offset='4'>
+        <!-- void ArcSorter::qstexc(char*, char*, char*) -->
+        <function-decl name='qstexc' mangled-name='_ZN9ArcSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/arcsorter.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
           <!-- parameter of type 'char*' -->
           <parameter type-id='type-id-106'/>
           <!-- parameter of type 'char*' -->
@@ -9126,181 +5906,104 @@ 
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- class Slicer -->
-    <class-decl name='Slicer' size-in-bits='8064' visibility='default' filepath='libnurbs/internals/slicer.h' line='49' column='1' id='type-id-158'>
-      <!-- class CoveAndTiler -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-181'/>
-      <!-- class Mesher -->
-      <base-class access='public' layout-offset-in-bits='128' type-id='type-id-182'/>
-      <data-member access='private' layout-offset-in-bits='5248'>
-        <!-- Backend& Slicer::backend -->
-        <var-decl name='backend' type-id='type-id-160' visibility='default' filepath='libnurbs/internals/slicer.h' line='72' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5312'>
-        <!-- REAL Slicer::oneOverDu -->
-        <var-decl name='oneOverDu' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5344'>
-        <!-- REAL Slicer::du -->
-        <var-decl name='du' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5376'>
-        <!-- REAL Slicer::dv -->
-        <var-decl name='dv' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5408'>
-        <!-- int Slicer::isolines -->
-        <var-decl name='isolines' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/slicer.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5440'>
-        <!-- int Slicer::ulinear -->
-        <var-decl name='ulinear' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/slicer.h' line='81' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5472'>
-        <!-- int Slicer::vlinear -->
-        <var-decl name='vlinear' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/slicer.h' line='82' column='1'/>
-      </data-member>
+    <!-- class ArcTdirSorter -->
+    <class-decl name='ArcTdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='65' column='1' id='type-id-147'>
+      <!-- class ArcSorter -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-141'/>
       <member-function access='private' constructor='yes'>
-        <!-- Slicer::Slicer(int, void**, Backend&) -->
-        <function-decl name='Slicer' filepath='libnurbs/internals/slicer.cc' line='1181' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-160'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Slicer::~Slicer(int, void**) -->
-        <function-decl name='~Slicer' filepath='libnurbs/internals/slicer.cc' line='1192' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::setisolines(int) -->
-        <function-decl name='setisolines' mangled-name='_ZN6Slicer11setisolinesEi' filepath='libnurbs/internals/slicer.cc' line='1197' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::outline(Arc_ptr) -->
-        <function-decl name='outline' mangled-name='_ZN6Slicer7outlineEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1292' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::outline() -->
-        <function-decl name='outline' mangled-name='_ZN6Slicer7outlineEv' filepath='libnurbs/internals/slicer.cc' line='1266' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::slice_old(Arc_ptr) -->
-        <function-decl name='slice_old' mangled-name='_ZN6Slicer9slice_oldEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1212' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+        <!-- ArcTdirSorter::ArcTdirSorter(Subdivider&) -->
+        <function-decl name='ArcTdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTdirSorter*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Subdivider&' -->
+          <parameter type-id='type-id-143'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::setstriptessellation(REAL, REAL) -->
-        <function-decl name='setstriptessellation' mangled-name='_ZN6Slicer20setstriptessellationEff' filepath='libnurbs/internals/slicer.cc' line='1203' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
+      <member-function access='private' vtable-offset='2'>
+        <!-- int ArcTdirSorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN13ArcTdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTdirSorter*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-106'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-106'/>
+          <!-- int -->
+          <return type-id='type-id-10'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::evalRBArray(rectBlockArray*, gridWrap*) -->
-        <function-decl name='evalRBArray' mangled-name='_ZN6Slicer11evalRBArrayEP14rectBlockArrayP8gridWrap' filepath='libnurbs/internals/slicer.cc' line='1001' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'rectBlockArray*' -->
-          <parameter type-id='type-id-185'/>
-          <!-- parameter of type 'gridWrap*' -->
-          <parameter type-id='type-id-186'/>
+    </class-decl>
+    <!-- class ArcTessellator -->
+    <class-decl name='ArcTessellator' size-in-bits='128' visibility='default' filepath='libnurbs/internals/arctess.h' line='47' column='1' id='type-id-149'>
+      <data-member access='private' static='yes'>
+        <!-- static REAL ArcTessellator::gl_Bernstein[][24][24] -->
+        <var-decl name='gl_Bernstein' type-id='type-id-134' mangled-name='_ZN14ArcTessellator12gl_BernsteinE' visibility='default' filepath='libnurbs/internals/arctess.h' line='60' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Pool& ArcTessellator::pwlarcpool -->
+        <var-decl name='pwlarcpool' type-id='type-id-115' visibility='default' filepath='libnurbs/internals/arctess.h' line='61' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- TrimVertexPool& ArcTessellator::trimvertexpool -->
+        <var-decl name='trimvertexpool' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/arctess.h' line='62' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
+        <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertexPool&' -->
+          <parameter type-id='type-id-150'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-115'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::evalStream(primStream*) -->
-        <function-decl name='evalStream' mangled-name='_ZN6Slicer10evalStreamEP10primStream' filepath='libnurbs/internals/slicer.cc' line='1027' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'primStream*' -->
-          <parameter type-id='type-id-187'/>
+      <member-function access='private' destructor='yes'>
+        <!-- ArcTessellator::~ArcTessellator(int) -->
+        <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::slice_new(Arc_ptr) -->
-        <function-decl name='slice_new' mangled-name='_ZN6Slicer9slice_newEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1068' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='private' constructor='yes'>
+        <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
+        <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertexPool&' -->
+          <parameter type-id='type-id-150'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-115'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Slicer::slice(Arc_ptr) -->
-        <function-decl name='slice' mangled-name='_ZN6Slicer5sliceEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1165' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-183' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Arc_ptr' -->
-          <parameter type-id='type-id-125'/>
+      <member-function access='private' destructor='yes'>
+        <!-- ArcTessellator::~ArcTessellator(int) -->
+        <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class Sorter -->
-    <class-decl name='Sorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/sorter.h' line='36' column='1' id='type-id-144'>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Sorter::es -->
-        <var-decl name='es' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/sorter.h' line='49' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Sorter::Sorter(int) -->
-        <function-decl name='Sorter' filepath='libnurbs/internals/sorter.cc' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
+      <member-function access='private' static='yes'>
+        <!-- void ArcTessellator::trim_power_coeffs(REAL*, int) -->
+        <function-decl name='trim_power_coeffs' mangled-name='_ZN14ArcTessellator17trim_power_coeffsEP9BezierArcPfi' filepath='libnurbs/internals/arctess.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'BezierArc*' -->
+          <parameter type-id='type-id-126'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-25'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
           <!-- void -->
@@ -9308,147 +6011,107 @@ 
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Sorter::qs1(char*, char*) -->
-        <function-decl name='qs1' mangled-name='_ZN6Sorter3qs1EPcS0_' filepath='libnurbs/internals/sorter.cc' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
+        <!-- void ArcTessellator::pwl_left(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_left' mangled-name='_ZN14ArcTessellator8pwl_leftEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Sorter::qsort(void*, int) -->
-        <function-decl name='qsort' mangled-name='_ZN6Sorter5qsortEPvi' filepath='libnurbs/internals/sorter.cc' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-17'/>
+        <!-- void ArcTessellator::tessellateNonlinear(Arc_ptr, REAL, REAL, int) -->
+        <function-decl name='tessellateNonlinear' mangled-name='_ZN14ArcTessellator19tessellateNonlinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- parameter of type 'int' -->
           <parameter type-id='type-id-10'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- Sorter::~Sorter(int) -->
-        <function-decl name='~Sorter' filepath='libnurbs/internals/sorter.h' line='39' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int Sorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN6Sorter5qscmpEPcS0_' filepath='libnurbs/internals/sorter.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- int -->
-          <return type-id='type-id-10'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void Sorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN6Sorter5qsexcEPcS0_' filepath='libnurbs/internals/sorter.cc' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void Sorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN6Sorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/sorter.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-176' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-106'/>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl(Arc_ptr, REAL, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl' mangled-name='_ZN14ArcTessellator3pwlEP3Arcfffff' filepath='libnurbs/internals/arctess.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class Backend -->
-    <class-decl name='Backend' size-in-bits='640' visibility='default' filepath='libnurbs/internals/backend.h' line='46' column='1' id='type-id-65'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- BasicCurveEvaluator& Backend::curveEvaluator -->
-        <var-decl name='curveEvaluator' type-id='type-id-80' visibility='default' filepath='libnurbs/internals/backend.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- BasicSurfaceEvaluator& Backend::surfaceEvaluator -->
-        <var-decl name='surfaceEvaluator' type-id='type-id-81' visibility='default' filepath='libnurbs/internals/backend.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Backend::wireframetris -->
-        <var-decl name='wireframetris' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/backend.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='160'>
-        <!-- int Backend::wireframequads -->
-        <var-decl name='wireframequads' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/backend.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- int Backend::npts -->
-        <var-decl name='npts' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/backend.h' line='107' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='224'>
-        <!-- REAL Backend::mesh[3][4] -->
-        <var-decl name='mesh' type-id='type-id-188' visibility='default' filepath='libnurbs/internals/backend.h' line='108' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='608'>
-        <!-- int Backend::meshindex -->
-        <var-decl name='meshindex' type-id='type-id-10' visibility='default' filepath='libnurbs/internals/backend.h' line='109' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Backend::Backend(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
-        <function-decl name='Backend' filepath='libnurbs/internals/backend.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'BasicCurveEvaluator&' -->
-          <parameter type-id='type-id-80'/>
-          <!-- parameter of type 'BasicSurfaceEvaluator&' -->
-          <parameter type-id='type-id-81'/>
+      <member-function access='private'>
+        <!-- void ArcTessellator::bezier(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='bezier' mangled-name='_ZN14ArcTessellator6bezierEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Backend::bgnsurf(int, int, long int) -->
-        <function-decl name='bgnsurf' mangled-name='_ZN7Backend7bgnsurfEiil' filepath='libnurbs/internals/backend.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+        <!-- void ArcTessellator::pwl_bottom(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_bottom' mangled-name='_ZN14ArcTessellator10pwl_bottomEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Backend::patch(REAL, REAL, REAL, REAL) -->
-        <function-decl name='patch' mangled-name='_ZN7Backend5patchEffff' filepath='libnurbs/internals/backend.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
+        <!-- void ArcTessellator::pwl_top(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_top' mangled-name='_ZN14ArcTessellator7pwl_topEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -9462,37 +6125,12 @@ 
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Backend::surfbbox(long int, REAL*, REAL*) -->
-        <function-decl name='surfbbox' mangled-name='_ZN7Backend8surfbboxElPfS0_' filepath='libnurbs/internals/backend.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- void -->
-          <return type-id='type-id-19'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private'>
-        <!-- void Backend::surfpts(long int, REAL*, long int, long int, int, int, REAL, REAL, REAL, REAL) -->
-        <function-decl name='surfpts' mangled-name='_ZN7Backend7surfptsElPflliiffff' filepath='libnurbs/internals/backend.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-10'/>
+        <!-- void ArcTessellator::pwl_right(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_right' mangled-name='_ZN14ArcTessellator9pwl_rightEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -9506,329 +6144,457 @@ 
         </function-decl>
       </member-function>
       <member-function access='private'>
-        <!-- void Backend::surfgrid(REAL, REAL, long int, REAL, REAL, long int) -->
-        <function-decl name='surfgrid' mangled-name='_ZN7Backend8surfgridEfflffl' filepath='libnurbs/internals/backend.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+        <!-- void ArcTessellator::tessellateLinear(Arc_ptr, REAL, REAL, int) -->
+        <function-decl name='tessellateLinear' mangled-name='_ZN14ArcTessellator16tessellateLinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-151' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-125'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-10'/>
           <!-- void -->
           <return type-id='type-id-19'/>
         </function-decl>
       </member-function>
-      <member-function access='private'>
-        <!-- void Backend::surfmesh(long int, long int, long int, long int) -->
-        <function-decl name='surfmesh' mangled-name='_ZN7Backend8surfmeshEllll' filepath='libnurbs/internals/backend.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-189' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-24'/>
+    </class-decl>
+    <!-- class Bin -->
+    <class-decl name='Bin' size-in-bits='128' visibility='default' filepath='libnurbs/internals/bin.h' line='44' column='1' id='type-id-152'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Arc_ptr Bin::head -->
+        <var-decl name='head' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/bin.h' line='46' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Arc_ptr Bin::current -->
+        <var-decl name='current' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/bin.h' line='47' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- Bin::Bin() -->
+        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-153' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- Bin::~Bin(int) -->
+        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-153' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-10' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-19'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- Bin::Bin() -->
+        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-153' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-1