[brlcad-commits] SF.net SVN: brlcad:[44234] geomcore/trunk/src/libgvm
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <sta...@us...> - 2011-04-05 20:43:54
|
Revision: 44234 http://brlcad.svn.sourceforge.net/brlcad/?rev=44234&view=rev Author: starseeker Date: 2011-04-05 20:43:47 +0000 (Tue, 05 Apr 2011) Log Message: ----------- Add preliminary stab at repository_object conversion routine. Modified Paths: -------------- geomcore/trunk/src/libgvm/CMakeLists.txt geomcore/trunk/src/libgvm/mem.c Added Paths: ----------- geomcore/trunk/src/libgvm/objects.c Modified: geomcore/trunk/src/libgvm/CMakeLists.txt =================================================================== --- geomcore/trunk/src/libgvm/CMakeLists.txt 2011-04-05 19:26:47 UTC (rev 44233) +++ geomcore/trunk/src/libgvm/CMakeLists.txt 2011-04-05 20:43:47 UTC (rev 44234) @@ -6,6 +6,7 @@ SET(gvm_SRCS mem.c + objects.c repo.c ) Modified: geomcore/trunk/src/libgvm/mem.c =================================================================== --- geomcore/trunk/src/libgvm/mem.c 2011-04-05 19:26:47 UTC (rev 44233) +++ geomcore/trunk/src/libgvm/mem.c 2011-04-05 20:43:47 UTC (rev 44234) @@ -19,6 +19,7 @@ apr_allocator_max_free_set(internal->allocator, SVN_ALLOCATOR_RECOMMENDED_MAX_FREE); internal->pool = svn_pool_create_ex(NULL, internal->allocator); apr_allocator_owner_set(internal->allocator, internal->pool); + internal->objects_pool = svn_pool_create(internal->pool); /* Initialize the FS library. */ svn_fs_initialize(internal->pool); Added: geomcore/trunk/src/libgvm/objects.c =================================================================== --- geomcore/trunk/src/libgvm/objects.c (rev 0) +++ geomcore/trunk/src/libgvm/objects.c 2011-04-05 20:43:47 UTC (rev 44234) @@ -0,0 +1,30 @@ +#include "gvm.h" +#include "gvm_svn.h" + +struct repository_objects * gvm_get_repo_obj(struct gvm_info *repo_info, const char *model_name, const char *obj_name, size_t ver_num) { + apr_pool_t *subpool; + svn_filesize_t buflen; + svn_stream_t *obj_contents; + svn_fs_root_t *repo_root; + svn_fs_t *fs; + struct repository_objects *new_obj; + struct geomsvn_info *internal = NULL; + internal = (struct geomsvn_info *)repo_info->internal; + subpool = svn_pool_create(internal->pool); + new_obj = apr_palloc(internal->objects_pool, sizeof(struct repository_objects)); + new_obj->contents = apr_palloc(internal->objects_pool, sizeof(struct bu_external)); + BU_INIT_EXTERNAL(new_obj->contents); + fs = svn_repos_fs(internal->repos); + svn_fs_revision_root(&repo_root, fs, (svn_revnum_t)ver_num, subpool); + svn_string_t *svn_file = svn_string_createf(subpool, "%s/%s/%s", model_name, obj_name, obj_name); + svn_fs_file_length(&buflen, repo_root, svn_file->data, subpool); + new_obj->contents->ext_nbytes = (size_t)buflen; + new_obj->contents->ext_buf = apr_palloc(internal->objects_pool, new_obj->contents->ext_nbytes); + svn_fs_file_contents(&obj_contents, repo_root, svn_file->data, subpool); + svn_stream_read(obj_contents, (char *)new_obj->contents->ext_buf, (apr_size_t *)&buflen); + svn_stream_close(obj_contents); + svn_pool_destroy(subpool); + BU_LIST_PUSH(&(repo_info->objects->l), &(new_obj->l)); +} + + Property changes on: geomcore/trunk/src/libgvm/objects.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |