summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2009-07-08 00:08:30 -0400
committerKohei Yoshida <kyoshida@novell.com>2009-07-08 00:08:30 -0400
commit0b1faa284cd715cd82952c7beb39669fed4c88ba (patch)
tree9ccc972c0eeaec9b7e70b0bc6b5c2770c49369cd
parentbb1812ad6ef4b19ead1fe08fd5e4596a6e6f5800 (diff)
Worked on dimension objects.
-rw-r--r--cmake/CMakeLists.txt7
-rw-r--r--inc/dpdimension.hxx30
-rw-r--r--inc/dpdimensions.hxx17
-rw-r--r--source/dpdimension.cxx27
-rw-r--r--source/dpdimensions.cxx34
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)