Feb 22

Infix to Postfix convertor using Stacks

public class PostfixConverter {
/* References
 * http://scriptasylum.com/tutorials/infix_postfix/algorithms/infix-postfix/index.htm
 * http://www.cis.temple.edu/~koffman/cis223/InfixToPostfix.doc
 */
    public String convertPostfix(String x) throws Exception {
        String postfixString = ""; //Set postfix string to empty string

        StackUsingLinkedList operatorStack = new StackUsingLinkedList(); //Create an empty operator stack

        for (int i = 0; i < x.length(); i++) { //Repeat unitll end of the string

            char c = x.charAt(i); //Get the next token in the infix string

            if ((!(Character.isDigit(c)) && !(Character.isLetter(c))) && !(c == ('+') || c == ('*') || c == ('-') || c == ('/') || c == ('(') || c == (')')) || (c == ' ')) {
                continue; //Used to avoid spaces and invalid characters, + - * / are not digits or characters
            }

            if (!(c == ('+') || c == ('*') || c == ('-') || c == ('/') || c == ('(') || c == (')'))) //If next token is an operand (begins with digit)
            {
                postfixString += c;    //append it to postfix string

            } else {

                while (true) {    // Repeat until the next op is pushed onto the stack.

                    //If operator stack is empty or next op is ‘(‘, push next operator onto stack
                    if (operatorStack.isEmpty() || c == '(') {
                        operatorStack.push(c);
                        break; //the operator is pushed on to the stack, no need for further processing c
                    }

                    //Else if precedence of this operator is greater than one on top of the stack then push to stack
                    else if (precedence(c) > precedence(operatorStack.top())) {
                        operatorStack.push(c);
                        break; //the operator is pushed on to the stack, no need for further processing c
                    }

                    else {

                        //For the case of brackets ---------------------------------
                        if (c == ')') {
                            while (!(operatorStack.top().toString().equals("("))) { //Pop and append until the opening bracket is reached
                                postfixString += operatorStack.topAndPop();
                            }
                            operatorStack.pop(); //remove the opening bracket, no need for it
                            break;
                        }
                        //End of case for brackets--------------------------------

                        //Then this operator has lower precedence, then top and pop the stack untill all higher operators are appened to the string
                        postfixString += operatorStack.topAndPop();

                    }
                }
            }
        }

        //At end of string, keep popping stack until stack is empty
        while (!operatorStack.isEmpty()) {
            postfixString += operatorStack.topAndPop();
        }

        //Finally return the postfix String
        return postfixString;
    }

    // The method checks the precedence of each operator
    private int precedence(Object x) {
        if (x.toString().equals("*") || x.toString().equals("/")) {
            return 2;
        } else if (x.toString().equals("+") || x.toString().equals("-")) {
            return 1;
        } else {
            return 0;
        }
    }
}

Feb 22

Postfix Expression Evaluator using Stacks

public class ExpressionEvaluator {

    StackUsingLinkedList operandStack;
    PostfixConverter pc;

    public ExpressionEvaluator() {
        operandStack = new StackUsingLinkedList(); //A stack to keep operands

        pc = new PostfixConverter(); //Used for converting to postfix

    }

    public int evaluate(String x) throws Exception {

        String postfixInput = pc.convertPostfix(x); //First convert to postfix

        int result = 0; // Initially the output is zero

        for (int i = 0; i < postfixInput.length(); i++) {
            char c = postfixInput.charAt(i);

            if (!(c == ('+') || c == ('*') || c == ('-') || c == ('/'))) {
                operandStack.push(c); //If a operand then add to stack

            } else { // If operator, then pop twice and calculate

                int b = Integer.parseInt(operandStack.topAndPop().toString());
                int a = Integer.parseInt(operandStack.topAndPop().toString());
                result = compute(a, b, c);

                operandStack.push(result); //Push the result in to the stack for further calculations

            }
        }
        return result; //Return the calculated value

    }

    private int compute(int a, int b, Character op) { // Used for mapping String characters to numerical operators

        if (op == '*') {
            return a * b;
        }
        if (op == '/') {
            return a / b;
        }
        if (op == '+') {
            return a + b;
        }
        if (op == '-') {
            return a - b;
        } else {
            return 0;
        }
    }
}

Feb 22

LinkedList with Sorting

public class LinkedList {

    public ListNode header;

    public LinkedList() {
        header = new ListNode(null); //Creates a header node with null data
    }

    //(i)
    public LinkedList concatenate(LinkedList secondList) {
        LinkedList combinedList = new LinkedList(); // Creates a new empty list which will store the combained two list's values
        LinkedList setOfLists[] = {this, secondList}; //Need to combaine this list and the secondList

        for (int i = 0; i < setOfLists.length; i++) { //Do for both lists (this and secondList)
            if (!(setOfLists[i].isEmpty())) { //To check if there is a header.next position
                ListNode current = setOfLists[i].header.next; //Goto the very first node in the list
                while (true) {  //Used to do until the end of the list is reached
                    combinedList.insertAtEnd(current.element);// Copy the element value to the combained List
                    current = current.next;// Move to the next node
                    if (current == null) {
                        break;//Reached end of list, break the while loop and move on to next list

                    }
                }
            }
        }
        return combinedList; //Finally return the combinedList which contains both the lists contents
    }

    //(ii)
    public void insertAtEnd(Object newData) {
        ListNode current = header; //Start from header
        while (null != current.next) { //Used To visit the last node in the List
            current = current.next;// Move to the next node
        }
        current.next = new ListNode(newData, null); //Insert the new node to the end of the list
    }

    //(iii)
    public void removeAtPosition(int position) {
        ListNode current = header;
        for (int i = 0; i < position; i++) { //Used to navigated to the position just before the deletion position
            if (current.next == null) {
                return;//The searched position is not found, terminate processing
            }
            current = current.next;// Move to the next node
        }
        current.next = current.next.next; //The deletion process
    }

    //(iv)
    public LinkedList sort() throws Exception {
        //Uses te Quicksort alogrythm to quicksort the List
        //Referenced from: http://en.wikipedia.org/wiki/quicksort#Algorithm

        if (isEmpty()) {
            throw new Exception("Exception in Sort, The list empty");
        }
        return quicksort(this); //Sort this list and return
    }

    //The quicksort function which is used recursively
    public LinkedList quicksort(LinkedList x) {
        if (x.header.next.next == null) //The base case of the recursion are lists of size of one, which are always sorted.
        {
            return x; //Since it is sorted return it
        }
        LinkedList less = new LinkedList(); //To store values less than pivot value
        LinkedList greater = new LinkedList(); //To store values greater than pivot value
        Object pivot = x.header.next.element; //select a pivot value which is the value compared against
        double pivotDouble = Double.parseDouble(pivot.toString()); //Conversion to Double of the pivot value
        ListNode current = x.header.next; //Start from the first node

        while (current != null) { // Do until the end of the list
            double currentDouble = Double.parseDouble(current.element.toString()); //Conversion to Double to the current value

            if (currentDouble < pivotDouble) {
                less.insertAtEnd(current.element); //If less than pivot then insert to the "less list"
            } else if (currentDouble > pivotDouble) {
                greater.insertAtEnd(current.element); //If greater than pivot then insert to the "greater list"
            }
            current = current.next; //Go to the next node
        }
        if (!less.isEmpty()) {      //If empty nothing to sort
            less = quicksort(less);  //Sorts the list which having elements having value less than the pivot value, recursively
        }
        if (!greater.isEmpty()) {   //If empty nothing to sort
            greater = quicksort(greater); //Sorts the list which having elements having value less than the pivot value, recursively
        }
        less.insertAtEnd(pivot); //Append the pivot value to end of the sorted less list
        return less.concatenate(greater); //Concatenate the "sorted less list" and "sorted greater list" and return the sorted list
    }

    /*
     *
     *
     * ----------------------General List Operations----------------------------------------------------------
     *
     *
     */

    //Will return true if List is empty
    public boolean isEmpty() {
        return header.next == null;
    }

    //Will Return a String Containing all the values stored in the List
    public String printList() {
        String contents = "";
        if (isEmpty()) {
            return "List Empty";
        }

        ListNode current = header.next;
        while (true) {
            contents += current.element.toString() + "\n";
            current = current.next;
            if (current == null) {
                break;//End of list reached,terminate processing
            }
        }
        return contents;
    }

