diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2009-07-08 00:08:30 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2009-07-08 00:08:30 -0400 |
commit | 0b1faa284cd715cd82952c7beb39669fed4c88ba (patch) | |
tree | 9ccc972c0eeaec9b7e70b0bc6b5c2770c49369cd | |
parent | bb1812ad6ef4b19ead1fe08fd5e4596a6e6f5800 (diff) |
Worked on dimension objects.
-rw-r--r-- | cmake/CMakeLists.txt | 7 | ||||
-rw-r--r-- | inc/dpdimension.hxx | 30 | ||||
-rw-r--r-- | inc/dpdimensions.hxx | 17 | ||||
-rw-r--r-- | source/dpdimension.cxx | 27 | ||||
-rw-r--r-- | source/dpdimensions.cxx | 34 |
5 files changed, 107 insertions, 8 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 5ba0bf6..e7a6552 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -24,7 +24,12 @@ set(CMAKE_C_FLAGS_DEBUG "-g -Wall") set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall") set(CMAKE_SHARED_LINKER_FLAGS "-shared -Wl,-soname,${SHARED_LIB_NAME} -Wl,--no-undefined") -set(SRC_FILES ../source/dpsource.cxx ../source/dpdimensions.cxx) +# Source files to build. +set(SRC_FILES + ../source/dpsource.cxx + ../source/dpdimensions.cxx + ../source/dpdimension.cxx +) add_library(${TARGET_NAME} SHARED ${SRC_FILES}) target_link_libraries(${TARGET_NAME} uno_cppuhelpergcc3 uno_sal uno_cppu) diff --git a/inc/dpdimension.hxx b/inc/dpdimension.hxx new file mode 100644 index 0000000..f8a3350 --- /dev/null +++ b/inc/dpdimension.hxx @@ -0,0 +1,30 @@ +#ifndef __DPDIMENSION_HXX__ +#define __DPDIMENSION_HXX__ + +#include <cppuhelper/implbase1.hxx> + +#include <com/sun/star/container/XNamed.hpp> + +namespace dpsource { + +class DPDimension : public cppu::WeakImplHelper1< + ::com::sun::star::container::XNamed > +{ +public: + DPDimension(); + ~DPDimension(); + + // XNamed + + ::rtl::OUString SAL_CALL getName() throw (::com::sun::star::uno::RuntimeException); + + void SAL_CALL setName(const ::rtl::OUString& aName) + throw (::com::sun::star::uno::RuntimeException); + +private: + ::rtl::OUString maName; +}; + +} + +#endif diff --git a/inc/dpdimensions.hxx b/inc/dpdimensions.hxx index ad518b5..cbdccb6 100644 --- a/inc/dpdimensions.hxx +++ b/inc/dpdimensions.hxx @@ -6,6 +6,14 @@ #include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> +#include <hash_map> + +namespace com { namespace sun { namespace star { + namespace container { + class XNamed; + } +}}} + namespace dpsource { class DPDimensions : public cppu::WeakImplHelper2< @@ -45,6 +53,15 @@ public: virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (::com::sun::star::uno::RuntimeException); + +private: + void init(); + +private: + typedef ::__gnu_cxx::hash_map< + ::rtl::OUString, ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >, ::rtl::OUStringHash > + DimensionMapType; + DimensionMapType maDimensions; }; } diff --git a/source/dpdimension.cxx b/source/dpdimension.cxx new file mode 100644 index 0000000..1cf7716 --- /dev/null +++ b/source/dpdimension.cxx @@ -0,0 +1,27 @@ + +#include "dpdimension.hxx" + +using ::com::sun::star::uno::RuntimeException; +using ::rtl::OUString; + +namespace dpsource { + +DPDimension::DPDimension() +{ +} + +DPDimension::~DPDimension() +{ +} + +OUString DPDimension::getName() throw (RuntimeException) +{ + return maName; +} + +void DPDimension::setName(const OUString& aName) throw (RuntimeException) +{ + maName = aName; +} + +} diff --git a/source/dpdimensions.cxx b/source/dpdimensions.cxx index 7b9bf35..1fb550b 100644 --- a/source/dpdimensions.cxx +++ b/source/dpdimensions.cxx @@ -1,5 +1,6 @@ #include "dpdimensions.hxx" +#include "dpdimension.hxx" #include <com/sun/star/container/XNamed.hpp> @@ -58,27 +59,45 @@ namespace dpsource { DPDimensions::DPDimensions() { + init(); } DPDimensions::~DPDimensions() { } +void DPDimensions::init() +{ + maDimensions.clear(); + + OUString aDimName = OUString::createFromAscii("Andy"); + Reference<XNamed> xRef(new DPDimension); + xRef->setName(aDimName); + maDimensions.insert(DimensionMapType::value_type(aDimName, xRef)); +} + Any DPDimensions::getByName(const OUString& aName) throw (NoSuchElementException, WrappedTargetException, RuntimeException) { StackPrinter __stack_printer__("dpsource/DPDimensions::getByName"); fprintf(stdout, "DPDimensions::getByName: name = '%s'\n", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr()); - return Any(); + DimensionMapType::const_iterator itr = maDimensions.find(aName); + if (itr == maDimensions.end()) + throw NoSuchElementException(); + + Any any; + any <<= itr->second; + return any; } Sequence<OUString> DPDimensions::getElementNames() throw (RuntimeException) { StackPrinter __stack_printer__("dpsource/DPDimensions::getElementNames"); - Sequence<OUString> aElemNames(3); - aElemNames[0] = OUString::createFromAscii("A"); - aElemNames[1] = OUString::createFromAscii("B"); - aElemNames[2] = OUString::createFromAscii("C"); + Sequence<OUString> aElemNames(maDimensions.size()); + DimensionMapType::const_iterator itr = maDimensions.begin(), itrEnd = maDimensions.end(); + for (sal_Int32 i = 0; itr != itrEnd; ++itr, ++i) + aElemNames[i] = itr->first; + return aElemNames; } @@ -86,7 +105,8 @@ sal_Bool DPDimensions::hasByName(const OUString& aName) throw (RuntimeException) { StackPrinter __stack_printer__("dpsource/DPDimensions::hasByName"); fprintf(stdout, "DPDimensions::hasByName: name = '%s'\n", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr()); - return false; + DimensionMapType::const_iterator itr = maDimensions.find(aName); + return (itr != maDimensions.end()); } Type DPDimensions::getElementType() throw (RuntimeException) @@ -96,7 +116,7 @@ Type DPDimensions::getElementType() throw (RuntimeException) sal_Bool DPDimensions::hasElements() throw (RuntimeException) { - return false; + return !maDimensions.empty(); } OUString DPDimensions::getImplementationName() throw (RuntimeException) |