diff --git a/aegilib/aegilib_2008.vcproj b/aegilib/aegilib_2008.vcproj
index 073471bd4..18bd01c69 100644
--- a/aegilib/aegilib_2008.vcproj
+++ b/aegilib/aegilib_2008.vcproj
@@ -40,6 +40,7 @@
/>
+
+
diff --git a/aegilib/include/aegilib/controller.h b/aegilib/include/aegilib/controller.h
index 3e6eb4e86..a807ff5d4 100644
--- a/aegilib/include/aegilib/controller.h
+++ b/aegilib/include/aegilib/controller.h
@@ -1,79 +1,79 @@
-// Copyright (c) 2008, Rodrigo Braz Monteiro
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// * Neither the name of the Aegisub Group nor the names of its contributors
-// may be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// -----------------------------------------------------------------------------
-//
-// AEGISUB/ATHENASUB
-//
-// Website: http://www.aegisub.net
-// Contact: mailto:amz@aegisub.net
-//
-
-#pragma once
-#include "athenastring.h"
-#include "tr1.h"
-#include "format.h"
-#include "api.h"
-
-namespace Athenasub {
-
- // Prototypes
- class Model;
- class ActionList;
- typedef shared_ptr ActionListPtr;
-
- // Controller class
- class Controller {
- private:
- Model &model;
-
- public:
- Controller (Model &model);
- ActionListPtr CreateActionList(const String title,const String owner=L"",bool undoAble=true);
-
- void LoadFile(const String filename,const String encoding=L"");
- void SaveFile(const String filename,const String encoding=L"UTF-8");
-
- bool CanUndo(const String owner=L"") const;
- bool CanRedo(const String owner=L"") const;
- void Undo(const String owner=L"");
- void Redo(const String owner=L"");
-
- DialoguePtr CreateDialogue() const;
- StylePtr CreateStyle() const;
-
- DialogueConstPtr GetDialogue(size_t n) const;
- DialogueConstPtr GetStyle(size_t n) const;
- StyleConstPtr GetStyle(String name) const;
- EntryConstPtr GetEntry(size_t n,String section) const;
-
- const FormatPtr GetFormat() const;
- };
-
- typedef shared_ptr ControllerPtr;
-
-}
+// Copyright (c) 2008, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+// * Neither the name of the Aegisub Group nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// -----------------------------------------------------------------------------
+//
+// AEGISUB/ATHENASUB
+//
+// Website: http://www.aegisub.net
+// Contact: mailto:amz@aegisub.net
+//
+
+#pragma once
+#include "athenastring.h"
+#include "tr1.h"
+#include "format.h"
+#include "api.h"
+
+namespace Athenasub {
+
+ // Prototypes
+ class Model;
+ class ActionList;
+ typedef shared_ptr ActionListPtr;
+
+ // Controller class
+ class Controller {
+ private:
+ Model &model;
+
+ public:
+ Controller (Model &model);
+ ActionListPtr CreateActionList(const String title,const String owner=L"",bool undoAble=true);
+
+ void LoadFile(const String filename,const String encoding=L"");
+ void SaveFile(const String filename,const String encoding=L"UTF-8");
+
+ bool CanUndo(const String owner=L"") const;
+ bool CanRedo(const String owner=L"") const;
+ void Undo(const String owner=L"");
+ void Redo(const String owner=L"");
+
+ DialoguePtr CreateDialogue() const;
+ StylePtr CreateStyle() const;
+
+ DialogueConstPtr GetDialogue(size_t n) const;
+ DialogueConstPtr GetStyle(size_t n) const;
+ StyleConstPtr GetStyle(String name) const;
+ EntryConstPtr GetEntry(size_t n,String section) const;
+
+ const FormatPtr GetFormat() const;
+ };
+
+ typedef shared_ptr ControllerPtr;
+
+}
diff --git a/aegilib/include/aegilib/range.h b/aegilib/include/aegilib/range.h
new file mode 100644
index 000000000..bd3a3dd72
--- /dev/null
+++ b/aegilib/include/aegilib/range.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2008, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+// * Neither the name of the Aegisub Group nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// -----------------------------------------------------------------------------
+//
+// AEGISUB/ATHENASUB
+//
+// Website: http://www.aegisub.net
+// Contact: mailto:amz@aegisub.net
+//
+
+#pragma once
+#include "exception.h"
+
+namespace Athenasub {
+
+ // Range class
+ class Range {
+ private:
+ size_t start,end;
+
+ public:
+ Range() : start(0), end(0) {}
+ Range(size_t _start,size_t _end) : start(_start), end(_end) {}
+
+ size_t GetLine(size_t n) const {
+ if (start+n < end) return start+n;
+ else THROW_ATHENA_EXCEPTION(Exception::Out_Of_Range);
+ }
+ size_t GetSize() const { return end-start; }
+ size_t GetStart() const { return start; }
+ size_t GetEnd() const { return end; }
+ };
+}
diff --git a/aegilib/include/aegilib/selection.h b/aegilib/include/aegilib/selection.h
index c9fd7bfb3..2086eeb4f 100644
--- a/aegilib/include/aegilib/selection.h
+++ b/aegilib/include/aegilib/selection.h
@@ -35,25 +35,10 @@
#pragma once
#include
-#include "api.h"
+#include "range.h"
namespace Athenasub {
- // Range class
- class Range {
- private:
- size_t start,end;
-
- public:
- Range() : start(0), end(0) {}
- Range(size_t _start,size_t _end) : start(_start), end(_end) {}
-
- size_t GetLine(size_t n) const;
- size_t GetSize() const { return end-start; }
- size_t GetStart() const { return start; }
- size_t GetEnd() const { return end; }
- };
-
// Selection class
class Selection {
private:
diff --git a/aegilib/src/selection.cpp b/aegilib/src/selection.cpp
index 4a4200134..b58b023a5 100644
--- a/aegilib/src/selection.cpp
+++ b/aegilib/src/selection.cpp
@@ -152,12 +152,3 @@ void Selection::RemoveSelection (const Selection ¶m)
{
(void) param;
}
-
-
-/////////////////////
-// Get line in range
-size_t Range::GetLine(size_t n) const
-{
- if (start+n < end) return start+n;
- else THROW_ATHENA_EXCEPTION(Exception::Out_Of_Range);
-}
diff --git a/aegilib/test/test_2008.vcproj b/aegilib/test/test_2008.vcproj
index 10ac41e00..896580a3f 100644
--- a/aegilib/test/test_2008.vcproj
+++ b/aegilib/test/test_2008.vcproj
@@ -139,11 +139,12 @@
/>