Alright, let's try to put this one to rest . I just tested it with a face on the xy plane with a hole in it and here are the results(and code):
puts "On Face(Inside); " + face.classify_point([0.25,0.25,0]).to_s #1
puts "On Vertex; " + face.classify_point([0,0,0]).to_s #2
puts "On Edge; " + face.classify_point([0.25,0,0]).to_s #4
puts "Outside; " + face.classify_point([-0.5,0,0]).to_s #16
puts "In Hole; " + face.classify_point([0.6,0.6,0]).to_s #16
puts "NotOnPlane; " + face.classify_point([0,0,1]).to_s #32
So this means that whether the point is in a hole or outside the face, the return value is the same (16). I think that answers TIG's question about the matter. The OnFace constant (which is is not in the API nor am I able to choose a point that returns the value. It could therefore be obsolete. If someone can think of another case that I missed, let me know (other than an error (0) of course).
Oh and just a quick note. The return value of the classify_point method will be one of the above values and NOT a sum of multiple values. I mention this because I expected a point on an vertex to return 6 or 7 because a point on a vertex is on the face and an edge at the same time, but this is not the case.
As for how I'll write my code, well there are two ways of doing and I think this would be the shortest way (syntactically) of doing it:
if (face.classify_point(point)&(Sketchup;;Face;;PointInside+Sketchup;;Face;;PointOnVertex+Sketchup;;Face;;PointOnEdge))!=0
As long as those constants remain powers of 2, the code should work although to be safe I might just go with if((p==a) or (p==b) or (p==c)), which doesn't require any bitwise operations (I just find the bitwise way of doing cool since I've come to understand it recently ).
EDIT:
As requested, here is the definitive list of the constants:
0: Sketchup::Face::PointUnknown (error)
1: Sketchup::Face::PointInside (somewhere on the face)
2: Skethcup::Face::PointOnVertex (on one of the vertices of the face)
4: Skethcup::Face::PointOnEdge (on one of the edges of the face, vertices do not count since they return 2)
8: Sketchup::Face::PointOnFace (likely obsolete)
16:Sketchup::Face::PointOutside (on plane of the face but not on face; this includes holes)
32:Sketchup::Face::PointNotOnPlane (not on the face's plane)
Remember that this is for version 8.0 and that the constants should be used instead of the numerical values for forward compatibility.