internals.h

00001 /*
00002  * All of the documentation and software included in the
00003  * Alchemy Software is copyrighted by Stanley Kok, Parag
00004  * Singla, Matthew Richardson, Pedro Domingos, Marc
00005  * Sumner and Hoifung Poon.
00006  * 
00007  * Copyright [2004-07] Stanley Kok, Parag Singla, Matthew
00008  * Richardson, Pedro Domingos, Marc Sumner and Hoifung
00009  * Poon. All rights reserved.
00010  * 
00011  * Contact: Pedro Domingos, University of Washington
00012  * (pedrod@cs.washington.edu).
00013  * 
00014  * Redistribution and use in source and binary forms, with
00015  * or without modification, are permitted provided that
00016  * the following conditions are met:
00017  * 
00018  * 1. Redistributions of source code must retain the above
00019  * copyright notice, this list of conditions and the
00020  * following disclaimer.
00021  * 
00022  * 2. Redistributions in binary form must reproduce the
00023  * above copyright notice, this list of conditions and the
00024  * following disclaimer in the documentation and/or other
00025  * materials provided with the distribution.
00026  * 
00027  * 3. All advertising materials mentioning features or use
00028  * of this software must display the following
00029  * acknowledgment: "This product includes software
00030  * developed by Stanley Kok, Parag Singla, Matthew
00031  * Richardson, Pedro Domingos, Marc Sumner and Hoifung
00032  * Poon in the Department of Computer Science and
00033  * Engineering at the University of Washington".
00034  * 
00035  * 4. Your publications acknowledge the use or
00036  * contribution made by the Software to your research
00037  * using the following citation(s): 
00038  * Stanley Kok, Parag Singla, Matthew Richardson and
00039  * Pedro Domingos (2005). "The Alchemy System for
00040  * Statistical Relational AI", Technical Report,
00041  * Department of Computer Science and Engineering,
00042  * University of Washington, Seattle, WA.
00043  * http://www.cs.washington.edu/ai/alchemy.
00044  * 
00045  * 5. Neither the name of the University of Washington nor
00046  * the names of its contributors may be used to endorse or
00047  * promote products derived from this software without
00048  * specific prior written permission.
00049  * 
00050  * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF WASHINGTON
00051  * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
00052  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00053  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00054  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY
00055  * OF WASHINGTON OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
00056  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00057  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00058  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00059  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
00060  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00061  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00062  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
00063  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00064  * 
00065  */
00066 #ifndef INTERNALS_H_MAR_10_2006
00067 #define INTERNALS_H_MAR_10_2006
00068 
00069 #include <iostream>
00070 #include <string>
00071 #include <sstream>
00072 using namespace std;
00073 
00074 class Internals
00075 {
00076 
00077   public:
00078 
00079    static int succ(int a) { return a+1; }
00080 
00081    static int plus(int a, int b) { return a+b; }
00082 
00083    static int minus(int a, int b) { return a-b; }
00084 
00085    static int times(int a, int b) { return a*b; }
00086 
00087    static int dividedBy(int a, int b) { return a/b; }
00088 
00089    static int mod(int a, int b) { return a%b; }
00090 
00091    static string concat(string a, string b)
00092    {
00093      return a.append(b);
00094    }
00095 
00096    static bool greaterThan(int a, int b) { return a > b; }
00097 
00098    static bool lessThan(int a, int b) { return a < b; }
00099 
00100    static bool greaterThanEq(int a, int b) { return a >= b; }
00101 
00102    static bool lessThanEq(int a, int b) { return a <= b; }
00103 
00104    static bool substr(string a, string b)
00105    {
00106      if (b.find(a, 0) == string::npos) return false;
00107      else return true;
00108    }
00109 
00110    // helper functions
00111    static bool stringToInt(const string &s, int &i)
00112    {
00113          istringstream iss(s);
00114   
00115          if (iss>>i)
00116        return true;
00117      else
00118        return false;
00119    }
00120 
00121    static string intToString(int i)
00122    {
00123      ostringstream oss;
00124      oss << i << flush;  
00125      return(oss.str());
00126    }
00127 
00128 };
00129 
00130 #endif

Generated on Tue Jan 16 05:30:05 2007 for Alchemy by  doxygen 1.5.1