    // Will insert a node on to the header position
    public void insertBeginning(Object newData) {
        header.next = new ListNode(newData, header.next);
    }

    // Will insert a node after the node having specific position data
    public void insertAfter(Object newData, Object positionData) {
        ListNode current = header;
        while (positionData != current.element) {
            current = current.next;
        }
        if (current == null) {
            return; //The searched position is not found, terminate processing
        }
        current.next = new ListNode(newData, current.next);
    }

    // Will remove the node after the node having specific position data
    public void removeAfter(Object positionData) {
        ListNode current = header;
        while (positionData != current.element) {
            current = current.next;
        }
        if (current == null) {
            return;//The searched position is not found, terminate processing

        }
        current.next = current.next.next;
    }
}

Feb 22

Java Code Parser Bracket Mismatch Identifier

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class Main {

       public static void main(String[] args) {
        Stack stack = new Stack();
        boolean process = true;

        int line = 0, charPosition = 0;
        char c, cArray[];
        try {
            File file = new File(args[0]);
            FileReader reader = new FileReader(file);
            BufferedReader in = new BufferedReader(reader);
            String string;

            ProcessLine:
            while ((string = in.readLine()) != null) {
                line++;
                cArray = string.toCharArray();

                ProcessChar:
                for (int i = 0; i < cArray.length; i++) {
                    charPosition = i + 1;
                    c = cArray[i];

                    //Identify Comments

                    if (c == '/' && i + 1 != cArray.length && cArray[i + 1] == '/') {
                        continue ProcessLine;
                    }
                    if (c == '/' && i + 1 != cArray.length && cArray[i + 1] == '*') {
                        process = false;
                    }
                    if (c == '*' && i + 1 != cArray.length && cArray[i + 1] == '/') {
                        process = true;
                    }

                    if (process) {

                        //Adding to the stack opening brackets
                        if (c == '{' ||
                                c == '(' ||
                                c == '[') {
                            stack.push(c + "," + line + "," + charPosition);
                        }

                        if (c == '}' || c == ')' || c == ']') {
                            if (stack.isEmpty()) {
                                System.out.println("Character unmatch occured at Line:" + line + " Character:" + charPosition + ":: No matching character can be found");
                                continue ProcessChar;
                            }

                            String stackChar = (String) stack.pop();

                            if (c == '}' && !((stackChar.split(","))[0]).equals("{")) {
                                System.out.println("Character missmatch occured at Line:" + line + " Character:" + charPosition + ":: Expected character { is not found but the character " + ((stackChar.split(","))[0]) + " was found of Line:" + ((stackChar.split(","))[1]) + " Character:" + ((stackChar.split(","))[2]));
                            }

                            if (c == ')' && !((stackChar.split(","))[0]).equals("(")) {
                                System.out.println("Character missmatch occured at Line:" + line + " Character:" + charPosition + ":: Expected character ( is not found but the character " + ((stackChar.split(","))[0]) + " was found of Line:" + ((stackChar.split(","))[1]) + " Character:" + ((stackChar.split(","))[2]));
                            }

                            if (c == ']' && !((stackChar.split(","))[0]).equals("[")) {
                                System.out.println("Character missmatch occured at Line:" + line + " Character:" + charPosition + ":: Expected character [ is not found but the character " + ((stackChar.split(","))[0]) + " was found of Line:" + ((stackChar.split(","))[1]) + " Character:" + ((stackChar.split(","))[2]));
                            }
                        }
                    }
                }
            }
            in.close();
            if (!stack.isEmpty()) {
                System.out.println("Reached the end of file while phrasing, there are remaining unclosed brackets");
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Aug 12

Nokia PC Phone

Nokia PC Phone is an experimental service that gives you the ability to use your mobile phone from your web browser.

You can call, text, and manage contacts from your phone – all through your PC!

The great thing about Nokia PC Phone is that you can use it to communicate with friends and family even though they don’t have the Nokia PC Phone themselves. No one will be able to tell the difference because your calls and text messages are actually made from your own Nokia phone.

This application has been archived. Nokia will not continue PC Phone development as a standalone application. Thanks everyone for your valuable feedback!

Download
http://nds1.nokia.com/NOKIA_COM_1/Microsites/BetaLabs/applications/apps/PCPhone_install_1.2.2078.exe

Mirrors
http://www.filefactory.com/file/ah1bff5/n/PCPhone_install_1_2_2078_rar
http://www.megaupload.com/?d=91BCDBB4
http://depositfiles.com/en/files/scoj7wi24
http://www.zshare.net/download/6401416611f85d9a/
http://hotfile.com/dl/10098966/0342775/
http://www.badongo.com/file/16538406
http://uploadmirrors.com/download/ZCJIGK8B/PCPhone_install_1.2.2078.rar

Mar 27

Visual C++ Toolkit 2003 Download

Extract From: http://msdn.microsoft.com/en-us/library/aa290065.aspx

The Visual C++ Toolkit 2003 package is designed to enable developers to build and test applications with the full optimizing compiler that ships with Visual Studio .NET 2003. This package isn’t a substitute for the full version of the product; rather, it’s a subset that lets you evaluate and explore the optimizing compiler. In addition, it will let you build small applications suitable for academic study. I’ve written this article to help readers who are very new to C++ learn how to use the Visual C++ Toolkit 2003 compiler from the command line to build simple applications.

The Visual C++ Toolkit 2003 doesn’t contain any sort of IDE, and so you’ll need to build applications using the compiler the old fashioned way, with a text editor and command prompt. In this article, I’ll outline the steps that you need to take to build and run applications with the Visual C++ Toolkit 2003 using only Notepad and a command prompt.

Download:

http://www.filewatcher.com/m/VCToolkitSetup.exe.32952488.0.0.html

ftp://ftp.drenik.net/programiranje/programski-jezici/VCToolkitSetup.exe

ftp://ftp.jaring.my/pub/microsoft/vctoolkit/VCToolkitSetup.exe

ftp://ftp.qut.edu.au/pub/mirrors/microsoft/vctoolkit/VCToolkitSetup.exe

Mar 06

Online Any Sinhala Font to Sinhala Unicode Converter

I found a great resource recently,

You can copy and paste any article written in Sinhala from any font and then it will convert to Sinhala Unicode.

Check it out,

http://www.ucsc.cmb.ac.lk/ltrl/services/feconverter/

An outstanding performance by UCSC.

Thank you.

Mar 06

මිරිසවැටියෙන් නිරූපිත ඓතිහාසික සන්ධිස්ථානය

මිරිසවැටි චෛත්‍යයෙන් නිරූපිත ඓතිහාසික සන්ධිස්ථානය

මිරිසවැටි චෛත්‍යය යන වචනයෙන් වැඩිමහලු පරම්පරාවට ඇතිවන චිත්තරූපය වන්නේ 1988 ට ප්‍රථම තිබූ දේවතාකොටූව හා කොත්කැරැල්ල නැති කෝම්පිටිටූවක් බඳු ස්ථූපයකි. නමූත් බාල පරම්පරාව අද දකින මිරිසවැටිය වන්නේ ඕනෑම විහාරස්ථානයක ඇති වර්ගයේ සූදුපාට ගෑ සාමාන්‍ය චෛත්‍යයකි. මහාවංශයට මිරිසවැටිය ගැන කියනවිට පටලැවීමක් ද සිදුවී ඇත. සේසත් එසවූ මඟුලින් සත් දිනකට පසූ දියකෙළි සඳහා ගිය දුටූගැමූණූ රජූ (ගාමිණී අබය) ආපසූ ඒම සඳහා කුන්තායූධය (අද පාර්ලිමේන්තුවේ සෙන්කෝළය බඳු ආධිපත්‍යයේ සංකේතය) වැඩම කරවීමට උත්සාහ කළ විට එය පොළොවට ඇලී එසවිය නොහැකි විය. එබැවින් ඒ වටකර දාගැබක් සෑදීය. (මහාවංශය 26(13) එහෙත් මිරිසවැටි චෛත්‍යය භිකෂූ සංඝයාට පූජා කරන අවස්ථාවේදී රජූ ප්‍රකාශ කර ඇත්තේ වෙනත් දෙයකි. එනම් සංඝයා සිහි නොකර (දන් නොදී) මිරිසවැටියක් (මිරිස් මාළුවක්) අනූභව කළ නිසා ඊට දඬූවමක් ලෙස මිරිස්වැටිය සැදූ බවය. (මහාවංශය 26(17) ලංකාවේ ඉතිහාසඥයන් බව කියන විශ්වවිද්‍යාල වැටූප් ලබන ඉතිහාස මහාචාර්යවරුනට මෙය වැදගත් සාධකයක් නූවූවද අප වැනි ඉතිහාස ගවේශකයන්ට එය වැදගති.

mirisawatiya

ලංකා ඉතිහාසය වංශ කතා ස්වරූපයෙන් ලියැවී ඇත. එහිදී සැලකිල්ලට ගෙන ඇත්තේ සිදුහත් කුමරුන්ගේ ශාක්‍ය වංශයෙන් පැවතෙන රජ පරපූරක් ලංකාවේ පැවති බවකි. එබැවින් එය “මහාවංශය” විය. “මහතං වංසො පවෙණි මහාවංසො” යනූවෙන් බූද්ධාදී මහෝත්තමයන්ගේ වංශය පරම්පරාවෙන් පරම්පරාවට ආ ප්‍රවේණි මහාවංසය ලෙස දක්වන බව නොසඟවා ප්‍රකාශයක් කර ඇත. ඒ අනූව සිද්ධාර්ථ කුමරුන්ගේ ශාක්‍ය රජ පරම්පරාව නොවන ලංකාවේ සිංහල රජ පරපූර සිද්ධාර්ථ කුමරුන්ගේ කපිල වස්තු රජ පරපූරම බවට පෙන්වීමට ව්‍යාජ කතා ගෙතීමට සිදුවී ඇත.වංශ කතාවක ආකෘතියක් තුළට ලංකා ඉතිහාසය ඇතුළු කළේ ඇයි ද යන්න පළමූව බැලිය යූතුය.

1947 දී ඉන්දියාව නමැති පෙඩරල් සමූහාණ්ඩූවක් බිහි වූවද ඉන් පෙර ඉන්දියාව නමැති රටක් නොවීය. යූරෝපය තරම් විශාල වූ ඉන්දියානූ අර්ධමහාද්වීපය තුළ රටවල් ගණනාවක් විය. විවිධ භාෂා කතා කළ විවිධ ජාතීන් ගණනක් මෙම රටවල වූහ. නමූත් “හින්දු” නමැති සංස්කෘතික සමානත්වයක් වූයේ යූරෝපයේ ක්‍රිස්තියානි සංස්කෘතික සමානත්වයට අනූරූපවය. මේ නිසා යූරෝපය ද අද “යූරෝපීය යූනියනය” ලෙස එකම රාජ්‍යයක් වෙමින් පවතී. මෙසේ ඉන්දියානූ ජාතියක් නොවීම නිසා ඓතිහාසික තොරතුරු සංග්‍රහ කර තැබීම සිදු වූයේ රාජ පරම්පරා නොහොත් රාජවංශ අනූවය. මෙම අවශ්‍යතාව හේතුකොට ගෙන භාරතීය රාජ්‍යවල ඉතිහාස පූවත් ලියැවූණේ රාජවංශවල කතා ප්‍රවෘත්ති ලෙසටය. ඒවාට වංශ කතා යැයි කියනූ ලැබේ. ලංකාවේ ඉතිහාසය ද මෙම වංශ කතා ආකෘතිය තුළට ඇතුළු කිරීම තුළින් මහාවංශය ලියැවී ඇත.

වංශ කතා හැමවිටම මහා කාව්‍ය ස්වරූපයක් ගැනීම කළේය. දණ්ඩීන්ගේ කාව්‍යාදර්ශයේ ඊට අවශ්‍ය මූල්ම උපදේශයන් ඇත. මහා කාව්‍යයක් හැමවිටම වීරයකුගේ වංශය සමග බැඳී තිබිණි. මහාවංශය කෘතියේ එම වීරයා වන්නේ දුෂ්ටගාමිණි ලෙස අන්වර්ථ නමක් දුන් ගාමිණී අබය රජතුමාය. ඓතිහාසික පූද්ගලයකු බවට සාකෂි නැති දෙවනපෑතිස් රජූ ද ඊට අඩූ වීරත්වයකින් වර්ණනා කරනූ ලැබ ඇත. මෙහිදී සඳහන් කළ යූතු කරුණක් වන්නේ ඉන්දියානූ ජාතියක් නොසිටි ඉන්දියාවේ වීරකාව්‍ය රටාව ලංකා ඉතිහාසය ලිවීමට යොදා ගැනීමෙන් අවූල් ජාලාවක පැටලී ඇති බවය. සිංහල රාජ වංශය කපිලවස්තු ශාක්‍යයන්ගේ වංශය කිරීමට ගොස් පැටලුන ආකාරය විමසා බලමූ.මහාවංශය පවසන පරිදි “ලෝක නායක වූ ශාස්තෘ තෙම දියවැසි වූද ගොඩවැසි වූද අසූ කෙළක් නාගයන් තුන් සරණයෙහි ද, ශීලයෙහි ද පිහිටූ වූ සේක. (1(6) දියවැසි යනූ යාත්‍රික (නාවික) වෙළෙඳුන්ය. ගොඩවැසි යනූ ගොඩබිම වෙළෙඳුන්ය. මෙය සිදු වූණේ බූද්ධත්වයෙන් පස් වැනි වසරේ බූදුන් නාගදීපයට වැඩි අවස්ථාවේදීය. ලංකාවේ දීපවංශයටත් මහා වංශයටත් සියවස් ගණනාවකට පෙර ලියූ සංස්කෘත මහායාන ග්‍රන්ථයක් වන “දිව්‍යාවදානයේ” කිය වෙන පරිදි මහියංගනය අසල දූවේගල නාග භවනයට නාගයන් විසින් කැඳවා ගෙන ගිය සැරියූත් තෙරුන්ගේ ශිෂ්‍ය සංඝරක්ඛිත තෙරුන් විසින් නාග දරුවන් තුන් දෙනකුට සඟ විනය උගන්වා පාඩම් කරවා ඇත. මෙය සත්‍යයක් බව ඔප්පූ වන්නේ දූවේගල ඇති සෙල්ලිපිය නිසාය. (ෂබිජරසචඑසදබි දෙ ජැහකදබ ඩදකථ ෂ පොතින් උපූටා දක්වන සෙල්ලිපිවල අංක මින් මතුවට ෂගකග අංක ලෙසට දක්වනූ ලැබේ.) ෂගකග 2707 1•2 ක් උසට කෙටූ නැවක රූපයක් ද මේ සමග ඇත. “මඩූකසලිය පූගියන” නමැති නැව් සමාගමේ (ෂගකග ංජසං පිටූව) නැව් ලාංඡනය ද මෙහි කුඹගස මූදුනේ ඇත. “භාරත සංඝරකඛිතගේ ලෙන” යනූ ලිපියේ අර්ථයයි. අසූ කෙළක් යන අතිශයෝක්තියෙන් කියන්නේ විශාල සංඛ්‍යාවක් වෙළෙඳුන් හා නාවිකයන් බූදුන් දවස තිසරණ පන්සිල්හි පිහිටිය බවය. එබැවින් පරිනිර්වාණය දිනයේ පැමිණි විජය හා පිරිසගෙන් ලංකාව මනූෂ්‍ය වාසයක් වූ බව පැවසීම මහාවංශයේම අනිත් කියූම්වලින් හා බාහිර සාකෂිවලින් නිෂේධ වී යයි.
දරන දූවේගල ලෙන් ලිපිය පවසන්නේ “බරතසඟරකිත්‍ය ලෙනෙ…” යනූවෙනි. අඩි

රුහූණෙහි වූ “ගෝශීර්ෂවන්දන” වනයේ සඳුන් දැව ගෙන ගොස් පූරාණ වෙළෙන්දා විසින් සූප්පාරකහි (සොපාරා) කුටියක් සාදා බූදුන්ට පිදීම ද දිව්‍යාවදානයේ සඳහන්ය. මෙම පූරාණ වෙළෙන්දා පසූව පැවිදි වී පූණ්ණ තෙරුන් විය. “කාම්බෝජ පූගියන” නම් නැව් සමාගම (ෂගකග ංජසංඃ පූණ්ණගේ මවූ පාර්ශ්වයේ සමාගමකි. කැලණිතිස්ස විහාරමහදේවී පරම්පරාව මෙම සින්ධූ දේශයේ මූලය පිහිටි නාග (නාවික) පරම්පරාවක් විය හැක. බෝවත්තෙගල, කොටා දැමූහෙල, මොටිටයාතල්ලු ප්‍රධාන කොට ඇති විහාරමහදේවී පරම්පරාවේ සෙල්ලිපිවල අකෂරයන් වන්නේ ප්‍රින්සෙප් විසින් “බ්‍රාහ්මී” ලෙස හැඳින් වූ අකෂරයන්ය. මේවායේ ඇති බ්‍රාහ්මී නොවන (බදබඃඊර්යපසැඃ සංකේත අතර මීන සංකේත වර්ග 10 ක් නැංගුම් සංකේත වර්ග 11 ක් ඇත. (ෂගකග ංංඩසඃ කැලණි වරාය (පානම හා කුමන අතර) මෙම අයගේ වෙළෙඳ බලය පිහිටි මහා වරාය විය. පූණ්ණ වෙළෙන්දා පැවිදි වී රහත් වූ පසූ සූනාපරන්තයේ පූණ්ණ තෙරුන් ලෙස හැඳින්විණ. ඔහූ විසින් සඳුන් දැව ලබාගත් වනාන්තරය හිමි රකුස් ග්‍රාමණී වනාහී දමරජ (යමකාල) පෙළපතට අයත් රාවණගේ මවූ පාර්ශ්වයට සම්බන්ධ අයෙකි. මේ සියලු දෙනා නාග (නාවික) ලෙස හැඳින්විණි. ගිනිකොණ දිග ලංකාවේ නාග ආධිපත්‍යය බිඳ වැටී යන්නේ බූද්ධකාලීනව සිදුවූ සූනාමියක් සහිතව ගොඩබිම කලාපය මූහූදට ගිලා බැසීම හේතුවෙනි.

කැලණිතිස්ස රජූන් දවස සිදුවූ මෙම විනාශය ගැන ඊජිප්තුවේ ඇලෙක්සැන්ඩ්‍රියා නාවූක විශ්වවිද්‍යාලයේ වාර්තා තිබූ අතර දැන් ඒවා ඇලෙක්සැන්ඩ්‍රියා ජාතික කෞතුකාගාරයේ ඇත. අදත් පානම ප්‍රදෙශයේ මෙම මූහූද ගොඩගැලීම ගැන පරම්පරාගතව ආ ජනශ්‍රැති ඇත. දින 7 ක්ම මූහූද ගොඩ ගැලූ බව එම ජනප්‍රවාදවල කියවේ. 2004 දෙසැ. 26 දා සූනාමිය මේනිසා කල් ඇතිව දැනගත් පානම ජනතාව උස්බිම්වලට ගොස් දිවි ගලවාගත් බව ජනමාධ්‍ය එම දිනවල වාර්තා කරන ලදී.

මෙම ඓතිහාසික තොරතුරු යටපත් කරමින් මහාවිහාර වංශ කතාව වූ මහා විහාර අටිඨකතාවේ ඇත්තේ සිදුහත් කුමරුගේ ඥාති අමිතෝදන රජූගේ මිණිබිරිය වූ භද්‍රකච්චායනාගේ දුවගේ හා මූණූපූරකු වූ දීඝායූ කුමරුගේ පූතකු වන උන්මාද චිත්‍රාගේ හා දීඝ ගාමිණීගේ පූත් පණ්ඩූකාභයගෙන් අනූරාධපූර රාජ්‍යය හා සිංහල රාජවංශය ඇති වූ බවකි. විජයට දරුවන් නොවූ නිසා පඬූවස්දෙව්ගේ කාලයේදී ඔහූගේ බිසව වන භද්‍රකච්චායනාගේ පරපූරට රාජ්‍යත්වය යන්නේ පණ්ඩූකාභය මගිනි. මෙම කතාන්තරය ගොඩනංවා ඇත්තේ සත්‍ය ඓතිහාසික සිදුවීමක් ආශ්‍රයෙනි. සෙල්ලිපිවල දැක්වෙන අයූරු කො(චො) රිකිය මහතිය නමැති අමිතෝදනගේ පූතකු ලංකාවේ නැගෙනහිර වෙරළ අසල පදිංචි විය. ෂගකග 350 දරන ඊචලම්පත්තුහි ලිපියේ මොහූගේ බිරිය කළ ලෙන් පූජාවක් ගැන කියවෙන අතර දීඝවාපිය අසල කලිඕඩේහි ඇති ලිපියකින් චොරිකිය මහතිස යනූ සීහහනූගේ පූත් අමිතෝදනගේ පූත්‍රයා බව කියැවේ. මෙය ඇසූරින් මනංකල්පිත අමිතෝදන මූණූපූරා වන දීඝායූ හා ඔහූගේ පූත් දීඝ ගාමිණී ද, මනංකල්පිත මිණිපිරිය වන භද්‍රකච්චායනා හා ඇගේ දුහිතෘ උන්මාද චිත්‍රා ද මහාවංශ කර්තෘ විසින් නිර්මාණය කර ඇත. එම කො(චො) රිකිය මහතිස හෙළ සමාජය තුළ ගිලී ගියා මිස සිංහල රජ පරපූරක් ආරම්භ කළේ නැත. දීපවංශයේදී “කච්චානා” නමැති අමිතෝදන මිණිපිරිය මහාවංශයේදී භද්‍රකච්චායනා වී ඇත. දීපවංශය හා මහාවංශය අයත් වන්නේ එකම මහාවිහාර සාහිත්‍ය සම්ප්‍රදායටය.

විජය කුමරුගේ පටන් දුටූගැමූණූ දක්වා සිටි මහාවංශ රජ පරපූරේ එකදු රජකුගේ සෙල් ලිපියක් තවම හමූ වී නැත. ලෙනක් සඟුනට පූජා කරන විට අනිවාර්යයෙන්ම එම පූජාව ගැන සෙල් ලිපියක් කෙටීම සම්ප්‍රදායක් වූ අතර දෙවනපෑතිස් රජූ මිහින්තලයෙහි ලෙන් 68 ක් සාදා සංඝයාට පූජා කළ බව මහාවංශය පවසයි. නමූත් කිසිදු දෙවනපෑතිස් සෙල් ලිපයක් මිහින්තලයේ දක්නට නැති නිසා එම ප්‍රවෘත්තිය විශ්වාස කළ නොහැක.

ගාමිණී අබය (මහාවංශ දුටූගැමූණූ) රජූගේ පරම්පරාව ගැන සෙල්ලිපි ප්‍රකාශ කරන දේ මීළඟට විමසා බලමූ. මාගම රාජ පරපූර ඇරඹූණේ දෙවනපෑතිස් රජූගේ බාල සොහොයූරු හා රුහූණට පලාගිය මහානාග යූව රජූගෙන්ය යන මතය පහසූවෙන්ම නිෂේධ වේ. සෙල්ලිපි 4 ක් ඇසූරෙන් පමණක් මෙම පරපූර දක්වන්නේ ලිපිය දීර්ඝවීම වැළැක්වීමටය.

1. දුටූගැමූණූ පරපූරේ ආදිතමයා ලෙස සෙල්ලිපි මගින් හැඳින ගැනීමට ඇත්තේ සූමන (සමන්) ය. ෂගකග 1035 තෝරමයිල්ලෑව ලිපිය මෙසේ කියයි. “මහරජන පනිත බඩකරික පරුමක සූමනහ…” පනිත මහරජූගේ භාණ්ඩාගාරික පරුමක සූමනගේ…. යනූ එහි අර්ථයයි. සූමන රෝහණයේ පාලකයා සහ “දීපරාජ මහරජ පණිතගේ” මූදල් ඇමැති ද විය. සමනලගිර “රෝහණ පබ්බත” ලෙස සඳහන්ය. සූමනගේ වරාය සමන්තොට (සමන්තුරේ) විය.

2. සූමනට පූතුන් 10 ක් විය. ඉන් වැඩිමලා දමරජය. දම රජූ යන්න පූද්ගල නාමය ද නැතිනම් තනතුරු නාමය ද යන්න පැහැදිලි නැත. බූදුන් මහියංගනයට වඩින අවස්ථාවේදී දමරජ ද පාලකයකු විය. ෂගකග 549 ලිපිය මෙසේ කියයි.

“සූමන පූත දස බතිකනෙ ජෙට සව ජෙටූහ පූත දමරජ පූත මහතිය අය කරිත ඉම ලෙනෙ මහසූදසූන සගස දිනෙ…” සූමනගේ පූතුන් වන දස බෑයන් අතුරින් වැඩිමලා වන දම රජූගේ පූත් මහතිස අය විසින් කරවන ලද මේ සූදර්ශන නම් ලෙන මහා සංඝයාට දුනි යනූ අර්ථයයි. මහාවංශයේ එන පඬූවස්දෙව් රජූගේ පූතුන් දස දෙනා සහ වැඩිමලා වූ මධ්‍යස්ථ මතධාරී අභය මේ ඇසූරින් නිර්මාණය වන්නට ඇත. මෙම දස බෑයන් වාණිජ වෙළෙඳුන් බව ෂගකග 487 ලිපියෙන් කියැවේ. ඔවූන්ගේ වරාය කැලණිය බව (කුමන හෝ පානම අසල ගිණිකොන ලංකාවේ) ඇලෙක්සැන්ඩ්‍රියා (ඊජිප්තු) කෞතුකාගාරයේ වාර්තා පවසයි. මහාවංශයේ කැලණිතිස්ස බවට පත්වී ඇත්තේ මෙම දමරජූගේ පූත් මහතිස අය වේ.

3. දෙවනපෑතිස් රජූගේ බාල සොහොයූරු වූද රුහූණට පලා ගොස් මාගම රජ පරපූර පිහිටූවූවා වූද මහානාග යූවරජූ නිර්මාණය කළේ කුමන ඓතිහාසික පූද්ගලයා හා ඓතිහාසික සිදුවීම ඇසූරින් ද යන්න ෂගකග 487 ලිපිය පැහැදිලි කරයි.

“දසබතික නවිනය උපරාජ නාග උපරාජ නාගහ මරුමකණකෙ මහපසදික අබය රජන පූත ගමිණි තිසහ විහර අගත අනගත බිකුසගස නියතෙ…” දසබතිකයන්ගේ නාවික නායකයා උපරාජ නාගය. උපරාජ නාගගේ පූත් මහපසාදික අබය රජූගේ පූත් ගාමිණී තිස්සගේ විහාරය පැමිණි නොපැමිණි සියලු භිකෂූ සංඝයාට නියත ලෙස දුනි යනූ එහි අර්ථයයි.

මහපසාදික අබය යනූ නිශ්චිත ලෙසම ගෝඨාභය රජූය. ඔහූගේ පූත් ගාමිණි ධූරන්ධර තිස්ස යනූ නිශ්චිත ලෙසම කාවන්තිස්සය. දසබෑ රජවරුන් ඝාතනය කළේ ගෝඨාභය බව ධාතුවංශය කියයි. එම අකුසලය ගෙවීමට විහාර ගොඩනැඟිලි සිය ගණනක් ගොඩනැංවීම නිසා ඔහූ මහාපාසාදික යන අන්වර්ථ නම ලදී. මේ අනූව යූවරජ නාග (මහානාග යූවරජූ) යනූ දෙවනපෑතිස්ගේ සහෝදරයෙක් නොව දසබතිකයන්ගේ නාවූක හමූදාපති වේ. ඔහූ දමරජ ප්‍රමූඛ දස බෑ රජූන් වෙතින් ඉවත්ව ගොස් මාගම රජ පෙළපත පිහිටූවීමේ ඓතිහාසික සිදුවීම මහාවංශය විසින් මහානාග යූවරජකු රුහූණට පලාගොස් මාගම රජ පරපූර පිහිටූවීම ලෙසට නිර්මාණය කර ඇත.

දමරජ පරපූරේ උරුමය දුටූගැමූණූට හිමි වූ අයූරු

සූමන දමරජඋපරාජ නාග

V V

මහතිස අය
මහපසදික අබය

(කැලණිතිස්ස) (ගෝඨාභය)

V V

අබිසවෙර + ගාමිණී තිස්ස

(විහාරමහදේවි) (කාවන්තිස්ස)

දුටූගැමූණූ

(ගාමිණි අබය)

4. කාවන්තිස්ස රජූ හා විහාරමහාදේවි කුමන පරම්පරාවලට අයත් ද යන්න ෂගකග 621 ලිපියෙන් පැහැදිලිවේ. “පිත මහරජහ බඩ කරික පරුමක සූමනහ පූත පරුමක චෙමස ලෙනෙ රකඛ තිසහ රකඛයයි නියතෙ අගත අනගත චතුදිශ ශගශ…” අර්ථය වන්නේ “පණිත මහරජූගේ භාණ්ඩාගාරික පරුමක සූමනගේ පූත් පරුමක චෙමසගේ ලෙන තිස්ස රජූගේ බිසව විසින් ආවා වූද නොආවා වූද සතරදිග මහා සංඝයාට නියත වශයෙන්ම දුනි” යන්නය. මෙහිදී රජූ නොව බිසව වැදගත් වන්නේ දමරජ පරපූරේ උරුමය කාවන්තිස්සට නොව විහාර මහාදේවියට හිමිවීම නිසාය. චෙමස යනූ විහාරමහාදේවියගේ සීයා කෙනෙකි. පිත මහ රජූ යනූ වලගම්බා යනූවෙන් මහාචාර්ය පරණවිතානයන් ඉදිරිපත් කර තිබූ මතය ද මින් නිෂේධ වී ඒ පණිත මහරජූ බව ඔප්පූ වේ. ඔහූ මහ රජකු වන බව හා දීපරාජ බව ෂගකග 37 දරන මිහින්තලය ලිපියෙන් පැහැදිලි වේ. උත්තිය මහරජකු ද මෙම මිහින්තලේ ලිපි අතර ඇත. ඔහූ ද දමරජ පරපූරේ අයෙකි. කැලණිතිස්ස බිසවට හසූන්පත් යැව්වේ මොහූ විය හැක.

මේ අනූව සූමනගේ පරම්පරාවේ දමරජ උරුමය දුටූගැමූණූට ඒමේ පරම්පරා 3 ක කාලයක් තුළ සිදුවී ඇත. එක පරම්පරාවකට අවූරුදු 30 ක කාලයක් දුන්නොත් ඒ අවූරුදු 90 තුළ සිදුවීමකි. බූදුන් මහියංගනයට වැඩම කර අවූරුදු 44 ක් ජීවමානව වැඩ විසූ නිසා බූද්ධ වර්ෂ 45 ට ප්‍රථම දුටූගැමූණූ රජ වන්නට ඇත. ඓතිහාසික සිදුවීම්වලට සමාන්තරව කතාවක් නිර්මාණය කළ මහාවංශ කර්තෘ එය අවූරුදු 383 ක කාලයක් දක්වා ඇද දීර්ඝ කරයි. මූඨසීව රජ වී අවූරුදු 152 කට පසූ ඔහූගේ බාල පූත් අසේල රජවීම වැනි අස්වාභාවික ආයූෂ මටිටම් දක්වා යෑමට මහානාම හිමියන්ට සිදුවී ඇත්තේ මේ නිසාය.

දස බතිකයන් දවස ඔවූන්ගෙන් කැඩී ගොස් වෙනම රාජධානියක් පිහිටූ වූ උපරාජ නාග පූත් ගෝඨාභය විසින් දස බෑ සොහොයූරන් මැරීම මහාවංශයේදී උන්මාද චිත්‍රාගේ පූත් පණ්ඩූකාභය කුමරු තම මයිලනූවන් 9 දෙනා මැරීමක් බවට පත් විය. මෙම විරසකය පෑහී සමගි වූණේ කාවන්තිස්ස හා විහාරමහාදේවී විවාහය නිසාය. මීට සමාන්තරව මහාවංශ කර්තෘ මහානාම හිමි විසින් බූද්ධ වංශයේ අමිතෝදන පරපූරට ලංකාවේ රාජ්‍යත්වය හිමි කරදීම දක්නට ඇත.

අමිතෝදන

භද්‍ර(කච්චාන) දීඝායූ

උන්මාද චිත්‍රා + දීඝගාමිණී

පණ්ඩූකාභය

අමිතෝදන පරපූරට මහාවංශය ලංකාවේ රාජ්‍ය උරුමය ලබාදුන් අයූරු

මහාවංශ කර්තෘට මෙවැනි දෙයක් කීමට අවශ්‍ය වූණේ ථෙරවාදී බූද්ධ ශාසනය ස්ථාපිත වූ රට ලංකාව වීම නිසාය. බූදුන්ගේ දේශයේ පිළිගැනීමට ලක් නොවී පිරිහී ගිය ශාසනය පිහිටූ වූණේ අනූරාධපූර අගනූවරෙහිය. මෙම ඓතිහාසික සත්‍යය ඉන්දියානූ ආකෘතියේ වංශ කතාවක් කරන්නට යෑමේදී එම වංශය බූද්ධ වංශය කිරීමට සිදු විය. අමිතෝදන පූත් චොරිකිය මහතිස ශාක්‍යඃකෝලිය යූද්ධය නිසා නැගෙනහිර ලංකාවට ඒම අමිතෝදන මූණූපූරන් හා මිණිපිරිය ලංකාවට අවූත් ශාක්‍ය රාජ වංශයක් ඇති කිරීම බවට පත් කළේය. මෙවැනි හපන්කමක් කිරීමට මහාවංශ කර්තෘට හැකි වූණේ දුටූගැමූණූ රජූ විසින් මවූ පාර්ශ්වයෙන් ලැබූණූ දමරජ පරපූරේ ආධිපත්‍යය යටපත් කර දමා බෞද්ධ ආධිපත්‍යය භාරගැනීම නිසාය. මහා විහාරය එය සැලකුවේ බූද්ධ වංශයේ ආධිපත්‍යය මෙරට ස්ථාපිත වීම ලෙසය. එහි කතා පූවත මිරිසවැටිය මගින් සංකේතවත් කර දක්වා ඇත.

මිරිසවැටිය දුටූගැමූණූ රජූගේ පළමූ වැනි චෛත්‍යයයි. එය දේවතා කොටූවක් හෝ කොත් කැරැල්ලක් නැති කෝම්පිටිටූවකි. වෙනත් වචනවලින් කිවහොත් සොහොන් ගැබකි. එහි නිධන් කළේ දුටූගැමූණූ රජූට රාජ්‍ය උරුමය හිමි කරදුන් දමරජ (යමකාල) පරපූරේ කුන්තායූධයයි. එසේ කරන්නට සිදු වූයේ බෞද්ධ භිකෂූන් ප්‍රධාන බූදු සසූනේ ආධිපත්‍යය දුටූගැමූණූ රජූ විසින් පිළිගැනීම නිසාය.

මහාවංශය පවසන පරිදි සේසත් ඔසවන ලද මඟුලින් සත් දවසක් ගිය තැන කෂත්‍රිය චාරිත්‍රය පරිදි ජල කී්‍රඩා කිරීමට රජූ සපිරිවරින් තිසා වැවට ගියේ වැව මනා ලෙස සරසා තිබියදීය. රජූගේ සියලු පරිභෝජ භාණ්ඩ හා පඬූරු බිම තැබූ පසූ කුන්තායූධය උසූලන රාජ පූරුෂයෝ එය සෘජූ කොට බිම තැබූහ. දියකෙළි අවසන් වී ආපසූ යෑමට කුන්තායූධය වැඩමවීමට උත්සාහ කළ විට එය පොළොවට ඇලී උඩට එසවීමට නොහැකි විය. එය දැක සතුටූ වූ රජූ ඒ වටා දාගැබක් නොහොත් සොහොන් ගැබක් කරවීය. (මහාවංශය 26(6ඃ14) ඊට තුන් අවූරුද්දක් ගත විණ. දාගැබ සංඝයාට පූජා කරන අවස්ථාවේදී රජූ ප්‍රකාශ කළේ වෙනත් දෙයකි. සංඝයා සිහි නොකොට (දන් නොදී) මිරිස් වැටියක් (මිරිස් මාළුවක්) අනූභව කිරීමේ වරදට තමනට දඬූවම ලෙස මිරිසවැටි දාගැබ ගොඩනැංවූ බවය. (මහාවංශය 26(17ඃ18) මෙවැනි එකකට එකක් පටහැනි කතා දෙකක් කීමට මහාවංශ කර්තෘ පෙළඹූණේ ඇයි?

විහාරමහාදේවියගේ දමරජ පරපූරේ බල දණ්ඩ නොහොත් කුන්තායූධය නොහොත් රාජ යෂ්ටිය නැංගුරම් හැඩයෙන් යූක්ත වන්නට ඇත. බ්‍රාහ්මී ලිපිවල ඇති බ්‍රාහ්මී නොවන සංකේතවල එකතුවක් (ගුවන්යානා ලාංඡන හැර) මහාචාර්ය පරණවිතානගේ ෂගකග ංංඩස පිටූවේ ඇත. එහි 4් සිට 4ා දක්වා සංකේත 4270 ලිපියෙහි එහි නැවක රූපය (සංඝරක්ඛිත හිමියන් දූවේගල දක්වා පැමිණි) අඩි 7 ක් උසට කොටා ඇත.
න් එකක් මෙම යම දණ්ඩ වීමට පූළුවන. විහාරමහාදේවියගේ සෙල්ලිපිවන කොටා දැමූ හෙළ හා බෝවත්තේගල ලිපිවල මෙම සංකේත ඇතුළත් අතර එක් ලිපියක් මිහින්තලේ ඇත. එය “ගාමිණි දමරජගේ” නම සෘජූවම සඳහන් කරයි. බෝවත්තේගල හා කොටාදැමූහෙළ ඇති මීන ලාංඡන ද වැදගත්ය. දමරජ පරපූරේ ලිපිවල මෙම නැංගුරම් ලාංඡනය හා මීන ලාංඡන තිබීම නිසා ඔවූන් නාවික වෙළෙඳුන් බව ප්‍රත්‍යකෂ වේ. කුන්තායූධයෙහි මූදුන හැමවිටම “මඩූකසලිස පූගියන” නැව් සමාගමේ (ෂගකග ංජසි පිටූව) ලාංඡනයම වේ. ෂගකග

දුටූගැමූණූ රජූ විසින් භිකෂූන් වහන්සේලා ප්‍රමූඛ බූද්ධ ශාසනයේ ආධිපත්‍යය පිළිගෙන දමරජ පරපූරේ හෙළ ආධිපත්‍යය නිධන් කිරීම මිරිසවැටියේ කථා ප්‍රවෘත්තියයි. මහා වංශකරුගේ එම ප්‍රවෘත්තිය නිවැරදි අතර මිරිස් වැටියක් අනූභවයට තමාට දඬූවම ලෙස මිරිසවැටි දාගැබ සෑදීම ප්‍රවෘත්තිය නිර්මාණයකි. මහානාම හිමි එය පවසන්නේ ද දුටූගැමූණූ රජූ විසින් මහා සංඝයා වෙත කරන ලද ප්‍රකාශයක් ලෙසට පමණි. මිරිසවැටිය නාමය පාළියට මරිචූවටිටි ලෙස පරිවර්තනය කිරීම මේ අවූලට මූල විය. සංස්කෘතයට එය පරිවර්තනය වී ඇත්තේ මරිච්ූවෘත්ති ලෙසටය. එය මිරිස් මාළුව නොවේ. අභාවප්‍රාප්ත පූරාවිද්‍යා කොමසාරිස් ඇම්. එච්. සිරිසෝම මහතා තම ගවේෂණ තුළින් සොයා ඉදිරිපත් කළේ මෙම භූමිය අතීතයේ “මිරිස්පිටිය” ලෙස හැඳින් වූ බවය. එබැවින් දාගැබ “මිරිසපිටිය දාගැබ” ලෙස හැඳින් වී කාලයාගේ ඇවෑමෙන් “මිරිසවැටිය දාගැබ” නම් වූ බවය. ගල්තලාවක් වූ මෙය දාගැබක් තැනීමට නූසූදුසූ අත්තිවාරම් හෑරීමට අපහසූ ස්ථානයකි.

මිරිසවැටි සර්වඥ ධාතු හෝ අගසව් ධාතු හෝ වෙනත් රහත් තෙර නමකගේ හෝ ධාතූන් මෙහි තැන්පත් කළ බවට මහාවිහාර සාහිත්‍ය කෘති කිසිවක සඳහන් නැත. එබැවින් මෙය හූදු නිධන් ගැබක් පමණි. ඓතිහාසික බවට සාකෂි නැති එළාර නම් රජූ සමග සටනට යෑමේදී ගැමූණූ කුමරුගේ ආදර්ශ පාඨය වූණේ “මාගේ මේ ව්‍යායාමය රජ සැප සඳහා නොව බූද්ධ ශාසනයේ චිරස්ථිතිය සඳහාය” යන්නයි. එමෙන්ම යූද හමූදාව සමග මහා සංඝයා ද වැඩම කළ බව වංශ කතා පවසයි. විහාරමහාදේවිය ද අවසන් කාලයේ “සවෙර ශමණිය” ලෙසට පැවිදි වී සිටි බවට සෙල්ලිපි සාකෂි ඇත. (ෂග කග 14,…) එහිදී කැලණිතිස්ස රජූ හැඳින්වෙන්නේ “කණගම තිස්ස” රජූ ලෙසටය. කැලණි රාජ්‍යයේ මධ්‍යස්ථානය කණගම වූවා විය හැක.

දේශීය හෙළ රාජාධිපත්‍යය යටපත් කර මේ වන විටත් විදේශීය තත්ත්වයෙන් තිබූණූ බෞද්ධ ආධිපත්‍යය පිළිගැනීම නිසා දුටූගැමූණූ රජූට මහාවංශයේ වීර චරිතය හිමි විය. අනූරාධපූර රජවීමෙන් පසූ වැව් තැනීමක් නොව බෞද්ධ විහාරාරාමයන් පමණක් දුටූගැමූණූ රජූ විසින් ඉදිකර ඇත. මහාථූපය නමින් මහාවංශය හඳුන්වන රුවන්මැලිසෑය ගැන කීමට පරිච්ඡේද 5 ක් තුළ ගාථා 346 ක්ද, ලෝහ ප්‍රාසාදය ගැන ගාථා 47, මිරිසවැටිය ගැන එක ගාථාවක් ද යෙදී ඇත. මිරිසවැටිය සෑදීමට නිමිත්ත වූ කුන්තායූධය පොළවට ඇලීම ගැන ගාථා 8 කි. මහාථූපය වූ රුවන්මැලි සෑයට වඩා වට ප්‍රමාණයෙන් හා උසින් ද වැඩි ලංකාවේ විශාලම චෛත්‍යය වන ෙඃතවනාරාමය සෑදීම ගැන කීමට මහාවංශ කර්තෘ වැය කළේ ද එක ගාථාවක් පමණි.
ක සම්පූර්ණ පරිච්ඡේදයක් ද

චෛත්‍යයේ ප්‍රමාණය නොව කර්තෘගේ අවශ්‍යතාව මත එම විස්තර අඩූවැඩි වීම ඉන් පැහැදිලිය.

දුටූගැමූණූ රජූගේ ශ්‍රද්ධා භක්තියට අනූව අනූරපූර ජයගත් පසූ අති උත්කර්ෂවත් ලෙස ගොස් මහාබෝධිය හා ථූපාරාමය වන්දනා කිරීමත් අපේකෂා කළ හැකි වූවද එවැන්නක තොරතුරු වංශ කතාවල නැත. යූද්ධයේදී මිනිසූන් මැරීම ගැන කම්පිතව නිදි නැතිව සිටි රජූ සැනසීමට රහතන් වහන්සේලා වැඩියේ පූවඟු දිවයිනෙනි. (මහාවංශය 25(104,105) මහා විහාරය මෙකල තිබූණේ ද යන සැකයක් පහළ වන අතර එය තීව්‍ර වන්නේ රුවන්මැලි සෑ කර්මාන්තය අරඹන දින ලොව නන් දෙසින් වැඩම කළ තෙරුන් සංඛ්‍යාව අනූහය ලකෂයක් ලෙසට ගිණූම්ගත කර ඇති අතර මහා විහාරයෙන් පැමිණි එක භිකෂූවක් හෝ ගිණූමට හර වී ඇත. සොළොස්මස්ථාන වන්දනා කරන ගාථාවේ අනූපිළිවෙළක් ඇති අතර තිස්සමහාරාමය, ශී්‍රමහා බෝධිය, මිරිසවැටිය, රුවන්මැලි සෑය, ථූපාරාමය හා අභයගිරිය යන අනූපිළිවෙළ ඇත්තේ ඇයි ද යන්න විමසිය යූතුය. තිස්සමහාරාමයට පසූව මහා බෝධිය හා ථූපාරාමය එන්නේ ඇයි? කාවන්තිස්ස හා දුටූගැමූණූ කාල නිර්ණයට මෙම සාධකය ද වැදගත් වේ.

මහාවංශයේ කිසිම තැනෙක හෙළ නමැති රටක් හෝ ජාතියක් සඳහන් නොවේ. සෙල්ලිපි සාකෂිවලට අනූව බූද්ධ පරිනිර්වාණයෙන් අවූරුදු 45 තුළ දුටූගැමූණූ අනූරපූර රජවෙයි. ඉන් පසූව “හෙළ” නාමය අතුරුදන් වී එහි සංස්කෘත පරිවර්තනය වන “සිංහල” නාමය රටට හා ජාතියට භාවිත වේ. මෙය සමාන වන්නේ ඉංගිරිසි ආධිපත්‍යය තුළ “සිංහලේ” නමැති රට “සිලෝන්” වී ජාතිය “සිලනීස්” වීමටය. “ලාංකිකයා යනූ සිලනීස් නොහොත් සිලෝනිස් යන්නේ සිංහල පරිවර්තනයයි.

මෙසේ සිංහල ශිෂ්ටාචාරයකුත් බෞද්ධ සංස්කෘතියකුත් ඇති රටක් බවට ලංකාව පත්වීම ඉංගිරිසීන්ට තේරුම් ගැනීමට අපහසූ විය. එබැවින් ඔවූහූ “සිංහලඃබෞද්ධ” (ීසබය්කැිැඃඊමාායසිඑඃ යන නමක් පට බැන්දාහ. වර්තමානයේ අප විසින් අප හඳුන්වා ගන්නේ ඉංගිරිසිකාරයාට නොවැටහූණූ මෙම ජාතිකත්වයෙනි. වැව් ශිෂ්ටාචාරයක් ඇති සිංහලයාගේ සාහිත්‍ය, චිත්‍ර කලාව, මූර්ති ශිල්පය, ගෘහ නිර්මාණය ඇතුළු සියලු සංස්කෘතික අංග බූද්ධ ශාසනයෙන් හැසිරවීමේ හේතුව මෙම මිරිසවැටි පරිවර්තනයයි. එබැවින් මිරිසවැටි චෛත්‍යය යනූ අප ඉන්දියානූ සංස්කෘතික ආධිපත්‍යයට අවතීර්ණ වූ මංසන්ධියකි. අද ඉන්දියානූ ආර්ථික ආධිපත්‍යයට හා ඉන්දියානූ දේශපාලන ආධිපත්‍යයට ද අවනත වීමට යන බවක් බැලූ බැල්මට පෙනේ. නමූත් යූගයක් අවසන් වී ඇත.

1988 දී මිරිසවැටිය දාගැබ බිඳ වැටිණි. 21 වැනි සියවස ඇරැඹීමත් සමග නැඟෙන “රාවණ හා හෙළ හඬ” විමර්ශනශීලී දෙසවන්වලට ඇසේ. ඉතිහාසය නැවතත් සන්ධිස්ථානයකට පැමිණ ඇත. ආනල්ඩ් ටොයිම්බි පඬූවාගේ ඉතිහාසය යළි මතුවේ (්‍යසිඑදරහ රුචැ්එිඃ නමැති ජනප්‍රිය න්‍යාය හැදෑරීමට මේ කාලයයි.

-ආචාර්ය සූරිය ගුණසේකර

Mar 06

Full Sinhala Unicode Characters List

Character
(decimal)
Decimal Character
(hex)
Hex Name
ෆං 3458 ෆං 0D82 SINHALA SIGN ANUSVARAYA (combined with fayanna (ෆ))
ෆඃ 3459 ෆඃ 0D83 SINHALA SIGN VISARGAYA (combined with fayanna (ෆ))
3461 0D85 SINHALA LETTER AYANNA
3462 0D86 SINHALA LETTER AAYANNA
3463 0D87 SINHALA LETTER AEYANNA
3464 0D88 SINHALA LETTER AEEYANNA
3465 0D89 SINHALA LETTER IYANNA
3466 0D8A SINHALA LETTER IIYANNA
3467 0D8B SINHALA LETTER UYANNA
3468 0D8C SINHALA LETTER UUYANNA
3469 0D8D SINHALA LETTER IRUYANNA
3470 0D8E SINHALA LETTER IRUUYANNA
3471 0D8F SINHALA LETTER ILUYANNA
3472 0D90 SINHALA LETTER ILUUYANNA
3473 0D91 SINHALA LETTER EYANNA
3474 0D92 SINHALA LETTER EEYANNA
3475 0D93 SINHALA LETTER AIYANNA
3476 0D94 SINHALA LETTER OYANNA
3477 0D95 SINHALA LETTER OOYANNA
3478 0D96 SINHALA LETTER AUYANNA
3482 0D9A SINHALA LETTER ALPAPRAANA KAYANNA
3483 0D9B SINHALA LETTER MAHAAPRAANA KAYANNA
3484 0D9C SINHALA LETTER ALPAPRAANA GAYANNA
3485 0D9D SINHALA LETTER MAHAAPRAANA GAYANNA
3486 0D9E SINHALA LETTER KANTAJA NAASIKYAYA
3487 0D9F SINHALA LETTER SANYAKA GAYANNA
3488 0DA0 SINHALA LETTER ALPAPRAANA CAYANNA
3489 0DA1 SINHALA LETTER MAHAAPRAANA CAYANNA
3490 0DA2 SINHALA LETTER ALPAPRAANA JAYANNA
3491 0DA3 SINHALA LETTER MAHAAPRAANA JAYANNA
3492 0DA4 SINHALA LETTER TAALUJA NAASIKYAYA
3493 0DA5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
3494 0DA6 SINHALA LETTER SANYAKA JAYANNA
3495 0DA7 SINHALA LETTER ALPAPRAANA TTAYANNA
3496 0DA8 SINHALA LETTER MAHAAPRAANA TTAYANNA
3497 0DA9 SINHALA LETTER ALPAPRAANA DDAYANNA
3498 0DAA SINHALA LETTER MAHAAPRAANA DDAYANNA
3499 0DAB SINHALA LETTER MUURDHAJA NAYANNA
3500 0DAC SINHALA LETTER SANYAKA DDAYANNA
3501 0DAD SINHALA LETTER ALPAPRAANA TAYANNA
3502 0DAE SINHALA LETTER MAHAAPRAANA TAYANNA
3503 0DAF SINHALA LETTER ALPAPRAANA DAYANNA
3504 0DB0 SINHALA LETTER MAHAAPRAANA DAYANNA
3505 0DB1 SINHALA LETTER DANTAJA NAYANNA
3507 0DB3 SINHALA LETTER SANYAKA DAYANNA
3508 0DB4 SINHALA LETTER ALPAPRAANA PAYANNA
3509 0DB5 SINHALA LETTER MAHAAPRAANA PAYANNA
3510 0DB6 SINHALA LETTER ALPAPRAANA BAYANNA
3511 0DB7 SINHALA LETTER MAHAAPRAANA BAYANNA
3512 0DB8 SINHALA LETTER MAYANNA
3513 0DB9 SINHALA LETTER AMBA BAYANNA
3514 0DBA SINHALA LETTER YAYANNA
3515 0DBB SINHALA LETTER RAYANNA
3517 0DBD SINHALA LETTER DANTAJA LAYANNA
3520 0DC0 SINHALA LETTER VAYANNA
3521 0DC1 SINHALA LETTER TAALUJA SAYANNA
3522 0DC2 SINHALA LETTER MUURDHAJA SAYANNA
3523 0DC3 SINHALA LETTER DANTAJA SAYANNA
3524 0DC4 SINHALA LETTER HAYANNA
3525 0DC5 SINHALA LETTER MUURDHAJA LAYANNA
3526 0DC6 SINHALA LETTER FAYANNA
ෆ් 3530 ෆ් 0DCA SINHALA SIGN AL-LAKUNA (combined with fayanna (ෆ))
ෆා 3535 ෆා 0DCF SINHALA VOWEL SIGN AELA-PILLA (combined with fayanna (ෆ))
ෆැ 3536 ෆැ 0DD0 SINHALA VOWEL SIGN KETTI AEDA-PILLA (combined with fayanna (ෆ))
ෆෑ 3537 ෆෑ 0DD1 SINHALA VOWEL SIGN DIGA AEDA-PILLA (combined with fayanna (ෆ))
ෆි 3538 ෆි 0DD2 SINHALA VOWEL SIGN KETTI IS-PILLA (combined with fayanna (ෆ))
ෆී 3539 ෆී 0DD3 SINHALA VOWEL SIGN DIGA IS-PILLA (combined with fayanna (ෆ))
ෆු 3540 ෆු 0DD4 SINHALA VOWEL SIGN KETTI PAA-PILLA (combined with fayanna (ෆ))
ෆූ 3542 ෆූ 0DD6 SINHALA VOWEL SIGN DIGA PAA-PILLA (combined with fayanna (ෆ))
ෆෘ 3544 ෆෘ 0DD8 SINHALA VOWEL SIGN GAETTA-PILLA (combined with fayanna (ෆ))
ෆෙ 3545 ෆෙ 0DD9 SINHALA VOWEL SIGN KOMBUVA (combined with fayanna (ෆ))
ෆේ 3546 ෆේ 0DDA SINHALA VOWEL SIGN DIGA KOMBUVA (combined with fayanna (ෆ))
ෆෛ 3547 ෆෛ 0DDB SINHALA VOWEL SIGN KOMBU DEKA (combined with fayanna (ෆ))
ෆො 3548 ෆො 0DDC SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA (combined with fayanna (ෆ))
ෆෝ 3549 ෆෝ 0DDD SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA (combined with fayanna (ෆ))
ෆෞ 3550 ෆෞ 0DDE SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA (combined with fayanna (ෆ))
ෆෟ 3551 ෆෟ 0DDF SINHALA VOWEL SIGN GAYANUKITTA (combined with fayanna (ෆ))
ෆෲ 3570 ෆෲ 0DF2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA (combined with fayanna (ෆ))
ෆෳ 3571 ෆෳ 0DF3 SINHALA VOWEL SIGN DIGA GAYANUKITTA (combined with fayanna (ෆ))
ෆ෴ 3572 ෆ෴ 0DF4 SINHALA PUNCTUATION KUNDDALIYA

Mar 03

Complete Guide to Installing and Typing Sinhala

For most of us, installing and typing Sinhala was a daunting task.
I found a combination of applications, gadgets supplied by,

  • ICTA Sri Lanka
  • Google
  • UCSC (University of Colombo Sri Lanka)

To do the trick.

Miss placed Sinhalese characters in a sentence are a thing of the past now.


Installing Sinhala Unicode

Visit: http://locallanguages.lk/OS_Support

scroll down and select the installation according to you operating system.

I recommend that W1nd0vvs XP users download the installation pack,

http://locallanguages.lk/files/SinhalaTamilKit_XP.exe

Complete the installation and restart the computer.

After restart you will have Sinhala Unicode installed on your computer.

Typing Sinhala Unicode

Best resource I could find for typing Sinhala, is the

Online Unicode Keyboard: http://www.ucsc.cmb.ac.lk/ltrl/services/keyboard/

The second resource is the iGoogle gadget for typing Sinhala

http://www.google.com/ig/adde?moduleurl=www.google.com/ig/modules/sinhala_keyboard.xml

Help : Unclear too small Sinhala characters

Best posssible option for viewing such pages is to zoom the browser window.

You will be amazed with the quality of the text when you zoom in.

For Firefox uses, a very easy way to zoom-in to a page is,

  • While pressing Ctrl (Control Key of your keyboard), rotate the mouse wheel.

To reset to default zoom press,

  • Press Ctrl (Control Key of your keyboard) and 0 (Zero)

» Newer posts