diff --git a/Builds/VisualStudio2012/RippleD.vcxproj b/Builds/VisualStudio2012/RippleD.vcxproj
index d911a3ffc..16785ea0b 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj
+++ b/Builds/VisualStudio2012/RippleD.vcxproj
@@ -802,6 +802,12 @@
true
true
+
+ true
+ true
+ true
+ true
+
true
true
@@ -1515,6 +1521,7 @@
+
diff --git a/Builds/VisualStudio2012/RippleD.vcxproj.filters b/Builds/VisualStudio2012/RippleD.vcxproj.filters
index b3ed72bf8..a33e3e6e8 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj.filters
+++ b/Builds/VisualStudio2012/RippleD.vcxproj.filters
@@ -867,6 +867,9 @@
[1] Ripple\ripple_core\test
+
+ [1] Ripple\ripple_core\validator
+
@@ -1715,6 +1718,9 @@
[1] Ripple\ripple_core\test
+
+ [1] Ripple\ripple_core\validator
+
diff --git a/modules/ripple_core/ripple_core.cpp b/modules/ripple_core/ripple_core.cpp
index 0ce5b7668..2021c6ac9 100644
--- a/modules/ripple_core/ripple_core.cpp
+++ b/modules/ripple_core/ripple_core.cpp
@@ -62,6 +62,8 @@ namespace ripple
# include "test/ConfigType.h"
#include "test/TestOverlay.cpp"
+# include "validator/ValidatorsUtilities.h"
+#include "validator/ValidatorsUtilities.cpp"
# include "validator/ValidatorSourceStrings.h"
# include "validator/ValidatorSourceTrustedUri.h"
# include "validator/ValidatorsImp.h" // private
diff --git a/modules/ripple_core/validator/ValidatorsUtilities.cpp b/modules/ripple_core/validator/ValidatorsUtilities.cpp
new file mode 100644
index 000000000..121e1743b
--- /dev/null
+++ b/modules/ripple_core/validator/ValidatorsUtilities.cpp
@@ -0,0 +1,6 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
diff --git a/modules/ripple_core/validator/ValidatorsUtilities.h b/modules/ripple_core/validator/ValidatorsUtilities.h
new file mode 100644
index 000000000..6559a2bda
--- /dev/null
+++ b/modules/ripple_core/validator/ValidatorsUtilities.h
@@ -0,0 +1,35 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
+#ifndef RIPPLE_CORE_VALIDATORSUTILITIES_H_INCLUDED
+#define RIPPLE_CORE_VALIDATORSUTILITIES_H_INCLUDED
+
+/** Common code for Validators classes.
+*/
+class ValidatorsUtilities
+{
+public:
+ typedef std::vector Strings;
+
+ /** Turn a linear buffer of newline delimited text into strings.
+ This can be called incrementally, i.e. successive calls with
+ multiple buffer segments.
+ */
+ static void parseLines (Strings& lines, char const* buf, std::size_t bytes);
+
+ /** Parse a ConstBufferSequence of newline delimited text into strings.
+ This works incrementally.
+ */
+ template
+ static void parseLines (Strings& lines, ConstBufferSequence const& buffers)
+ {
+ for (typename ConstBufferSequence::const_iterator iter = buffers.begin ();
+ iter != buffers.end (); ++iter)
+ parserLines (lines, *iter);
+ }
+};
+
+#endif